资讯详情

十分钟开发物联网:农业智慧灌溉(4G版)

智能灌溉设备集成了一些相关作物关键指标的测量传感器(包括:光强、温度、湿度、土壤湿度),ShineBlink开发板收集传感器数据并上传到智能云,然后我们可以远程通过手机App或者Web访问作物的环境数据,并决定远程人工控制打开灌溉水阀进行灌溉,或者让设备根据传感器的环境数据自动灌溉。

视频演示教程:

【十分钟开发物联网】 -- 实现农业智能灌溉设备(4)G模组)

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

名称 推荐购买源 资料下载
机智云通用版 App 免费 https://download.gizwits.com/zh-cn/p/98/99
ShineBlink 万能物联网开发板 淘宝搜索机智云或机智云ShineBlink”店铺有售 shineblink.com
带机智云GAgent固件的ML302 4G模块 淘宝搜索机智云或机智云ShineBlink”店铺有售 gizwits.com
水阀继电器模块 淘宝搜索“ShineBlink店铺有售,或任何其他店铺(功能相似) shineblink.com
黑色底板 这个底板只是为了省略杜邦线,让它看起来更好,而不是必需品。如果开发人员不能用杜邦线代替它。如果您仍然想获得底板,可以通过右侧提供PCB自己打样工程资料PCB制作即可。 https://fe9a58.link.yunpan.360.cn/lk/surl_y6mpLtWWB9W#/-0

--使能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

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

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

我们在这个例子中使用它"Rs1","Rs2","Rs3"这三个数据点被用作上传到智能云的温度、湿度和光强度的三个传感器短整形值数据点。记得在智能云平台上修改相应数据点的名称。

我们在这个例子中使用它"Sw1","Sw2"这两个布尔值数据点,一个作为接收机智云发的手动/自动模式灌溉的数据通道,一个作为远程手动控制水阀开关继电器的数据通道,记得在机智云平台修改相应的数据点的名称。

本例中我们使用了"Rf3"带两位小数浮点型数据点作为土壤湿度传感器数据上传至机智云的数据通道,记得在机智云平台修改相应的数据点的名称。

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

开发好以后的页面如下:

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

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

如果开发者希望开发一个专属的微信小程序应用, 可以进入docs.gizwits.com了解相关开发教程。

标签: 4fb0继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司