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

SU-03T1语音模块结合uno开发板控制灯光开关快速实践

文章目录

  • 通过智能公元零代码配置烧录SDK
  • 烧录SU-03并链接uno开发版
  • 链接成功后编写arduino程序

本文将从一个软件工程师的角度出发,带您快速入门硬件编程,使用SU-03T1语音模块结合uno开发板来实现语音控制灯光开启关闭。

通过智能公元零代码配置烧录SDK

智能公元地址:https://smartpi.cn/#/YzsM

注意配置控制详情,注意控制详情开关输出的高低电平需要设置相反的,否则灯光闪烁。

下载最新版本固件

下载并打开烧录程序
https://help.aimachip.com/docs/offline_su03t/su_03t_kfb


选择镜像,并点击烧录,提示等待设备。这里可以拔插SU03的VCC接口等待数秒,直到设备状态变化。

烧录SU-03并链接uno开发版

USB-TO-TTL连接SU-03

USBSU-03
5Vvcc
GNDGND
RXDB7
TXDB6

UNO板子SU-03
5Vvcc
GNDGND
D11B7
D10B6


由于我设置了通电开始打招呼,会有语音提示。链接5V和GND就通电了。另外D10和D11接反了也是没有关系的,可能只是指令反了,这个如果不想修改也可以在程序代码里面把两个端口调整过来就行。

链接成功后编写arduino程序

/* * 项目名称:语音控制 LED 开关逻辑 * 硬件连接: * - B6_PIN (10): 连接语音模块的“开灯”信号输出 * - B7_PIN (11): 连接语音模块的“关灯”信号输出 * - LED_PIN (13): 连接 LED 正极(支持 PWM 调光) */// --- 引脚定义 ---constintB6_PIN=10;// 定义开灯信号输入引脚constintB7_PIN=11;// 定义关灯信号输入引脚constintLED_PIN=13;// 定义 LED 输出引脚// --- 全局变量 ---bool ledState=false;// 记录 LED 当前的逻辑状态 (false=关, true=开)intbrightness=255;// LED 亮度值 (0-255),255 为最亮// --- 状态记忆变量 (用于边缘检测) ---// 记录上一次循环时引脚的电平状态,用于对比判断信号是否发生了“跳变”bool lastB6=LOW;bool lastB7=LOW;/** * 初始化函数 * 系统上电后只运行一次 */voidsetup(){// 1. 配置引脚模式pinMode(B6_PIN,INPUT);// 将 B6 设置为输入模式,用于读取语音模块信号pinMode(B7_PIN,INPUT);// 将 B7 设置为输入模式pinMode(LED_PIN,OUTPUT);// 将 LED 引脚设置为输出模式,用于驱动 LED// 2. 初始状态设置analogWrite(LED_PIN,0);// 初始化 LED 为关闭状态 (PWM 值为 0)// 3. 串口通信初始化Serial.begin(115200);// 启动串口通信,波特率 115200// F() 宏用于将字符串存储在 Flash 中,节省宝贵的 SRAM 内存Serial.println(F("=== 语音LED控制程序已启动 ==="));}/** * 主循环函数 * 系统会无限重复执行此函数 */voidloop(){// --- 1. 读取当前输入状态 ---// 读取引脚当前的电平(HIGH 代表有信号,LOW 代表无信号)bool currentB6=digitalRead(B6_PIN);bool currentB7=digitalRead(B7_PIN);// --- 2. 边缘检测逻辑 (上升沿检测) ---// 为什么要这样做?// 语音模块通常只发送一个短暂的脉冲信号。如果我们只判断 "if (currentB6 == HIGH)",// 可能会因为信号持续时间极短而漏掉,或者因为信号一直维持在高电平导致重复触发。// "上升沿" 意思是:上一次是低电平,这一次变成了高电平,说明刚刚发生了一个动作。// 检测 B6 (开灯) 的上升沿if(currentB6==HIGH&&lastB6==LOW){ledState=true;// 更新内部状态记录analogWrite(LED_PIN,brightness);// 输出 PWM 信号点亮 LEDSerial.println(F("✓ 检测到开灯信号 -> 灯已打开"));}// 检测 B7 (关灯) 的上升沿if(currentB7==HIGH&&lastB7==LOW){ledState=false;// 更新内部状态记录analogWrite(LED_PIN,0);// 输出 0 值熄灭 LEDSerial.println(F("✓ 检测到关灯信号 -> 灯已关闭"));}// --- 3. 更新历史状态 ---// 将当前的电平状态保存下来,供下一次 loop 循环时与“新的当前状态”做对比lastB6=currentB6;lastB7=currentB7;// --- 4. 延时与防抖 ---delay(10);// 短暂延时 10ms// 作用:// 1. 简单的软件消抖,防止信号干扰导致的误判。// 2. 控制循环频率,避免串口打印过快导致卡顿。}
http://www.jsqmd.com/news/778199/

相关文章:

  • OpenClaw项目解析:构建团队级自动化爬虫系统的架构与实践
  • OWASP LLM Top 10安全风险深度解析与实战防护指南
  • 电商多模态大语言模型(MLLM)实战:架构设计与性能优化
  • Node.js 实现 Xcursor 转 PNG:Linux 光标主题解析与图像提取工具
  • 本科论文突围指南:Paperxie 为首,9 款 AI 辅助工具全面解析
  • 工程实践中的数据驱动决策:如何避免“传闻数据”陷阱
  • 从执行者到规划者:测试经理必须经历的5次思维升级
  • 考生分享:西药执业药师考前密押卷,哪家解析最透彻详细? - 医考机构品牌测评专家
  • 免费开源!3 秒克隆声音、100%本地运行,AI 配音进入原生桌面时代
  • 3-2大逆转!蓉城踢疯了,中超冠军真能直接颁奖?
  • Cursor AI编辑器历史版本自动归档工具:Node.js实现多平台下载链接管理
  • PostgreSQL AI向量扩展pgai实战:从原理到RAG应用部署
  • 有没有一种可能,现在的大语言模型已经发展得接近极限了?
  • 2026 石家庄工业自动化培训择校指南 纯实操导向机构全解析 - 资讯焦点
  • 从零开始:Gemini 3.1 Pro解决多文档合并与逻辑校验问题
  • 2026西药执业药师考前密押卷,哪家机构的答案解析最详细? - 医考机构品牌测评专家
  • 为Claude Code构建本地记忆引擎:基于MCP与向量数据库的持久化上下文解决方案
  • 面试八股真题统计与面经
  • Florr.io新版下水道与蚂蚁地狱实战解析:史诗卡获取与高危区域生存手册
  • 开源AI智能体平台Clawless:从核心架构到自动化工作流实战
  • 15.【Verilog】Verilog 时钟简介
  • 98%准确率!这个双分支AI模型,精准识别木薯叶病害(附代码)
  • Lovart 上线 GPT Image 2 模型,会员首月不限量使用
  • 别再乱改Apollo了!Spring Boot配置加载顺序深度解析:从local到namespace的优先级实战
  • 靠谱服务商甄选!2026动画制作服务机构推荐排行 全案定制/极速交付/长效售后 - 极欧测评
  • SnoutGuard实战:Go语言轻量级日志分析与主动防御工具部署指南
  • 开源云成本追踪工具mango-costs:架构解析与实战部署指南
  • 2026年5月家用电梯十大品牌技术解析与选购指南 - 速递信息
  • 基于OpenClaw的WordPress自动化内容发布机器人实战指南
  • 【Java】解决跨域问题的 8 种方案