esp8266学习报告

esp8266学习报告

1、认识esp8266

ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。
以下简称为模块
esp8266学习报告_第1张图片

2、wifi

esp8266与其他电子设备处于同一个网络下才能进行通信,故需要让模块连接网络或创建热点

AT指令

  1. 前期准备:对ESP8266进行固件烧录(满足所执行的AT指令)
    esp8266 download tool 下载链接
    esp8266学习报告_第2张图片
    烧录完之后,打开安信可串口调试助手–打开串口,出现乱码并以ready则烧录成功,可以发送AT指令调节工作方式

esp8266学习报告_第3张图片

  1. AT指令集(部分)
    本模块可以工作在三种模式:
    1、STA
    2 、AP
    3 、AP+STA
    每种模式说明
以AP为例
AT+CWMODE=2 //开启 AP 模式
AT+CWSAP=“ESP8266”,“ct_con”,11,0 //设置模块的 wifi 名称和密码,11为通道号,0为加密方式
AT+CIPSERVER=1,8899 //设置模块服务器端
  1. TCP
    在已经配置好的esp8266基础上建立与客户端的通信
    在AP模式下模块提供热点所以须在手机端连接热点,使用网络调试助手,创建TCP服务器并打开端口,连接8266,查看手机ip及端口号esp8266学习报告_第4张图片
  2. 发送指令:
    串口助手

AT+CIPSTART="TCP","手机ip",    //端口号  连接手机端建立的TCP服务器

AT+CIPSEND=0,8                // 进入数据发送模式为8个字节

  //进入发送模式

  ct_con520                  //发送的 8 个数据

手机的网络调试助手esp8266学习报告_第5张图片
自此介绍了一种方式来发送指令实现通信接下来用软件来实现

Arduion

安装ESP8266的Arduino开发环境
使用arduion配置wifi


#include 

char* ssid = "ESP8266";
char* pass = "ct_con";

int status = WL_IDLE_STATUS; 

void setup()
{
  while ( status != WL_CONNECTED) {
    status = WiFi.begin(ssid, pass);   //连接Wi-Fi
    delay(1000);
  }
}

void loop () {
  delay(10000);
}

接收客户端数据

TCP Socket Server

主要处理客户端发来的数据

  1. 设定端口WiFiServer server(8266)
  2. 开始监听server.begin(); 【setup】
  3. 获取一个已连接的 client 【loop】
  4. while(client == true ){ client.read() server.write() } 读数据
#include 
 
const char *ssid     = "esp8266";
const char *password = "ct_con";
const char *host = "192.168.43.102";//修改为Server服务端的IP,即你电脑的IP,确保在同一网络之下。
 
WiFiClient client;
const int tcpPort = 8266;      //端口
 
 
void setup()
{
    Serial.begin(115200);    
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);·
 
    WiFi.begin(ssid, password);//启动
 
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
    }
 
 //几句提示
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}
 
 
void loop()
{
    while (!client.connected())//若未连接到服务端,则客户端进行连接。
    {
        if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true
        {
            Serial.println("connection....");
            delay(500);
 
        }
    }
 
    while (client.available())//available()表示是否可以获取到数据
    {
        char val = client.read();//read()表示从网络中读取数据。
    }
}

小结

至此介绍两种配置WiFi的方式前一种方式操作起来较为简单,但需要下载许多的资源。后一种方式需要写代码,有一定难度,但只是写基础的配置较为简单。以上的资料均可在csdn上查阅。

你可能感兴趣的:(单片机,嵌入式硬件)