传感器采用标准的 RS485 Modbus-RTU 通信协议,并且支持与Arduino等开发板对接,用户可以快速搭建实验环境。不过要与目前使用的单片机系统管理需要使用TTL转RS485扩展板,静静传感器的系统时5V以上的,比普通的单片机系统3.3V不匹配。
我们手里目前没有对应的TTL转RS485模块,不过有一个TTL转RS485的调试器,可以通过PC软件串口的方式进行调试,我们这里使用的设备如下:

我们先看一下传感器的硬件接口:

这个接线目前只支持套件中带线,中间通过四针的接口进行连接,不过我们从这个接口不能看出结构定义:

如果后端的接线丢失就有可能出现不知线序的情况,不过这个线确实是连接的非常紧固,实际上可以一直连接着,还有螺纹锁扣。
通过简单的物理连接后,我们就可以进行实际的测试,通信协议还是比较简单的,基本内容如下:
1、通讯基本参数

2、数据帧格式定义
采用 Modbus-RTU 通讯规约,格式如下:
初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位 CRC 码
结束结构 ≥4 字节的时间
地址码:为传感器的地址,在通讯网络中是唯一的(出厂默认 0x01)。
功能码:主机所发指令功能指示,本传感器读取寄存器功能码0x03,写入寄存器功能码0x06
数据区:数据区是具体通讯数据,注意 16bits 数据高字节在前!
CRC 码:二字节的校验码。

读取当前太阳辐射值示例
问询帧:读取数值功能码 0x03

太阳辐射值:0064(16进制) =100=> 太阳辐射值=100W/㎡
由上面的通信协议可以看出,如果我们只是想要读取数据,主要关注的点就是波特率为4800,设备地址为0x01,这些都是一个默认条件下的,如果想要修改需要通过命令修改,不过咱们目前只有这一个传感器,没必要改,读取的命令也不复杂,接下来我们通过串口助手进行一下循环采集,并通过调整台灯照射的方式进行一下持续数据采集,间隔1s,下图时采集输出的波形图:

目前我们的这个台灯完全怼上采集的输出最高也就70W/m²附近,室外阴天也不太适合进行测试,可以看到通过调整角度,反应还是很灵敏的,我们放大看一下

