Hi3861鸿蒙物联网项目实战:智慧农业

news2024/10/5 17:27:12

华清远见FS-Hi3861开发套件,支持HarmonyOS 3.0系统。开发板主控Hi3861芯片内置WiFi功能,开发板板载资源丰富,包括传感器、执行器、NFC、显示屏等,同时还配套丰富的拓展模块。开发板配套丰富的学习资料,包括全套开发教程、视频课程、7大项目实战案例,

可以帮助学员系统性学习鸿蒙设备开发及物联网开发。同时作为一款物联网开发板,华清远见FS-Hi3861开发套件可以进行物联网全技术体系的学习,包括传感器、无线传感网络(WiFi/蓝牙)、物联网操作系统(OpenHarmonyOS)、物联网云接入(华为云)等技术方向,可广泛应用于高校物联网创新教学、学生毕设及企业产品开发评估。

可学习技术:鸿蒙设备开发环境搭建、鸿蒙裸机驱动开发、OpenHarmonyOS系统开发、鸿蒙网络开发、华为IoTDA设备接入、鸿蒙系统项目开发等鸿蒙设备开发及物联网开发技术。

可实战项目:智能照明灯、智能安防报警、智能农业、智能温度计、智能测距仪、倒车雷达、智能小车。

华清远见综合项目案例包括:

• 鸿蒙物联网项目实战:智能照明灯

• 鸿蒙物联网项目实战:智能温度计

• 鸿蒙物联网项目实战:智能安防报警

• 鸿蒙物联网项目实战:智慧农业

• 鸿蒙物联网项目实战:倒车雷达

• 鸿蒙物联网项目实战:智能测距仪

• 鸿蒙物联网项目实战:智能小车

这7个综合项目的难易程度各不相同,方便用户以循序渐进的方式进行学习。项目案例的设计,偏重于综合性更强,更贴近于产品化。每个项目,都可以使用“NFC碰一碰”进行配网。每个项目,都有微信小程序和华为云物联网平台的联动。每个项目,都配套详细的项目开发文档及实验源码,非常方便开发者学习。

公众号“华清远见V智能有料”,回复“鸿蒙项目”,可索取项目配套文档及源码。

鸿蒙开发板项目演示视频:

https://www.bilibili.com/video/BV1pM41127Jp/?spm_id_from=333.999.0.0

基于物联网的智慧农业项目

项目简介:

在智慧农业大棚中,对土壤湿度进行控制,通过湿度传感器对土壤湿度情况进行监测,根据不同农作物的湿度需要进行判断是否灌溉(本次项目中,使用风扇代替水泵电机),在此基础上可以通过手机对大棚内环境数据进行查看,还可以在手机中设置当前农业物的湿度范围,并根据需要是否开启自动控制。

开发平台:

华清远见hi3861鸿蒙开发板

项目功能:

1. 设备端

1) NFC配网功能;

2) 根据温湿度传感器是否自动灌溉;

3) 发布和订阅MQTT的消息;

4) 保存传感器的阈值信息到Hi3861模块中的Flash存储中。

2. 微信小程序端

1) 可以将配网信息数据写入NFC标签中;

2) 可以手动控制水泵电机的开关;

3) 可以设置湿度传感器的阈值范围;

4) 可以手动是否开启自动控制功能;

5) 在界面中显示当前湿度传感器的数据和风扇当前的状态;

项目框架

本项目使用的是华为云物联网平台作为中间服务器,在设备端(Hi3861),首先进行连接附近的WiFi热点,与华为云物联网平台建立MQTT连接,并且使用JSON格式数据进行交互数据;在应用端(微信小程序),使用HTTP协议与华为云物联网平台进行连接,使用华为云物联网平台相关的API进行交互数据。

在设备端,在连接不上附近WiFi热点的时候,会在OLED显示屏上显示,连接WiFi热点失败的提示信息,此时我们可以使用微信小程序上的NFC烧写界面,将WiFi名称和密码进行烧写开发板上的NFC标签,然后再重新开发板进行重新连接新的WiFi热点。

