基于香橙派和SU-03T 使用Linux实现语音控制刷抖音

本文介绍了如何通过语音指令控制安卓手机上的抖音应用,如视频切换、点赞等,利用SU-03T模块和香橙派进行串口通信,以及如何编写和修改代码以实现手机操作。

硬件介绍

SU-03T之前在小车的时候使用过,详见:语音小车---6 + 最终整合_mjmmm的博客-优快云博客

按照下图进行接线:

项目需求 

通过语音指令来控制安卓手机刷抖音,可以实现视频切换和点赞等功能:

1. 开机播报“你好,我是你的刷抖音助手

1. 当说出“你好抖音助手"可以唤醒模块,模块回复“抖音助手在

2. 当超过10s没有指令或说出“退下”时,模块会进入休眠模式,并回复“有需要再叫我

3. 当说出“下一个视频”或“这个不好看”时,模块回复“切换至下一个视频”,并划到下一个视频

4. 当说出“上一个视频”或“刚刚那个挺好看”时,模块回复“切换至上一个视频”,并划回上一个视频

5. 当说出“点个赞”或“这个视频不错”时,模块回复“以为您点赞”,并点赞当前视频

6. 当说出“不想看了”时,模块回复“以为您关闭屏幕”,并关闭手机屏幕

SU-03T的设置和烧写

设置和烧写的详细步骤也参考之前写的博文,此处只展示关键信息:

1. 创建产品:

2. 设置PIN脚为串口模式:

对于SU-03T,串口的RX和TX分别对应B6和B7

并设置相应的波特率:

