如何用树莓派连接语音模块,红外模块来控制红外设备详解

  • 1.硬件设备
  • 2.软件准备
  • 3.解码
    • 1.红外解码流程
      • 1.连接红外设备(与TTL串口相连)
      • 2.获取开关红外电器的码
    • 4.我们使用树莓派如何和Wemos通信呢

这里我们以红外遥控灯为例

1.硬件设备

  • 1.USB转TTL串口
  • 2.语音模块
  • 3.WomosD1开发板
  • 4 .树莓派开发板
  • 5 .红外模块


当然本例子中还有红外灯啦

2.软件准备

  • 1 . arduino开发环境
  • 2 .树莓派系统

  • 3 .串口调试小助手

3.解码

我们想通过红外控制得先有红外码才能够控制红外家电

1.红外解码流程

1.连接红外设备(与TTL串口相连)


把TTL插入到电脑USB接口,打开串口调试小助手,波特率等信息都要设置好哦,USB驱动一定记得装哦

2.获取开关红外电器的码

用遥控器对着红外工具按键,会返回相对应的码哦,一般商家都会有详细的资料可以翻阅。

有些红外设备还需要特定的格式,这里参考自己买的红外设备的资料为准

然后按照特定的格式发回去,一定要按照16进制发送哦,红外设备对准红外电器,看是否有反应

4.我们使用树莓派如何和Wemos通信呢

这里我们通信使用TCP通讯方式,在Wemos开启TCP的服务端