设备端在空闲的时候,监听订阅的主题中是否接收到云平台转发下来的数据,如果接收到了,进行JSON的数据解析,然后控制相关设备。

整体框架

图2-1 整体框架图

应用端框架

图2-2 设备端框架图

设备端框架

图2-3 应用端框架图

硬件部分

主控部分

本项目使用的是WF-H861-RTA1模组作为主控,此模组是基于Hi3861V100芯片设计的,该芯片是一款高度集成的2.4GHz芯片,集成了IEEE 802.11b/g/n基带和RF电路,包括功率放大器PA、低噪声放大器LNA、RF balun、天线开关以及电源管理模块等。

支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。并且集成了高性能32位微处理器,提供SPI、UART、I2C、I2S、PWM、GPIO以及多路ADC模拟输入等丰富的外设接口,同时支持SDIO2.0接口,时钟最高支持50MHz。

主控部分原理图如下图所示:

图3-1 Hi3861核心板电路图

模组的外设引脚功能,如下图所示:

图3-2 外设引脚功能图

NFC通信部分

NFC通信使用的是恩智浦公司生产的NT3H1101芯片,此芯片支持I2C通信,支持可配置的现场检测引脚,内部配备有EEPROM存储芯片,允许在RF和I2C之间快速传出数据,不收EEPROM内存的写入周期进行限制。

图3-3 NFC通信原理图

OLED显示屏部分

采用SSD1306芯片进行驱动0.96寸OLED显示屏,本显示屏使用黄+蓝屏幕进行显示。点阵数量为128*64。

图3-4 OLED显示屏原理图

温湿度传感器部分

SHT20,新一代 Sensirion 湿度和温度传感器在尺寸与智能方面建立了新的标准:它嵌入了适于回流焊的双列扁平无引脚DFN封装,底面3 x3mm,高度1.1mm。传感器输出经过标定的数字信号,标准 I 2 C 格式。SHT20配有一个全新设计的CMOSens®芯片、一个经过改进的电容式湿度传感元件和一个标准的能隙温度传感元件,其性能已经大大提升甚至超出了前一代传器(SHT1x 和 SHT7x)的可靠性水平。例如,新一代湿度传感器,已经经过改进使其在高湿环境下的性能更稳定。每一个传感器都经过校准和测试。在产品表面印有产品批号,同时在芯片内存储了电子识别码,可以通过输入命令读出这些识别码。此外,SHT20的分辨率可以通过输入命令进行改变(8/12bit乃至12/14bit的 RH/T),传感器可以检测到电池低电量状态,并且输出校验和,有助于提高通信的可靠性。由于对传感器做了改良和微型化改进,因此它的性价比更高-并且最终所有设备都将得益于尖端的节能运行模式。可以使用一个新的测试包 EK-H4 对SHT20进行测试。

本章使用到的硬件为SHT20,在FS_ESP32A开发板上,使用到了IO26和IO27引脚。其原理图如下图所示:

图3-5 SHT20传感器的硬件原理图

软件部分

云平台配置

注册华为云账号并登录

3. 打开华为云物联网平台的网址https://www.huaweicloud.com/,打开网址之后,点击右上角的“注册”。

图4-1 注册华为云

4. 在“注册”页面中,填入手机号进行注册,所有信息填写完成之后,点击“注册按钮”进行注册,注册成功之后,进入下一步。

图4-2 注册账号

5. 注册完成之后,再次进入华为云的官网进行登录。

图4-3 登录华为云

6. 在登录界面,填入刚刚注册的“手机号”、“华为账号”和“密码”,然后点击“登录”。

图4-4 输入自己的账号进行登录

7. 登录成功之后,点击右上角的“控制台”。

图4-5 点击“控制台”

8. 在控制台的左上角,因为“标准版免费试用仅对企业用户开放,个人用户建议使用北京四基础版”,所以选择地区为“北京四”,然后点击左侧“服务列表”。

图4-6 切换为“北京四”

9. 在“服务列表”的搜索框中搜索“IoTDA”,然后点击“设备接入 IoTDA”。

