基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT) | 您所在的位置:网站首页 › 浇灌灌溉 › 基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT) |
一、项目介绍
随着科技的不断发展和人们生活水平的提高,农业生产也逐渐向智能化、高效化的方向发展。水稻作为我国主要的粮食作物之一,其生长过程中的灌溉管理尤为重要。传统的灌溉方式往往依赖于人工观察和控制,不仅效率低下,而且容易出现误差,无法满足现代农业生产的需求。 当前设计了一款基于STM32的水稻田智能灌溉系统。该系统能够通过水位传感器和温度传感器实时监测稻田的水位和水温,并根据设定的阈值自动控制水泵的开关,实现自动灌溉。同时,通过NBIOT模块将实时数据上传到华为云物联网云平台,用户可以通过手机APP远程监控和控制设备的运行,实现远程管理。相当于直接将水稻田搬到了云端,后期还会加入摄像头监控,加入图像处理,在家就可以了解到每一块稻田的生长情况。 整个系统的电源采用太阳能板供电。 整个系统的应用可以大大提高水稻灌溉的效率和准确性,减少人力资源的浪费,降低生产成本,并为农业生产提供更有力的技术保障。此外,系统还可以推广到其他领域的智能灌溉和控制中,具有广阔的市场应用前景。 该系统通过水位传感器检测稻田的水位,根据预先设置的水位阈值,自动控制继电器开启水泵进行抽水灌溉,从而实现自动补充灌溉水。同时,温度传感器可以监测水温的变化,确保水温适宜。利用NBIOT模块实现与华为云物联网云平台的连接,将实时的水位和水温数据上传到云平台。 为了方便用户远程操作和监控,开发了手机APP。用户可以通过APP远程手动控制水泵的开关,实现远程操作。同时,手机APP可以实时显示设备上传的水温和水位数据,提供可视化的界面,方便用户监控农田状况。 主控芯片采用STM32F103C8T6,具有丰富的外设资源和良好的性能,能够满足系统的需求。水温检测方面采用DS18B20防水温度传感器,具有高精度和稳定性,可以准确地监测水温。NBIOT联网模块采用BC26,支持NB-IoT通信技术,能够实现与云平台的连接。云服务器采用华为云物联网服务器,提供稳定可靠的云端服务。手机APP采用Qt进行开发,可以在不同的平台上运行,并提供友好的用户界面和交互体验。 系统的功能主要包括以下几个方面: (1)水位检测:系统需要通过水位传感器实时监测稻田的水位,并能够根据设定的阈值自动控制水泵的开关,实现自动灌溉。 (2)水温检测:系统需要通过温度传感器实时监测稻田的水温,并将数据传输到云平台进行远程监控。 (3)数据传输:系统需要通过NBIOT模块将实时水温和水位数据上传到华为云物联网云平台,实现远程监控和控制。 (4)远程控制:用户可以通过手机APP远程监控和控制设备的运行,包括水泵的开关和阈值的设置等。 (5)人机界面:手机APP需要提供友好的人机界面,能够实时显示设备上传的水温和水位数据,并提供相应的操作按钮。 在硬件选型方面,主要考虑了以下几个方面: (1)主控芯片:选择了STM32F103C8T6作为主控芯片。STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,具有高性能、低功耗、易于开发等优点。该芯片具有丰富的外设接口,能够满足本系统的需求。 (2)水位传感器:选择了防水型的水位传感器,以确保在潮湿环境下能够正常工作。该传感器具有高精度、高可靠性、低功耗等优点,能够满足本系统的需求。 (3)温度传感器:选择了DS18B20防水温度传感器,该传感器具有高精度、高可靠性、低功耗等优点,能够实时检测稻田的水温,并将数据传输到主控芯片。 (4)NBIOT模块:选择了BC26模块作为NBIOT通信模块。该模块具有低功耗、高稳定性、易于开发等优点,能够将实时数据上传到华为云物联网云平台。 (5)水泵:选择具有自动控制功能的水泵,能够根据主控芯片的控制信号自动开关。 三、华为云产品设备创建这一章节主要是介绍华为云物联网云端产品与设备的创建流程。 3.1 开通物联网服务地址: https://www.huaweicloud.com/product/iothub.html 点击总览,查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。 总结: 端口号: MQTT (1883) 接入地址: e244e6efb9.st1.iotda-device.cn-north-4.myhuaweicloud.com根据域名地址得到IP地址信息: Microsoft Windows [版本 10.0.19045.3448] (c) Microsoft Corporation。保留所有权利。 C:\Users\11266>ping e244e6efb9.st1.iotda-device.cn-north-4.myhuaweicloud.com 正在 Ping e244e6efb9.st1.iotda-device.cn-north-4.myhuaweicloud.com [117.78.5.125] 具有 32 字节的数据: 来自 117.78.5.125 的回复: 字节=32 时间=41ms TTL=94 来自 117.78.5.125 的回复: 字节=32 时间=44ms TTL=94 来自 117.78.5.125 的回复: 字节=32 时间=43ms TTL=94 来自 117.78.5.125 的回复: 字节=32 时间=42ms TTL=94 117.78.5.125 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 41ms,最长 = 44ms,平均 = 42ms C:\Users\11266>MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。 3.2 创建产品 (1)创建产品点击产品页,再点击创建产品。 根据自己产品名字填写。 (3)品创建成功 (4)添加自定义模型产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。 这个模型就是定义自己设备接下来需要向服务器上传那些数据类型。根据自己的数据类型进行编写。 3.3 添加设备产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。 (1)注册设备设备标识码、密码这些根据自己情况认真填写。 (3)保存设备信息创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。 创建之后,得到的设备信息如下: { "device_id": "65113d05a559fd7cd41435f8_lock1", "secret": "12345678" } (4)设备创建完成可以点击设备进入到设备详情页面。 3.4 MQTT协议主题订阅与发布 (1)主题订阅格式帮助文档地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html 对于设备而言,一般会订阅平台下发消息给设备 这个主题。 设备想接收平台下发的消息,就需要订阅平台下发消息给设备 的主题,订阅后,平台下发消息给设备,设备就会收到消息。 如果设备想要知道平台下发的消息,需要订阅上面图片里标注的主题。 以当前设备为例,最终订阅主题的格式如下: $oc/devices/{device_id}/sys/messages/down 最终的格式: $oc/devices/65113d05a559fd7cd41435f8_lock1/sys/messages/down (2)主题发布格式对于设备来说,主题发布表示向云平台上传数据,将最新的传感器数据,设备状态上传到云平台。 这个操作称为:属性上报。 帮助文档地址:https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html 根据帮助文档的介绍, 当前设备发布主题,上报属性的格式总结如下: 发布的主题格式: $oc/devices/{device_id}/sys/properties/report 最终的格式: $oc/devices/65113d05a559fd7cd41435f8_lock1/sys/properties/report 发布主题时,需要上传数据,这个数据格式是JSON格式。 上传的JSON数据格式如下: { "services": [ { "service_id": , "properties": { "": , "": , .......... } } ] } 根据JSON格式,一次可以上传多个属性字段。 这个JSON格式里的,服务ID,属性字段名称,属性值类型,在前面创建产品的时候就已经介绍了,不记得可以翻到前面去查看。 根据这个格式,组合一次上传的属性数据: {"services": [{"service_id": "lock","properties":{"lock":1}}]} 3.5 MQTT三元组MQTT协议登录需要填用户ID,设备ID,设备密码等信息,就像我们平时登录QQ,微信一样要输入账号密码才能登录。MQTT协议登录的这3个参数,一般称为MQTT三元组。 接下来介绍,华为云平台的MQTT三元组参数如何得到。 (1)MQTT服务器地址要登录MQTT服务器,首先记得先知道服务器的地址是多少,端口是多少。 帮助文档地址:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home MQTT协议的端口支持1883和8883,它们的区别是:8883 是加密端口更加安全。但是单片机上使用比较困难,所以当前的设备是采用1883端口进连接的。 根据上面的域名和端口号,得到下面的IP地址和端口号信息: 如果设备支持填写域名可以直接填域名,不支持就直接填写IP地址。 (IP地址就是域名解析得到的) 华为云的MQTT服务器地址:117.78.5.125 域名:e244e6efb9.st1.iotda-device.cn-north-4.myhuaweicloud.com 华为云的MQTT端口号:1883注意! 具体要看这里: 华为云提供了一个在线工具,用来生成MQTT鉴权三元组: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/ 打开这个工具,填入设备的信息(也就是刚才创建完设备之后保存的信息),点击生成,就可以得到MQTT的登录信息了。 下面是打开的页面: 填入设备的信息: (上面两行就是设备创建完成之后保存得到的) 得到三元组之后,设备端通过MQTT协议登录鉴权的时候,填入参数即可。 ClientId 65113d05a559fd7cd41435f8_lock1_0_0_2023092508 Username 65113d05a559fd7cd41435f8_lock1 Password 1a3e7f486aa551bca7b6ff5c19c29d2006e940ec1f98ab416e10be1288106953 3.6 模拟设备登录测试经过上面的步骤介绍,已经创建了产品,设备,数据模型,得到MQTT登录信息。 接下来就用MQTT客户端软件模拟真实的设备来登录平台。测试与服务器通信是否正常。 (1)填入登录信息打开MQTT客户端软件,对号填入相关信息(就是上面的文本介绍)。然后,点击登录,订阅主题,发布主题。 完成上面的操作之后,打开华为云网页后台,可以看到设备已经在线了。 点击详情页面,可以看到上传的数据。 到此,云平台的部署已经完成,设备已经可以正常上传数据了。 四、硬件选型下面是为了验证设计而选型的相关的硬件模型,能够实现最终的设计效果。 模型设计最终验证成功之后,重新画板选型硬件一体化设计产品就方便多了。 【1】STM32开发板链接:https://item.taobao.com/item.htm?spm=a21n57.1.0.0.636b523cIyIKxC&id=735112974467&ns=1&abbucket=19#detail |
CopyRight 2018-2019 实验室设备网 版权所有 |