ATK-ESP8266实例

本文介绍如何使用ESP8266模块在单片机项目中实现远程无线通信。详细展示了配置ESP8266为STA模式,并连接至指定Wi-Fi热点的过程。此外,还提供了与服务器建立TCP连接并进行数据收发的具体代码。

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

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的,只要在服务器端配置端口监听即可。

### ATK-ESP8266与单片机连接方法 #### 硬件准备 为了实现ATK-ESP8266与单片机之间的连接,需准备好如下硬件组件[^2]: - 正点原子ATK-ESP8266 WiFi模块 - 单片机开发板(如STM32系列) - USB转TTL串口线用于编程和调试 - 杜邦线若干根 #### 接线说明 当进行ATK-ESP8266与单片机的连接时,主要关注的是UART接口部分。具体接法如下所示: | ESP8266 Pin | Single Chip Microcomputer Pin | |-----| | VCC | 3.3V电源 | | GND | 地(GND) | | TX | RX | | RX | TX | 特别需要注意的一点是,在正常工作状态下不建议随意拉低IO_0引脚电平,这可能会影响ESP8266的工作模式。 #### 软件配置 完成物理上的连线之后,还需要确保软件层面能够正确初始化并操作ESP8266模块。通常情况下会采用AT指令集来进行基本设置以及Wi-Fi功能调用。下面给出一段简单的Arduino风格伪代码作为参考: ```cpp #include <SoftwareSerial.h> // 定义ESP8266通信所使用的RX/TX管脚编号 #define ESP_RX_PIN D7 #define ESP_TX_PIN D8 // 创建软串口对象实例化 SoftwareSerial esp8266(ESP_RX_PIN, ESP_TX_PIN); void setup() { Serial.begin(9600); // 初始化PC端监控波特率 esp8266.begin(115200); // 设置ESP8266通讯波特率为115200bps delay(1000); sendCommand("AT"); // 测试命令 } void loop() { if (esp8266.available()) { // 如果收到来自ESP的数据,则打印到监视器窗口 String response = esp8266.readString(); Serial.println(response); } } void sendCommand(String command){ esp8266.print(command+"\r\n"); } ``` 此段程序实现了基础的ESP8266模块测试流程,通过向其发送`AT`指令验证两者间能否建立稳定可靠的通信链路。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值