图4-7 搜索找到“IoT物联网”

10. 点击“平台接入地址”,需要在记事本记录“MQTT协议设备接入IP地址和端口号”。

图4-8 查看平台接入地址

11. 我们只需要使用设备接入的MQTT协议就可以,记住这个服务器的地址。

图4-9 使用MQTT的接入方式

创建新产品

12. 点击左侧的产品,点击右上角的创建产品按钮。

图4-10 创建产品

13. 选择所属的资源,产品名称填写smartFarm_Hi3861,数据格式默认,厂商名称和设备类型任意,点击确定。

图4-11 填写产品属性

14. 在左侧菜单栏中,找到所有设备,点击注册设备。

图4-12 注册设备

15. 选择所属资源空间,所属产品,填写设备标识码为hi3861,秘钥为fs123456,当然也可以自己定义。

图4-13 注册设备的属性

注意:生成好的设备ID和设备秘钥一定到妥善保管,只生成这一份。

创建产品模型

16. 点击左侧“产品”,点击设备新创建好的产品名称“smartFarm_Hi3861”

图4-14 创建好的产品

17. 点击自定义模型。

图4-15 创建自定义模型

18. 填加基础服务(base)

图4-16 填写服务ID

19. 添加控制服务(control)

图4-17 填写服务ID

20. 在“基础服务”中添加“fan”属性。

图4-18 添加属性

21.在“基础服务”中添加“humidity”属性。

图4-19 湿度数据属性

22. 在“基础服务”中添加“temperature”属性。

图4-20 温度数据属性

23. 在“基础服务”中添加“autoMode”属性。

图4-21 是否开启自动属性

24. 在“基础服务”中添加“humi_up”属性。

图4-22 湿度上限属性

25. 在“基础服务”中添加“humi_down”属性。

图4-23 湿度下限属性

26. 在“控制服务”中添加“fan”命令。

图4-24 添加风扇控制命令

27. 在“控制服务”中添加“autoMode”命令。

图4-25 autoMode命令

28. 在“控制服务”中添加“humidity”命令。

图4-26 humidity命令

根据设备信息,生成用户名和密码

29. 打开由华为云提供的生成用户名和密码的网址,进行生成。

https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

30. 填写生成好的设备ID和设备秘钥,点击按钮,生成用户名和密码

注意:下面的图片提供了方法。

图4-27 生成设备用户名和密码信息

31. 将生成好的信息(ClientID、Username、Password),修改文件“/applications/sample/wifi-iot/app/smarFarm/sys_config.h”,下面内容直接替换。

图4-28 替换代码中的ClientID、UserName、Password

32. 修改华为云平台的MQTT服务器的IP地址,打开Windows下cmd控制端,在控制端输入内容。

图4-29 查看华为云MQTT服务器的IP地址

33. 然后修改/applications/sample/wifi-iot/app/smarFarm/sys_config.h文件中IP地址和端口号。

图4-30 修改IP地址和端口号

设备端编译

导入程序

34. 将【FS_Hi3861开发板光盘资料/程序源码/硬件驱动源码/bsp】目录,拷贝到【OpenHarmony/base/iot_hardware】目录下。如下图所示:

图5-1 拷贝bsp目录到iot_hardware目录下

35. 将【FS_Hi3861开发板光盘资料/程序源码/硬件驱动源码/综合实验源码/智慧农业/设备端/smartFarm】目录拷贝到【OpenHarmony/application/sample/wifi-iot/app】目录下。

修改文件

36. 修改【OpenHarmony/base/iot_hardware/bsp/include/hal_bsp_ssd1306_bmps.h】文件,将“#define smartFarm 0”改为“#define smartFarm 1”。如下图所示:

图5-2 打开相关图片

37. 修改【OpenHarmony/application/sample/wifi-iot/app/BUILD.gn】文件,添加下面一句:

"smartFarm:smartFarm_demo"

其余的注释掉,只保留这一句话。

图5-3 BUILD.gn文件

编译程序

