开发板还是采用STM32F407
485连线:
如果买了变送器就按照下图连线:
没有买变送器的话,直接从气象站上拉线,红正黑负,黄485-A,绿485-B。 如果开发板只有232接口,可以买个485转232转换头。
地址 操作 说明 备注
0x0000 保留
0x0001 只读 空气温度,16进制,分辨率0.1℃ +40的数据
0x0002 只读 空气湿度,16进制,分辨率0.1%RH
0x0003 只读 风向,16进制,分辨率0.1° 设备正北指向为0°
0x0004 只读 瞬时风速,16进制,分辨率0.1m/s 16s的平均风速
0x0005 只读 最大风速,16进制,分辨率0.1m/s 历史最大值,掉电清除
0x0006 只读 瞬时雨量(降雨强度),16进制,分辨率0.1mm/min 默认1min,其他定制。
0x0007 只读 累计雨量,16进制,分辨率0.1mm 集满49999后,清0
0x0008 只读 紫外线高位,16进制,分辨率1uw/cm2
0x0009 只读 紫外线低位,16进制,分辨率1uw/cm2
0x000A 只读 光照度高位,16进制,分辨率0.1lux
0x000B 只读 光照度低位,16进制,分辨率0.1lux
0x000C 只读 大气压高位,16进制,分辨率1帕
0x000D 只读 大气压低位,16进制,分辨率1帕
①读从机地址:
00 03 00 00 00 01 85 DB
00默认,03功能码,00 00为起始地址,00 01为寄存器个数,85 DB为CRC16校验码,用于485校验。
响应:
02 03 02 00 02 7D 85
02从机地址,03功能码,02数据长度,00 02数据内容,7D 85为CRC16校验码,用于485校验。
②读单个寄存器
01 03 00 01 00 01 D5 CA
01默认,03功能码,00 00为起始地址,00 01为寄存器个数,D5 CA为CRC16校验码,用于485校验。
响应:
01 03 02 01 68 B8 3A
01默认,03功能码,02数据长度,01 68数据内容,B8 3A为CRC16校验码,用于485校验。
③读温湿度
01 03 00 01 00 02 95 CB
01默认,03功能码,00 01为起始地址,00 02为寄存器个数,95 CB为CRC16校验码,用于485校验。
响应:
01 03 04 02 B4 02 1D 7A 6D
01默认,03功能码,04数据长度,01 68 01 68数据内容,7A 6D为CRC16校验码,用于485校验。
计算:
0x0001为温度寄存器,数据内容为02 B4,转换为十进制为692
温度=692/10-40=29.2℃
0x0002为湿度寄存器,数据内容为021D,转换为十进制为209
湿度=209/10=20.9RH%
实际环境用串口助手测试
查询所有寄存器的值:
指令:
01 03 00 01 00 0D D5 CF
对数据进行分帧处理,获取其中的一组返回数据。
响应示例:
01 03 1A 02 88 02 E2 03 9B 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00 00 00 01 73 4C BA 40
01 03为默认功能码
1A表示有26个数据
02 88对应0x0001地址,即温度寄存器,转换成十进制为648,温度=648/10-40=24.8℃。
02 E2对应0x0002地址,即湿度寄存器,转换成十进制为738,湿度=738/10=73.8RH%
03 9B对应0x0003地址,即风向寄存器,转换成十进制为923,风向=923/10=92.3°
00 00对应0x0004地址,即瞬时风速寄存器,瞬时风速为0
00 01对应0x0005地址,即最大风速寄存器,最大风速为0.1m/s
00 00对应0x0006地址,即瞬时雨量寄存器,瞬时雨量为0
00 00对应0x0007地址,即累计雨量寄存器,累计雨量为0.1
00 00 00 02对应0x0008,0x0009地址,分别为紫外线高低位,大小为2uw/cm2
00 00 00 00对应0x000A,0X000B地址,分别为光照度高低位,大小为0帕
00 01 73 4C对应0x000C,0x000D地址,分别为大气压高低位,转换成十进制95052,大气压=95052帕=95.052kpa,标准为101.325kpa
读取某个数据,如风速、风向、光照根据寄存器地址去读即可。