语音识别红外控制系统

零基础做一个语音红外控制系统

  1. 项目概述
  2. 适合人群
  3. 实现功能
  4. 硬件模块
  5. 开发环境搭建
  6. 课程资料和环境下载地址
  7. 安装调试

蜂鸣器响起来

  1. 串口控制蜂鸣器编程实现
  2. 串口控制蜂鸣器原理
  3. 串口是什么
  4. 语音模块
  5. 语音模块基本介绍
  6. 语音模块固件配置和烧写
  7. 语音控制蜂鸣器实操

红外编解码模块

1.红外遥控码学习(破解)

1.1串口发送数据给红外编解码模块,控制RGB手写板

1.2编程实现WemosD1接受不同指令发不同红外码

1.3修改接线,实现电脑发送简单指令控制RGB灯

WemosD1接红外编解码模块和语音模块,控制RGB手写板                                                                                1.代码完整                                                                        2.制作最后的控制固件

  1. 概述

    1. 1适合人

我不关心你的年纪,专业,和基础,只要对编程感兴趣,不要有编程基础,也不要有硬件基础,只要花一下午或者一天的时间,有一台电脑就可以学习和编程开发体验,当然有点基础的话就会更快乐一些。

  1. 2 实现功

语音控制RGB手写板的电源,颜色切换功能。写完后可以自行拓展完成电视,风扇,空调灯基于红外 NEC编码控制的电器

2.硬件模块

每一块单片机都可以理解成人脑,我们可以驱使人类干活,比如开灯,拉上窗帘,打开电视等,但是人脑听懂后不一定听话照做,而单片机可以,但是单片机仅仅是脑子,而一个人信息接收需要眼睛-图像处理,需要耳朵-声音识别等,执行需要用到四肢操作一些类似遥控器的东西。所以把单片机加外设模块就 可以理解成一个听话的人,你编程就是给这个听话的人下指令,这个人能听懂的话叫做编程语言,比如 单片机

需要用到的硬件模块:

WemosD1 --大脑,Arduino平台,带WiFi,IIC, SPI接口

语音模块 --耳朵

红外编解码模块 --遥控器

3.开发环境搭建

编程语言

C语言(确切来说是C++),是我们人类和机器沟通的一种语言!

编程

开发环境,就是编写代码的地方,相当于把沟通语言写在纸条上,写代码就像把要吩咐机器做的事 情提前写在纸条上!

编译

开发环境除了能让你写代码,还能帮你把写的代码翻译成000101010这种机器真正能“看懂”的指 令,这个过程叫做编译

烧写

就是把最后翻译的代码写入单片机,这样单片机上电后就可以执行你写的代码

3.1资料和环境下载地

链接:https://pan.baidu.com/s/1ZsO_IV3QyMHzlZEI72DOsA

3.2安装

本开发软件自动集成WemosD1环境,如果你电脑有Arduino环境,也请先别用,按照教程来 解压后即可使用,强调:解压的路径不要带有中文!不要解压到带有中文名文件夹中!很重 要!!!!!否则会编译失败

配置开发板型号为Wemos!!!!!重要配置

单片机通过数据线接到电脑后,需要安装驱动

选择端口号,驱动安装后,会建立电脑和wemosD1的数据传输“通道”,这个“通道”就是端口!!! 重要配置

4、蜂鸣器响起来

蜂鸣器如下图,我们传统电路一般是串联型,也就是正极接正极,负极接负极,灯泡就亮,蜂鸣器就响,但是这种设计是不能编程控制的于是我们看到下方蜂鸣器除了正极VCC,负极GND之外还有I/O接口,这个就是可以通过杜邦线接到 WemosD1

又看到上面写着“低电平触发”

在单片机或者计算机中,所谓的低电平就是引脚信号为0,只要WemosD1的某个引脚和蜂鸣器I/O连接,然后WemosD1把这个引脚设置为0(低电平)

那么因为它们在同一根线上,蜂鸣器就收到低电平信号,所以就响起来。

