ESP8266及AT指令学习笔记

本文介绍了ESP8266 WiFi模块的基本特性,包括其尺寸、工作温度范围和功能。重点讲解了ESP8266的三种工作模式:AP、STA和AP混合STA模式,并详细阐述了如何在STA模式下配置和使用AT指令进行连接、多路连接以及数据发送。此外,还提到了模块的接线方式。
摘要由CSDN通过智能技术生成

一、ESP8266实物图(01s)

ESP8266 尺寸为5x5 mm,ESP8266 模组需要的外围器件有:10个电阻电容电感、1个无源晶振、1个flash。工作温度范围:-40~125℃。ESP8266 是一个完整且自成体系的 WiFi 网络解决方案,能够独立运行,也可以作为 slave 搭载于其他 Host 运行。
ESP8266 在搭载应用并作为设备中唯一的应用处理器时,能够直接从外接闪存中启动。内置的高速缓冲存储器有利于提高系统性能,并减少内存需求。另外一种情况是,无线上网接入承担 WiFi 适配器的任务时,可以将其添加到任何基于微控制器的设计中,连接简单易行,只需通过 SPI/SDIO 接口或中央处理器 AHB 桥接口即可。ESP8266 强大的片上处理和存储能力,使其可通过 GPIO 口集成传感器及其他应用的特定设备,实现了最低前期的开发和运行中最少地占用系统资源。
在这里插入图片描述

二、ESP8266接线图

只接4根线即可进行使用。
在这里插入图片描述

三、WiFi配置模式

AP模式

AP是 Access Point的简称,提供无线接入服务,提供数据访问,允许其它无线终端接入,简单来说就是和路由器在多数情况下的工作模式相同,能让手机接入。在ESP8266中这种模式主要用于动态修改接入点信息。
一些用ESP8266制作的WIFI广告播放器就是工作在这种模式下的。

STA模式

STA是Station的简称,类似于无线终端,STA本身并不接受无线的接入,它可以连接到AP,简单来说就是和手机连接WIFI热点的工作状态相同,可以连接其它的热点。
  ESP8266工作在STA模式下有一下几个特点,开发的时候需要记住:
  1. 在连接丢失的情况下,一旦WiFi再次可用,ESP8266将自动重新连接到接入点(热点)。
  2. 模块重启后ESP8266将使用最后一次保存到Flash存储器中的接入点认证信息(ssid,password是加密保存)连接到接入点。
  3. 如果仅仅是修改了和WIFI模式不相干的代码,ESP8266仍然使用保存到Flash存储器上的认证信息。

AP混合STA模式

了解了前两个概念,AP混合STA模式就不难理解了,就是既可以连接到其它的WIFI热点,也可以让别的无线终端连接,这两个过程能同时进行。

四、AT指令

STA模式(配置为客户端)

(1) 测试模块
指令:AT
响应:OK
(2) 设置模块
指令:AT+CWMODE=< mode>
响应:OK
说明:< mode>:1-Station模式,2-AP模式,3-AP兼Station模式
(3) 加入当前无线网络
指令:AT+ CWJAP=”MERSAIN”,”XXXXXXXX”(设置指令)
响应:OK
(4)开启多连接模式
指令:AT+CIPMUX=< mode >
响应:OK
说明:< mode >:0-单路连接模式,1-多路连接模式
(5)建立 TCP 连接
指令: AT+CIPSTART=2,“TCP”,“192.168.1.109”,8080 (设置指令)
响应: OK/ ERROR
(4)向服务器发送数据
指令: AT+CIPSEND=2,10(设置指令) (通过上一条指令 AT+CIPSTART 设置为 ID=2)
响应:SEND OK
1)单路连接时(+CIPMUX=0),指令为:AT+CIPSEND=< length >
2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= < id >,< length >

五、代码

main.c
printf ( "\r\n ESP8266 ......\r\n" );

	ESP8266_AT_Test ();
	ESP8266_Net_Mode_Choose ( STA );//STA工作模式
  while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) );	//加入当前无线网络
	ESP8266_Enable_MultipleId ( DISABLE);//开启多连接
	while ( !	ESP8266_Link_Server ( enumTCP, macUser_ESP8266_TcpServer_IP, macUser_ESP8266_TcpServer_Port, Single_ID_0 ) );//连接服务器
	Delay_ms(1000);
	while ( ! ESP8266_UnvarnishSend () ); //透传模式
	
	printf ( "\r\n  end\r\n" );

........
........

 while(1)
 {
   
		DHT11_Read_Data(&temp,&humi);//
   	AD_value  = ADC_ConvertedValue;	  
    val=AD_value/200;
    vall=val*4;
		printf("temp %d℃,humi %d%RH,hei %dmm\r\n",temp,humi, vall);
	  sprintf ( cStr,"temp %d℃,humi %d%RH,hei %dmm\r\n",temp,humi, vall);
	  ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 );   
		Delay_ms(1000);	 
  }
esp8266.c
#include "bsp_esp8266.h"
#include "common.h"
#include <stdio.h>  
#include <string.h>  
#include <stdbool.h>
#include "delay.h"


static void                   ESP8266_USART_Config                ( void );
static void                   ESP8266_USART_NVIC_Configuration    ( void );

struct  STRUCT_USARTx_Fram strEsp8266_Fram_Record = {
    0 };



/**
  * @brief  ESP8266初始化函数
  * @param  无
  * @retval 无
  */
void ESP8266_Init ( void )
{
   	
	ESP8266_USART_Config (); 
	
}
/**
  * @brief  初始化ESP8266用到的 USART
  * @param  无
  * @retval 无
  */
static void ESP8266_USART_Config ( void )
{
   
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	
	
	/* config USART clock */
	macESP8266_USART_APBxClock_FUN ( macESP8266_USART_CLK, ENABLE );
	macESP8266_USART_GPIO_APBxClock_FUN ( macESP8266_USART_GPIO_CLK, ENABLE );
	
	/* USART GPIO config */
	/* Configure USART Tx as alternate function push-pull */
	GPIO_InitStructure.GPIO_Pin =  macESP8266_USART_TX_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(macESP8266_USART_TX_PORT, &GPIO_InitStructure);  
  
	/* Configure USART Rx as input floating */
	GPIO_InitStructure.GPIO_Pin = macESP8266_USART_RX_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(macESP8266_USART_RX_PORT, &GPIO_InitStructure);
	
	/* USART1 mode config */
	USART_InitStructure.USART_BaudRate = macESP8266_USART_BAUD_RATE;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStru
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值