本帖最后由 云天 于 2022-8-3 23:35 编辑  
 
【情景引入】 
这几天特别热,热的人心浮气躁,拿起小风扇,顿感丝丝凉意,舒服!小风扇,接下来的项目制作,将让小风扇更温馨、更有人情味。 
【学习目标】 
1. 学习EasyIoT物联网平台的使用方法 
2. 掌握行空板与物联网平台进行信息交互的方法 
3. 掌握微触开关工作原理及改造方法 
4. 学习二进制及莫斯电码 
【教学重难点】 
【教学重点】 
1. 掌握行空板与物联网平台进行信息交互的方法 
2. 学会二进制及莫斯电码 
【教学难点】 
改造微触开关 
【教学准备】 
1. 软件 
Mind+ 
2. 硬件 
行空板2块、扩展板2块、按钮2个、2路18650电池座2个、18650电池4个,小风扇2个  
【教学过程】 
1.物联网Easy IOT 
登录EasyIoT物联网平台(网址https://iot.dfrobot.com.cn/,没有账号需先注册) 
 
 
  
 
  
进入“工作间”,添加两个新设备,分别为“亲情风扇A”、“亲情风扇B” 
  
2、行空板配网 
使用USB线连接行空板与电脑 
  
按以下步骤配网 
  
3、先用LED进行测试 
硬件连接 
  
亲情灯A 
  
亲情灯B 
  
4、亲情灯编程 
  
亲情灯A 
亲情灯B的程序,只需要将订阅的主题,与发送消息的主题进行相互替换即可。5、亲情灯演示视频 
 
6、改造风扇 
  
 
  
小风扇电路板的开关是一个轻触开关,轻触开关是一种电子开关,使用时轻轻点按开关按钮就可使开关接通。当松开手时开关既断开,其内部结构是靠金属弹片受力弹动来实现通断的。 
  
 
  
 
  
在轻触开关同向的两个引脚上,焊上两条导线,接到电磁继电器上。 
7、亲情风扇编程 
使用继电器代替轻触开关,高低电平变化代表按一下开关。因小风扇有三档,所以要关闭小风扇,要高低电平变化三次。程序如下:  
8.亲情风扇硬件 
 
  
9.亲情风扇演示 
 
 
10.分组合作 
分成两大组,一组进行亲情风扇硬件外壳设计;一组对程序进行优化; 
外壳设计 
(1)使用3D打印制作外壳 
(2)激光切割制作外壳 
(3)旧物改造制作外壳 
程序优化 
(1)行空板屏幕显示风扇静止、转动图案 
(2)对按钮动作进行编码,实现多功能,如可控制自己的风扇,发送信息 
11.教师演示——发送信息 
在5秒记下按钮按下“按钮亮灯”次数,将次数发送到物联网主题。当接收到消息后,判断“次数”,行空板显示“亲情消息”。 
  
 
Python代码: 
			
			
			- 
 - #  -*- coding: UTF-8 -*-
 - 
 - # MindPlus
 - # Python
 - from pinpong.extension.unihiker import *
 - from pinpong.board import Board,Pin
 - from unihiker import GUI
 - import siot
 - import time
 - 
 - # 事件回调函数
 - def on_message_callback(client, userdata, msg):
 -     if (msg.payload.decode() == '1'):
 -        
 -         p_p9_out.write_digital(1)
 -         time.sleep(0.5)
 -        
 -         p_p9_out.write_digital(0)
 -         time.sleep(0.2)
 -     if (msg.payload.decode() == '2'):
 -        
 -         p_p9_out.write_digital(1)
 -         time.sleep(0.5)
 -        
 -         p_p9_out.write_digital(0)
 -         time.sleep(0.2)
 -        
 -         p_p9_out.write_digital(1)
 -         time.sleep(0.5)
 -        
 -         p_p9_out.write_digital(0)
 -         time.sleep(0.2)
 -        
 -         p_p9_out.write_digital(1)
 -         time.sleep(0.5)
 -        
 -         p_p9_out.write_digital(0)
 -         time.sleep(0.2)
 -     if (msg.payload.decode() == '3'):
 -         消息.config(text="你好")
 -     if (msg.payload.decode() == '4'):
 -         消息.config(text="休息一下吧!")
 -     if (msg.payload.decode() == '5'):
 -         消息.config(text="天热记得要多喝水!")
 - 
 - 
 - siot.init(client_id="",server="iot.dfrobot.com.cn",port=1883,user="X8jykxFnR",password="u8jskbFngz")
 - u_gui=GUI()
 - Board().begin()
 - siot.connect()
 - siot.loop()
 - p_p8_in=Pin(Pin.P8, Pin.IN)
 - siot.set_callback(on_message_callback)
 - siot.getsubscribe(topic="5n92uqBMg")
 - 显示计数=u_gui.draw_digit(text="0000",x=0,y=0,font_size=20, color="#0000FF")
 - 消息=u_gui.draw_text(text="行空板",x=0,y=30,font_size=20, color="#0000FF")
 - BiaoShi = 0
 - temTime = 0
 - JiShu = 0
 - p_p9_out=Pin(Pin.P9, Pin.OUT)
 - p_p9_out.write_digital(0)
 - 
 - while True:
 -     if (p_p8_in.read_digital()==True):
 -         JiShu = 0
 -         temTime=time.time()
 -         while not (time.time()-temTime>5):
 -             if (p_p8_in.read_digital()==True):
 -                 if (BiaoShi == 1):
 -                     BiaoShi = 0
 -                     JiShu = (JiShu + 1)
 -             else:
 -                 if (BiaoShi == 0):
 -                     BiaoShi = 1
 -         siot.publish(topic="CrWfPaz4R", data=(str(JiShu)))
 -         显示计数.config(text=(str(JiShu)))
 - 
 
  复制代码 12.发送“亲情消息”演示 
 
 
13.利二进制计数改进因在短时间内,能实现按下按钮的次数是有限的,不能承载更多的信息。所以接下来利用二进制计数来实现,更多的编码。 
  
 
对以上程序,进行简化 
  
 
【学生自学】 
利用二进制改进,以上程序在大约10秒内只能实现16种编码,要想更多可采用莫斯电码方式,这部分由学生自学,然后小组讨论合作完成任务。 
【教学反思】 
本项目课程,通过行空板与物联网Easy Iot连接,实现物物相联,实现远程控制风扇,远程传递信息。通过由浅入深,小组合作,不断迭代的学习过程,让学生通过本节课深入学习了物联网,并进行了生活中的实际应用。 
 |