2022-4-14 23:39:42 [显示全部楼层]
607浏览
查看: 607|回复: 14

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

[复制链接]
本帖最后由 hnyzcj 于 2022-4-15 06:14 编辑

【创意起源】
       最近在玩行空板,碰巧社区又在发DHT20温湿度传感器测评。于是突发对于之前气象社团的温湿度采集装置进行升级。以前是用掌控板来做,虽然掌控板也有屏,也有WIFI,但是屏幕太小,还没有颜色,虽然有WIFI,但是采集数据还要传输SIOT服务器上。能否有一种既可以采集数据,又能架设SIoT服务的装备呢?行空板就是其中一项非常不错的选择,于是我就利用行空板制作一个物联网温湿度采集装置。
【作品展示】
01.jpg 02.jpg 03.png
【使用的库】
本程序中使用了的库如下所示
序号
名称
作用
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)高温语音报警:我们对温度设定了一个阈值,当超过该温度通过语音来提醒。
04.jpg
【相关器材】
序号
名称
数量
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服务启动。
05.png
(3)Jupyter打开后,点击New > Python 3(ipykernel)即可创建一个jupyter项目。
06.png
(4)输入代码后,点击“运行”即可查看结果。

07.png
【电路连线】
本次作品只用了一个DHT20温湿度传感器,只要将其接到行空板任意一个I2C口即可。
08.jpg
【编写程序】
本作品中我们将行空板的屏幕作为数据显示的窗口,因此需要通过编程定义各类控件,具体工作如下所示。
  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)
复制代码


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

shzrzxlee  高级技匠

发表于 2022-4-15 09:19:30

什么时候 mind+也支持行空板
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2022-4-15 11:18:42

shzrzxlee 发表于 2022-4-15 09:19
什么时候 mind+也支持行空板

已经支持了,你在Wiki里面找一下
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2022-4-15 11:19:03

shzrzxlee 发表于 2022-4-15 09:19
什么时候 mind+也支持行空板

已经支持了
回复

使用道具 举报

rzegkly  版主

发表于 2022-4-17 12:13:06

已经支持了
回复

使用道具 举报

 初级技匠

发表于 2022-4-23 10:06:57

最近行空板是挺火的哈
回复

使用道具 举报

 初级技匠

发表于 2022-4-23 10:08:16

嗯,不错,音箱哪儿来的?
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2022-4-23 20:46:39

诩 发表于 2022-4-23 10:08
嗯,不错,音箱哪儿来的?

妹子送的
回复

使用道具 举报

狮山闲人  见习技师

发表于 2022-4-23 22:23:48

SIOT没用过,也是个云平台吗
回复

使用道具 举报

 初级技匠

发表于 2022-4-24 08:02:33


哈哈哈哈
回复

使用道具 举报

peter3  初级技师

发表于 2022-4-26 14:16:10

狮山闲人 发表于 2022-4-23 22:23
SIOT没用过,也是个云平台吗

是一个简单版的MQTT服务器
回复

使用道具 举报

Ryan Chang  学徒

发表于 2022-5-2 22:03:28

行空板为什么在商城没有卖啊? 没找到?
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2022-5-3 07:30:36

Ryan Chang 发表于 2022-5-2 22:03
行空板为什么在商城没有卖啊? 没找到?

预售
回复

使用道具 举报

Ryan Chang  学徒

发表于 2022-5-3 08:19:08


感谢回复,由预售连接么?
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2022-5-3 11:31:10

Ryan Chang 发表于 2022-5-3 08:19
感谢回复,由预售连接么?

已经结束了,等等吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail