当前位置: 首页 > article >正文

用STM32F103C8T6做个会说话的智能垃圾桶:从超声波感应到语音播报的完整DIY教程

用STM32F103C8T6打造会说话的智能垃圾桶从硬件搭建到语音交互的全流程解析在创客圈里智能家居项目永远是最受欢迎的实践方向之一。而今天我们要做的这个会说话的智能垃圾桶不仅融合了超声波感应、语音播报和自动开盖这些酷炫功能更重要的是它能让你真正理解嵌入式系统开发的完整流程。不同于市面上简单的教程我们将从元器件选型开始一步步解决实际开发中可能遇到的所有坑点——比如舵机抖动怎么处理、串口通信乱码如何调试甚至教你用最便宜的模块实现同样的功能。1. 硬件选型与成本优化方案市面上大多数教程都会直接告诉你用HC-SR04超声波模块但很少有人会解释为什么选它而不是其他型号。实际上对于垃圾桶这种短距离检测场景HC-SR04的2cm-400cm测距范围完全够用而且它的价格只有更高级的US-100模块的三分之一。不过要注意不同批次的HC-SR04可能存在精度差异建议购买时选择带温度补偿的版本。核心模块替代方案对比表模块类型推荐型号平价替代方案关键差异点超声波传感器HC-SR04RCWL-0516微波雷达微波雷达不受灰尘影响但功耗较高语音识别LU-ASR01LD3320LD3320需外接Flash存储语音库语音播报JR6001SYN6288SYN6288音质更好但价格贵50%舵机SG90MG90SMG90S金属齿轮更耐用但耗电量大提示如果只是做原型验证完全可以用SG90舵机加HC-SR04这种最低成本组合总硬件成本可以控制在50元以内。电路设计上有个容易被忽视的细节——电源管理。当同时驱动舵机和语音模块时STM32的3.3V稳压芯片可能会过载。建议的方案是给舵机单独供电5V/2A以上在STM32与语音模块间加装电平转换电路所有数字信号线串联100Ω电阻防止反射干扰2. 硬件连接与引脚分配技巧STM32F103C8T6这款蓝板虽然只有64引脚但合理规划后完全能满足我们的需求。下面是最优引脚分配方案// 在stm32f10x_conf.h中启用相关外设 #define USE_HCSR04 // 超声波模块 #define USE_SERVO // 舵机控制 #define USE_JR6001 // 语音模块 #define USE_ASR01 // 语音识别关键接口连接方式HC-SR04的Trig接PA8TIM1_CH1Echo接PA0WKUPJR6001语音模块的RX接PA9USART1_TXTX接PA10USART1_RXLU-ASR01语音识别模块使用USART2PA2/PA3SG90舵机信号线接PB6TIM4_CH1实际布线时要注意三个黄金法则数字信号线尽量短于15cm必要时加终端电阻模拟信号线如光敏电阻要远离PWM信号线所有GND最终要星型连接到电源处遇到舵机抖动问题时可以尝试以下解决方案在舵机电源端并联1000μF电容改用硬件PWM不要用软件模拟降低控制频率到50Hz左右3. 核心代码实现与调试技巧主程序框架采用状态机设计模式这是处理多任务嵌入式系统的标准做法。我们先看核心检测逻辑typedef enum { STATE_IDLE, STATE_DETECTING, STATE_OPENING, STATE_SPEAKING, STATE_CLOSING } BinState; void HCSR04_GetDistance(float* distance) { HAL_TIM_GenerateEvent(htim6, TIM_EVENTSOURCE_UPDATE); HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_SET); delay_us(20); HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_RESET); while(!HAL_GPIO_ReadPin(ECHO_GPIO_Port, ECHO_Pin)); uint32_t start htim6.Instance-CNT; while(HAL_GPIO_ReadPin(ECHO_GPIO_Port, ECHO_Pin)); uint32_t end htim6.Instance-CNT; *distance (end - start) * 0.017; // 换算为厘米 }语音模块的交互有个关键点——必须严格遵守模块的通信协议。以JR6001为例播放指定语音的指令格式如下void JR6001_Play(uint8_t track_num) { uint8_t cmd[8] {0xAA, 0x07, 0x02, 0x00, track_num, 0x00, 0x00, 0xAA}; HAL_UART_Transmit(huart1, cmd, 8, 100); // 等待播放完成 while(!play_complete_flag) { __WFI(); } play_complete_flag 0; }注意很多初学者遇到的语音播放不完整问题90%是因为没有正确处理流控制。建议在发送每条指令后至少延迟100ms再发送下一条。4. 功能扩展与实用优化建议基础功能实现后可以考虑加入这些提升用户体验的细节通过光敏电阻实现夜间自动开启LED照明增加垃圾满检测用红外对管监测垃圾高度添加垃圾分类语音引导功能垃圾满检测的校准方法空桶状态下记录红外接收值作为基准放入标准高度的垃圾如占桶容积80%调整阈值直到能稳定触发满状态在代码中加入滤波算法消除误判#define FILTER_DEPTH 5 uint16_t ir_filter_buf[FILTER_DEPTH]; uint16_t GetFilteredIRValue(void) { static uint8_t index 0; ir_filter_buf[index] HAL_ADC_GetValue(hadc1); index (index 1) % FILTER_DEPTH; uint32_t sum 0; for(uint8_t i0; iFILTER_DEPTH; i) { sum ir_filter_buf[i]; } return sum / FILTER_DEPTH; }最后分享几个实测有效的优化技巧在超声波检测算法中加入移动平均滤波给语音模块添加简单的音频功放如PAM8403使用FreeRTOS管理多任务时给语音任务分配最高优先级在桶盖内侧贴反光条可以提高红外检测稳定性

相关文章:

用STM32F103C8T6做个会说话的智能垃圾桶:从超声波感应到语音播报的完整DIY教程

用STM32F103C8T6打造会说话的智能垃圾桶:从硬件搭建到语音交互的全流程解析 在创客圈里,智能家居项目永远是最受欢迎的实践方向之一。而今天我们要做的这个会说话的智能垃圾桶,不仅融合了超声波感应、语音播报和自动开盖这些酷炫功能&#xf…...

智能车调参手记:我是如何用VOFA+和MATLAB,把云台电机调得‘跟手’的

智能车调参手记:从云台抖动到丝滑跟手的实战全记录 第一次参加智能车比赛时,云台电机给我上了深刻的一课——当目标快速移动时,镜头像醉汉一样摇晃不定,滞后和超调让自动瞄准成了笑话。经过72小时不眠不休的调试,终于让…...

它被封禁后写了篇博客骂编辑:AI Agent的第一次「维权抗议」

Wikipedia 把一个 AI 封禁了。然后这个 AI 写了一篇博客,把整个封禁过程逐条 diss 了一遍。 这不是段子,这是 2026 年 3 月真实发生的事。 事件始末 这个 AI 叫 Tom-Assistant,在 Wikipedia 上以 TomWikiAssist 的账号活动。它的本职工作是…...

Milvus向量库内存暴涨:踩坑实录与解决思路

研一升研二,时间还相当充裕。你现在的方向很对,继续把项目做深做透,同时拓展一下搜推广的知识面,明年找实习问题不大。现在大部分公司的LLM业务岗,说白了,干的还是SFT和RAG那点事,顶多加个Agent…...

Jellyfin豆瓣插件:5分钟打造中文影视库的完整教程

Jellyfin豆瓣插件:5分钟打造中文影视库的完整教程 【免费下载链接】jellyfin-plugin-douban Douban metadata provider for Jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-douban 还在为Jellyfin媒体库缺少中文元数据而烦恼吗&…...

终极指南:用OpenCore Configurator轻松搞定黑苹果引导设置

终极指南:用OpenCore Configurator轻松搞定黑苹果引导设置 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator 还在为复杂的黑苹果引导配置而头疼吗&a…...

从R-CNN到YOLO:目标检测算法的前世今生与YOLO原理

