--使能USB print输出打印 LIB_UsbConfig("CDC") --智能云平台是每个产品类别分配的唯一PK和PS,一定要改成自己的PK和PS PK = "5b7f59ee98444ebdad4165d73fb19a53" PS = "74ab6eb8b0774c3bb3acec017bacfb8d" --初始化4G模块 LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH") --配置D控制水阀继电器 LIB_GpioOutputConfig("D0","STANDARD") LIB_GpioWrite("D0",1)-关闭继电器 --配置A0-A这四个电压采集通道同时开始工作,当每个通道收集50个点时,缓存满,每个点的收集时间间隔为10ms LIB_ADConfig(50,10000) --设置sht3x传感器占用SCL0和SDA以每秒10个数据的频率启动传感器,repeatability="HIGH"时精度最高 LIB_Sht3xConfig("IIC0","10","HIGH") --设置BH1750光强传感器占用SCL1和SDA1引脚,启动传感器以每秒输出5组数据的频率工作 LIB_BH1750Config("IIC1") Auto = 0 --默认手动模式 --开始大循环 while(GC(1) == true) do LIB_DelayMs(50) --查询机智云是否发布写作"Sw1"数据点(手动/自动灌溉模式设置) flag,recv_data = LIB_RecvFromGizCloud("Sw1") if flag == 1 then if recv_data == 1 then -- 云下发了1 Auto = 1 --打开自动模式 else -- 云下发了0 Auto = 0 --打开手动模式 end end --查询机智云是否发布写作"Sw2"数据点(手动控制水阀继电器开关) flag,recv_data = LIB_RecvFromGizCloud("Sw2") if flag == 1 then if Auto == 0 then --在手动模式下,允许用户远程App控制水阀 if recv_data == 1 then -- 云下发了1 LIB_GpioWrite("D0",0)-打开继电器 else -- 云下发了0 LIB_GpioWrite("D0",1)-关闭继电器 end end end --查询是否读取温湿度数据 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("Rs3", math.floor(illumination)) end --查询是否读过A1端口电压采集值(土壤湿度) A1_full_flag, A1_tab = LIB_ADCheckBufFull("A1") --每当A缓存后,计算缓存中50个元素的平均值,并转换为电压值 --由LIB_ADConfig(50,10000)这里可以算出500左右X10000us=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值转换为实际电压打印 val = AVER*3.6/4096.0 --USB打印传感器输出的电压值,保留小数点后两位,单位V print(string.format("soil voltage=%.2fV\r\n", val)) --将土壤湿度传感器电压值发送到智能云服务器,两位小数浮点型 LIB_SendToGizCloud("Rf3", val) if Auto == 1 then --在自动模式下,设备可根据土壤湿度自动控制水阀 if val > 3.00 then --土壤越干,传感器电压值越高,3.3V时最高 LIB_GpioWrite("D0",打开水阀继电器开始灌溉 else LIB_GpioWrite("D0",1)关闭水阀继电器 end end end end