欢迎光临
我们一直在努力

ESP8266模块,连接云服务器实现数据传输

物件:

ESP8266EX 模块

USB-TTL

软件:

串口工具

网络调试助手

云服务器

第一步:连线

USB-TTL 与wifi模块连线

ESP8266模块,连接云服务器实现数据传输

USB-TTL ESP 8266模块
3.3V VCC
GND GND
RX UTXD
TX URXD
3.3V CH_PD

第二步:设置wifi模块

设置端口号,设置波特率(如之前没修改过,默认为115200),打开串口后

1、发送 :AT (注意后面有回车)

返回:OK

ESP8266模块,连接云服务器实现数据传输

2、设置wifi模式

发送: AT+CWMODE=3 (1-Station模式,2-AP模式,3-AP兼Station模式。重启后生效)

3、发送: AT+RST

4、配置AP参数 ssid 和password (注意wifi密码不要错误)
发送 :AT+CWJAP="SSID","PASSWORD"

返回:OK

连接完成后,可以通过 AT+CIFSR 指令查询IP

5、连接网络助手创建的 TCP 服务器

首选查看本地IP地址 win+r ,打开cmd ,输入ipconfig 即可查看

根据本地的ipv4 的地址创建

ESP8266模块,连接云服务器实现数据传输

ESP8266模块,连接云服务器实现数据传输

6、连接服务器
发送:AT+CIPSTART="TCP","192.168.1.2",1234

返回:CONNECT

OK

7、发送消息

发送: AT+CIPSEND=4 (4代表的是发送多少个字符)

> WIFI (看到 > 输入发送的内容即可)

ESP8266模块,连接云服务器实现数据传输

可以在网络调试助手上看到已经接收到对应的数据了

至此,已经可以连接本地服务器传输数据了。

那么怎样连接云服务器实现数据传输呢?

在此,我创建的是socket 服务器,注意在云服务器管理端开通对应的端口号

在linux系统上 创建tcp_server.cpp 文件 ,在本程序中,应用的是 8888端口号

#include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <sys/shm.h> #define PORT 8888 #define QUEUE_SIZE 10 #define BUFFER_SIZE 1024 //传进来的sockfd,就是互相建立好连接之后的socket文件描述符 //通过这个sockfd,可以完成 [服务端]<--->[客户端] 互相收发数据 void strPrintf(int sockfd) { char buffer[BUFFER_SIZE]; pid_t pid = getpid(); while(1) { memset(buffer,0,sizeof(buffer)); int len = recv(sockfd, buffer, sizeof(buffer),0); if(strcmp(buffer,"exit\n")==0) { printf("child process: %d exited.\n",pid); break; } printf("pid:%d receive:%s\n",pid,buffer); fputs(buffer, stdout); send(sockfd, buffer, len, 0); //将接收到数据发送回去 } close(sockfd); } int main(int argc, char **argv) { //定义IPV4的TCP连接的套接字描述符 int server_sockfd = socket(AF_INET,SOCK_STREAM, 0); //定义sockaddr_in struct sockaddr_in server_sockaddr; server_sockaddr.sin_family = AF_INET; server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); server_sockaddr.sin_port = htons(PORT); //bind成功返回0,出错返回-1 if(bind(server_sockfd,(struct sockaddr *)&amp;server_sockaddr,sizeof(server_sockaddr))==-1) { perror("bind"); exit(1);//1为异常退出 } printf("bind success.\n"); //listen成功返回0,出错返回-1,允许同时帧听的连接数为QUEUE_SIZE if(listen(server_sockfd,QUEUE_SIZE) == -1) { perror("listen"); exit(1); } printf("listen success. The Port is %d \n",PORT); for(;;) { struct sockaddr_in client_addr; socklen_t length = sizeof(client_addr); //进程阻塞在accept上,成功返回非负描述字,出错返回-1 int conn = accept(server_sockfd, (struct sockaddr*)&client_addr,&length); if(conn<0) { perror("connect"); exit(1); } printf("new client accepted.\n"); pid_t childid; if(childid=fork()==0)//子进程 { printf("child process: %d created.\n", getpid()); close(server_sockfd);//在子进程中关闭监听 strPrintf(conn);//处理监听的连接 exit(0); } } printf("closed.\n"); close(server_sockfd); return 0; } 

编译 g++ tcp_server.cpp -o tcp_server

编译无误,可生成 tcp_server 可执行文件 。执行 ./tcp_server

ESP8266模块,连接云服务器实现数据传输

然后在串口助手

发送:AT+CIPSTART="TCP","xxx.xxx.xxx.xxx",8888 其中xxx.xxx.xxx.xxx 为云服务器地址

当串口助手现实CONNECT OK,可以看到云服务器上现实

ESP8266模块,连接云服务器实现数据传输

接着就可以发送数据了

发送 AT+CIPSEND=13

ESP8266模块,连接云服务器实现数据传输

至此,wifi模块就可以实现和云服务器连接了。

如有疑问,可以通过添加微信号 NNN6786789 进行交流学习

或者关注公众号 “404技术实验室” 获取更多内容。

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《ESP8266模块,连接云服务器实现数据传输》
文章链接:https://www.456zj.com/8417.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址