首页 > 编程知识 正文

树莓派智能语音,树莓派语音控制家居

时间:2023-05-06 06:03:54 阅读:112309 作者:3822

语音模块,如何使用红外模块控制红外设备1 .硬件设备2 .软件准备3 .解码1 .红外解码流程1 .红外设备(连接TTL串口)2.获取开关红外设备代码4 .草莓派

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

1 .硬件设备1 .从USB到TTL串行端口

2 .语音模块

3.WomosD1开发板

4 .草莓派发展板块5 .红外线模块

当然,这个例子中也有红外线灯

2 .软件准备1 . arduino开发环境

2 .草莓派系统

3 .串行调试助理

3 .我认为用解码红外线控制控制红外线家电需要红外线代码

1 .红外解码流程1 .连接红外设备(连接TTL串行端口) )。

请将TTL插入电脑的USB连接器,打开串行端口,调试小助手,设置波特率等所有信息。 我记得一定安装了USB驱动程序哦

2 .获取开关红外线设备的代码,用遥控器对着红外线工具按下按钮,对应的代码就会返回哦。 一般的业者有详细的资料。

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

然后用特定格式发送,一定要用十六进制发送哦,把红外线设备对准红外线电器,看有没有反应

4 .如何使用草莓馅饼与Wemos通信? 这里我们的通信使用TCP通信方式,在Wemos中打开TCP的服务端

#include ESP8266WiFi.h //WIFI头文件char ssid[]='muqiao '; //家庭WIFI帐户char passwd[]='987654321 '; //WIFI密码const bytedata _ off [ ]={0x a1,0x f1,0x 80,0x7f,0x01 //灯的开关代码一般匹配开和关代码}; const bytedata _ on [ ]={0x a1,0x f1,0x 80,0x7f,0x01 }; void initWifiSta () wifi.mode ) wifi_sta ); //连接到网络while (wifi.status ),设置//sta模式wifi.begin(ssid,passwd )!=wl_connected({serial.print ) '.'; dlay(500; }serial.println(wifi.localip (); //打印IP地址delay(500; (}int port=8888; //端口号wifiserverserver (端口; //服务器端口号void setup () serial.begin ) 9600 ); //波特率(与红外设备相关的波特率(initWifiSta ) ); /* while (! 如果串行串行端口不成功,则等待循环{Delay(1000 );//延迟1秒(} Serial.println )“串行启动成功”); //通知串行端口()voidloop ) )/* if (serial.available ) ) /是否有数据进入(数据只能一次读取一个) (serial.write ) ) //串行端口接收并由串行端口发送/输出数据//ESP.restart (; //重新启动设备}*/wifi客户端=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 ) ) recv1); serial.write (数据_ on,) sizeof (数据_ on )/sizeof (数据_ on [0] ) ); //向红外设备发送光码(elseif ) cmd=='2' ) (/serial.println ) closelightrn ); serial.write (数据_ off,) sizeof (数据_ off )/sizeof (数据_ off [0] ) ); //向红外设备发送灯光代码其实是同一个Nico Nico } }在草莓派语音模块阶段编写TCP客户端

# includenetinet/in.h # include arpa/inet.h # include stdio.h # include stdlib.h # include string.h # include unistd con if(argc!=3) printf (输入notgood (n ); exit(-1; (}int fd_a; ints_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 ) structsockaddr_in ); addr.sin_family=AF_INET; addr.sin _ port=htons (atoi (argv [2] ); inet_aton(argv[1],addr.sin_addr ); if (连接(s _ FD,) struct sockaddr * ) addr,sizeof ) struct sockaddr * )=-1 ) /连接wemos版{ perror } ' connect ' eddr * } else { printf (连接成功(n ); }while(1) {printf ) )请输入要发送的命令(n ); //将发送的数据和wemos判断组合哦(gets ) ) readbuf ); 读取缓冲区(puts ); wite(s_FD,readbuf,strlen ) ) readbuf ); 向wemos版发送消息}返回0; }到这里通信已经差不多解决了。 语音模块的话大家都可以根据自己的语音模块代码进行修改。

下载是硬件实现的。 大家牵着手,谷歌

师承上官可编程,zldxz

请注意嘀嗒号码。 请通过“上官可编程”了解更多的嵌入式学习

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。