linux 客户端 与wemos通信,控制红外设备

1. wemos 作为设备接入wifi

#include<ESP8266WiFi.h>

char *ssid = "wifi名";   
char *passwd = "wifi密码";

void initWiFiSta()
{
    WiFi.mode(WIFI_STA);      //设置为STA模式
    WiFi.begin(ssid,passwd);   //连接网络
    while(WiFi.status()!=WL_CONNECTED){    //等待连接
          Serial.print(".");
          delay(500);
    }
      
    Serial.println(WiFi.localIP());   //成功连接,通过串口打印wemos的ip地址
}

void setup() {
  
  Serial.begin(9600);     //开启串口,波特率为9600
  initWiFiSta();        //接入WIFI
}

void loop() 
{

}

注意:要使用开发板上的wifi模块需要用到#include<ESP8266WiFi.h>头文件 

2.  架设womos为服务器

int port = 8888; //端口号
WiFiServer server(port); //设置服务器端口号

void setup()
{
	server.begin(); //启动服务器
}

void loop()
{
	char cmd;
	WiFiClient client = server.available(); // 服务器初始化
	while(client.connected()) // 等待客户端连接
	{
		while(client.available()>0)//有数据到来,类似Serial.available()
		{
				cmd = client.read(); //读取数据
		}
	}
}

 3. 红外设备解码

  • 将红外解码模块与TTL模块相连

  • 获取控制红外电器的码 
将遥控器对准红外接收头,按下要解码的按键,即可通过串口调试助查看到解码的结果,结果为“用户码1+用户码2+命令码”三位。

有些红外设备还需要特定的格式,参考自己买的红外设备的资料为准,将红外模块对准红外电器,然后在串口助手中按照特定的格式发回去,看是否有反应

4.编写控制代码

  • 服务器
#include<ESP8266WiFi.h>

//加湿器开/关解码结果:80 7F 02   

unsingned char openOrClose[5]={0xFA,0xF1,0x80,0x7F,0x02};

char *ssid = "wifi名称";   
char *passwd = "wifi密码";

int port = 8888;       //端口号
WiFiServer server(port);    //设置服务器端口号

void initWiFiSta()
{
    WiFi.mode(WIFI_STA);      //设置为STA模式
    WiFi.begin(ssid,passwd);   //连接网络
    while(WiFi.status()!=WL_CONNECTED){       //等待连接
          Serial.print(".");
          delay(500);
    }

    Serial.println(WiFi.localIP());           //成功连接,获取wemos的ip地址
}

void setup() {
  
  Serial.begin(9600);    //打开串口,波特率为9600
  initWiFiSta();        //接入WIFI
  server.begin();       //启动服务器
}

void loop() 
{

  char cmd;
  
  WiFiClient client = server.available(); // 服务器初始化
  while(client.connected()) // 等待客户端连接
  {
    while(client.available()>0)//有数据到来,类似Serial.available()
    {
        cmd = client.read(); //读取数据
        if(cmd=='1'){
             Serial.write(openOrClose,sizeof(openOrClose));  //控制设备开或关
        }
    }
  }
  
}
  •  客户端
#include<stdio.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
# include <string.h>
 
int main(int argc,char** argv)
{
        int c_fd;
        int n_write;
        char writebuf[128]={'\0'};
        struct sockaddr_in c_addr;
 
        if(argc!=3){
                printf("argc no 3\n");
                exit(-1);
        }
 
        c_fd=socket(AF_INET ,SOCK_STREAM,0);
        if(c_fd==-1){
                perror("socket");
        }
 
        c_addr.sin_family=AF_INET;
        c_addr.sin_port=htons(atoi(argv[2]));
        s_addr.sin_addr.s_addr=inet_addr(argv[1]);
 
 
        if(connect(c_fd,(struct sockaddr *)&c_addr,sizeof(struct sockaddr_in))==-1){
                perror("connect");
        }
 
        while(1){
                puts("input");
                scanf("%s",writebuf);
                n_write=write(c_fd,writebuf,strlen(writebuf));
                if(n_write==-1){
                        puts("write failed");
                        exit(-1);
                }
        }
 
        return 0;
}

 5.测试

 客户端成功与wemos 服务端进行通信,并且发送红外编码到串口控制红外电器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值