FastBond3挑战部分-基于ESP32的植护助手
该项目使用了ESP32、摄像头和电容式传感器,实现了植物数据采集的设计,它的主要功能为:实时图像查看、湿度数据监测、排风。
标签
ESP32
FastBond第三季
onsemi
liuliuliu
更新2024-11-04
33

一、前言

上回FastBond3阶段1(基础部分)的文档中,介绍了植护助手的框图和功能,也说明了项目中所使用到的活动规定厂家的芯片。

本文之后的内容将展示使用kicad制作的原理图及PCB,成品的功能测试和主要程序的说明。


二、原理图及PCB介绍

如下图所示整个系统由电源、摄像头、电容式湿度传感器、风扇、触摸模块和ESP32主控模块组成,其中电源可以用Typc接口的充电器提供,摄像头使用OV2640模块,风扇采用高转速风扇,湿度传感器使用电容式的,触摸显示模块可以用手机,主控使用ESP32S3模块。采集到的数据由ESP32主控模块上传到手机,手机可以看到采集到的图像数据和湿度数据,手机也可以下发指令到主控模块来控制风扇等。

原理图和PCB设计都是由KICAD绘制,如下图所示

1730301697297.png

其中原理图中Q3上边用1N4148二极管并联在风扇接口处,使风扇的回馈能够快速流回电源,使电路系统更加稳定。

如下所示是PCB绘制,双层板设计,在IO19引脚接湿度传感器,用于读取湿度数据;用IO20引脚控制风扇排风;摄像头引脚如上图所示。

1730301582076.png

1N4148器件介绍

电压 - DC 反向 (Vr)(最大值)100 V 不同 If 时电压 - 正向 (Vf) 1 V @ 10 mA

反向恢复时间 (trr) 4 ns 不同 Vr 时电流 - 反向泄漏 5 µA @ 75 V

不同 Vr、F 时电容 4pF @ 0V,1MHz


三、PCB实物及功能测试

如下所示在主板上接上风扇和湿度传感器,即可开始测试。

d35773c0bf6c781e6ecd1e86dbc19e0.png

PCB设计的时候一定要注意PCB三极管的封装和使用的三极管器件是否对应,在调试这个板子的时候就遇到了这个问题,好在细心排查发现了三极管问题。

以下是风扇停转运行截图

image.png

以下是风扇正在转的运行截图

image.png

放在水里的湿度数据

image.png

放在空气中和土壤里的湿度数据

image.png

image.png

四、关键代码及说明

如下所示:

1. 湿度传感器要进行标定,1.放在空气中记下测量到的数值,2.放在水里记下测量的值,再进行函数化。

2. MQTT数据的发送和数据接收后判断打开或关闭风扇。

3. 摄像头部分代码。

//土壤湿度传感器需要做一个简单的干湿数据标定
float c_min = 3160.0;  //readings in air (例如在空气中测得数值3160)
float c_max = 1760.0;   //readings in water(在水里测得数据1760,再使用函数进行运算)
float m_min = 0.0;      //min soil moisture
float m_max = 100.0;    //max soil moisture

int  c_cur=analogRead(ASOI);//读取湿度数值
int m_cur = (c_cur - c_min) * (m_max - m_min) / (c_max - c_min);//使用函数进行比例化运算

sprintf((char*)MQ_data,"%s%d%s",MQ_a,m_cur,MQ_b);//拼接到一个数组里
client.publish(TOPIC_pub, MQ_data);//数据发送到mqtt服务器

//收到OPEN字符串打开风扇,收到CLOS字符串关闭风扇​
if (strstr((char*)payload,"OPEN")) {
    digitalWrite(JDQ, HIGH);  
    Serial.print(" 开风扇\n");
  }
else if (strstr((char*)payload,"CLOS")) {
    digitalWrite(JDQ, LOW);  
    Serial.print(" 关风扇\n");
  }

//摄像头引脚初始化和开启摄像头
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sccb_sda = SIOD_GPIO_NUM;
  config.pin_sccb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.frame_size = FRAMESIZE_UXGA;
  config.pixel_format = PIXFORMAT_JPEG;  // for streaming
  //config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition
  config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
  config.fb_location = CAMERA_FB_IN_PSRAM;
  config.jpeg_quality = 12;
  config.fb_count = 1;

 startCameraServer();//开启摄像头


五、活动总结

很感谢硬禾学堂举办的FastBond3活动,让我有机会通过这个活动做一些很有意义的事情,来挑战自己。这之中虽然遇到了一些难题,比如摄像头部分和自动下载电路部分,但这些都是情理之中的,毕竟第一次摄像头板,这些都是需要经验的。本次项目的成品略显粗糙,实用性还有能改进空间,我将有机会后续开源出来。


附件下载
esp32s3.zip
PCB文件
MQTT-CameraWebServer.zip
代码文件
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号