十分钟开发物联网:智慧农业大棚环境监测(4G版)

322 阅读5分钟

农业大棚环境监测设备集成了大棚中一些关键指标的测量传感器(包含:二氧化碳、光照强度、温度、湿度、紫外线),ShineBlink万能核心板采集这些传感器数据,并将它们上传至机智云;然后我们就可以在远程通过手机App或者Web网页端来访问大棚中的环境数据,同时还可以通过手机、计算机等信息终端向管理者推送实时监测信息、报警信息,实现现场环境的信息化、智能化远程管理。

视频教程及实物展示

视频演示教程:

接线实物图和App监测页面:

硬件端接线图

材料清单

硬件端完整源码

--定义函数:将传感器输出电压(单位: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 = "e38ca091f2394517bbe286ac7d1ce284" PS = "a4524a44b93f498c89f67086c19b3d81"--初始化4G模块LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")--配置A0-A3这四个电压采集通道同时开始工作,当每个通道采集满50个点时缓存满,每个点的采集时间间隔为10msLIB_ADConfig(50,10000)--设置Z19C甲醛传感器占用TX1和RX1引脚,并启动传感器,关闭自动校准("AUTO_CALI_DIS")LIB_Z19CConfig("UART1","AUTO_CALI_DIS")--设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出10个数据的频率工作,repeatability="HIGH"时精度最高LIB_Sht3xConfig("IIC0","10","HIGH")--设置BH1750光照强度传感器占用SCL1和SDA1引脚,并启动传感器以每秒输出5组数据的频率工作LIB_BH1750Config("IIC1")--开始大循环while(GC(1) == true)doLIB_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, illumination = LIB_BH1750GetResult()    if flag == 1 then        --光照强度值去掉小数部分,单位:勒克斯(Lx)        print(string.format("illumination: %.0f (Lx)", illumination))--向机智云服务器发送短整数型光照强度数值(舍去小数部分),单位:Lx        LIB_SendToGizCloud("Rs4", math.floor(illumination))    end--查询是否读到CO2传感器值    flag,co2_val = LIB_Z19CGetCO2()    if flag == 1 then--打印读到的co2值        print(string.format("CO2:%d PPM", co2_val))--向机智云服务器发送(co2)整数型数值,短整数型        LIB_SendToGizCloud("Rs5", co2_val)    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~11print(string.format("ultraviolet level=%d\r\n", uv_index))--向机智云服务器发送紫外线等级,短整数型        LIB_SendToGizCloud("Rs3", uv_index)    endend

上面代码中出现的"LIB_"开头的库函数的详细介绍可点击查询。

机智云接入和App开发(三个选择)

►选择一:机智云+通用版APP访问设备(难度最低

通过《4G设备接入机智云教程》我们可以很快掌握机智云的接入流程,并使用现成的通用版机智云App即可很快的实现手机App远程访问我们的开发板。

本例中我们使用了"Rs1","Rs2","Rs3","Rs4","Rs5"这五个数据点分别作为温度,湿度,紫外线等级,光照强度,CO2这五个传感器短整型值上传数据通道,记得在机智云平台修改相应的数据点的名称。

► 选择二:机智云+零代码定制版App访问设备(难度较低

在选择二之前,必须完成上面选择一的工作,然后参考《赛博坦零代码App开发(4G版)》教程实现定制版App访问设备。

开发好以后的页面如下:

► 选择三:定制化开发APP或微信小程序(难度较高)

如果有一定开发能力,开发者可以考虑在机智云免费提供的开源代码上做一定的定制开发形成自己的App。

如果开发者希望开发一个专属的App,机智云也会提供代码开源的安卓和IOS SDK框架,帮助开发者快速完成App开发,开发者仅需关注App的UI和UE设计即可,而相对复杂的协议与错误处理等事项可忽略。关于开源SDK的介绍和获取请点击App开发准备工作以及向导 - 机智云了解更多内容。

如果开发者希望开发一个专属的微信小程序应用, 可点击了解微信应用开发 - 机智云了解相关开发教程。