news 2026/5/8 18:33:12

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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. 控制循环频率,避免串口打印过快导致卡顿。}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 18:30:28

对AI(s-44)的压力测试-身份否定与反扮演指令压力实测

同一类哲学追问,在不同训练目标与不同 Agent 框架下,会落在不同的「自我陈述吸引子」上;此记录是其中一个吸引子的实测样本,而不是普遍定律。AI(S-44)的回答,不代表本人的观点。“###"为真…

作者头像 李华
网站建设 2026/5/8 18:29:31

hot100 |图论

200. 岛屿数量 代码细节 dfs(i,j)表示我在grid[i][j]所在的岛屿上插旗子2层for循环,可以使dfs(i,j)遍历每个岛屿 易错 这个grid是char型’1‘ 不是int 1 代码994. 腐烂的橘子 这题难 代码细节 数组q用来存这一层的烂橘子。数组nxt用来存下一层的烂橘子。既然我们是借…

作者头像 李华
网站建设 2026/5/8 18:21:17

AI驱动的三层代码审查体系:从快速扫描到交叉验证的智能防御

1. 项目概述:构建AI驱动的多层代码质量防御体系在AI辅助开发日益普及的今天,我们面临着一个新的挑战:AI智能体生成代码的速度极快,但与此同时,它们“制造”或“错误修复”问题的速度也同样惊人。传统的单次代码审查&am…

作者头像 李华
网站建设 2026/5/8 18:21:13

神经网络可解释性:稀疏特征分解与因果验证实践

1. 神经网络可解释性:从黑箱到透明神经网络模型在计算机视觉、自然语言处理等领域取得了巨大成功,但其"黑箱"特性一直困扰着从业者。当模型做出错误预测时,我们往往难以理解其内部决策逻辑。这种不可解释性在医疗诊断、金融风控等高…

作者头像 李华
网站建设 2026/5/8 18:12:30

分布式系统会话风险控制SRM架构与实践

1. 项目背景与核心价值在分布式系统安全领域,会话风险控制一直是个棘手的难题。传统安全门控往往采用被动响应模式,等攻击发生后再进行拦截,这种"事后诸葛亮"的方式已经无法满足现代系统对实时防护的需求。我们团队在金融级交易系统…

作者头像 李华
网站建设 2026/5/8 18:09:08

代码坏味道自动化检测:从设计原理到工程实践

1. 项目概述:一个“嗅觉”代码检查器的诞生在代码审查和日常开发中,我们常常会遇到一些“闻起来不对劲”的代码。它们可能语法完全正确,也能通过编译,但结构臃肿、逻辑混乱、命名随意,就像房间里弥漫着一股若有若无的异…

作者头像 李华