柴火创客社区 · 4月22日 · 广东

创客项目秀|基于Seeed XIAO ESP32S3 sense的HA自动化鱼缸

今天给大家带来的是国内的Maker刘鹏的自动化鱼缸方案,该项目将先进技术与传统养鱼艺术相结合,打造智能化、自动化、观赏性极强的鱼缸。
image.png

SeeedStudio推出的骁骁ESP32-S3 Sense开发板以其优异的性能和丰富的可扩展性为这一思路提供了强有力的技术支持。该板采用高性能ESP32-S3芯片,集成了强大的处理能力、Wi-Fi和蓝牙双模无线通信模块、嵌入式OV2640摄像头。

本文旨在探讨如何使用 Seeed Xiao ESP32-S3 Cam 开发板设计自动化的、连接家庭助理 (HA) 的智能鱼缸系统。该系统将集成自动喂料、环境监测(包括温度、湿度、水质)、实时视频监控、语音控制和远程管理等多项功能,使鱼缸维护工作更加科学便捷,同时也增强了观赏体验和互动性。

材料清单

软件列表

  • node-red
  • HomeAssistant
  • Arduino IDE

硬件清单

  • SeeedStudio XIAO ESP32S3 sense
  • Raspberry Pi4
  • DHT11温湿度传感器
  • LED灯

项目目标

基于NodeRED+小爱自动化服务的鱼缸管理研究(包括温湿度自动语音播报、定时亮灯、定时诱饵)。通过精心设计和细致调试,利用开源软硬件优势,构建一套涵盖硬件组装、软件编程、云服务对接等多层次技术环节的智能鱼缸解决方案。

在这个过程中,它不仅体现了科技创新带来的生活乐趣,也展现了物联网技术在提高生活质量、提升宠物护理体验方面的广泛应用前景。

随着本章的进展,读者将学习如何使用小 ESP32-S3 Cam 及其外围组件,结合 Home Assistant 强大的自动化能力,构建一个既实用又充满科技魅力的智能鱼缸系统。

系统设计流程图

系统设计流程图是用于描述HA自动化系统设计过程的流程图。在这个过程中,第一步是启动项目,然后进入系统设计阶段,包括结构设计和硬件模块设计。

在硬件模块的设计中,还包括硬件模块设计和软件模块设计。

然后进行联合调试,如果调试成功,则修改系统设计,如果调试失败,则返回硬件模块设计进行更改,直到调试成功。最后,有必要对档案进行总结和记录。
image.png

1 关键技术

一年后,我又开始玩Homeassistant,我发现有很多谜团和惊喜。在我浅薄的认知中,要学好嵌入式,你一定玩过Homeassistant,玩过自己的名字!
因为这是最实用的生活应用之一,所以每月更新让只有活水来;拥抱大千,让永葆青春的活力;操作精彩,堪称软硬件完美落地!

2024年,我将发布树莓派与Homeassistant之间不解之缘的完整开发教程,只需要简单的代码拼接和模块堆叠,将看到接地的硬件(GPIO、PWM、UART等)与妙笔的软件(自动化、语音识别、语音合成、chatgpt大语言模型、 等),最后设计一个属于你自己的智能家居系统Homeassistant。

image.png

2 参考教程

2.1访问 ESPHome 设备

本教程将指导您了解如何将 Seeed Studio XIAO ESP32S3 与 Home Assistant 一起使用来运行它。

将 Grove 模块连接到 XIAO ESP32S3后,ESPHome 连接并发送传感器数据/控制设备。那么,让我们开始吧!

image.png

教程:https://vor2345.blog.csdn.net/article/details/135424937

2.2 NodeRED自动化设计

要实现 HA 环境配置和 xiao ESP32S3 开发板的物理信息来访问 ESPHome,下一步就是设计相应的自动化控制,其中的关键是 NodeRED 自动化设计。实现是小艾的Homeassistant的Node-red插件的语音功能的开通,NodeRED节点流设计的自动控制流,用于广播任何带有变量的文本

image.png

参考教程:
https://vor2345.blog.csdn.net/article/details/127802412

3 系统硬件

系统硬件由小esp32s3和树莓派400组成,树莓派400是主控服务器,小esp32s3是客户端,小esp32s3连接Camera/DHT/LED/Servo。

image.png
image.png

3.1 相机

围绕OV2640摄像头(XIAO ESP32S3 Sense)与鱼缸相结合的应用场景,我们可以设计一个智能鱼缸监控系统。并通过ESP32S3 Wi-Fi功能,将视频流发送到云服务器或本地HA设备,方便远程观察鱼的生存状态和鱼缸的环境。
综上所述,XIAO ESP32S3 Sense和OV2640摄像机的结合可以打造出功能丰富的智能鱼缸监控系统,不仅可以提供实时监控功能,还可以通过数据分析提升养鱼体验,实现智慧渔业管理。

