OpenWrt 智能路由器在中小型规模智慧农业中的应用

2021-05-25 10:24苏俊维
科学技术创新 2021年11期
关键词:串口路由器嵌入式

苏俊维

(广西民族师范学院,广西 崇左532200)

随着嵌入式技术的发展,智慧农业被农民关注,虽然国外农业智慧化和集成化水平很高,但是国内农业还以人工管理为主[1]。嵌入式领域的发展最初是由数码电子等移动消费产品带动,但是随着人们生活水平的提高,更扩大了这些嵌入式设备的应用范围,但是国内智慧农业还处于初级水平,还需要不断探索。

2012 年嵌入式系统应用卷起热潮,当时以ARMv4 架构的ARM9 系列处理器为代表衍生出很多消费级电子产品;从2013 年至今,流行ARMv7 架构的Cortex系列的处理器:其中STM32 单片机占据大部分中低档电子消费市场,成本比ARM9 低很多,其中高端电子消费市场采用Cortex-A9 处理器方案,搭载Android 系统。虽然ARM9 时代已远去,但是基于MIPS架构的路由器芯片却活跃了,国企能低成本生产该芯片。智能路由OpenWrt 系统是嵌入式的Linux 操作系统,其开放源代码和免费的优点相比半开源的Android 系统更具有竞争力。

本文采用了搭载国产雷凌公司生产的RT3070 主控芯片的路由器,该路由器型号为HG255d,该路由器作为主控单元来实现中小规模智慧农业的集成化管理和监控,形成一套系统方案。

图1 总体系统结构图

1 系统整体方案设计

该系统包括了ESP32-CAM图传模块、STM32F103 控制模块、气象数据采集仪模块和路由器4 部分组成。总体系统结构如图1所示。

该系统控制中心为HG255d 智能路由器,也作为网络服务器。该路由器有一个USB接口,所以需要用一个USB扩展器扩展USB的数量以满足各种USB设备的连接。系统设计以模块化设计为主,各个模块独立工作。模块都外接了一些设备或者传感器,并且每个模块都与主控智能路由器通过有线或无线连接。系统还配备了两种智能农业监控的客户端:手机客户端和电脑客户端,其作用是让农民通过该客户端远程监控农场。

2 系统硬件设计

系统的硬件设计以现成的电子模块组合为主,直接采用具有工业级别性能的模块组成硬件系统,满足系统稳定性和扩展性。

2.1 ESP32-CAM图传模块。ESP32-CAM模块搭载了乐鑫公司生产的ESP32 处理器,该模块具有WIFI 联网功能,可外接OV2640 摄像头。主要作用是采集不同地点的农作物生长状态的图片或者是土壤状态的图片。可以部署多个,通过无线WIFI 的方式与服务器连接,供电采用高能锂电池18640 电池组,以满足较高功耗需求,同时也满足可移动的需求。

2.2 STM32F103 控制模块。STM32F103 单片机是该系统最重要的部分,是控制继电器、传感器、舵机和水泵的监控机构。该单片机IO 口和串口数量多,分配一个串口通过USB 转串口线与USB Hub 连接,最终与服务器硬件相连;传感器包括:18B20 防水温度传感器、DHT11 温湿度传感器和BH1750FVI-TR 光照传感器,这些传感器主要是采集农作物的生长环境参数;继电器控制灯关照明;舵机是负责控制遮阳和遮雨布的拉伸;水泵负责控制抽水灌溉;该模块可部署多个,达到多点控制效果,该模块的功耗较低,直接采用路由器USB口提供的电源供电。

2.3 气象数据采集仪模块。该模块是具有商用级别的公司生产的现成模块,该采集仪是配合气象站传感器配套使用,构成了一个自动气象站采集系统。该系统通过USB转串口直接跟USB Hub 连接,最后与服务器智能路由相连。该模块主要采集大气温度、风速、二氧化碳浓度、风向和PM2.5 等大气参数传给服务器,耗电不低,但是搭载了一个太阳能充电装置,在白天,模块消耗的电能可以由太阳能供给。

3 软件设计与实现