38. 在Vscode的左侧按钮中,打开DevEco Device Tool开发工具,在开发工具中首先点击“Clean”,再点击“build”进行编译源码。

图5-4 开发工具的介绍

39. 编译完成之后,会在终端中提示“SUCCESS”字样,说明编译完成。

图5-5 编译源码

40. 编译完成之后,将要烧写的.bin文件拷贝到共享目录下。在VSCode中打开终端:

1) 点击“+”,新建一个新的终端,如下图所示:

图5-6 新建终端

2) 然后在工程源码的目录下,输入以下命令,将文件拷贝到共享目录下。

cp out/hispark_pegasus/wifiiot_hispark_pegasus/Hi3861_wifiiot_app_allinone.bin /mnt/hgfs/share/

图5-7 拷贝文件

烧写程序

41. 打开【FS_Hi3861开发板光盘资料\工具软件\HarmonyOS相关工具\Hiburn】程序烧写软件,点击左上角“setting”中“com setting”选项,配置一下串口的波特率为2000000,然后点击确定,如下图所示:

图5-8 配置HiBurn烧写工具

42. 此时需要开发本通过串口线连接电脑,电脑端的设备管理器会出现一个串口端口号,当然也可以通过烧写软件中“Refresh”按钮进行刷新,然后选择要烧写的bin文件,操作步骤如下图所示:

图5-9 选择烧写的文件

43. 最后要选择“Auto burn”,要不然下载速度会很慢很慢。

图5-10 勾选“Auto burn”

44. 会自动的添加.bin文件,添加完成之后,点击“Connect”按钮,然后复位开发板,即可开始烧写程序。烧写完成之后会有提示:

图5-11 烧写中

图5-12 烧写完成

注意:烧写完成之后,一定要关闭串口连接,点击“DisConnect”。不然的话,当你点击复位之后,又会再次下载一次。

应用端编译

45. 硬件环境:手机。

46. 软件环境:微信开发者工具。

47. 源码位置:

【FS_Hi3861开发板光盘资料\程序源码\综合实验源码\智慧农业\微信小程序端\smart_farm】

编译

48. 双击打开app.wxss工程文件,即可打开微信开发者工具。

图5-13 app.wxss工程文件

49. 首先点击左上角的图标,进行扫码登录自己的微信。

图5-14 登录微信开发者工具

50. 登录成功之后,填写自己的AppID。

图5-15 修改AppID

51. 点击上面的编译按钮,进行编译,然后点击预览,用手机扫码进行调试。

图5-16 编译、预览

运行程序

按下开发板中复位按钮,让设备重启,会出现两种情况。

连接WiFi失败

第一种是连接不上附近的WiFi热点,如下图所示:

图5-17 连接WiFi失败

这是因为在NFC标签内部存储的WiFi信息与当前环境中的WiFi热点不匹配导致的,按照下面的步骤进行操作:

注意:微信小程序不支持ios系统的NFC配置功能!!下方会有方法解决。

52. 使用具有NFC功能的手机扫描微信开发者工具的预览二维码。

53. 扫描完成之后,在微信小程序中,点击“NFC配网”按钮。

图5-18 NFC配网

54. 在弹出的“NFC配网设置”界面中,填写正确的WiFi名称和WiFi密码。

图5-19 填写WiFi信息

55. 填写完成之后,点击“开始配置”,会提示“请靠近设备”,此时将手机靠近开发板上的NFC线圈区域。

56. 当提示“写入数据成功”时,说明烧写NFC线圈成功。

图5-20 写入数据成功

57. 然后再次按下开发板中的复位按钮。

58. 还有一种是ios系统下微信小程序不能使用NFC配置的功能时,需要按照下面步骤进行操作:

1) 在ios系统的手机商店中下载“NFC Tools”NFC调试工具。

图5-21 NFC Tools主界面

2) 然后点击“写”功能。

图5-22 写数据

3) 点击“添加记录”。

图5-23 添加记录

4) 添加“Wi-Fi网络”信息。

图5-24 配置WiFi网络

5) 在“配置WiFi网络”中,选择身份验证为“WPA/WPA2-Personal”,并输入SSID和密码。

