树莓派(TCP客户端 )和Wemos(TCP服务端连接红外模块)通讯实现对红外设备的控制

参考:U如何用树莓派连接语音模块,红外模块来控制红外设备详解
作者:一只青木呀
发布时间:2020-08-12 17:14:10
网址:https://blog.csdn.net/weixin_45309916/article/details/107960066

目录

  • 硬件
  • 软件
  • 红外解码步骤
    • 1.连接红外设备(与TTL串口相连)
    • 2.获取开关红外电器的码
  • 树莓派和Wemos通信

硬件

1.USB转TTL串口

2.WomosD1开发板

3.树莓派开发板

4.红外模块

5.红外设备(如:红外灯)

软件

1 . arduino开发环境

2 .树莓派系统

3 .串口调试小助手

红外解码步骤

思路:利用红外码控制红外家电

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

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

在这里插入图片描述

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

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

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

然后按照特定的格式发回去,一定要按照16进制发送,红外设备对准红外电器,看是否有反应。
在这里插入图片描述

树莓派和Wemos通信

这里我们通信使用TCP通讯方式,在Wemos开启TCP的服务端树莓派写一个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;
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java反编译微信小程序_教你如何一键反编译获取任何微信小程序源代码(图形化界面,傻瓜式操作)...

一键获取微信小程序源代码1 Tips&#xff1a;2   一键获取微信小程序源码, 使用了C#加nodejs制作 直接解压在D盘根目录下后就可以使用 将小程序文件放到 wxapkg目录下3 这个目录下有一些demo 可以先进行实验 使用正确 wxapkg exe这些文件应该在 D:CrackMinApp目录下4 然后打开…

PM2管理工具的使用

linux上PM2可以管理服务程序&#xff0c;防止程序无故关闭&#xff0c;具有程序守护功能&#xff0c;自动重启服务器程序&#xff0c;监控程序等好处&#xff0c;很方便&#xff0c;具体自己去体会! 官网地址&#xff1a; http://pm2.keymetrics.io/ 文档指南&#xff1a; ht…

C语言常用字符串操作函数大全详解(strstr,strtok,strrchr,strcat,strcmp,strcpy,strerror,strspn,strchr等)

参考&#xff1a;string.h中常用字符串操作函数说明&#xff08;strstr&#xff0c;strtok&#xff0c;strrchr&#xff0c;strcat&#xff0c;strcmp&#xff0c;strcpy&#xff0c;strerror&#xff0c;strspn&#xff0c;strchr等&#xff09; 作者&#xff1a;一只青木呀 发…

位运算(按位与、按位或、异或、取反)以及原码、反码、补码

参考&#xff1a;运算符的计算&#xff08;按位与 按位或 异或 取反&#xff09; 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-07-23 18:13:55 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107543919 参考&#xff1a;计算机原码&#…

Docker03 Docker基础知识、Docker实战

1 Docker基础知识 1.1 什么是Docker Docker是一个可以装应用的容器&#xff0c;就像杯子可以装水、书包可以装书一样&#xff1b;docker官网 Docker是Docker公司开发的&#xff0c;并开源到GitHub上; Docker是跨平台的&#xff0c;支持windows、linux、Macos 1.2 Docker思想 1.…

Linux网络编程小知识(字节序、IP格式、函数、子网掩码、DNS域名解析代码实现)

参考&#xff1a;网络编程前的一些小知识–Linux笔记 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2021-04-12 23:19:10 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/115560197 参考&#xff1a;DNS域名解析 作者&#xff1a;一只青木呀 发布…

ARM汇编基础详解(PS学习汇编的原因)

目录前言1.GNU 汇编语法2.Cortex-A7 常用汇编指令2.1 处理器内部数据传输指令&#xff08;内部寄存器数据非内存数据&#xff09;2.2 存储器访问指令&#xff08;RAM&#xff09;2.3 压栈和出栈指令&#xff08;了解&#xff09;2.4 跳转指令2.5 算术运算指令2.6 逻辑运算指令前…

ARM(IMX6U)裸机汇编LED驱动实验——驱动编写、编译链接起始地址、烧写bin文件到SD卡中并运行

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机汇编LED驱动实验–驱动编写 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-07 09:13:48 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107851318 参考&#xff1a;Linux之…

