练手项目:串口 读取 温度传感器 数据并显示
串口读取的温度数据,
可以传给数据库,记录下来
可以传给网页实时显示。
这样就可以同时学习网页制作,和数据库的相关内容了,
以检测你学习web html技术和学习 mysql 技术的成果。
也可以通过Qt 程序读取。
平时学习编程的时候,如果有了实物配合,有具体的要求 之后,会学习的更快。
1 硬件准备
这个项目要求如下的硬件配置:
电脑一台,win7 64位系统。
USB 转485 模块一个,该模块可以给外部 温度传感器模块,提供5v 直流电源。
温度传感器模块
可以使用 工控行业的 modbus 485 总线中,经常使用的那种现成的模块。
不用自己去制作。咱主要关心的是编程能力。只要有数据来源就行。
即使这个数据不准确。只要是变动的就好。
http://www.jingsudz.com/html/9530821021.html
1:一路RS485 接口。
2:一路DS18B20 传感器
1:一路RS485 通信(MODBUS-RTU 协议)
只是在电源正和电源负 之间 提供一个5v的电源,就会在显示屏上实时显示当前的温度了。
如果需要通过串口读取数据
那么需要接上 RS485+ 和 RS485-信号
通过usb 转 485 模块,传给电脑。
具体资料到
上面的网站的
下载中心 ----> RS485系列资料---->RSDS12
下载资料 ,里面有一个
《RSDS12 温湿度传感器说明书.pdf》
2 协议解析
通信波特率:可调,1 停止位,8 位数据,无校验
通迅口:选择当前总线使用的COM 口,波特率出厂默认9600
供电电压
最小值 5V
标准值12V
最大值 30V
测量范围: DS18B20 -55℃ ---- 125.0℃
转换速度: DS18B20 最快1秒/次 最慢255 秒/次
工作电流是20ma
手头的另外一个硬件
http://www.jingsudz.com/html/0572811047.html
可以将这两个设备 组成一个 485 modbus网络,通过一个USB 转485 接口 ,分别读取他们的温度和湿度
自动查找
发送: 00 03 00 00 00 05 84 18
接收: 03 03 0A 01 02 00 03 00 01 00 05 00 00 75 90
湿度发送: 00 03 00 0B 00 01 F4 19
湿度接收: 03 03 02 00 F6 41 C2
温度发送: 00 03 00 00 00 01 85 DB
温度接收: 03 03 02 01 01 01 D4
那个里面的 绿色 贴片的 LED 没有闪烁
测试方式:
温度传感器需要同时 外接 5v电源
点击开始监控
发送: 01 03 00 00 00 01 84 0A
接收: 01 03 02 00 E3 F9 CD
发送: 02 03 00 00 00 01 84 39
超时
发送: 03 03 00 00 00 01 85 E8
超时
发送: 04 03 00 00 00 01 84 5F
超时
CRC校验代码
附1.CRC 校验函数
/*
* 函数介绍:CRC 校验
* 输入参数:
* 输出参数:
* 返回值:
CRC 校验码*/
u16 CRC16(u8 *bpMsgStartAddress, u8 bDataLen)
{ u8 i, n;
u16 crc = 0xffff;
u8 u8tmp;
u16 u16tmp;
for (i=0; i<bDataLen; i++)
{ crc ^= *bpMsgStartAddress++;
for (n=0; n<8; n++)
{ u8tmp = crc & 1;
crc >>= 1;
crc &= 0x7fff;
if (u8tmp == 1)
{ crc ^= 0xa001; }
}
} return crc;
}
两个模块连接在一起
发送: 01 03 00 0A 00 02 E4 09
接收: 01 03 04 00 F3 00 00 0A 00
发送: 02 03 00 0A 00 02 E4 3A
超时.
发送: 03 03 00 0A 00 02 E5 EB
接收: 03 03 04 01 04 00 F7 D8 48
发送: 04 03 00 0A 00 02 E4 5C
超时.
发送: 05 03 00 0A 00 02 E5 8D
超时.