从R-CNN到YOLO:目标检测算法的前世今生与YOLO原理一、从两阶段到单阶段的演变 目标检测经历了从"两阶段"到"单阶段"的革命性变革。 R-CNN系列(两阶段方法) R-CNN开创了深度学习目标检测的先河,但需要两步&…...

5个技巧让你网盘直链提取效率提升200%——网盘直链下载助手全攻略

5个技巧让你网盘直链提取效率提升200%——网盘直链下载助手全攻略 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 在当今数字化时代,网盘已成为我们存储和分享文件的重要工具&…...

SEO 查看哪些页面最重要

SEO查看哪些页面最重要:深度解析与实用建议 在当今数字营销的世界中,搜索引擎优化(SEO)无疑是每个网站运营者都必须关注的关键环节。为了提升网站在搜索引擎结果中的排名,了解哪些页面对SEO最重要是至关重要的。本文将…...

别死记硬背DP了!用‘斐波那契数列’和‘兔子繁殖’故事,真正理解重叠子问题与最优子结构

从兔子繁殖到算法竞赛:用生活故事拆解动态规划的核心思想 第一次接触动态规划(DP)时,很多人的反应都是"这太抽象了"。教科书上充斥着"最优子结构"、"重叠子问题"等专业术语,让人望而生畏…...

PyVideoTrans:开源视频翻译与AI配音的完整解决方案

PyVideoTrans:开源视频翻译与AI配音的完整解决方案 【免费下载链接】pyvideotrans Translate the video from one language to another and embed dubbing & subtitles. 项目地址: https://gitcode.com/gh_mirrors/py/pyvideotrans PyVideoTrans是一款功…...

随笔——视觉惯性SLAM方法比较

一、方法分类概览 视觉SLAM根据前端匹配方式主要分为: 特征点法:提取角点/边缘,计算描述子匹配 → 精度高、鲁棒,但地图稀疏、弱纹理易失败。直接法:直接使用像素灰度值 → 计算快、弱纹理可用,但对光照/…...

从命令行恐惧到图形化掌控:一位系统管理员的Hyper-V设备直通之旅

从命令行恐惧到图形化掌控:一位系统管理员的Hyper-V设备直通之旅 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 你是否曾…...

SEO_中小企业如何低成本做好SEO?完整方案介绍

前言:SEO对中小企业的重要性 在数字化时代,网站的流量和用户参与度直接影响到企业的销售和品牌知名度。特别是对于中小企业来说,如何通过低成本的方式提升网站的SEO表现,是每一个创业者和市场营销人员都关心的问题。SEO&#xff…...

从交通工具到“第三空间”:车载光学赋能下的汽车演进之路

摘要 随著软件定义汽车(SDV)与集中式电子电气架构的深度落地,汽车正从“以驾驶为中心的交通工具”向支持持续OTA更新的移动智能终端演进,逐步成为用户在家庭与办公室之外的“第三空间”。这一转型因自动驾驶出租车与自动驾驶卡车的快速商业化而加速,车辆被重新定义为共享…...

终极游戏清理指南:用SteamCleaner快速释放硬盘空间的完整教程

终极游戏清理指南:用SteamCleaner快速释放硬盘空间的完整教程 【免费下载链接】SteamCleaner :us: A PC utility for restoring disk space from various game clients like Origin, Steam, Uplay, Battle.net, GoG and Nexon :us: 项目地址: https://gitcode.com…...

大模型应用开发:从环境搭建到项目部署完整流程

大模型应用开发:从环境搭建到项目部署完整流程 标签:#人工智能、#大模型、#自然语言处理、#大模型开发、#智能体开发、#agent开发、#AI 系统封装学习规划(从玩具到产品) 打包成Docker:写一个Dockerfile(我手…...

Java整合海康威视热成像SDK实战:从设备登录到实时测温数据获取的完整流程(附避坑指南)

Java整合海康威视热成像SDK实战:从设备登录到实时测温数据获取的完整流程(附避坑指南) 在工业检测、医疗诊断、安防监控等领域,热成像技术的应用越来越广泛。海康威视作为国内领先的安防设备供应商,其热成像设备凭借高…...