3.2 DHT模块

由于鱼缸环境对水温湿度稳定性的要求很高,特别是当饲养热带观赏鱼或需要保持特定的温湿度范围时,DHT传感器成为必不可少的部件。DHT系列传感器包括但不限于DHT11(本文使用的型号)和DHT22(也称为AM2302),均可提供数字信号输出的温湿度测量结果,具有良好的性价比和稳定性。
因此,将DHT传感器集成到智能鱼缸的设计中,不仅有利于保证鱼缸内生物的健康,也有助于提高整个鱼缸系统的自动化和管理水平。例如,来自 DHT 传感器的数据可以很容易地被 ESP32 或其他微处理器平台读取,并且可以实现上述功能。

3.3 发光二极管

LED(发光二极管)与鱼缸的结合主要体现在鱼缸的照明和水生生长环境的模拟上。LED灯具具有能耗低、寿命长、色彩丰富、亮度可调等特点,非常适合鱼缸照明和水草养殖。

综上所述,LED技术在鱼缸领域发挥着重要作用,不仅满足了审美需求,更重要的是满足了鱼类和水生植物在光环境方面的生物需求,是现代智能鱼缸生态系统中不可或缺的一部分。

3.4 舵机

伺服电机在鱼缸自动喂料机中的应用是一种用于精确控制送餐动作的装置。伺服电机能够将鱼精确定位在特定的角度范围内,这对于确保一次提供适量的鱼饲料至关重要。

总之,伺服电机喂料机适配鱼缸,实现了鱼缸自动喂料的精度、智能化和远程可控性,大大提高了养鱼户的便利性和观赏鱼的喂食质量

4. 编程

编程是主要的。
ESP32S3 Sense 连接到 ESPHome 设备实体的 YAML 代码设计
NodeRED 自动控制流模块的配置

4.1 访问 ESPHome 设备

ESP32S3 Sense 连接到 ESPHome 设备的完整代码如下

esphome:
  name: xiao-cam
  # friendly_name: xiao-cam

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino


# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "Fabc3YZ2bYG7x8WhupncrCMPqZuPMwxyeCPsgrbQIAI="

ota:
  password: "412c844a7b10765fcd89954e7587e5af"

wifi:
  ssid: "J09 502"
  password: "qwertyuiop111"
  # use_address: elkontrol1
  # use_address: elkontrol1.local

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Xiao Fallback Hotspot1"
    password: "YpeK5OYS4Xej"


captive_portal:
# Example configuration entry
external_components:
  - source:
      type: git
      url: https://github.com/MichaKersloot/esphome_custom_components
    components: [ esp32_camera ]


esp32_camera:
  external_clock:
    pin: GPIO10
    frequency: 20MHz
  i2c_pins:
    sda: GPIO40
    scl: GPIO39
  data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
  vsync_pin: GPIO38
  href_pin: GPIO47
  pixel_clock_pin: GPIO13

  # Image settings
  name: My Camera
  # ...

# Configuration for the status LED light
light:
  - platform: status_led
    id: light0
    name: "Voice Assistant State"
    pin:
      number: GPIO21
      inverted: true

# Configuration for I2S audio
i2s_audio:
  i2s_lrclk_pin: GPIO46 # Note: labeled as "useless"
  i2s_bclk_pin: GPIO42

# Configuration for the microphone using I2S audio
microphone:
  - platform: i2s_audio
    id: echo_microphone
    i2s_din_pin: GPIO41
    adc_type: external
    pdm: true

# Configuration for the Voice Assistant
voice_assistant:
  microphone: echo_microphone

# Configuration for the binary sensor (Boot Switch)
binary_sensor:    
  - platform: gpio
    pin: 
      number: GPIO2
      mode:
        input: true
        pullup: true
    name: Boot Switch
    internal: true
    on_press:
      - voice_assistant.start:
      - light.turn_off: light0
    on_release:
      - voice_assistant.stop:
      - light.turn_on: light0

# Example configuration entry (D2)
sensor:
  - platform: dht
    pin: GPIO7
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"
    update_interval: 5s

number:
  - platform: template
    name: Servo Control
    min_value: -100
    max_value: 100
    step: 1
    set_action:
      then:
        - servo.write:
            id: my_servo
            level: !lambda 'return x / 100.0;'

# Example configuration entry
servo:
  - id: my_servo
    output: pwm_output

# Example output platform
# On ESP32, use ledc output
output:
  - platform: ledc
    id: pwm_output
    pin: GPIO8
frequency: 50 Hz

