目录

 

背景

基本构思

设计原则

硬件介绍

ESP32D0WDQ6

 土壤湿度传感器

JQ8400-10P MP3 module

其他

硬件连接

MicroPython代码

成品以及效果


背景

办公室里的直饮机的水流很小,装满一瓶水需要在旁等待许久。

尤其是往热水壶接水时经常出现由于等待时间长->暂时离开->回来时已经水漫金山寺。

而且水流声也极小,在办公室的同事们往往也是水漫到脚下的时候才发觉。结果同事们被迫大扫除。而且我发过的洪水最多。

为了解决这个问题,暂用手头上的材料做一个简易的溢水报警系统,起到提前预警的效果。

基本构思

  1. 利用传感器获取桌面上的湿度信息。
  2. ESP32根据读取到的传感器数值,发出声光警报。

设计原则

  1. 先干再说、不行拉倒
  2. 功能为主、外观忽视
  3. 实现为主、原因忽略
  4. 有啥用啥、不求和谐
  5. 学习为主、实用为辅

 

硬件介绍

ESP32D0WDQ6

很久以前心血来潮,在某宝上贪小便宜买到的,到手后发现没有任何资料。封存,今天才开封。


esp32 rmt 开发 esp32d0wdq6开发_单片机

ESP32D0WDQ6

 芯片资料可以在参考以下连接并下载:

https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_cn.pdf

连接电脑后,打开Mu-editor的REPL会自动出现flash read error。初始化后未解决。

esp32 rmt 开发 esp32d0wdq6开发_esp32 rmt 开发_02

 本着第三条设计原则,果断刷固件。解决!

esp32 rmt 开发 esp32d0wdq6开发_传感器_03

至此主控板准备好。

 土壤湿度传感器


esp32 rmt 开发 esp32d0wdq6开发_单片机_04

土壤湿度传感器模块

由探头和处理单元由两根导线连接(貌似不分正负极),处理单元分别输出数字量信号和模拟量信号。对我来说只要是在湿度变化时,有变化的量就是好量。

某宝上搜索此产品和获得相应技术文件。

JQ8400-10P MP3 module

以前做项目时买到的,一直没有用。


esp32 rmt 开发 esp32d0wdq6开发_esp32 rmt 开发_05

JQ8400-10P

内置4M flash,可通过USB线直接装入音频;支持UART通讯;buzy引脚可用于监控该模块工作状态。

资料还请参考某宝。

其他

除上述主要部件外, 还有WS2812B RGB灯条、8Ohm 0.5W的小喇叭。

硬件连接

由于主控板的有些引脚功能还没弄清,所以将每个小功能单独测试后找到适合(能用)的引脚。


esp32 rmt 开发 esp32d0wdq6开发_python_06

硬件连接图

MicroPython代码

from machine import Pin, ADC,UART
import time,neopixel

led_num=5 #灯条中灯珠的个数
level=8 #颜色变化级别
np=neopixel.NeoPixel(Pin(5),led_num)

adc=ADC(Pin(35)) #土壤湿度传感器读取端

uart = UART(2, baudrate=9600, rx=12,tx=14,timeout=10) #向MP3模块发送指令

speak_status=ADC(Pin(34)) #监控MP3模块的状态

buf = bytearray(6) #播放音频指令, 其实MP3模块中只有一个音频
buf[0] = 0xAA
buf[1] = 0x07
buf[2] = 0x02
buf[3] = 0x00
buf[4] = 0x01
buf[5] = 0xb4

buf1 = bytearray(4) #停止播放指令
buf1[0] = 0xAA
buf1[1] = 0x04
buf1[2] = 0x00
buf1[3] = 0xAE



while True:
    Sensor_val = adc.read() #空气中的读数为4095,探头被湿毛巾包裹时度数大约在2000~3000右。
    if Sensor_val>=4000:
        uart.write(buf1) #发出停止播放音频的指令
        for i in range(level):    #灯条发出绿色呼吸灯效果
            for j in range(led_num):
                np[j] = (0,i,0)
                np.write()
            time.sleep_ms(40)
        time.sleep_ms(800)
        for i in range(level):
            for j in range(led_num):
                np[j] = (0,7-i,0)
                np.write()
            time.sleep_ms(40)


    elif Sensor_val<=4000 and speak_status ==0:#当检测到湿度,并且MP3模块不工作时
        uart.write(buf) #播放音频
        for i in range(led_num): #灯条闪烁红光
            np[i]=(255,0,0)
        np.write()
        time.sleep(1)
        for i in range(led_num):
            np[i] = (0,0,0)
        np.write()
        time.sleep(0.1)
    time.sleep(1)

 

成品以及效果


esp32 rmt 开发 esp32d0wdq6开发_esp32 rmt 开发_07

成品图(关于外形,请参考设计原则2和4)

 


基于ESP32 D0WDQ6芯片+MicroPython的溢水报警系统


 

以上就是不求甚解的基于ESP32 D0WDQ6芯片+MicroPython的溢水报警系统。