张在职,杨超,程张凯,夏学敏,尚传福
山东工业职业学院
一、项目介绍
智慧农业是农业生产的高级阶段,是集新兴的互联网、移动互联网、云计算和物联网技术为一体,依托部署在农业生产现场的各种传感节点(环境温湿度、土壤水分、二氧化碳、图像等)和无线通信网络实现农业生产环境的智能感知、智能预警、智能决策、智能分析、专家在线指导,为农业生产提供精准化种植、可视化管理、智能化决策。
该项目有如下特点:
创新性:采用多种传感器有机结合,运用单片机开发,传感器开发,硬件通讯系统,网络通讯系统,边缘加速,云平台,大数据,物联网等多种现代化技术融合,构建智慧农业监控系统。
实用性:低成本,低门槛,清晰展示实时监控信息,为农户提供了最简洁、最高效的实时监控系统,农田的实时监控有助于农户合理安排种植与保护,可适应众多环境,设备整体功耗较低并采用安全电压。
科学性: ESP32模组作为主控,可分别提供WiFi和蓝牙通讯方式,传感器通过IIC、SPI、1-Wire协议与主控相连传输数据,保证高效准确,通过MQTT协议将采集的数据以短报文形式发送到云端,用户可远程查看监控信息以及远程控制。
项目结构图
.jpg)
二、主控模块介绍
项目使用ESP32作为核心芯片,ESP32是Espressif乐鑫信息科技推出的一块WiFi芯片。拥有40nm工艺、双核32位MCU、2.4GHz双模Wi-Fi和蓝牙芯片、主频高达230MHz,计算能力可达600DMIPS。
ESP32 系列模组具备卓越的性能和丰富的外设,集 Wi-Fi、传统蓝牙、低功耗蓝牙为一体,提供高度集成的解决方案,广泛适用于各类物联网应用。
ESP32专为移动设备、可穿戴电子产品和物联网 (IoT) 应用而设计。作为业内领先的低功耗芯片,ESP32具有精细的时钟门控、省电模式和动态电压调整等特性。低占空比可以极 大降低ESP32芯片的能耗。射频功率放大器的输出功率也可调节,以实现通信距离、数据率和功耗之间的最佳平衡。
三、传感器介绍
1、大气压力检测
大气压力检测选用了博世BME280传感器,这是一款具有温度、大气压力和湿度的环境传感器。该传感器非常适合各种天气、环境传感,甚至可以在IIC和SPI中使用!
该精密传感器是用于湿度测量的最佳低成本传感解决方案,精度为±3%精度,绝对精度为±1 hPa的大气压力和精度为±1.0°C的温度。由于压力会随高度变化,因此压力测量值非常好,因此也可以将其用作高度计,精度为±1米。
2、温湿度检测
温湿度检测使用AM2302湿敏电容数字温湿度传感器,该传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有较高的可靠性与卓越的长期稳定性。因此该产品具有品质卓越、响应快、抗干扰能力强、性价比高等优点。
3、UV紫外线检测
UV紫外线传感器专为需要高可靠性和精确性测量紫外线指数(UVI)的场合所设计;适合测量太阳光紫外线强度总量;对照世界卫生组织紫外线指数分级标准检测UV波长:200-370nm;响应极快、全互换性;
4、光强检测
光强检测使用MAX44009环境光传感器,该传感器提供I2C数字输出,可理想用于智能手机、笔记本电脑、工业传感器等便携产品。器件工作电流小于1μA,是业内功耗最低的环境光传感器,具有22位超宽动态范围(0.045lux至188,000lux)。
5、时钟模块
时钟模块使用DS3231。DS3231是低成本、高精度I2C实时时钟(RTC),具有集成的温补晶振(TCXO)和晶体。该器件包含电池输入端,断开主电源时仍可保持的计时。集成晶振提高了器件的长期度,并减少了生产线的元件数量。DS3231提供商用级和工业级温度范围,采用16引脚300mil的SO封装。RTC保存秒、分、时、星期、日期、月和年信息。少于31天的月份,将自动调整月末的日期,包括闰年的修正。
6、土壤湿度检测
土壤湿度模块是一个简易的水分传感器可用于检测土壤的水分,表面镀镍而不易生锈,延长使用寿命,感应面积宽提高导电性能。模块双输出模式,数字量输出简单,模拟量输出更精确。灵敏度可调(图中蓝色电位器调节阀值)。比较器采用LM393芯片,工作稳定,信号干净。设有固定螺栓孔,方便安装。
四、数据传输
数据传输使用MQTT协议。MQTT协议是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信、物联网(IoT)等。其在通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
五、云平台
云平台使用腾讯云。腾讯云物联网通信(Internet of Things Hub, IoT Hub)旨在提供一个安全、稳定、高效的连接平台,帮助开发者低成本、快速地实现“设备-设备”、“设备-用户应用”、“设备-云服务”之间可靠、高并发的数据通信。不仅可以实现设备之间的互动、设备的数据上报和配置下发,还可以基于规则引擎和腾讯云产品打通,方便快捷地实现海量设备数据的存储、计算以及智能分析。
五、部分功能代码
//获取光照指数
void luxtest()
{uint32_t interval = 1000;
if (millis() - lastDisplay >= interval)
{lastDisplay += interval;
lux = myLux.getLux();
int err = myLux.getError();
if (err != 0)
{Serial.print("Error:\t");
Serial.println(err);}
else
{Serial.print("lux:\t");
Serial.println(lux); } }}
//获取温湿度指数并判断
int shidu()
{ int thum;
thum = analogRead(32);
othum = map(thum, 0, 4095, 0, 1023);
Serial.println(othum);
if (othum > 0 && othum <= 300)
{Serial.println("dry");}
else if (othum > 300 && othum < 700)
{Serial.println("wet");}
else
{Serial.println("in water");}
return othum;}
//获取dht22温湿度
float h = dht.readHumidity();
float t = dht.readTemperature();
//获取光照强度
lux = myLux.getLux();
//获取bme280的气压值
float hpa = bme.readPressure() / 100.0F;