图5-25 选择身份验证

6) 然后点击“写/87字节”按钮,进行烧写。

图5-26 写数据

7) 此时会弹出“贴近NFC标签”,请靠近开发板上NFC线圈部分。

图5-27 贴近NFC

8) 烧写完成之后,会在显示如下图片,说烧写NFC芯片数据成功。

图5-28 烧写NFC标签成功

连接WiFi成功

第二种是直接连接附近WiFi成功,会在OLED显示屏界面中会显示当前设备连接附近WiFi热点的提示信息和连接华为云平台服务器的信息,直到在界面中显示如下图所示,说明连接华为云成功。

图5-29 开发板正常运行

连接成功之后,我们需要打开微信小程序,在小程序中界面中,我们可以点击开关按钮,进行下发指令让设备中风扇开或者关,还可以进行调整当前湿度传感器的阈值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联合体(共用体) :(笔记补充)

目录 一.联合体的基本概念 二.相关面试题 三.联合体大小计算 关于结构体的内存对齐:http://t.csdn.cn/fbQuo 一.联合体的基本概念 联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以…

jar转成dex文件 dex文件转化为smali文件

jar转成dex文件 dx 可以利用android studio中的dx工具。 可以看到android的tool安装位置: 在此路径下的如下目录有dx.bat,这个正是我们需要使用的工具。 D:\sdk\build-tools\30.0.3将dx.bat添加到环境变量 基本指令 > dx --dex --output 输出路径 待转化的jar包C

MySQL通过 XtraBackup 备份恢复单个库

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:王权富贵文章来源:GreatSQL社区原创 1.概述 本文通过 XtraBackup 备份单个数据库,然后…

Elasticsearchdump 数据导入/导出

一.安装过程 当前工具主要是用来对ES中的数据进行数据导入/导出,以及对数据迁移相关,使用elasticdump工具需要使用到npm,所以需要安装相关的依赖 目前使用到的ES版本是7.x 安装NODE 通过npm安装elasticdump # 本地安装和全局安装的区别在于…

3.25 haas506 2.0开发教程-充电电压检测

haas506 2.0开发教程-充电检测1.案例说明2.硬件准备连线3.代码4.测试1.案例说明 可以通过USB端口对连接在开发板上的锂电池进行充电,USB最大供电电压5V。案例使用锂电池供电。通过原理图看到使用ADC2读取锂电池电压,并且采集电压做了分压处理&#xff0…

第六篇 VGGNet——模型精讲

文章目录 1、模型介绍网络结构3 模型特性1、模型介绍 VGGNet是通过简单堆叠卷积构建网络的巅峰之作,在后面的模型就是ResNet这种残差网络的时代。 VGGNet是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以7.32%的错误率赢得了201…

为什么我们的微服务中需要网关?

玩过微服务的小伙伴对 Spring Cloud 中的的 Spring Cloud Gateway 多多少少都有一些了解,松哥之前既写过相关的文章,也录过相关的视频跟小伙伴们介绍 Spring Cloud Gateway,不过在之前的介绍中,我可能更加侧重于跟小伙伴们介绍 Sp…

接到新需求时,从何开始设计?

即便我们能够极尽所能把代码写整洁,规避各种坏味道,但我们小心翼翼维护的代码,还是可能因为新的需求被破坏。 新的需求总会在路上,所以,写代码时需要时时刻刻保持嗅觉。 实现驳回 有个功能,内容作品提交…

lxmlxpath一站式教学

文章目录XPath定义XPath 概览安装lxml初步使用xpath 常用表达式获取所有节点获取子节点获取父亲节点属性匹配获取文本获取属性属性多值匹配多属性匹配按序选择节点轴选择总结XPath定义 XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历…

OMNet++安装pydev

菜单栏->Help->Install New SoftWare->Add 输入 Pydev http://pydev.sourceforge.net/pydev_update_site/5.2.0链接为下载5.2.0版本&#xff0c;若jdk<1.8安装5.2.0之前的版本。\color{blue}{链接为下载5.2.0版本&#xff0c;若jdk<1.8安装5.2.0之前的版本。}链…

