当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]一款独立运行的智能垃圾桶,可拍摄每一件物品,通过 Gemini 进行分类,并利用伺服电机进行分拣。

问题

大多数人不知道物品该放入哪个垃圾桶。一个油腻的披萨盒或未冲洗的瓶子,都可能污染整批可回收物。我想要一个能自动判断的垃圾桶,这样你只需把物品丢进去即可。

它做什么

ESP32-CAM智能垃圾桶无需电脑、手机应用或后端服务器,即可将垃圾分为可回收物和残余物两个区域。它仅需电源和WiFi即可运行。

每次你丢入物品时:

1. 它注意到了物品。HC-SR04超声波传感器检测到有东西落在了翻盖上。

2. 需要一张照片。经过短暂的等待延迟(0.8秒)后,ESP32-CAM 会拍摄该物品。

3. 它会识别物品。照片通过 HTTPS 直接发送到 Google Gemini API。Gemini 会返回物品名称、类别、预估重量以及预估的二氧化碳排放量。

4. 它会将物品进行分类。伺服电机将翻盖倾斜至180°用于可回收物,或保持0°用于残留垃圾,保持2秒后返回90°。

5. 显示结果。SSD1306 OLED 显示商品名称、重量、二氧化碳含量以及货位信息。

重量和二氧化碳含量为通过照片估算的AI数据,该货位没有配备称重设备。

分类

硬件列表

布线

不要跳过分隔器。HC-SR04 的回波电压为 5 V,但 ESP32 的 GPIO 只能承受 3.3 V。接线时请断开电源。

制作二进制文件

1. 将一个盒子分成两个隔间。

2. 在伺服喇叭上方安装一个翻盖。它可平放,角度为90°,并可倾斜至180°(可回收)或0°(残留)。

3. 将ESP32-CAM安装在翻盖上方,朝下放置。

4. 将超声波传感器安装在翻盖的一侧边缘,位置略高于其表面,并朝向翻盖。翻盖上的物品必须距离传感器不超过15厘米。当翻盖为空时,传感器应能检测到约20厘米以上的开放空间。

5. 将OLED安装在可读取的位置。

软件设置

1. 安装 Arduino IDE 和 Espressif 的 ESP32 板载软件包,然后选择 AI Thinker ESP32-CAM。

2. 安装 ESP32Servo、ArduinoJson 7.x 和 Adafruit SSD1306(含 GFX 和 BusIO)。

3. 从 Google AI Studio 获取免费的 API 密钥。

4. 将 config.h.example 复制到 config.h 文件中,并填写 WIFI_SSID(仅限 2.4 GHz)、WIFI_PASSWORD 和 GEMINI_API_KEY。config.h 被 git 忽略,因此凭据不会上传到仓库。

5. 上传后,以115200波特率打开串行监视器,并放入一个物品。

所有可调节参数(距离、伺服角度、屏幕时间、估计夹具)均位于config.h文件中。

固件的工作原理

•非阻塞状态机:IDLE → SETTLE → RESULT / ERROR → IDLE。超声波手表在显示结果期间持续运行,因此新的投送可能会中断该过程。

•故障闭锁:当相机出现错误、Gemini失效或未知类别时,系统会将物品分类为残余物。当无法确定时,垃圾桶不会声称某物可回收。

•结构化输出:通过REST API调用Gemini,并使用响应模式(responseSchema)。类别为固定枚举类型,因此返回的响应始终是严格的JSON格式。固件使用ArduinoJson进行解析。

•安全显示:物品名称被清理为可打印的ASCII字符,并截断为21个字符(单行OLED显示)。重量和CO₂值在显示前会被限制在合理范围内。

•去抖与滞后:投送需要连续3次关闭读取,重新启动则需超过更高阈值的连续5次清除读取。这可防止误触发。

•硬件问题:从PSRAM获取的请求体上传TLS数据在此板上失败。请求体实际上是在内部RAM中构建的。

•网络鲁棒性:自动重新连接WiFi,以及向公共DNS解析器的回退机制。

限制

•每个分类使用 Gemini-3.5 Flash 大约需要 12 秒。[请根据您的实际测量结果更新。]

•重量和二氧化碳含量为视觉估算,非精确测量值。

•需要网络连接,且免费 API 级别存在速率限制(HTTP 429)。

•分类可能存在错误,尤其是对于脏污、体积小或不常见的物品。

为什么重要

它通过减少回收过程中的污染,并使废弃物的碳成本对用户透明可见,从而支持联合国可持续发展目标13(气候行动)。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