ShineBlink 是一款零门槛、零开发环境、低代码的万能物联网智能硬件开发板
机智云 为开发者提供傻瓜式硬件上云、接App/小程序的能力
结合 ShineBlink 和 机智云 开发者即使不懂嵌入式物联网开发、云和App开发,也能很快实现一款包含硬件、云和App的物联网智能硬件。
一、本章实现功能介绍
Shinelink开发板通过采集PM2.5传感器、紫外线传感器、风速传感器、雨滴感应传感器、SHT温湿度传感器、气压传感器采集数据,数据通过ML302(4G通信模块)将数据上传至机智云,之后我们就可以在远程通过手机App或者Web网页端来访问这个气象站测量的所有传感器数据。
下图是接线实物图和App监测页面:
二、硬件端接线图
注意:上面的电路传感器比较多,要求给 ShineBlink 开发板提供5V的电源带载能力至少大于1A。
三、材料清单
四、硬件端完整源代码
--定义函数:将传感器输出电压(单位:mv)转换成紫外线指数index
function GetUvIndex(v)
if v < 50.0 then
index = 0
elseif v < 227.0 then
index = 1;
elseif v < 318.0 then
index = 2;
elseif v < 408.0 then
index = 3;
elseif v < 503.0 then
index = 4;
elseif v < 606.0 then
index = 5;
elseif v < 696.0 then
index = 6;
elseif v < 795.0 then
index = 7;
elseif v < 881.0 then
index = 8;
elseif v < 976.0 then
index = 9;
elseif v < 1079.0 then
index = 10;
else
index = 11
end
return index
end
--使能USB print输出打印
LIB_UsbConfig("CDC")
--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "7ebaec64beaf4e389a2957f38711fcda"
PS = "b4a4ef17dbf74463b0f1b3c525a8b8de"
--初始化4G模块
LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")
--配置A0-A3这四个电压采集通道同时开始工作,当每个通道采集满50个点时缓存满,每个点的采集时间间隔为10ms
LIB_ADConfig(50,10000)
--设置PM2.5传感器占用TX1和RX1引脚
LIB_ZPH04Config("UART1")
--设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出10个数据的频率工作,repeatability="HIGH"时精度最高
LIB_Sht3xConfig("IIC0","10","HIGH")
--设置BMP280气压计传感器占用SCL1和SDA1引脚,并启动传感器以每秒输出26.32组数据的频率工作
LIB_BMP280Config("IIC1")
--开始大循环
while(GC(1) == true)
do
LIB_DelayMs(50)
--查询是否读到温湿度数据产生
sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()
if sht3x_flag == 1 then
--打印读到的温湿度值,保留2位小数
print(string.format("temp: %.2f\r\nhumi: %.2f", sht3x_temp, sht3x_humi))
--向机智云服务器发送(温湿度)短整数型数值(舍去小数部分)
LIB_SendToGizCloud("Rs1", math.floor(sht3x_temp))
LIB_SendToGizCloud("Rs2", math.floor(sht3x_humi))
end
--查询气压传感器是否出数
flag, temprature, pressure = LIB_BMP280GetResult()
if flag == 1 then --如果传感器此时有数据
--温度值保留两位小数,气压值去掉小数部分
print(string.format("temprature: %.2f pressure: %.0f Pa", temprature, pressure))
--向机智云服务器发送长整数型气压数值,单位:Pa
LIB_SendToGizCloud("RL7", math.floor(pressure))
end
--查询是否读到传感器PM2.5值
flag, pm25_val = LIB_ZPH04GetPM25()
if flag == 1 then
--打印读到的PM2.5值,保留1位小数,单位:ug/m^3
print(string.format("PM2.5:%.1f", pm25_val))
--向机智云服务器发送(PM2.5)浮点型小数值(范围应是-1000.0~5000.0)
LIB_SendToGizCloud("Rf1", pm25_val)
end
--查询是否读到A0端口的电压采集值(风速)
A0_full_flag, A0_tab = LIB_ADCheckBufFull("A0")
--每当A0通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值
--由LIB_ADConfig(50,10000)可以算出,此处大概是50X10000us=0.5秒执行一次
if A0_full_flag == 1 then
SUM = 0
for i = 1, #A0_tab do --此处#A0_tab的值是50,表示A0_tab表内的元素个数
SUM = SUM + A0_tab[i]
end
AVER = SUM / #A0_tab --计算平均采样值
--将A0通道的AD值转换成实际电压打印出来
out_voltage = AVER*3.6/4096.0
--打印出传感器输出的电压值,保留小数点后两位,单位V
print(string.format("wind voltage=%.2fV\r\n", out_voltage))
--向机智云服务器发送(风速)浮点型小数值(范围应是-1000.0~5000.0)
LIB_SendToGizCloud("Rf2", out_voltage)
end
--查询是否读到A1端口的电压采集值(紫外线)
A1_full_flag, A1_tab = LIB_ADCheckBufFull("A1")
--每当A1通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值
--由LIB_ADConfig(50,10000)可以算出,此处大概是50X10000us=0.5秒执行一次
if A1_full_flag == 1 then
SUM = 0
for i = 1, #A1_tab do --此处#A1_tab的值是50,表示A1_tab表内的元素个数
SUM = SUM + A1_tab[i]
end
AVER = SUM / #A1_tab --计算平均采样值
--将A0通道的AD值转换成实际电压打印出来
vol_mv = AVER*3600/4096.0
--打印出传感器输出的电压值,保留小数点后两位,单位mV
print(string.format("ultraviolet voltage=%.2fmV\r\n", vol_mv))
uv_index = GetUvIndex(vol_mv)--将电压转换成紫外等级指数
--打印紫外线等级,0~11
print(string.format("ultraviolet level=%d\r\n", uv_index))
--向机智云服务器发送紫外线等级,短整数型
LIB_SendToGizCloud("Rs3", uv_index)
end
--查询是否读到A2端口的电压采集值(雨滴感应)
A2_full_flag, A2_tab = LIB_ADCheckBufFull("A2")
--每当A2通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值
--由LIB_ADConfig(50,10000)可以算出,此处大概是50X10000us=0.5秒执行一次
if A2_full_flag == 1 then
SUM = 0
for i = 1, #A2_tab do --此处#A2_tab的值是50,表示A2_tab表内的元素个数
SUM = SUM + A2_tab[i]
end
AVER = SUM / #A2_tab --计算平均采样值
--将A0通道的AD值转换成实际电压打印出来
vol = AVER*3.6/4096.0
--打印雨滴传感器输出的电压值,保留小数点后两位,单位V
print(string.format("rain voltage=%.2fV\r\n", vol))
--向机智云服务器发送(雨滴值)浮点型小数值(范围应是-100.00~500.00)
LIB_SendToGizCloud("Rf3", vol)
end
end
五、机智云接入和App开发
无论使用哪种方法实现APP控制,都必须先定义数据点。
本例中我们使用了"Rf1","Rf2","Rf3","Rs1","Rs2","Rs3","RL7"这七个数据点分别作为PM2.5,风速,雨滴,温度,湿度,紫外线等级,大气压强这七个传感器值上传数据通道,记得在机智云平台修改相应的数据点的名称。
方法一:使用机智云测试APP
先在机智云开发者中心定义好数据点
随后下载机智云测试APP
使用机智云测试APP扫描4G模块二维码
即可实现APP控制设备了。
具体过程可参考:
http://www.shineblink.com/html/gizwits/9_3_4GJoin/4GJoin.html
方法二:使用赛博坦工具零代码定制版App
在机智云开发者中心定义好数据点后,
创建一个移动应用,定义相应的页面信息
再关联相应的智能产品,
即可实现定制版App访问设备。
开发好以后的页面如下:
全部0条评论
快来发表一下你的评论吧 !