持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
本文将详细介绍,从0开始,制作一个小的温湿度监测软件
目前的效果如下(持续更新中)
单页面版本
多页面版本
准备的硬件工具
- 温湿度传感器(目前我选择的是常见的RS485接口的,支持RTU协议的) 如图:
- RS485 转USB调试设备 购买RS485转USB,实现硬件连接
- 12V开关电源(根据自己选择的温湿度工作电压,选择开关电源,最方便的是选择5V的温湿度传感器,这样可以直接买一个带5V输出的485转usb模块)
以上,硬件部分已经准备完毕,他们的连接拓补图如下:
线路连接比较简单:
- 首先,连接220到开关电源,电源上电输出12V直流
- 连接直流12V到温湿度传感器
- 将温湿度的485接口和usb转换器接口的485连接,A对A,B对B
- 将USB插入电脑中 完成以上步骤,我们会在电脑的设备管理器中找到一个串口,如下图:
(PS:如果没有串口弹出来,说明缺少驱动,上网搜索相关的驱动程序安装即可,一般常用的驱动是CH340,这个具体型号需要看自己买的usb转485模块的芯片型号)
测试
使用串口测试工具,打开串口,测试温湿度数据(我用的是commix 1.3,串口测试工具网上有很多,通用)
注意串口的选择,串口配置(查看自己购买的温湿度的说明书),另外选择输入HEX,输出HEX
我买的说明书如下:
以上,我们就可以发送指令,读取温湿度变送器的数据了
- 查看数据手册,获取读取温湿度的指令
以上是我购买的温湿度的问询帧,一般满足标准RTU指令的变送器指令没有太大区别,最多是寄存器地址和读取数据长度的变化,另外CRC校验采用modbus RTU16校验,具体校验的代码下一节会有体现
- 发送指令,获取回复
上图中,我的变送器modbus地址已经改为了03,所以我发送的指令是
03 03 00 00 00 02 C5 E9
设备地址 读取指令码 寄存器地址 读取个数 CRC校验
变送器返回 03 03 04 01 83 01 49 E9 81 设备地址 指令码 有效数据个数 数据1 数据2 CRC校验
- 查看变送器手册,解析数据
可以获知,数据1代表湿度值,我们读取到的数据是 01 83 ,换算为十进制是:387-》湿度38.7% 数据2代表温度,我们读取到的是 01 49 ,换算十进制是:329,表示32.9℃
OK,以上就完成了整个项目最基本的硬件测试。那么下一节我们将要使用winfrom,制作一个简单的界面程序,来读取整个温湿度变送器的数据。