用行空板做一个物联网温湿度采集装置

2022-04-142.1万
精华项目
AI 快速预览详细 收起
本文介绍了如何使用行空板和DHT20温湿度传感器制作一个物联网温湿度采集装置。通过行空板显示屏可以实时读取温湿度数据,并将数据上传至SIoT进行存储。当温度超过设定阈值时,装置会通过语音提醒。该项目适合青少年科创比赛,能锻炼孩子的动手能力和逻辑思维。


【创意起源】
       最近在玩行空板,碰巧社区又在发DHT20温湿度传感器测评。于是突发对于之前气象社团的温湿度采集装置进行升级。以前是用掌控板来做,虽然掌控板也有屏,也有WIFI,但是屏幕太小,还没有颜色,虽然有WIFI,但是采集数据还要传输SIOT服务器上。能否有一种既可以采集数据,又能架设SIoT服务的装备呢?行空板就是其中一项非常不错的选择,于是我就利用行空板制作一个物联网温湿度采集装置。
【作品展示】
用行空板做一个物联网温湿度采集装置图1用行空板做一个物联网温湿度采集装置图2用行空板做一个物联网温湿度采集装置图3
【使用的库】
本程序中使用了的库如下所示
序号
名称
作用
1
time
时间模块
2
pyttsx3
语音合成
3
unihiker
行空板内置库,对于屏幕显示和控制,在unihiker库中基于tkinter库封装了一个GUI类,对于方便麦克风和usb喇叭的使用,在unihiker库中封装了一个Audio类。
4
pinpong
pinpong库由于支持众多的主控板及开源硬件,因此分成了3个包,board、extension和libs,board包中放置主板支持的功能及常用库,extension为定制类主控,libs中放置其他传感器的扩展库。
【功能简介】
本次制作的温湿度采集装置,应该具备以下功能:
(1)本地实施读取:通过行空板显示屏,读取到实时温湿度数据。
(2)数据存储记录:由于行空板本身就集成了SIOT,所以我们将采集的数据上传的SIOT中存储。
(3)高温语音报警:我们对温度设定了一个阈值,当超过该温度通过语音来提醒。
用行空板做一个物联网温湿度采集装置图4
【相关器材】
序号
名称
数量
1
行空板
1
2
DHT20
1
3
USB口喇叭
1
4
I2C连接线
1
表1器材列表
【编程环境】
(1)连接设备:行空板可以有多种方法连接方式,USB线、路由器、Wi-Fi、热点模式。我们今天在这里推荐使用USB线连接行空板与电脑。这种方式IP地址固定且网络稳定。使用时行空板会虚拟为一个RNDIS网卡设备,此时板子IP地址固定为10.1.2.3,输入板子的IP即可开始编程。
编程环境:行空板编程方式也有多种,我们这里使用的是Jupyter编程方式。连接行空板到电脑,开机完成后打开浏览器,输入IP地址10.1.2.3即可打开主页菜单。选择应用开关,在Jupyter应用中查看运行状态,如果是未运行,则先点击启动服务,等待状态变为正在运行后,点击打开页面可以打开Jupyter后台页面。同理,也需要将SIoT服务启动。
用行空板做一个物联网温湿度采集装置图6
(3)Jupyter打开后,点击New > Python 3(ipykernel)即可创建一个jupyter项目。
用行空板做一个物联网温湿度采集装置图7
(4)输入代码后,点击“运行”即可查看结果。

用行空板做一个物联网温湿度采集装置图5
【电路连线】
本次作品只用了一个DHT20温湿度传感器,只要将其接到行空板任意一个I2C口即可。
用行空板做一个物联网温湿度采集装置图8
【编写程序】
本作品中我们将行空板的屏幕作为数据显示的窗口,因此需要通过编程定义各类控件,具体工作如下所示。
  1. import time
  2. import pyttsx3
  3. import siot#导入siot库
  4. from pinpong.board import Board,Pin
  5. from unihiker import GUI   #导入包
  6. from pinpong.libs.dfrobot_dht20 import DHT20
  7. (2)UI界面编程
  8. gui=GUI()  #实例化GUI类
  9. #边框
  10. rect1=gui.draw_rect(x=10, y=80, w=220, h=100,  width=3, color=(255, 200, 100))
  11. rect2=gui.draw_rect(x=10, y=200, w=220, h=100,  width=3, color=(255, 200, 100))
  12. #填充
  13. rect3=gui.fill_rect(x=13, y=83, w=214, h=94,  color=(150, 180, 200))
  14. rect4=gui.fill_rect(x=13, y=203, w=214, h=94,  color=(150, 180,200))
  15. #标题
  16. info_text = gui.draw_text(x=120, y=60, text='温湿度检测系统',origin='bottom',font_size=20,)
  17. #温度控制
  18. info_text_temp = gui.draw_text(x=70, y=160,color=(255,255,255),text='温度:',origin='bottom',font_size=24)
  19. digit1=gui.draw_digit(x=160, y=160, text='', origin = "bottom",color="red",font_size=28)
  20. #湿度控制
  21. info_text_tim = gui.draw_text(x=70, y=280,color=(255,255,255),text='湿度:',origin='bottom',font_size=24)
  22. digit2=gui.draw_digit(x=160, y=280, text='', origin = "bottom",color="red",font_size=28)
  23. (3)SIoT服务端
  24. SERVER = "10.1.2.3"#MQTT服务器IP地址
  25. CLIENT_ID = ""#创建空消息队列
  26. IOT_UserName ='siot'#用户名
  27. IOT_PassWord ='dfrobot'#密码
  28. IOT_pubTopic1  = 'xk/001'#“topic”为“项目名称/设备名称”,设备006
  29. IOT_pubTopic2  = 'xk/002'#设备007
  30. siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)#初始化,确定输入的用户名和密码正确
  31. siot.connect()#连接
  32. siot.subscribe(IOT_pubTopic1,sub_cb)#订阅消息+回调
  33. siot.loop()#循环
  34. (4)初始化及主程序
  35. Board().begin()               #初始化
  36. dht20 = DHT20()
  37. while True:
  38.     #增加等待,防止程序退出和卡住
  39.     t=dht20.temp_c()
  40.     h=dht20.humidity()
  41.     digit1.config(text =t) # 更新屏幕上温度的显示
  42.     digit2.config(text =h) # 更新屏幕上湿度的显示   
  43.     if (t>24):             # 温度高于24时语音播报
  44.         engine = pyttsx3.init()
  45.         engine.say('温度过高')
  46.         engine.runAndWait()
  47.     siot.publish(IOT_pubTopic1,str(t))#发送消息
  48.     siot.publish(IOT_pubTopic2,str(h))   
  49.     time.sleep(1)
复制代码

复制代码
【设计结构】
为了固定行空板,我们设计了一个支撑架。该支撑架包括两部分,一部分为切去一块的盒体,一部分为插片,将行空板固定在插片上后,插入盒体的插槽,即可固定。具体结构设计如下所示。
用行空板做一个物联网温湿度采集装置图9
【设备安装】
(1)用激光切割机切出结构件
用行空板做一个物联网温湿度采集装置图10
(2)将行空板安装在插片上
用行空板做一个物联网温湿度采集装置图11
(3)将DHT20安装在盒体背板上
用行空板做一个物联网温湿度采集装置图12
(4)用502胶水粘接盒体结构件
用行空板做一个物联网温湿度采集装置图13
(5)将插片插入盒体插槽,并将DHT20连接
用行空板做一个物联网温湿度采集装置图14
(6)将USB音箱插入行空板USB口
用行空板做一个物联网温湿度采集装置图15
【运行测试】
用行空板做一个物联网温湿度采集装置图16
图16系统上电
用行空板做一个物联网温湿度采集装置图17
图17测试
用行空板做一个物联网温湿度采集装置图18用行空板做一个物联网温湿度采集装置图19用行空板做一个物联网温湿度采集装置图20

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(8)
shzrzxlee
shzrzxlee
USB音箱。即使自带声卡,声音也很轻
派大星ym
派大星ym
帅帅帅帅帅帅帅
Ryan Chang
Ryan Chang
行空板为什么在商城没有卖啊? 没找到?
hnyzcj
hnyzcj
作者
回复Ryan Chang
已经结束了,等等吧
Ryan Chang
Ryan Chang回复hnyzcj
感谢回复,由预售连接么?
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
狮山闲人
狮山闲人
SIOT没用过,也是个云平台吗
peter3
peter3回复狮山闲人
是一个简单版的MQTT服务器
诩
嗯,不错,音箱哪儿来的?
诩
回复hnyzcj
哈哈哈哈
hnyzcj
hnyzcj
作者
回复
妹子送的
诩
最近行空板是挺火的哈
rzegkly
rzegkly
已经支持了
shzrzxlee
shzrzxlee
什么时候 mind+也支持行空板
hnyzcj
hnyzcj
作者
回复shzrzxlee
已经支持了
hnyzcj
hnyzcj
作者
回复shzrzxlee
已经支持了,你在Wiki里面找一下
- 没有更多了 -