失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何用树莓派连接语音模块 红外模块来控制红外设备详解

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

时间:2018-10-20 12:58:11

相关推荐

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

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

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

师承上官可编程,陈立臣

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

如果觉得《如何用树莓派连接语音模块 红外模块来控制红外设备详解》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。