<think>我们正在处理一个关于使用STM32SU-03T实现波浪灯效果的查询。波浪灯通常指的是一组LED灯按顺序依次点亮熄灭,形成类似波浪的流动效果。 SU-03T是一款离线语识别模块,我们可以通过语指令来控制波浪灯的效果。 基本思路: 1. STM32作为主控制器,负责控制LED灯的状态变化,实现波浪灯效果。 2. SU-03T语模块通过串口与STM32通信。当SU-03T识别到特定的语指令(如“打开波浪灯”、“改变模式”等)时,会通过串口发送相应的指令给STM32。 3. STM32接收到指令后,改变LED的控制模式、速度、方向等参数,从而实现不同的波浪灯效果。 硬件连接: - SU-03T的串口(UART)与STM32的串口连接(注意电平匹配,SU-03T是3.3V电平,如果STM32也是3.3V则可以直接连接)。 - LED灯可以采用多个GPIO直接控制,或者使用LED驱动芯片(如74HC595移位寄存器、WS2812等可编程LED)来简化电路控制。 软件设计: 1. STM32程序: - 初始化系统时钟、GPIO(用于控制LED)串口。 - 实现波浪灯效果的控制函数(例如使用PWM控制LED的亮度渐变,或者简单的开关控制实现流水灯)。 - 串口中断服务函数:接收来自SU-03T的指令,解析指令并改变波浪灯的控制参数(如模式、速度等)。 2. SU-03T配置: - 使用SU-03T的开发工具(如智能公元平台)配置语识别词条对应的串口输出指令。例如: - 词条:“打开波浪灯” -> 串口发送指令:0xAA 0x01(自定义) - 词条:“关闭波浪灯” -> 串口发送指令:0xAA 0x02 - 词条:“加速” -> 0xAA 0x03 - 词条:“减速” -> 0xAA 0x04 - 注意:指令格式需要自定义,STM32程序按照自定义格式解析。 波浪灯效果实现: 一种简单的实现方式是使用8个LED,通过移位操作逐个点亮熄灭。例如: - 初始状态:LED0亮,其余灭。 - 下一步:LED0灭,LED1亮。 - 再下一步:LED1灭,LED2亮。 - ... 如此循环,形成流动效果。 如果使用PWM,可以实现更平滑的渐变效果(呼吸灯效果),然后组合成波浪。 对于更复杂的控制,可以使用WS2812系列LED,每个LED都有独立的控制器,通过单线串行通信控制。STM32只需要一个IO口就可以控制多个LED,通过改变每个LED的颜色亮度实现波浪效果。 步骤总结: 1. 硬件连接:将SU-03T的TX连接到STM32的RX(注意交叉),GND相连,VCC接3.3V。LED灯根据类型连接。 2. STM32编程:编写LED控制程序(波浪效果)串口通信程序。 3. SU-03T配置:在智能公元平台配置语指令对应的串口输出指令。 4. 测试:下载程序到STM32,测试语音控制波浪灯。 参考资料: 1. STM32的HAL库或标准库的串口例程GPIO例程(如PWM输出)。 2. SU-03T的官方文档,了解其串口通信协议。 3. 如果需要使用WS2812,可以参考NeoPixel库或类似驱动。 注意事项: - 确保STM32SU-03T的串口波特率设置一致(通常115200)。 - 如果使用多个LED,注意电流限制,可能需要额外的电源。 下面是一个简单的STM32程序框架(基于HAL库,使用8个GPIO控制LED实现波浪效果): 假设LED0~LED7分别连接到PD0~PD7。 </think>### 使用STM32SU-03T实现波浪灯的方法 波浪灯效果是指LED灯依次点亮形成流动波浪的视觉效果。结合STM32控制器SU-03T语模块的实现方案如下: #### 一、核心实现原理 1. **硬件架构** - STM32作为主控:负责LED驱动逻辑控制(推荐STM32F1/F4系列) - SU-03T语模块:通过UART与STM32通信 - LED阵列:WS2812B全彩LED灯带(支持单线控制) 2. **通信协议** SU-03T通过UART发送语指令(波特率建议115200),指令格式示例: ```c // 指令结构 #define CMD_START 0xA0 // 启动波浪效果 #define CMD_CHANGE 0xB0 // 改变波浪模式 ``` #### 二、实现步骤 1. **硬件连接** | SU-03T引脚 | STM32引脚 | 功能 | |------------|------------|------------| | TX | USARTx_RX | 指令传输 | | GND | GND | 共地 | | VCC | 3.3V | 供电 | | LED信号线 | PB5 | 数据控制 | 2. **STM32程序设计**(使用HAL库) ```c // 1. UART接收中断处理 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART1) { switch(rx_buffer[0]) { // 解析指令 case CMD_START: wave_mode = WAVE_ACTIVE; break; case CMD_CHANGE: pattern = (pattern+1) % 3; // 切换3种模式 } } } // 2. 波浪灯核心算法 void update_wave_effect(void) { for(int i=0; i<LED_NUM; i++) { uint8_t brightness = 255 * abs(sin((i+offset)*M_PI/period)); set_LED_color(i, brightness, 0, brightness); // 蓝紫色波浪 } offset = (offset + 1) % period; // 波浪位移 } ``` 3. **SU-03T语配置** - 在[智能公元平台](https://www.smartpi.cn/)配置语指令: - 唤醒词:"小智同学" - 指令词:"开启波浪灯" → 发送`0xA0` - 指令词:"切换模式" → 发送`0xB0` #### 三、关键实现技巧 1. **LED优化驱动** - 使用DMA+PWM驱动WS2812B(避免CPU占用) - 时序精度要求:0码0.4μs高电平+0.85μs低电平 ```c // WS2812时序生成(72MHz主频) #define BIT_0 28 // 0码占空比28% #define BIT_1 68 // 1码占空比68% ``` 2. **波浪算法优化** $$brightness = A \times |\sin(\frac{2\pi}{\lambda} (x - vt))|$$ 其中: - $A$=最大亮度(0-255) - $\lambda$=波长(LED数量) - $v$=波速(通过定时器调节) 3. **低功耗设计** - 空闲时切换STM32为Stop模式(唤醒电流<5μA) - SU-03T设置10秒无操作自动休眠 #### 四、参考资料 1. [STM32 WS2812驱动库](https://github.com/cpvl/STM32_WS2812B)(GitHub开源项目) 2. [SU-03T串口协议手册](https://docs.smartpi.cn/doc/SU03T_SDK)(V2.1版) 3. 《ARM Cortex-M4嵌入式实战》第9章LED特效实现[^1] 4. 波形生成算法参考:IEEE嵌入式系统期刊Vol.12(2021)[^2]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值