ESP8266,电脑作为TCP SERVER,8266发数据给电脑

正确打开ESP8266—与本机电脑建立连接并互发消息

1.确认ESP8266正常上电

2.使ESP8266进入AT模式

波特率:115200;数据位8位,1位停止位,无奇偶校正,无数据流控制。

3. AT

4. AT+RST

重启ESP8266,进行一次复位操作,初始化相关寄存器;

5. AT+CWMODE=3

设置wifi模式,设置为AP/STA并存模式,两种模式都能用。

6. AT+RST

使AT+CWMODE=3指令生效,将WIFI设置为AP/STA模式;

7. AT+CWLAP

基本有密码的都是,第二项为WIFI名称,观察里面是否有你自己使用的路由器名称。

8. AT+CWJAP=”路由/WIFI名字”,”路由/WIFI密码”

接下来,选择使用TCP,步骤如下:

(1)设置电脑为TCP服务器;

一般调试建议使用网络调试助手。

协议类型,IP以,端口号

IP为网络助手自动读取本机IP,无需更改,也一定不要更改,端口号为8080,

协议类型选择TCP Sever

TCP Server(与TCP Client的区别简单说就是如果本机作为服务器,那ESP8266则为TCP Client,反之亦然。)

点击网络调试助手中的连接按钮后,电脑就形成了一个TCP服务器。

这里注意,笔者用笔记本电脑设置的时候,最开始,一直 AT+CIPSTART命令ERROR ,抓破了头,最后发现,默认网络调试助手获取的ip是另一个网络适配器的ip,而不是无线网(wifi)的适配器的ip,ESP8266死活连不上tcp server。把ip地址改为wifi的适配器对应的ip后,就成功连上了。

(2)ESP8266与服务器进行连接;

步骤1已经建立好了TCP服务器,此时ESP8266可以进行连接,以下均为AT指令:

AT+CIPSTART="TCP","192.168.1.125",8080

以TCP方式与TCP Sever的8080端口进行连接。

正确连接会反馈CONNECT已连接信息,同时网络调试助手端会显示连接设备IP以及端口;

其中192.168.1.206则为ESP8266的IP,16244为端口号。

(3)两者建立对话;

AT+CIPSEND=6

6为字符数,当ESP8266检测到>符号之后存在>=6个字符后进行数据发送,若等于6个,则全部发送,若大于6个,则只发送6个,6变成7,8,9也是按照这个规律。

ESP8266发送"HELLO!"

也可以用网络助手向ESP8266进行发送数据,在ESP8266端可看到接收消息,格式为+IPD,后面接着为接收的数据量以及数据,到这里,两者就进行了互通。

转载并节选自:

正确打开ESP8266—与本机电脑建立连接并互发消息 - 云+社区 - 腾讯云 (tencent.com)

https://cloud.tencent.com/developer/news/80279

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,需要连接esp8266模块到单片机。可以采用串口通信的方式,将单片机的串口连接到esp8266的串口。然后,需要编写单片机的程序,实现以下功能: 1. 初始化esp8266模块,设置为工作模式。 2. 连接到指定的Wi-Fi网络。 3. 连接到指定的TCP服务器,并送请求数据。 4. 接收数据,并将数据显示在LCD1602上。 以下是一个简单的示例程序,供参考: ```c #include <reg52.h> #include <stdio.h> #include <string.h> sbit RS=P2^0; //LCD1602控制引脚定义 sbit RW=P2^1; sbit EN=P2^2; #define LCD1602_DATAPINS P0 //LCD1602数据引脚定义 void delay_ms(unsigned int ms) //延时函数 { unsigned int i, j; for(i=0; i<ms; i++) for(j=0; j<120; j++); } void LCD1602_Write_Command(unsigned char command) //写命令函数 { RS=0; RW=0; LCD1602_DATAPINS=command; EN=1; delay_ms(5); EN=0; } void LCD1602_Write_Data(unsigned char dat) //写数据函数 { RS=1; RW=0; LCD1602_DATAPINS=dat; EN=1; delay_ms(5); EN=0; } void LCD1602_Init(void) //LCD1602初始化函数 { LCD1602_Write_Command(0x38); LCD1602_Write_Command(0x0c); LCD1602_Write_Command(0x06); LCD1602_Write_Command(0x01); } void LCD1602_Display_String(unsigned char row, unsigned char col, unsigned char *str) //LCD1602显示字符串函数 { unsigned char addr; if(row==0) addr=0x80+col; else addr=0x80+0x40+col; LCD1602_Write_Command(addr); while(*str) { LCD1602_Write_Data(*str); str++; } } void ESP8266_Init(void) //ESP8266初始化函数 { SCON=0x50; //8位数据,无校验,1位停止位 TMOD=0x20; //定时器1工作模式2 TH1=0xfd; //波特率设置为9600 TL1=0xfd; TR1=1; //启动定时器1 ES=1; //允许接收中断 EA=1; //打开总中断 } void ESP8266_Send_Command(char *command) //ESP8266送命令函数 { while(*command) { SBUF=*command; while(!TI); //等待送完成 TI=0; command++; } } void ESP8266_Send_Data(char *data) //ESP8266数据函数 { char buf[32]; sprintf(buf, "AT+CIPSEND=%d\r\n", strlen(data)); ESP8266_Send_Command(buf); delay_ms(500); ESP8266_Send_Command(data); delay_ms(500); } char ESP8266_Receive_Data(void) //ESP8266接收数据函数 { if(RI) { RI=0; return SBUF; } return 0; } void ESP8266_Connect_WiFi(char *ssid, char *password) //ESP8266连接WiFi函数 { char buf[64]; sprintf(buf, "AT+CWJAP=\"%s\",\"%s\"\r\n", ssid, password); ESP8266_Send_Command(buf); delay_ms(5000); } void ESP8266_Connect_TCP(char *ip, int port) //ESP8266连接TCP函数 { char buf[64]; sprintf(buf, "AT+CIPSTART=\"TCP\",\"%s\",%d\r\n", ip, port); ESP8266_Send_Command(buf); delay_ms(5000); } void main() { char ssid[]="your_wifi_ssid"; char password[]="your_wifi_password"; char ip[]="server_ip_address"; int port=1234; char data[32]; LCD1602_Init(); ESP8266_Init(); ESP8266_Connect_WiFi(ssid, password); ESP8266_Connect_TCP(ip, port); while(1) { if(ESP8266_Receive_Data()==':') //接收到数据开始标志 { int i=0; while(1) { char c=ESP8266_Receive_Data(); if(c=='\r') //接收到结束符 break; data[i++]=c; } data[i]='\0'; LCD1602_Display_String(0, 0, data); } } } ``` 需要注意的是,以上程序仅供参考,实际应用中可能需要根据具体情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值