ShineBlink 是一款零门槛、零开发环境、低代码的万能物联网智能硬件开发板
机智云 为开发者提供傻瓜式硬件上云、接App/小程序的能力
结合 ShineBlink 和 机智云 开发者即使不懂嵌入式物联网开发、云和App开发,也能很快实现一款包含硬件、云和App的物联网智能硬件。
一、本章实现功能介绍
Shinelink开发板通过采集PM2.5传感器、紫外线传感器、风速传感器、雨滴感应传感器、SHT温湿度传感器、气压传感器采集数据,数据通过ML302(4G通信模块)将数据上传至机智云,之后我们就可以在远程通过手机App或者Web网页端来访问这个气象站测量的所有传感器数据。
下图是接线实物图和App监测页面:


二、硬件端接线图

注意:上面的电路传感器比较多,要求给 ShineBlink 开发板提供5V的电源带载能力至少大于1A。
三、材料清单

四、硬件端完整源代码
--定义函数:将传感器输出电压(单位:mv)转换成紫外线指数indexfunction 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 indexend--使能USB print输出打印LIB_UsbConfig("CDC")--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PSPK = "7ebaec64beaf4e389a2957f38711fcda"PS = "b4a4ef17dbf74463b0f1b3c525a8b8de"--初始化4G模块LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")--配置A0-A3这四个电压采集通道同时开始工作,当每个通道采集满50个点时缓存满,每个点的采集时间间隔为10msLIB_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) endend
五、机智云接入和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条评论
快来发表一下你的评论吧 !