本 ESPhome 配置文件描述了一种基于 ESP32-S3 芯片的设备(名为“xiao-cam”)的配置项,该设备主要用于控制和监控鱼缸环境,集成了摄像头、音频输入输出、LED 指示灯、温湿度传感器、伺服电机等功能。

  • 基本配置:设备名称为 xiao-cam,ESP32 框架为 arduino,主板类型为 ESP32-s3-devkitc-1。打开日志记录并配置家庭助理 API 以进行远程访问,其中包括 API 加密密钥。Wi-Fi 连接信息,包括 SSID、密码和强制网络门户,以防 Wi-Fi 连接失败。
  • 外部组件:从 MichaKersloot 的 GitHub 存储库中拉取自定义组件,包括esp32_camera组件。
  • 摄像头配置:配置 ESP32-CAM 模组的引脚分配和外部晶振的频率,以驱动 OV2640 摄像头。
  • LED 指示灯:创建一个状态 LED,用于在激活或关闭语音助手时更改 LED 状态。
  • 麦克风和语音助手:使用 I2S 音频接口设置麦克风进行语音拾取,并将麦克风绑定到语音助手服务。
  • 二进制传感器(开机键):配置一个GPIO引脚作为开机键,启动语音助手服务,按下时关闭LED指示灯,松开时停止语音助手服务,打开LED指示灯。
  • 温湿度传感器:DHT传感器用于采集鱼缸环境的温湿度,数据每5秒更新一次。
  • 模板数控:创建一个虚拟数显控制器来调整伺服电机的角度,当该值发生变化时,该值映射到伺服电机的控制级别。
  • 伺服电机:配置一个伺服电机,由PWM输出控制,其中输出平台为ledc,即LED PWM控制器。
  • 输出平台配置:设置LEDPWM输出通道驱动伺服电机,配置输出频率为50Hz。
  • 综上所述,该型材旨在实现具有拍照、录音、语音唤醒、环境温湿度监控、伺服电机控制等多种功能的智能鱼缸配件。借助 ESP32-S3 开发板,该设备可以连接到家庭自动化系统,以实现高度定制化的自动化控制。

4.2 NodeRED控制流程

小艾同学用语言广播测试JSON 代码是否有问题
image.png
喂鱼自动化,每天12点自动喂鱼

自动化之灯
image.png

5.效果展示

image.png
HA接口
image.png
此概览屏幕显示小艾和ESP32S3感知设备的访问状态
image.png

  • 滑动控制进给伺服控制
  • 点击鱼缸填写light语音助手状态
  • 检查鱼缸周围的当前温度和湿度
  • 通过实时触摸鱼我的相机

    NodeRED 自动化
    设计每天喂鱼12次,喂鱼效果如下,以下是从伺服控制滑动-100~100
    image.png

测试小艾同学,点击触发让小艾同学发言
image.png

6 总结和建议

这是我第五次参加与嵌入式相关的在线比赛
● 第一次是RT-Thread的【基于RT-Thread+RA6M4 I Want的智能鱼缸系统设计】活动,工作在2022年夏天完成,拿了第六名,还是比较开心的!

2023年第二个寒假【基于MAX7800羽板语音控制ESP8266车】,结果还不错,第七名也不错,让车的可玩性更近了一步!
2023年春季制作的【腾讯云基CH32V307开发板远程机械臂小车】第三次因图床引用CSDN而未在终评中亮相,最终获得安慰奖!
● 2023年冬季第四次,【FastBond2第二阶段-基于ESP32C3的简易IO调试设备-电子森林(eetree.cn)】,终于获得三等奖,再接再厉!
● 第五次实现人脸识别系统软件全流程设计调试,深化了tkinter GUI的设计思路,对LicheePi-4A国产单板机更有信心,最终获得参与奖!

这次我又回到了起点,用HA又做了一遍,发现代码量减少了很多,对智能家居有了更深入的了解!😘😘😘

建议

希望硬禾学堂和矽递科技经常合作,定期举办创客活动,让更优质的国产嵌入式生态做大做强;我们期待在辛苦收获平台上推出更多优质、有意义、可持续的创客活动!

通过参加寒假在家实践活动,大家都为这个国内嵌入式生态贡献自己的一份力量,只要用心去做,就会有收获,期待这些作品在未来的某一天为建设美好的未来贡献一份微博的力量!

我将在未来继续更新我所评估的一系列国内开发板评价,并将积极参与高质量的玄铁杯活动,每天一点一点结合实际需求来链接和丰富生活,从而实现对外部世界的充分感知,尽我所能去了解这个有机和无机的环境,科学合理地创造和发挥效益。然后为人类社会的发展贡献一点微薄的力量。

推荐阅读
关注数
8577
内容数
48
深度服务产业的国际化双创平台
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息