ATK-ESP8266实例

    xiaoxiao2021-12-01  35

    在很多基于单片机的项目中,都会使用到无线通信。通过无线向向服务器发送数据,通过无线实现远程控制等等。

    ESP266支撑AP和STA模式。简单的来说就是:

    AP:可以将ESP8266作为热点,可以让其他的设备连接上它。

    STA:可以连接上当前环境下的WIFI热点。

    通常情况下,我们使用ESP8266接入路由器或者电脑热点,将ESP8266配置成TCP 客户端模式,将自己的云服务器或者电脑或者手机等设置成TCP服务端模式,ESP8266将数据发送给服务端,这样就实现了远程通信。

    ESP8266这个模块的实例在网上已经有好多很全面的代码,大家可以在网上找,我这里是把我个人整合的代码贴出来,实现了模块和服务器的连接,同时可以收发数据。

    "common.h"需要额外添加,这个库里有很多wifi模块的函数,需要添加到我们的程序里去。

    在执行wifi_sta_connect()之前,需要初始化usart3,因为单片机与EPS8266之间是串口通信的,我这里用到了串口3。

    #include "common.h" #include "stdlib.h" void wifi_sta_connect(){ u8 *p; while(atk_8266_send_cmd("AT","OK",20))//检查wifi是否在线 { atk_8266_quit_trans();//退出透传 atk_8266_send_cmd("AT+CIPMODE=0","OK",200); //关闭透传模式 delay_ms(800); printf("trying connect"); } atk_8266_send_cmd("AT+CWMODE=1","OK",50); //设置wifi为STA模式 atk_8266_send_cmd("AT+RST","OK",20); //DHCP服务关闭(在AP模式下才有效) delay_ms(1000); //等待重启 delay_ms(1000); delay_ms(1000); delay_ms(1000); atk_8266_send_cmd("AT+CWJAP=\"AAA\",\"12345678\"","WIFI GOT IP",300); //热点:AAA,密码:12345678 atk_8266_send_cmd("AT+CIPMUX=0","OK",20); //0:单连接 1:多连接 while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"***.**.***.***\",8081","OK",200)); //服务器IP:***.**.***.*** 端口号:8081 atk_8266_send_cmd("AT+CIPMODE=1","OK",200); printf("connect success"); atk_8266_quit_trans(); atk_8266_send_cmd("AT+CIPSEND","OK",20); //开始透传,已连接 u3_printf("my name is ESP8266"); LCD_ShowString(60,190,200,16,16,"wifi connect"); }以上代码就可以实现与远程通信了。

    common.h头文件在原子哥提供的源程序里有,自行下载整理就可以了

    虽然8266连接上路由器后,与路由器直接构成了局域网,8266的ip是内网IP,但是依然是可以连接得上公网IP的,只要在服务器端配置端口监听即可。

    转载请注明原文地址: https://ju.6miu.com/read-679471.html

    最新回复(0)