如果把WemosD1看作是人,那么这个就相当于婴儿,完成简单的控制,就像刚学会叫爸爸一样!

是不是觉得没看到数电模电的东西就能编程实现蜂鸣器控制?没什么好纠结的,我们教婴儿叫爸爸是目 的,至于婴儿脑子里面的神经元是怎么反射的,不是我们关心的,或者不是现在该关心的。

/*

蜂鸣器响起来的代码

modified 31 June 2022

by:BUG_LONG

*/

// the setup function runs once when you press reset or power the board

// setup函数当单片机重新上电的时候,运行一次,通常我们在这里做一些初始化动作

void setup() {

// initialize digital pin 13 as an output.

//初始化D2引脚为输出引脚,输出电信号,比如后面输出低电平给蜂鸣器

pinMode(D2, OUTPUT);

}

// the loop function runs over and over again forever

// loop函数运行一次又一次,重复运行这个函数

void loop() {

digitalWrite(D2, 1); // D2输出高电平,不响

delay(100); //延迟100毫秒

digitalWrite(D2, 0); // D2输出低电平,响了

delay(100); //延迟100毫秒

}

5.串口

5.1串口控制蜂鸣器

让它响,就给我响,让它不响就给我不响!

 5.2串口是什

一种单片机的数据传输方式,双向传输的,专业名词叫做:全双工 半双工

5.3串口控制蜂鸣器原理

5.4编程实现

void setup() {

// initialize serial communication:

//初始化串口,设定波特率是9600

Serial.begin(9600);

//初始化D2引脚为输出引脚,输出电信号,比如后面输出低电平给蜂鸣器

pinMode(D2, OUTPUT);

digitalWrite(D2, 1);

}

// loop函数运行一次又一次,重复运行这个函数

void loop() {

int inByte;

// read the sensor:

//读取串口数据

if (Serial.available() > 0) {//串口有数据了

inByte = Serial.read();//读取数据

}

//如果收到数据是0x64,响

if (inByte == 0x64) //表示判断用==

{

digitalWrite(D2, 0);

}

//如果收到数据是0x65,不响

if (inByte == 0x65)

{

digitalWrite(D2, 1);

}

}

6.语音模块

6.1语音模块基本介绍

配置网址:http://www.smartpi.cn/#/

对蜂鸣器的控制是通过串口,需要用户在电脑用串口调试助手,很不方便,所以我们可以 用语音模块语音模块用的是su-03T的方案,是这个价位中无敌的存在,很多产品设计中都集成进去!

教大家用这个模块

需要硬件:USB转TTL, 语音模块

6.2语音模块固件配置和烧写

模块连接

语音模块的Tx是B7引脚,Rx是B6引脚,记得电源也要接,图中没有体现电源 打开蜂鸣器 串口输出0x64 关闭蜂鸣器 串口输出0x65

唤醒:小米小米

开机:欢迎使用我的语音智能系统

6.3语音控制蜂鸣器

7.红外编解码模块

RGB手写板

7.1红外遥控码学习(破解)

需要软件工具: 串口调试助手

需要硬件工具: 红外编解码模块 USB转TTL

接线

注意注意注意

USB转ttl接电脑USB口,驱动不用再安装,同WemosD1的ch340驱动

USB转ttl和红外编解码模块是“交叉接线”,RX接TX, TX接RX

电源VCC接VCC, GND接GND

电脑通过串口调试助手就可以获得红外编解码模块破解出来的遥控码,这是店家官方给的使用方法 破解:

00 EF 03 开

00 EF 02关

00 EF 04红

00 EF 05绿

00 EF 06蓝

00 EF 07白

00 EF 0B切换

7.2 串口发送数据给红外编解码模块,控制手写板

7.3编程实现WemosD1接受不同指令发不同红外码

7.4 修改接线,实现电脑发送简单指令控制RGB灯

7.5 WemosD1接红外编解码模块和语音,控制RGB手写板

7.6代码完整

这代码写的不好(我后面优化一哈)

char CODE_OPEN[] = {0xA1, 0xF1, 0x00, 0xEF, 0x03};