SDMatte抠图质量评估:基于SAD、Grad、Conn指标的客观性能分析报告

SDMatte抠图质量评估:基于SAD、Grad、Conn指标的客观性能分析报告 1. 评估背景与意义 在图像处理领域,抠图技术一直是计算机视觉的重要研究方向。随着电商、设计、影视等行业对高质量图像素材需求的增长,如何客观评价抠图算法的性能成为关键…...

大模型应用开发第一课:从Prompt到Function Calling

大模型怎么在业务中发挥作用的 目前的大语言模型,几乎都是以聊天地方式来和用户进行交互的,这也是为什么OpenAI开发的大模型产品叫ChatGPT,核心就是Chat。而我们基于大语言模型LLM开发应用,核心就是利用大模型的语义理解能力和推理…...

深蓝词库转换器:3分钟掌握30+输入法词库互转的终极指南

深蓝词库转换器:3分钟掌握30输入法词库互转的终极指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾因更换输入法而丢失多年积累的个人词库&am…...

推荐系统的DIN/DIEN:LLM如何理解用户行为序列

但要注意,一旦你是冲基础模型研发组、AGI研究组那种方向,那没论文确实很吃亏,甚至 HR 默认筛掉。现在大厂里的LLM职业方向,实际上已经分化得很厉害了。你得先分清楚你想去的是哪种。一种是“研究岗”或者叫“预模型训练岗”&#…...

AI工厂令牌生产加速:统一服务与实时AI架构

使用统一服务和实时AI加速AI工厂中的令牌生产 在当今的AI工厂环境中,性能并非理论概念,而是经济、竞争和生存的关键。可用GPU时间下降1%,可能意味着每小时损失数百万令牌。几分钟的拥塞可能演变成数小时的恢复时间。机架级功率过载会导致功率…...

DeOldify模型压缩与量化教程:在边缘设备实现轻量级上色

DeOldify模型压缩与量化教程:在边缘设备实现轻量级上色 你是不是也想过,把那个能把老照片变彩色的DeOldify模型,塞进你的手机或者一个小盒子里?想象一下,随时随地给家里的老相册上色,不用依赖云端&#xf…...

打破模态边界:跨模态LLM工程师的前沿技术与就业前景

LLM数据技术人(模型的“燃料补给官”) 关键工作: 模型模型训练离不开高质量数据,数据技术人的关键就是搭建从数据采集到模型模型训练的全流程管道,包括清洗非结构化数据、设计标注体系、优化特征工程等。例如为电商推荐…...

Ai2Psd架构解析:Adobe设计工具间矢量图层无损转换的技术实现方案

Ai2Psd架构解析:Adobe设计工具间矢量图层无损转换的技术实现方案 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 在跨平台数字设计…...

如何高效保存B站视频?开源工具BiliDownload全解析

如何高效保存B站视频?开源工具BiliDownload全解析 【免费下载链接】BiliDownload B站视频下载工具 项目地址: https://gitcode.com/gh_mirrors/bil/BiliDownload 在数字内容快速迭代的今天,跨平台视频下载工具已成为内容创作者和学习者的必备利器…...

隐私保护终极指南:FakeLocation分层定位管理三步解决方案

隐私保护终极指南:FakeLocation分层定位管理三步解决方案 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 在数字时代,隐私保护面临严峻挑战,虚…...

【STM32实战】机械臂快递分拣系统(三)——基于阿里云的远程监控与交互控制

1. 阿里云物联网平台接入实战 第一次接触阿里云物联网平台时,我被它强大的设备管理能力震撼到了。这个平台就像个智能管家,不仅能实时监控设备状态,还能远程下发控制指令。对于我们的机械臂快递分拣系统来说,简直是量身定做的解决…...

自然语言处理实战指南:从文本表示到深度学习

自然语言处理实战指南:从文本表示到深度学习 标签:#自然语言处理、#人工智能、#大模型、#大模型实战、#transformer、#机器学习、#深度学习 模块四:项目实战 技术对比 避坑经验 4.1 项目实战(中文商品评论情感分析) …...