流动性智能环境检测车
简介
基于ESP32,Arduino IDE,App lnventor,PHP等,流动性智能环境检测车,致力于足不出户不间断检测外界环境,以及监控外界环境。并且可以远程控制,远程查看信息
简介:基于ESP32,Arduino IDE,App lnventor,PHP等,流动性智能环境检测车,致力于足不出户不间断检测外界环境,以及监控外界环境。并且可以远程控制,远程查看信息开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
前言
随着全球工业化进程的加速以及城市化规模的不断扩大,环境问题已成为当今社会面临的重大挑战之一。大气污染、水污染、土壤污染等各类环境问题不仅对人类的健康构成了严重威胁,还对生态平衡造成了难以逆转的破坏。在这样的严峻形势下,环境监测作为环境保护的基础工作和重要手段,其准确性、全面性和及时性显得尤为关键。
传统的环境监测方法主要依赖于固定监测站点,这些站点虽然能够在一定程度上获取特定位置的环境数据,但存在明显的局限性。固定站点布局相对稀疏,难以覆盖到所有需要监测的区域,尤其是一些地形复杂、交通不便或者面积广阔的区域,容易形成监测盲区。而且,固定站点的监测设备通常只能获取其所在位置的局部环境信息,对于区域内环境的动态变化和差异难以全面把握,无法满足对环境进行精细化监测和管理的需求。
本研究基于 ESP32 设计开发的智能流动环境检测车,旨在克服传统固定监测方式的不足。该车能够在不同环境场景下灵活移动,深入到各个角落进行环境数据采集,大大拓展了环境监测的范围和灵活性。通过集成多种先进的传感器,如 BMP280 用于精确采集温湿度和气压数据,ESP32cam 摄像头能够捕捉直观的图像信息,再结合网络 API 获取的天气预报信息,实现了多源数据的综合采集与分析,为全面、准确地了解环境状况提供了丰富的数据支持。此外,借助服务器和手机 APP,实现了数据的高效传输与远程监控,工作人员可以随时随地掌握检测车采集到的环境信息,及时发现环境问题并做出相应决策。车辆还具备遥控功能,方便在特殊环境或危险区域进行作业操作,进一步提高了检测车的实用性和适应性。同时,配备的大马力割草电机使检测车在环境监测的基础上,还能承担除草任务,可应用于公园、草坪等场所的综合环境维护,提高了设备的多功能性和资源利用率,在环境监测与场地维护领域具有极为重要的现实意义,有望推动相关行业向智能化、高效化方向迈进。
项目展示
(一)整车展示
(二)APP展示
(三)服务器日志
(四)MQTT日志
项目功能
(一)遥控器控制
采用PS2无线手柄来手动控制履带车,2.4GHz的无线频率,连接稳定,且距离长达10米。按键功能丰富,可以控制方向的同时,启动割草电机,或实时记录数据
(二)移动气象站
采用GY-39传感器,低成本,气压,温湿度,光强度 传感器模块。同时采用高德天气API,数据来源中国气象局
可以获取实时温湿度情况,天气情况,获取气压,光照强度,将数据汇总服务器,进行数据分析
分析得出天气状态曲线图,已经实时反馈APP内,足不出户即可获取室外天气状态
(三)APP端(简易版)
开发了一个简易版的APP,虽然UI设计一坨,但是可以满足基础的功能
APP控制采用MQTT协议,延迟低,容错率小
自动驾驶的方式采用固定路径,在对应的图形内,走完全程
(四)割草
采用12V的755电机,这是款锂电割草机,通过高速旋转配合刀片可以进行除草
注意:本项目采用的是安全的尼龙刀片,但是尼龙刀片的锋利度不够,所以如果用在产品上面,建议用金属刀片!
用金属刀片,一定一定一定要在螺母上焊锡,或涂上强力胶水,否则非常危险!
硬件方案
(一)主控芯片
采用两块ESP32-WROOM-32模组
①号模组控制电机,并且搭配MPU6050陀螺仪模块进行PID控制电机,从而带动履带运动
②号模组负责数据的处理和传输,将数据传输到API,然后服务器进行数据处理,反馈到APP和单片机
ESP32 WROOM 32处理器具备强大的处理能力,双核架构与高时钟频率可高效处理复杂任务及大量数据;丰富的外设接口涵盖多种数字、模拟接口及特殊传感器接口,能便捷连接各类传感器与执行器。出色的无线通信功能支持 Wi-Fi 与蓝牙,便于远程数据传输及与周边设备交互。
1. 采用 Xtensa 双核 32 位 LX6 微处理器,拥有两个独立的 CPU 内核,可单独控制,时钟频率最高可达 240MHz,计算能力高达 600DMIPS
2. 片内集成4MB 闪存,用于程序和数据存储
3. 集成 802.11b/g/n HT40 Wi-Fi 收发器,支持 WiFi 直连
4. 支持蓝牙 4.2,包括经典蓝牙和低功耗蓝牙,适用于各种物联网应用
5. 具有 18 个 12 位模数转换器(ADC)输入通道,可获取从 0 到 4095 的模拟读数,对应 0V 到 3.3V 的电压范围;还拥有 2 个 8 位 DAC 通道,可将数字信号转换为模拟电压信号输出
6. 配备 SPI、I2C、UART、I2S 等多种数字接口,方便连接各种传感器、执行器和外部设备
(二)屏幕可视化
屏幕倒不是太重要,因为履带车主打一个智能,使用屏幕的重要性没有APP大,可用可不用
项目采用2款常见的屏幕,OLED和TFT_LCD,相当于一块主屏幕,一块副屏
①1.8寸TFT_LCD
可以用来显示实时天气站信息,以及显示单片机和APP、服务器的连接状态,反馈单片机状态,和报警信息
②0.96寸OLED
目前副屏的想法是,显示产品信息的二维码,以及显示2块ESP32的通讯状态,显示心跳信息
(三)环境检测芯片
采用GY-39模块,此模块集成BMP280和MAX44009 传感器,本项目主要使用BMP280,并采取UART通信,可以采集气压、温度、湿度、海拔信息,模块具有非常良好的稳定性以及抗干扰能力,可以用于复杂的环境
1. 精确测量大气压力,还可通过测量气压的变化来计算出高度,同时也能测量温度
2. 压力分辨率可达 0.18 Pa,高度分辨率达 1.5 米,气压测量范围为 300 hPa 至 1100 hPa ,覆盖从海平面到约 9000 米的高度
3. 工作电压在 1.71V 至 3.6V 之间,工作温度范围为 - 40℃至 + 85℃ ,能适应各种恶劣环境
4. 其工作温度范围广,在 - 40℃至 + 85℃的区间内都能稳定工作,在农业户外环境或工业高低温场景中能保持性能稳定
5. 内部集成了校准和补偿算法,能够自动对温度、压力等因素进行校准和补偿,减少环境因素对测量结果的影响,提高测量的准确性和稳定性。
6. 具备数字滤波功能,可以对采集到的压力和温度数据进行滤波处理,有效去除噪声和干扰,使数据更加平滑稳定。
(四)电机驱动模块
模块采用AT8236芯片,款双通道直流电机驱动芯片,能够同时驱动两个直流电机,具有较高的驱动能力和效率。它可以实现电机的正转、反转、调速等功能,并且内置了过流保护、过热保护等多种保护功能,提高了电机驱动的可靠性和安全性。
1. 采用了高性能的功率 MOSFET 管作为驱动元件,具有低导通电阻和高开关速度的特点,能够有效降低电机驱动过程中的功率损耗,减少发热,提高驱动效率和稳定性。
2. 内置了过流保护、过热保护和欠压保护等多种保护电路。当电机出现过载或短路导致电流过大时,过流保护电路会及时切断电机电源,防止芯片和电机损坏;当芯片温度过高时,过热保护电路会降低电机的驱动能力或停止驱动,避免芯片因过热而损坏;在电源电压低于一定阈值时,欠压保护电路会阻止芯片工作,确保电机驱动的安全性和稳定性。
3. 与微控制器配合使用时,能够精确控制 PWM 信号的占空比,从而实现对电机转速的精确调节。通过调整 PWM 信号的占空比,可以在较宽的范围内实现电机转速的线性变化,满足不同应用场景对电机转速的控制要求。
4. 在芯片设计过程中,充分考虑了电磁干扰问题,采用了多种抗干扰措施,如优化电路布局、增加滤波电容等,使其在复杂的电磁环境中能够稳定工作,不易受到外界干扰信号的影响。
(五)手动遥控模块
采用PS2手柄进行手动控制,有接收器和手柄两部分,操作简单,功能按键多,传输距离10米左右,连接有良好的稳定性
1. PS2 手柄的按键和摇杆具有高灵敏度和快速响应的特点,能够使农业机器人迅速执行操作人员的指令,实现精准的农业作业,减少作业误差,提高作业质量和效率。
2. PS2 手柄技术成熟,结构相对简单,维护和维修成本低,即使出现故障,也容易找到专业维修人员或自行进行简单维修
(六)摄像模块
采用ESP32-CAM模块,这个模块基于ESP32-S芯片,搭配OV3660摄像头,可以自动采集图像,并且通过ESP32-S的HTTP通信将图片传输到服务器中,实现远程监控,由于ESP32-CAM工作时发热巨大,为了运行的稳定性且安全性,所以加装了Mini风扇进行散热
1. 采用低功耗双核 32 位 CPU,主频高达 240MHz,运算能力高达 600 DMIPS ,内置4MB PSRAM ,为图像的快速处理和存储提供了强大的运算和存储能力
2. OV3660摄像头,300 万像素,1/5 英寸
3. 集成 Wi-Fi 和蓝牙功能,支持 802.11b/g/n 标准,通过 Wi-Fi 可以将图像数据传输到云端或其他设备,实现远程监控和控制
(七)继电器模块
项目采用了12V的割草电机,用于割草,所以基于割草机和整体的安全性,采用继电器来控制割草电机,通过主控芯片来控制继电器,实现隔离和安全控制电机的功能
1. 割草电机在直接启动时,会产生较大的启动电流,这可能会对电机的绕组和绝缘造成损害,影响电机的使用寿命。继电器可以与降压启动、软启动等装置配合使用,通过控制启动过程中的电压或电流,实现电机的平稳启动,降低启动电流对电机的冲击,从而延长电机的使用寿命。
2. 在割草过程中,可能需要频繁启停电机。继电器可以快速响应控制信号,实现电机的频繁通断,而不会对电机的机械结构和电气性能造成过大的损害。相比之下,如果直接通过手动开关频繁操作电机,可能会因操作不当或开关寿命等问题导致电机受到额外的损伤。
(八)驱动电机
采用减速比为1:56的减速电机,型号520,额定电压12V
农业、工业性能的智能车,选择1:56减速比的履带式是最为合适的,承重能力和稳定性最佳,可用于复杂环境以及运行稳定,不容易颠簸导致硬件出错
整体设计
(一)车架设计
车架采用3D打印,分为2部分,主要部分为车架主体,次要部分为固定履带的固定架
采用3D打印,可以在保证车架强度的前提下,实现车架的轻量化。这对于提高智能车的能源效率、续航里程和操控性能具有重要意义。
并且根据本项目长达1个月的测试,已经验证3D打印车架的强度可以完成基本的环境监控,以及在较为恶劣的环境下,依旧有良好的流动性
(二)履带设计
履带采用了2个传动轮,2个承重轮,履带宽度45mm,履带和轮子均采用高强度的塑料,确保稳定性的情况下,保证整体轻量化。
合适的履带宽度和轮子,可以保证整体运行的流畅且在复杂场景下的运行
(三)支撑设计
所有的智能硬件放在一张200*200mm的透明亚克力板上,用4颗M3螺丝进行固定,并且亚克力板下有做支撑,以保持硬件的在智能车运动过程中的稳定性和安全性
硬件设计
(一)原理图设计
【1】设计思路
硬件方面采用2块ESP32芯片,一块负责电机控制,一块负责传感器和网络通信、人机交互等,同时2块ESP32进行串口通信,进行信息传递和实时检测状态。ESP32-CAM摄像头以及WIFI模块则不受到主控板的管理,上电后ESP32-CAM摄像头以及WIFI模块独立运行
将2块ESP32分开设计,供电,下载电路,通信电路单独设计,互不干扰,最大程度上减少干扰
【2】AMS1117降压电路
AMS1117 是一款常用的低压差线性稳压器集成电路
项目使用AMS1117-3.3,可将输入的电压降至3.3V给主控以及传感器供电
【3】CH340K串口电路
CH340K 是由南京沁恒微电子设计生产的一款 USB 转串口芯片
CH340K 作为 USB 转串口芯片,能够将计算机的 USB 接口转换为串口通信接口,为 ESP32 提供方便的程序下载通道。可以使用 Arduino IDE,通过 CH340K 将编写好的程序代码下载到 ESP32 芯片中
在程序开发过程中,可以借助 CH340K 建立的串口连接,使用串口调试助手等工具,在计算机上实时查看 ESP32 输出的调试信息,如程序运行状态、变量值、错误提示等,便于快速定位和解决程序中的问题。
【4】自动下载电路
电路中通常使用两个 NPN 型三极管来控制 ESP32 的 GPIO0 和 EN 引脚。外部控制信号由CH340K芯片的 DTR 和 RTS 引脚提供,通过电阻与三极管的基极相连,三极管的集电极分别连接到 ESP32 的 GPIO0 和 EN 引脚,发射极接地
当计算机端打开下载软件并操作串口时,下载软件会通过CH340K向 ESP32 发送特定的信号序列来控制其进入下载模式。例如,先将 DTR 引脚设置为低电平,RTS 引脚设置为低电平再变为高电平,此时 ESP32 的 GPIO0 引脚被拉低,EN 引脚产生一个上升沿,ESP32 复位后检测到 GPIO0 为低电平,便自动进入下载启动模式
【5】PS2手柄电路
使用功能ESP32的GPIO12、13、14、15引脚连接PS2的手柄接收器
DI/DAT:信号流向,从手柄到主机,此信号是一个 8bit 的串行数据,同步传送于时钟的下降沿。信号的读取在时钟由高到低的变化过程中完成。
DO/CMD:信号流向,从主机到手柄,此信号和 DI 相对,信号是一个 8bit 的串行数据,同步传送于时钟的下降沿。
NC:空端口;
GND:电源地;
VDD:接收器工作电源,电源范围 3~5V;
CS/SEL:用于提供手柄触发信号。在通讯期间,处于低电平;
CLK:时钟信号,由主机发出,用于保持数据同步;
NC:空端口;
ACK:从手柄到主机的应答信号。此信号在每个 8bits 数据发送的最后一个周期变低并且 CS 一直保持低电平,如果 CS 信号不变低,约 60 微秒 PS 主机会试另一个外设。在编程时未使用 ACK 端口。
【6】MPU6050电路
MPU6050集成了 3 轴 MEMS 陀螺仪、3 轴 MEMS 加速度计以及一个可扩展的数字运动处理器 DMP,通过IIC通信和电机ESP32通信,为ESP32提供智能车运行的方向状态
【7】继电器和电机接口
IO32为割草电机启动的继电器,当IO32为低电平时,继电器导通,割草电机启动
IO33、IO25、IO26、IO27四个引脚为电机驱动板的PWM控制,通过不同的PWM控制电机正反转,以及正反转的速度
【8】GY-39传感器电路
GY-39 是一款低成本,气压,温湿度,光强度 传感器模块。
将GY-39连接到功能ESP32的串口上,GY-39采用串口通信,ESP32接收到对应的信息并解析下来
【9】屏幕电路
采用2块屏幕,一主一副
主屏幕为1.8寸TFT_LCD屏,可显示彩色图案,拥有良好的显示效果,采用SPI通信,使用ESP32的VSPI接口。
副屏为0.96寸OLED屏,可显示黑白图案,在阳光下还能拥有高清的显示效果,可以用与辅助主屏显示,或者显示智能车的重要信息,使用ESP32的IIC接口
【10】原理图全家宝
(二)PCB设计
PCB为4层板,上下两层铺铜(GND)
采用正反布局,正面为传感器、屏幕、接口等,反面为2颗ESP32以及对应的降压芯片、通信芯片等
天线部分采用禁止区域,减少ESP32天线区域的干扰
PCB元器件焊锡采用,风枪低温锡初焊,电烙铁高温锡加焊的方式,降低元器件在抖动或外力的情况下产生开裂的情况
采用科学合理的布局方式,将各个电子元件紧凑而有序地放置在 PCB 板上,充分利用空间的同时,确保了信号传输的最短路径,减少了信号干扰和衰减,提高了电路的整体性能。
在元件选型上,充分考虑了元件的质量和可靠性,选用了知名品牌的高品质元件,这些元件具有良好的稳定性和耐用性,能够在恶劣的工作环境下长时间稳定工作。
通过增加必要的电源滤波、信号调理等电路,以及采用冗余设计、容错设计等手段,提高了 PCB 板的稳定性和抗干扰能力,减少了因外界因素导致的故障概率。
程序设计
在程序设计方面,采用模块化程序设计法,将整个程序划分为多个功能明确的模块,每个模块负责一项特定的任务,使得代码结构清晰,易于理解。当需要对程序进行修改或维护时,可以快速定位到相关模块,而不会在大量的代码中迷失方向。
通过将复杂的系统分解为多个简单的模块,降低了每个模块的复杂度,便于进行设计和实现。同时,也有利于对系统进行整体的分析和优化,提高系统的稳定性和可靠性。
当系统出现问题时,模块化设计可以快速定位问题所在的模块,进行有针对性的调试和测试。
(一)程序设计环境简介
Arduino IDE:这是 Arduino 的主要编程软件,是一个开源的集成开发环境。它基于 C/C++ 语言,为开发者提供了一个简单易用的平台,用于编写、编译和上传程序到 Arduino 开发板。其具有跨平台兼容性,支持 Windows、Mac OS X、Linux 等主流操作系统。
拥有大量的开源库,这些库能够帮助开发者快速实现各种功能,减少了开发的时间和工作量。同时,还有许多示例代码可供参考,方便初学者学习和借鉴。
(二)电机ESP32程序设计
可以通过手柄的方式,直接将控制信息传输到ESP32,也可以通过程序ESP32将远程控制信息通过串口通信到电机ESP32,同时MPU6050姿态传感器实时检测运动姿态,并进行矫正。
ESP32输出继电器信号和电机驱动PWM,通过控制2个减速电机的PWM,即可控制前进、后退、左转、右转
(三)功能ESP32程序设计
主要采用功能ESP32的WIFI功能,使用HTTP协议,将数据上传到服务器中,同时,使用MQTT协议,实时接收APP控制的信息,然后可以将所需的信息上传到屏幕中显示,或者进行调试
(四)软件设计环境简介
App Inventor 是一款由谷歌开发、后由麻省理工学院(MIT)维护的可视化编程语言和开发平台,采用图形化的编程界面,通过简单的拖拽和拼接代码块来构建应用程序逻辑,无需手动编写大量的文本代码,大大降低了编程门槛。
APP的内容首先是能够实现ESP32进行远程控制,然后接收传感器的数据,和天气API的户外天气数据,并且获取ESP32-CAM的图像,实现远程查看监控站的信息
(五)软件外观设计
主界面为远程控制功能,可远程控制前进与后退,并且底下实时显示当前智能车的画面。然后可以进入监控中心,进行智能车的数据监控和查看实时数据
监控中心有服务器和智能车的状态,离线为红色,在线为绿色
智能车的实时数据监控,将ESP32上传的温度、湿度、气压数据显示
API获取的户外天气,由中国气象局提供数据支持,显示天气状态和风力风向,还有户外温度、湿度,监控中心也能实时查看智能车的画面
(六)软件代码设计
当按钮按下时,使用HTTP协议GET请求访问服务器,将数据上传服务器,根据方向不同,上传不同的数字,当释放按钮时,上传数字0,0为停止数据
定时2秒一次获取服务器的图像信息,由于HTTP协议的显示,所以很难显示动画的效果
监控中心使用1秒的定时器,一秒读取一次数据
服务器反馈信息,如果服务器访问API成功,则服务器API绿灯
ESP32上传数据,如果10秒内有数据上传,则显示绿灯
将服务器数据解析下来,服务器的数据都是JSON格式,所以先把JSON转化成字典,然后解析字典的内容,将字典的内容发送到对应的标签上
(七)服务器代码设计
1. php
2. require("./phpMQTT.php");
3. $id=$_GET["id"];
4. if($id==""){exit("请输入id号");}
5. $server = 'mqtt.xemowo.top'; // 服务器IP
6. $port = 1883; // 服务器端口
7. $username = ''; // 用户名
8. $password = ''; // 密码
9. $client_id = 'pub_' . uniqid();
10.
11. $mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id);
12.
13. if ($mqtt->connect(true, NULL, $username, $password))
14. {
15. $topic = 'esp';//主题
16.
17. if($id==0)//停车
18. {
19. $msg = "0";
20. }
21.
22. if($id==1)//前进
23. {
24. $msg = "1";
25. }
26.
27. if($id==2)//后退
28. {
29. $msg = "2";
30. }
31.
32. if($id==3)//左转
33. {
34. $msg = "3";
35. }
36.
37. if($id==4)//右转
38. {
39. $msg = "4";
40. }
41.
42. echo $id;
43.
44. $mqtt->publish($topic, $msg, 0);
45.
46. $mqtt->close();
47. }
48. else
49. {
50. echo "Time out!\n";
51. }
gogo.php,用于将APP的控制信息,通过此程序,发送到MQTT中,然后MQTT将数据同步到ESP32
总结
尽管目前基于 ESP32 的流动性智能环境检测车已取得显著成果,但仍存在一些改进空间与广阔的发展前景。在现有不足与改进方向上,当前 BMP280 传感器仅能提供基本的气压和温度数据,未来可考虑增加更多类型的环境传感器,如空气质量传感器(检测更广泛的污染物指标,如二氧化硫、氮氧化物、臭氧等)、土壤湿度传感器(用于农业环境监测,精准判断土壤墒情)、噪声传感器(监测环境噪声水平)等,以拓展检测车的环境监测范围,提供更全面准确的环境信息。
对于 ESP32CAM 摄像头,虽然监控功能已实现,但图像分析能力有限。后续可引入图像识别算法,如目标检测(识别特定植物种类、动物或障碍物,例如识别珍稀植物或入侵物种,以便及时采取保护或防范措施)、图像分类(判断环境状态,如区分森林、草地、水域等不同地貌类型)等,提升摄像头的智能化水平,使其不仅能提供图像,还能提供有价值的分析结果,为环境监测与决策提供更有力的支持。检测车的能源供应目前可能存在一定限制,尤其是在长时间连续作业或复杂地形行驶时。
在未来发展前景与应用拓展方面,随着人工智能技术的不断进步,检测车有望实现更高程度的智能化与自动化。例如,通过机器学习算法,让检测车能够根据环境数据自动规划检测路径,利用强化学习算法在不同地形和任务场景下自主学习最优的行驶策略,实现自主避障,甚至根据监测结果自动执行相应的环境维护措施(如自动调整割草电机功率和频率以适应不同杂草生长情况,根据土壤湿度自动控制灌溉设备)。利用深度学习技术,对摄像头图像和环境数据进行深度分析,实现对环境变化的预测,如提前预警自然灾害(如火灾、洪水等,通过图像识别烟雾、水位变化,结合气象数据和地形数据进行综合判断),为灾害预防提供更有力的支持。
评论