无代理Bean对象Spring循环依赖处理

Bean A和B互相依赖 A对象或者B对象,创建对象时会形成死循环,解决: Spring中创建对象:实例化、初始化 闭环:此时,图中是一个闭环,如果想解决这个问题,那么就必须要保证不会出现第二次创建A(B)对象这个步骤,也就是说从容器中获取A的时候必须要能够获取到 思考,在spring…

RabbitMQ(三)工作原理及核心概念

目录工作原理图1.Connection 连接2.Channel 信道3.Virtual host 虚拟主机4.Queue 队列5.Exchange 交换机5.1 direct5.2 fanout5.3 topic5.4 headers官网地址&#xff1a;https://www.rabbitmq.com/ 下载地址&#xff1a;https://www.rabbitmq.com/download.html RabbitMQ 的5大…

chk文件恢复和文件恢复的区别有哪些?

文件恢复也就是我们常说的数据恢复&#xff0c;一般用于恢复误删除、损坏的文件数据&#xff0c;那么chk文件恢复又是什么意思呢&#xff1f;两者有什么区别呢&#xff1f;文件恢复市面上常见的文件恢复软件&#xff0c;一般都是用于恢复那些被删除、损坏的文件数据恢复&#x…

Jenkin权限控制——项目矩阵授权策略

开启授权策略 Jenkins的项目权限控制通过【授权策略】实现&#xff0c;【授权策略】需要plugins提供&#xff0c;首先需要安装Role-based Authorization Strategy 安装Role-based Authorization Strategy 管理Jenkins——》插件管理——》搜素——》Role-based Authorizatio…

距离教资考试还有两天,你的照片准备好了没有?

距离教资考试还有两天不知道你的教资报名照准备好了没有?照片不合格可是不能报名成功的&#xff01; ​ ​ 1、本人近6个月以内免冠正面彩色证件照 2、一寸白底&#xff0c;比例3:4 3、不允许戴帽子、头巾、发带、墨镜 4、照片中显示考生头部和肩膀上部 5、照片为jpg或jpe…

云游戏渐入佳境,众玩家同行不同路

配图来自Canva可画 有人曾在2019年问道&#xff1a;“云游戏能成为5G第一个2C的杀手级应用吗&#xff1f;”在当时&#xff0c;几乎所有人对这个问题的回答&#xff0c;都有一种“只缘身在此山中”的迷雾感&#xff0c;还看不清脚下的路会延伸到何处。彼时各大厂商都在备战&am…

MQTT 发布/订阅模式介绍

MQTT 发布/订阅模式 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它将发送消息的客户端&#xff08;发布者&#xff09;与接收消息的客户端&#xff08;订阅者&#xff09;解耦&#xff0c;使得两者不需要建立直接的联系也不…

向量检索服务迭代演进

背景在搜索推荐系统里&#xff0c;有一个重要的服务是向量检索服务&#xff0c;也就是求向量在空间中最相近的topk个向量&#xff0c;在搜索系统里&#xff0c;涉及大量的召回引擎可能需要用到向量检索服务&#xff0c;需要在线实时计算&#xff0c;并且可快速响应&#xff1b;…

Jetpack Compose中的startActivityForResult的正确姿势

之前在 Jetpack Compose中的导航路由 里简单的提到了从 Compose 导航到其他 Activity 页面的方式&#xff0c;对于不带返回结果的则就是跟以前一样简单的启动Activity的代码&#xff0c;而如果是startActivityForResult方式的&#xff0c;需要使用带回调的方式去启动&#xff0…

为什么 TCP 协议有性能问题

TCP 协议可以说是今天互联网的基石&#xff0c;作为可靠的传输协议&#xff0c;在今天几乎所有的数据都会通过 TCP 协议传输&#xff0c;然而 TCP 在设计之初没有考虑到现今复杂的网络环境&#xff0c;当你在地铁上或者火车上被断断续续的网络折磨时&#xff0c;你可能都不知道…