#include <ESP8266WiFi.h>  //WIFI头文件
char ssid[] = "muqiao";   //自己家的WIFI账号
char passwd[] = "987654321"; //WIFI密码const byte data_off[] =
{0xA1,0xF1,0x80,0x7F,0x01  //灯的开关码    一般开和关的码一致};
const byte data_on[] =
{0xA1,0xF1,0x80,0x7F,0x01};void initWifiSta()
{WiFi.mode(WIFI_STA);         // 设置STA模式WiFi.begin(ssid, passwd);   //连接网络while (WiFi.status() != WL_CONNECTED) {  Serial.print(".");delay(500);}Serial.println(WiFi.localIP());  //打印IP地址delay(500);}
int port = 8888;  //端口号
WiFiServer server(port); // 设置服务器端口号
void setup()
{Serial.begin(9600);   //设置波特率(和红外设相连接的波特率)initWifiSta();/* while(!Serial)                  //串口未成功则循环等待{  delay(1000);                //  延迟1秒}Serial.println("串口启动成功"); //通知串口*/
}
void loop() {/*if(Serial.available())            //是否有数据传入 (数据只会一个一个读取){  Serial.write(Serial.read());  //串口接收后再串口发送/输出数据 // ESP.restart();               // 重启设备    }*/WiFiClient client = server.available();   //设置为服务端server.begin();//服务初始化 Serial.println(WiFi.localIP());   //打印IPwhile (client.connected())    //等待客户端的连接{while (client.available() > 0) { char cmd = client.read();  //从客户端读取数据Serial.println(cmd);  //打印读取的数据if(cmd=='1')  {//             Serial.println("recv 1");Serial.write(data_on,(sizeof(data_on) / sizeof(data_on[0]))); //给红外设备发送开灯码}else if(cmd=='2'){//              Serial.println("close light\r\n");Serial.write(data_off,(sizeof(data_off) / sizeof(data_off[0])));//给红外设备发送关灯码   其实是一样的  嘻嘻嘻}}}}

树莓派语音模块阶段我们写一个TCP的客户端

#include<netinet/in.h>
#include <arpa/inet.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
int main(int argc,char **argv){char readbuf[2];char ch[128];if (argc!=3){printf("input not good\n");exit(-1);}int fd_a;int s_fd=socket(AF_INET, SOCK_STREAM,0);//配置通信模式if (s_fd==-1){perror("socket");exit(-1);}struct sockaddr_in addr;struct sockaddr_in addr1;memset(&addr,0,sizeof(struct sockaddr_in));addr.sin_family=AF_INET;addr.sin_port=htons(atoi(argv[2]));inet_aton(argv[1],&addr.sin_addr);if(connect(s_fd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1)//连接wemos版{       perror("connect");exit(-1);}else{printf("connect success\n");}while(1){printf("请输入发送的指令\n");  //发送的数据和wemos判断相结合哦gets(readbuf);puts(readbuf);write(s_fd,readbuf,strlen(readbuf));//向wemos版发送信息}return 0;
}

走到这里已经差不多了,通信就解决了。语音模块的话大家就可根据自己的语音模块代码进行修改。

接下载就是硬件实现了,大家动起手来吧 GOGOGO

师承上官可编程,陈立臣

欢迎大家关注抖音号,”上官可编程“,了解更多嵌入式学习

如何用树莓派连接语音模块,红外模块来控制红外设备详解相关推荐

  1. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

  2. ES6模块之export和import详解

    ES6模块之export和import详解 ES6中的模块即使一个包含JS代码的文件,在这个模块中所有的变量都是对其他模块不可见的,除非我们导出它.ES6的模块系统大致分为导出(export)和导入( ...

  3. 【java】JDK安全模块JCE核心Cipher使用详解

    1.概述 转载:JDK安全模块JCE核心Cipher使用详解 2.前提 javax.crypto.Cipher,翻译为密码,其实叫做密码器更加合适.Cipher是JCA(Java Cryptograp ...

  4. 【 数据集加载 DatasetDataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10)】

    数据集加载 Dataset&DataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10) 模块介绍 在本节中没有关于数学原理的相关介绍,使用的数据集和类型 ...

  5. 【 线性回归 Linear-Regression torch模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人(4/10)】

    torch模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 深度学习 Pytorch笔记 B站刘二大人(4/10) 介绍 至此开始,深度学习模型构建的预备知识已经完全准备完毕. 从本章开 ...

  6. python调用包的路径_Python3 模块、包调用路径详解

    如下所示: ''' 以下代码均为讲解,不能实际操作 ''' ''' 博客园 Infi_chu ''' ''' 模块的优点: 1.高可维护性 2.可以大大减少编写的代码量 模块一共有三种: 1.Pyth ...

  7. python中paste函数的作用_PIL图像处理模块paste方法简单使用详解

    python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的,现在 ...

  8. python six模块详解_对python中的six.moves模块的下载函数urlretrieve详解

    实验环境:windows 7,anaconda 3(python 3.5),tensorflow(gpu/cpu) 函数介绍:所用函数为six.moves下的urllib中的函数,调用如下urllib ...

  9. 进阶篇——树莓派OLED模块的使用 大量例程详解

    树莓派OLED模块的使用教程大量例程详解 #树莓派# 简介 Python有两个可以用的OLED库 [Adafruit_Python_SSD1306库]->只支持SSD1306 [Luma.ole ...

最新文章

  1. 什么是m叉树_重型货架是什么?重型仓储货架介绍
  2. 【Socket网络编程】17. recv() 函数详解
  3. c语言 activemq,activemq概念介绍
  4. centos ezhttp mysql_Windows 访问CentOS上Mysq配置说明
  5. python怎样使用各个日期赤纬_python--日期操作
  6. JavaScript (If...Else和Switch和循环遍历) 语句以及常用消息框
  7. 从系统中取得指定资源图像(转载)
  8. HTML5+canvas激流勇进网页游戏源码
  9. 一个常用的Android工具库
  10. oracle standby同步,PRIMARY Standby不能同步问题
  11. 微软服务器离线补丁工具包,wsus offline update
  12. 在苹果 Mac上接收和暂停或停止接收通知操作方法?
  13. node.js 与 nvm安装教程
  14. excel 瀵煎叆mysql_hypermesh瀵煎叆ansys
  15. 【Web前端基础】实验9 表单页面设计
  16. 【通識:人生哲學與幸福】老子人生觀巡禮
  17. 2021年中职组“网络安全”赛项内蒙古自治区竞赛任务书
  18. python 正则表达式 r_python 正则表达式
  19. Excel中的LEN和LENB,VBA中的Len和LenB
  20. 部署静态网站的五种方法

热门文章

  1. .net 基础面试题
  2. 涉密计算机分为几个等级,获得涉密集成资质单位关于涉密人员分为哪几个等级?...
  3. Android Studio 模拟器卡慢、占内存解决方法
  4. 苹果AirTag发布2A36固件更新,Find My功能应用越来越广泛
  5. 达梦数据库表结构批量导出
  6. ionic的安装与环境配置
  7. 【OpenCV图像处理16】课程总结
  8. 【IT资讯】TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
  9. XorDDos木马清除
  10. 达尔豪西大学 计算机科学,达尔豪西大学计算机科学本科专业.pdf