java 面试 概率论_编程培训-115个Java面试题和答案B.pdf

编程培训-115个Java面试题和答案B.pdf “玩转”Java系列 1 题目115个Java面试题和答案终极(下) 第一篇讨论了面向对象编程和它的特点&#xff0c;关于Java和它的功能的常见问题&#xff0c;Java的集合类&#xff0c; 垃圾收集器&#xff0c;本章主要讨论异常处理&#xff0c;Ja…

ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机之I.MX6ULL启动方式详解 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-09 16:32:07 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107891591 目录启动方式的选择①.串行下…

python 操作mongo

1.  导包&#xff1a; import pymongo 2.  建立连接 client pymongo.MongoClient("127.0.0.1",27017) 3.  获取数据库 db client["test1"] 4.  获取集合 col db["t2"] 5.  插入数据&#xff1a; col.insert_one({ name:aa , age:2 …

ARM(IMX6U)裸机之I.MX6ULL启动头文件详解(内部BOOT ROM、IVT + Boot data + DCD + led.bin)

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机之I.MX6ULL镜像烧写以及启动头文件的详解 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-09 17:10:00 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107895975 目录BOOT R…

(转)git遇到的问题之“Please make sure you have the correct access rights and the repository exists.”...

对于git的提交一直很小心翼翼&#xff0c;感觉一不小心就会踩到莫名的坑。 这不&#xff0c; 某天commit 就遇到了On branch master nothing to commit (working directory clean) 一查意思。你的分支很干净&#xff1f; 干净&#xff1f;excuse me&#xff1f; 然后git push …

ARM(IMX6U)裸机C语言版本LED驱动实验(汇编进入处理器SVC模式、SP堆内存、跳转main函数、链接起始地址)

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机C语言LED驱动实验–驱动编写,编译 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-11 11:20:17 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107930284 目录0.简介①、汇编…

IBM TS3200 Drive故障处理方案

一、故障定位1.1.故障信息截图摘要1.2.故障定位通过网线连接带库&#xff0c;进入Web管理模式从右边告警得到信息&#xff1a;Drive Broken Code :F3 02 SCD:5 ; Exception F3 52 –Error 经第二张图片定位&#xff0c;确认Drive 2故障需要更换一块Drive 模块此部件支持热插拔&…

链接脚本的编写( 起始地址、text、data、__bss_start、__bss_end、dis反汇编验证)

目录链接脚本的简介以及简单编写编写本试验的链接脚本链接脚本的简介以及简单编写 链接脚本描述了要链接的文件&#xff0c;以及链接顺序、链接首地址。 在博文ARM&#xff08;IMX6U&#xff09;裸机C语言版本LED驱动实验中&#xff0c;我们在编译过程中使用Makefile 来链接代…

java 无法加载资源,JavaScript:无法加载资源:服务器响应状态为404(未找到)

我处理 JavaScript 应用程序&#xff0c;该应用程序在 https://localhost:63342/WalletClient/index.html_ijtk4ock08pqsve8hb7b2b34ou3h5 的localhost地址中打开 . 看起来像这样&#xff0c;单击余额按钮时&#xff0c;它应执行以下 Ajax GET 请求并尝试打开新页面 balance.ht…

ARM(IMX6U)裸机模仿STM32驱动开发实验(定义外设结构体)

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机模仿STM32驱动开发格式 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-15 12:11:56 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108019447 目录0.外设结构体抽象思路1.模…

ARM(IMX6U)裸机官方SDK包使用

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机C语言LED驱动实验–驱动编写,编译 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-11 11:20:17 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107930284 目录1、I.MX6ULL 官…

Leaflet中添加的不同图层样式图标

如上图&#xff0c;具体问题请查看对应html页引用的basemaps的css样式。 如下图是本项目引用的css样式&#xff1a; .basemap img { width: 48px; border: 2px solid #FFF; margin: 0 2px; /*border-radius: 40px;*/ box-shadow: 0 1px 5px rgba(0,0,0,0.65)} 当css样式中的bor…