char CODE_OFF[] = {0xA1, 0xF1, 0x00, 0xEF, 0x02};

char CODE_RED[] = {0xA1, 0xF1, 0x00, 0xEF, 0x04}; char CODE_GREEN[] = {0xA1, 0xF1, 0x00, 0xEF, 0x05};

char CODE_BLUE[] = {0xA1, 0xF1, 0x00, 0xEF, 0x06};

char CODE_WHITE[] = {0xA1, 0xF1, 0x00, 0xEF, 0x07};

char CODE_FLASH[] = {0xA1, 0xF1, 0x00, 0xEF, 0x0B};

void setup() {

// initialize serial communication:

//初始化串口,设定波特率是9600

Serial.begin(9600);

}

// loop函数运行一次又一次,重复运行这个函数

void loop() {

int i;

int inByte;

// read the sensor:

//读取串口数据

if (Serial.available() > 0) {//串口有数据了

inByte = Serial.read();//读取数据

}

//如果收到数据是0x64

if (inByte == 0x64) //表示判断用==

{

for(i=0;i<5;i++){

Serial.print(CODE_OPEN[i]);

}

}

//如果收到数据是0x65

if (inByte == 0x65)

{

for(i=0;i<5;i++){

Serial.print(CODE_OFF[i]);

}

}

if (inByte == 0x66)

{

for(i=0;i<5;i++){

Serial.print(CODE_RED[i]);

}

}

if (inByte == 0x67)

{

for(i=0;i<5;i++){

Serial.print(CODE_GREEN[i]);

}

}

if (inByte == 0x68)

{

for(i=0;i<5;i++){

Serial.print(CODE_BLUE[i]);

}

}

if (inByte == 0x69)

{

for(i=0;i<5;i++){

Serial.print(CODE_WHITE[i]);

}

}

if (inByte == 0x6A)

{

for(i=0;i<5;i++){

Serial.print(CODE_FLASH[i]);

}

}

}

优化后的代码:

char CODE_OPEN[] = {0xA1, 0xF1, 0x00, 0xEF, 0x03};

char CODE_OFF[] = {0xA1, 0xF1, 0x00, 0xEF, 0x02};

char CODE_RED[] = {0xA1, 0xF1, 0x00, 0xEF, 0x04}; char CODE_GREEN[] = {0xA1, 0xF1, 0x00, 0xEF, 0x05};

char CODE_BLUE[] = {0xA1, 0xF1, 0x00, 0xEF, 0x06};

char CODE_WHITE[] = {0xA1, 0xF1, 0x00, 0xEF, 0x07};

char CODE_FLASH[] = {0xA1, 0xF1, 0x00, 0xEF, 0x0B};

void setup() {

// initialize serial communication:

//初始化串口,设定波特率是9600 Serial.begin(9600);

}

//发送NEC编码

void sendNEC(char code[])

{

int i;

for (i = 0; i < 5; i++) {

Serial.print(code[i]);

}

}

// loop函数运行一次又一次,重复运行这个函数

void loop() {

int inByte;

// read the sensor:

//读取串口数据

if (Serial.available() > 0) {//串口有数据了

inByte = Serial.read();//读取数据

}

switch (inByte) {

case 0x64:

sendNEC(CODE_OPEN);

break;

case 0x65:

sendNEC(CODE_OFF);

break;

case 0x66:

sendNEC(CODE_RED);

break;

case 0x67:

sendNEC(CODE_GREEN);

break;

case 0x68:

sendNEC(CODE_BLUE);

break;

case 0x69:

sendNEC(CODE_WHITE);

break;

case 0x6A:

sendNEC(CODE_FLASH);

break;

}

}

8.制作最后的控制固件

根据代码设计如下词条和控制数据

识别控制词 对应串口输出数

开灯 0x64

关灯 0x65

切换红色 0x66

切换绿色 0x67

切换蓝色 0x68

切换白色 0x69

开始闪烁 0x6A

小米小米注:唤醒

注:上机语音播报内容