3.1 应用程序设计。应用程序设计主要是针对路由器,Linux系统的特点是能在系统安装软件包和直接运行由C语言编写并且通过电脑交叉编译生成的应用程序可执行文件。因为路由器要跟各个模块通信,所以对每一个模块都要单独设计通信的应用程序,为了提高系统的集成化,尽量少编写驱动程序。智能路由无线通信是基于TCP/IP 协议使用套接字Socket 进行应用程序开发实现与无线WIFI 通信的模块连接;另外还要编写串口应用程序接收单片机串口传输的数据,路由器系统本身的系统就附带有串口驱动,开发者只要在应用程序里面调用串口驱动即可控制路由器的串口传输数据,最后还要编写MQTT协议有关远程控制程序以便用户能在远方获取农场作物生长的参数并能控制农场的电器。

各种应用程序开发完成后,需要结合多线程并发运行,不同的应用程序的数据交互使用管道或者是套接字的编程方式完成。

3.2 驱动程序设计。驱动程序的设计涉及到硬件底层,根据硬件结构去地编写程序达到控制硬件的效果。本文ESP32-CAM图传模块主要编写的是抓图程序,将图像传感器的数据通过WIFI 传输到服务器,采集图片的程序主要采用了现成的库完成;本文STM32F103 模块主要编写的是单片机控制程序,包括继电器控制驱动、串口驱动、各种传感器驱动和舵机PWM波控制驱动,这些驱动也是借助了ST公司官方提供的库函数来实现;气象数据采集仪这个模块比较特殊,是利用现成的模块,服务器只需打开串口驱动获取气象采集仪通过串口回传的数据并且解析就能获取气象数据,开发者不用了解采集仪的内部结构,只需了解传输数据的格式即可获取有价值的气象数据,气象数据格式如图2 所示。

图2 气象数据格式

3.3 客户端程序设计。客户端程序设计是系统最关键的地方,因为用户不需要每天到农场去打理农作物,只需要通过移动终端远程操作智能农业系统对作物进行有效管理,分为手机客户端和电脑客户端。

手机客户端开发是以安卓APP 为载体,安装到安卓手机上实现远程监控,要实现低成本的远程监控,使用MQTT 协议通信,本文采用中国移动物联网开发平台的MQTT服务器实现了消息订阅和发布,完成远程数据的传输,程序也是借助了现成的Java 版本的MQTT库来实现,另外还要将监控程序写成服务的形式在手机后台长期运行,以便有突发情况发生的时候通知用户。手机客户端主要实现的功能是远程监控,在局域网的条件下还能实现视频传输,视频传输的原理是利用ESP32-CAM模块提高抓图的频率从而形成图片流,推流到手机界面的时候形成视频。

电脑客户端开发以Java 程序为主,使用Swing组件现成的方法设计出简洁的UI 界面获取气象站参数信息。原理是基于TCP/IP 协议发送http 请求去获取服务器的响应,路由器收请求就通过串口获取气象数据采集仪的数据,再通过局域网传输给电脑客户端,电脑客户端将这些有规律的字符串解析之后将气象数据显示在界面上,数据将按照时间存入MySQL 数据库供用户分析历史数据,电脑客户端如图3 所示。

图3 电脑客户端

3.4 视频传输程序的设计。系统控制中心的智能路由器可以移植嵌入式Mjpg-Streamer 开源程序完成视频采集,该程序不仅能驱动摄像头采集视频流显示在局域网的浏览器上,而且能通过浏览器的按钮控制摄像转动。程序的工作流程是:路由器运行一个抓图线程不断抓取图片流共享到内存空间,同时监听客户端的请求,当有客户端连接时,将内存空间的图片流推送到客户端的浏览器界面形成视频流;另外运行一个线程来监听客户端控制摄像头的指令。程序流程图如图4 所示。

图4 视频传输程序流程图

4 结论

通过该系统,用户可以方便远程查看中小型农场的农作物生长环境参数,又能查看农作物周围的大气环境参数,最重要的是可以远程监控农作物的生长状态和集成化管理农作物,该系统采用商用路由器二次开发而成,具有稳定、安全、易扩展和性价比高等优点,有一定的市场推广价值。

猜你喜欢
串口路由器嵌入式
基于IMX6ULL的嵌入式根文件系统构建
买千兆路由器看接口参数
维持生命
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
路由器每天都要关
路由器每天都要关
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
TS系列红外传感器在嵌入式控制系统中的应用
嵌入式PLC的设计与研究