[温湿度传感器] 太阳能供电的室内外温湿度系统 使用iBeacon协议
S6SAE101A00SA1002 Solar-Powered IoT Device Kit
太阳能供电的室内外温湿度系统使用iBeacon协议
官方有一个叫EH_Motherboard的例程包含了板载温湿度传感器数据的发送程序
路径在C:\Program Files (x86)\Cypress\Solar-Powered IoT Device Kit\1.0\Firmware\EH_Motherboard
可以使用PMIC Software软件接收发来的数据并显示出来
PMIC Software需要配合一个插在电脑上的USB DONGLE来使用这样使用起来不算方便
下边准备对硬件和固件做些改动
编写一个android APP使用手机显示温湿度数据
EH_Motherboard在发送温湿度数据时使用了iBeacon协议
iBeacon?是利用BLE的Broadcaster角色将广播数据按指定格式打包出来的
iBeacon的数据一共是31个字节
包括9个字节的iBeacon prefix
16个字节的UUID
2个字节的Major
2个字节的Minor
和1个字节的TxPower
?
EH_Motherboard用Major来表示设备
用Minor的第一个字节表示湿度
第二个字节表示温度
温湿度都使用8位分辨率
?
现在要在EH_Motherboard板子上增加一个SI7020温湿度传感器用来检测室外环境
用板载的SI7020检测室内环境
室外传感器使用I2C通过
通过长引线连接
放在室外
湿度使用12位分辨率
温度使用14位分辨率
用Minor保存温度或湿度数据
Major = 0表示室内湿度,1表示室外湿度,2表示室内温度,3表示室外温度
?
在评估板的J2接口上引出4条线?GND SDA SCL VDD
连接到SI7020模块
复制TopDesign.cysch里的I2CM
会自动生成新名称I2CM_1?
修改EH_Motherboard.cydwr里I2CM_1 SCL SDA对应的引脚为P0.4 P0.5
复制si7020.c和si7020.h的2个函数
uint32?Si7020_Init(void)
uint32?Si7020_WriteRead(uint8?* data,?uint32?sCnt,?uint32?rCnt)
修改名称作为室外si7020传感器的操作函数
uint32?Si7020_Init1(void)
uint32?Si7020_WriteRead1(uint8?* data,?uint32?sCnt,?uint32?rCnt)
将函数里有I2CM的地方都改成I2CM_1
uint32?Si7020_Init1(void)
{
????uint32?status;
?
??? I2CM_1_Start();
????
……详细代码请点击阅读原文……?
????class?ViewHolder?{
??????? TextView deviceName;
??????? TextView deviceAddress;
??????? TextView deviceUUID;
??????? TextView deviceMajor_Minor;
??????? TextView devicetxPower_RSSI;
????}
}
运行后的效果
?
不过这是在USB供电的情况
如果只使用太阳能发现根本收不到数据
加上套件带的220uF的大电容就正常了
传感器避免阳光直射
使用复印纸处理
用订书钉订上
将评估板放在室内
太阳能电池板放在有阳光的地方
室内温湿度传感器避免阳光直射
室外传感器放到窗外(今天风大,直担心传感器被风吹跑了)
中午测了一下温湿度
今天还是挺热的
在东北室外温度都达到17.3了
MJ天气报的室外气温度12度
我的温度高应该和南面阳光直射有很大关系