零基础快速做一个语音控制系统相关推荐

  1. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  2. 零基础快速打造一个属于自己的微信聊天工具

    " 零基础快速打造一个属于自己的微信聊天工具" 打开微信,我们可以和别人进行聊天,发送消息.非常方便,那微信是怎么来的呢​?这个本质的问题让人突发奇想,我们能不能做一个属于自己的微 ...

  3. 零基础Unity做一个中秋诗词鉴赏网页,提前祝您中秋快乐!(DoTween动画 | WebGL视频 | 大文件上传GitHub)

    零基础Unity做一个中秋诗词鉴赏网页,提前祝您中秋快乐! 前言 一,环境搭建 1.1 安装Unity 1.2 添加WebGl模块 二,开发项目 2.1 导入插件 2.2 项目搭建 2.3 逻辑处理 ...

  4. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  5. 零基础快速上手CANoe

    零基础快速上手CANoe 前言 什么是CANoe CANoe的工作原理 一. 如何新建一个工程 二. 如何发送报文 2.1 尝试发送报文 2.2 DBC文件的使用 三. 报文的录制与回放 3.1 使用 ...

  6. 【PR】零基础快速入门教程

    [PR]零基础快速入门教程 PR(Premiere)能做什么? PR欢迎界面及新建项目 工作区及窗口说明 导入文件 建立序列 视频剪辑 添加字幕 导出视频 使用软件:Premiere2020 新年卷起 ...

  7. rust放置木箱转向_[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]...

    [易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kre ...

  8. 零基础快速学习Java技术的方法整理

    在学习java技术这条道路上,有很多都是零基础学员,他们对于java的学习有着很多的不解,不知怎么学习也不知道如何下手,其实Java编程涉及到的知识点还是非常多的,我们需要制定java学习路线图这样才 ...

  9. Vue-cli 3.X 构建工具零基础快速上手

    文章目录 一.环境准备 1. 安装node 2. 配置镜像 二.安装Vue CLI 2.1. 查看当前vuecli版本 2.2. 安装最新版本 2.3. 安装指定版本 三.创建web项目 3.1. 指 ...

  10. 零基础快速入门web学习路线(含视频教程)

    下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...

最新文章

  1. python字典随机取数
  2. C#中WinForm程序退出方法
  3. uniapp快查页面链接
  4. CDATA and comment
  5. 大数据开发者应该知道的分布式系统 CAP 理论
  6. 【jeecg Docker安装】使用 Docker 搭建 Java Web 运行环境
  7. 蓝牙 sig base uuid_西圣XISEM真无线蓝牙耳机ASN体验:轻盈舒适,声音悦耳_
  8. 春节见闻之北京前门步行街
  9. 设计思想之高内聚低耦合
  10. 计算机没鼠标怎么,电脑没鼠标怎么开启系统
  11. 程序员用什么软件做笔记?
  12. fcm基本原理_FCM聚类算法介绍
  13. java工商银行项目_工商银行聚合支付,java开发实现
  14. 特效编辑器开发手记1——令人蛋疼菊紧的Cocos2d-x动态改变粒子数
  15. 初学者学习 - Unity中的热更新 - Lua和C#通信
  16. 一年两款新品 寒武纪的研发效率为何如此高?
  17. Java是什么?学了Java我们能干什么?
  18. 2023河北工业大学计算机考研信息汇总
  19. Java中类名虽然可以直接使用静态属性但是在使用时要注意静态属性是一个常量
  20. matlab相机标定教学视频,相机标定入门教程【 OpenCV + Matlab】

热门文章

  1. 算法课讨论 深究哈密顿图
  2. Odoo12功能增强模块
  3. VirtualBox 安装 增强功能
  4. 机器学习期末考试判断题
  5. 《CLR via C#》读书笔记-.NET多线程(一)
  6. GAMIT/GLOBK入门简介和安装
  7. 10-165 查询图书表中2018年出版的图书的数目
  8. 星光嵌入式WM8978音频模块发布
  9. java高级软件工程师证书国家,看完这篇彻底明白了
  10. 深圳vpay钱包系统技术开发分享