树莓派(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;
}
走到这里已经差不多了,通信就解决了。语音模块的话根据自己的语音模块代码进行修改。
树莓派(TCP客户端 )和Wemos(TCP服务端连接红外模块)通讯实现对红外设备的控制相关推荐
- java 串口tcp客户端访问串口tcp服务器_怎么使用无线串口服务器
串口服务器通常用于使具有串口接口的设备通过网络连接到远程计算机.许多工业和消费类设备都配备了RS232/422/485端口.通过使用RS232到以太网之间的转换.您可以从一个中央位置访问和控制远程打印 ...
- 利用声音传感器控制led灯功能_树莓派 LED+蜂鸣+声音传感器+红外模块组合打造声控/红外控制LED...
昨天搞了控制LED,玩了第一个,剩下的就感觉很简单了,这里记录一下 先来几张照片 玩了蜂蜜模块才发现规律,一般这种模块,都会有三个针脚,VCC(3.3V或5V供电输出针脚).GNC(对应GPIO针脚的 ...
- LwIP应用开发笔记之六:LwIP无操作系统TCP客户端
上一篇我们基于LwIP协议栈的RAW API实现了一个TCP服务器的简单应用,接下来一节我们来实现一个TCP客户端的简单应用. 1.TCP简述 TCP(Transmission Control Pro ...
- C# 网络通信调试助手 (内有串口、TCP、UDP、http服务)
C# 网络通信调试助手 (内有串口.TCP.UDP.http服务) 记得先点个关注.点个免费的赞吼,期待后期更多资源对你有帮助 2021-10-02 修改:进群免费下载源码 记得先点个关注.点个免费的 ...
- Geant 4创建TCP客户端,自定义宏命令,输出探测器能量
我在Geant 4软件中主要完成三大功能需求:构建自己所需要的探测器模型:建立TCP客户端:自定义宏命令来输出指定探测器能量沉积. Geant 4中的蒙特卡罗方法是指一个粒子发射出去之后,会和周围的环 ...
- 树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)
参考:树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信) 作者:图触靓 发布时间: 2020-07-26 21:50:39 网址:https://blog.csdn.net/bhbhh ...
- 简易TCP客户端和服务端的实现
文章目录 1 客户端的实现 2 服务端的实现 1 客户端的实现 用Socket API建立简易TCP客户端: 建立一个socket. 连接服务器 connect. 接收服务器信息 recv. 关闭so ...
- qt客户端连接服务器不响应,qt判断tcp客户端是否连接服务器
qt判断tcp客户端是否连接服务器 内容精选 换一换 本章节指导您使用MongoDB客户端,通过弹性云服务器内网方式连接GaussDB(for Mongo)集群实例.操作系统使用场景:弹性云服务器的操 ...
- OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现
1.网络以覆盖范围划分:局域网/城域网/广域网 互联网/因特网 以太网/令牌环网--组网方式 2.在网络中必须能够为一表示每一台主机,才能实现点到点的精确通信 IP地址: ...
最新文章
- 标准c语言怎么绘图,C语言绘图问题
- linux内核配置参考,[转]Linux内核配置选项 参考(3)
- csrf-token
- 奇迹暖暖服务器不稳定,闪耀暖暖用土豆当服务器?开服仅半小时就崩溃,无数玩家疯狂吐槽...
- nacos dataid修改配置文件_nacos 配置中心自动化运维之namespace坑
- 【模板】ISAP最大流
- 马虎的算式子 (枚举法)
- 内网配置DNS服务器,无域名,只有主机名
- CVPR 2021 | 谷歌发布视频全景分割数据集!顺带开发个模型屠榜
- 点餐小程序源码|PHP微信点餐小程序
- windows/linux多系统并存体验
- arm 汇编指令 CPS
- SUM分析函数应用缺陷及解决办法
- 【嵌入式面试】2022年嵌入式经典面试题汇总(C语言)
- flutter CustomPainter 简单绘制 三角形 多边形
- 大规模机器学习在爱奇艺视频分析理解中的实践
- php计算器验证只能为数字,计算器屏幕显示不全怎么修
- vb代码在mysql里运行_请问VB能否在程序运行过程中将变量的值赋给数据库的字段? - VB6论坛 - 编程论坛...
- 航司和机场将如何应用物联网技术?
- wingIDE简单入门
热门文章
- Accusoft结构化工具包FormSuite for Structured Forms常见问题解答(二)
- Linux编程 3 (初识bash shell与man查看手册)
- [BZOJ3992]序列统计
- @MySQL的存储引擎
- Sparse Feature Learning
- opencv图像仿射变换和普通旋转
- X264码率控制流程分析
- HALCON示例程序clip.hdev曲别针方向识别
- OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib
- mysqld:表mysql.plugin不存在_99%测试工程师不知道的数据库知识|干货