当前位置: 首页 > article >正文

WiFi模块ESP8266(超详细)---(含固件库、AP、STA、原子云使用)

写在前面:本节我们学习使用一个常见的模块--WIFI模块,在前面我们学习了蓝牙(HC--08)模块,为学习WIFI模块打下了一定的基础;但是在学习WIFI模块的时候,我也遇到了很多的问题,查阅了很多相关的资料与博客,今天将学习的过程分享给大家,希望大家少走一些弯路,大家有任何问题也欢迎在评论区讨论。

目录

一、WIFI模块介绍

1.1 WIFI介绍

1.2 WIFI模块(ATK-ESP8266)

1.2.1 ATK-ESP-01

1.2.2 ATK-ESP8266  

1.3 AT指令简介 

二、硬件搭建

2.1固件库的烧录

2.2环境搭建

三、实验测试

3.1 AP模式 

3.1.1 ESP8266作为服务器

3.1.2 ESP8266作为客户端

3.2 STA模式 

3.2.1 ESP8266作为服务器

3.2.2 ESP8266作为客户端

3.3 连接原子云服务器

一、WIFI模块介绍

1.1 WIFI介绍

        首先跟大家介绍一下WIFI技术,WIFI网络是一种无线通信网络,也称为:无线宽带,正常的WIFI工作范围在100m的距离,但是收到发射功率大小的影响以及环境的因素,一般情况下的室内定位范围为10m,室外为30m左右,此外,WIFI传输速率也是非常高的可达600Mb/S;        

        WIFI技术是一种使用电信号在无线电波上进行数据传输的技术,通过建立局域网,让各类设备(手机、电脑、平板等)以无线的方式连接,实现设备之间的无线传输。

        以上介绍这些就是偏学术语的定义,大家了解即可,相信每个人对于WIFI并不陌生,而今天我们要做的其实就是,如何利用WIFI模块进行数据的传输

1.2 WIFI模块(ATK-ESP8266)

1.2.1 ATK-ESP-01

            ATK-ESP-01 Wi-Fi 模块是由广州市星翼电子科技有限公司开发的,该模块核心处理器 ESP8266 在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功 耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80MHz 和 160MHz,支持 RTOS, 集成 Wi-Fi MAC/BB/RF/PA/LNA  。

外观尺寸:

         这也就是正点原子的研发的一款基础WIFI模块,但是由于这款模块引脚较多,使用起来不太方便,我们一般都是直接使用的是,由正点原子搭载好的一款UART-WIFI(串口-无线)模块---ATK-ESP8266-串口转WIFI模块

        该模块是正点原子推出的一款高性能 UART-WIFI(串口-无线)模块,其搭载了正点原子公司自主研发的 ATK-ESP-01 模块,也就是说ATK-ESP8266是在ATK-ESP-01 Wi-Fi的基础上,进行了升级,便于用户直接使用。

1.2.2 ATK-ESP8266  

  后面我们就只介绍ATK-ESP8266这一模块,对于核心模块ESP-01感兴趣的朋友可以自行了解。

        我使用的这款ATK-ESP-8266串口转WIFI模块,并非是最新版本的模块 ,大家可以看见上面写的是V1.3版本,现在最新版本应该已经到2.多以上了,然而我使用的时候,是按照新版本的步骤进行设置,这也导致出现了很多问题,所以,大家在使用时,一定一定要看看自己的版本号,一般情况下,新版本的问题能少一点。我也会把我后面的旧版本使用过程中遇到的问题分享给大家。

        该模块的一个引脚及其功能的介绍:

VCC电源3.3-5V
GND电源地
TXD模块串口发送脚TTL电平、可以接单片机的RXD
RXD模块串口接收脚TTL电平、可以接单片机的TXD
RST

复位、低电平有效

TO-0用于固件烧写模式、低电平烧写模式;高电平是运行模式;

        以上的六个引脚,一般工作情况下,是需要连接前四个引脚;即电源引脚与串口引脚;在对该模块进行固件烧录的时候,连接TO-0引脚;

        固件烧录的时候,我在使用原子云时,可能是由于版本的问题,一直连接不上,所以进行了固件烧录,后来就连接上了。我们可以简单的认为固件烧录是对模块进行的一个更新。如果不进行固件烧录,我的旧版本,他工作就一直只能工作在AP模式下,后来固件烧录后,STC模式也就可以使用了。

        是否需要进行固件烧录,取决于你的模块版本,以及他是否能正常的工作;

工作模式: 

        ATK-ESP8266模块共支持3种工作模式:STA、AP、STA+AP

1、STA模式

    在此模式下,模块可连接其他设备提供的无线网络,例如通过 WIFI 连接至路由器,从而可以访问互联网,进而实现手机或电脑通过互联网实现对设备的远程控制。   

        简单来说,此模式下,该模块相当于一个用户,需要链接外部的WIFI(或自己的热点),通过链接的WIFI进行与其他设备的通信;

2、AP 

        AP 模式为默认的模式,在此模式下,模块将作为热点供其他设备连接, 从而让手机或电脑直接与模块进行通讯,实现局域网的无线控制。

        简单来说,此模式下,该模块相当于提供一个热点,创建一个小范围的局域网,凡是连接上的设备就能与其进行通信;

3、STA+AP

        该模式为 STA 模式与 AP 模式共存的一种模式,模块既能连接至其他 设备提供的无线网络,又能作为热点,供其他设备连接,以实现广域网与局域网的无缝切换, 方便操作使用。

1.3 AT指令简介 

        该模块可以使用AT 指令配置模块进行使用,也就是说,通过串口将AT指令传输到ESP8266中去,ESP8266便可以进行工作;包括后面的单片机控制,也是通过AT指令对模块进行作用;

        在使用AT指令时,如果输入AT指令没有反应,检查四点:

1、是否将串口RXD,TXD的线连接反了?

2、是否需要对模块进行固件烧录?

3、是都将AT指令的输出格式有误?

4、UART(串口)波特率与模块是否一致?

        在该模块的使用时,AT指令集很多,我们在此处不进行详细的描述,在后面我们用到哪一个指令,在进行详细的描述,此处只是明白AT指令的概念及作用;

二、硬件搭建

         本机主要做的是模块工作前的一些准备工作,包括固件库的烧录、模块的硬件连线以及需要的设备软件;

2.1固件库的烧录

        在模块进行正常工作前,最好能够进行固件库的烧录,这样能保证模块在使用原子云时没有其他意外问题;

        前面讲过,模块须进入下载模式,才能够进行固件的烧写。下载模式需要的引脚有5个电源VCC、电源地GND、串口引脚RXD、TXD以及IO_0;

1、需要的资料:

链接:https://pan.baidu.com/s/1LaKXs4IOnOg6Prz2GHYGRA 
提取码:1022

主要包括两个文件与一个应用程序:

2、硬件连接 

        在连接过程中,需要一个USB转TTL模块,这里我采用的是32的一个开发板,用51的试了一下,没有成功;需要注意的有:

1、ESP8266的串口引脚与开发板的1出串口进行交叉连接(TXD--RXD)(RXD--TXD),记得将跳线帽拔出;

2、 ESP8266的电源引脚与电源地,分别连接上面2处;RST 引脚可以悬空,需保证 IO_0 需连接至 GND;

3、串口给开发板供电,并通信;

3、进行烧录

        打开 PC 端的“flash_download_tool”软件,随后在弹 出的窗口中,选择“chip Type(芯片类型)”为“ESP8266”、“workMode(工作模式)”为“develop”, 如下图所示:

         配置好模式并进入软件后,选择待烧录固件的 bin 文件,并设置好 bin 文件烧录至芯片 的地址信息和其他的一些信息,即可点击软件左下方的“START”按钮进行固件烧写,如下图所示:

        再强调一遍:注意连线,注意连线,注意连线!!!好多不成功的原因都是连线不正确! 

2.2环境搭建

        在后面模块使用中,我们需要用到以下的硬件与软件;

1、电脑端--串口助手;

2、手机端--网络调试助手;

3、硬件端--USB串口模块、ESP8266模块

串口助手:

链接:https://pan.baidu.com/s/1c4qFxLoi5Z0jWeQSK0ipow 
提取码:1022

我采用是COM-HC串口助手,这个不是唯一,合适的串口调试助手都可以;

网络调试助手 :

我推荐两款,好使用,好下载的软件应用市场就有,但是不唯一;

2.3 硬件连接

        本次我们使用的硬件模块为:USB串口模块、ESP8266模块实现的操作就是通过USB串口向ESP8266模块发送AT指令,然后ESP8266做出回应;

连线图:

注意:此处只需要连4根线,分别为VCC(3.3v) 、GND、以及两条串口线;串口线一定注意连接正确(交叉连接);

三、实验测试

        在进行模式工作前需要检查,指令集能否正常工作,配置串口助手;

        如图所示:1、配置串口端口;波特率:115200(后期可以修改);2、打开串口;3、打开显示;4、输出指令AT(注:AT 指令必须大写,且每条指令都需以回车换行符结尾“\r\n”。) 5、手动发送;发送完后,模块会回应OK;此时表示,串口调试已经完成;

若没有回应,可能出现的原因有:

1、串口是否连接合适?2、波特率是否准确,初始状态默认为195200,后期是否进行了修改?3、串口线是否接反?4、指令是否全英文,是否换行发送?5、是否进行了固件库烧录?

        此外,还需要确定一个东西,在进行 TCP传输时,传输双方分为TCP服务器与TCP客户端如同打电话时,通话双方分为主机与客机,在TCP传输时,客户端为主机,服务器为客机;

3.1 AP模式 

        AP模式相当于提供一个热点,创建一个小范围的局域网,凡是连接上的设备就能与其进行通信;

3.1.1 ESP8266作为服务器

指令集:

AT+CWMODE=2//设置AP模式

AT+RST//重启生效

AT+CWSAP="ATK-MW8266D", "12345678",1,4//设置 AP 参数。SSID 为 ATK-MW8266D、密码为 12345678、 通道为 1、加密方式为 WPA_WPA2_PSK

AT+CIPMUX=1//开启多连接

AT+CIPSERVER=1,8086//开启 SERVER 模式,端口号为 8086

注:AT 指令必须大写,且每条指令都需以回车换行符结尾         

        输入完上述指令后,打开手机WIFI,搜索设置的名称与密码,连接成功,再打开APP--网络调试精灵;打开TCP客户端(因为此时,ESP8266作为服务器),新增TCP客户端,输入对应的主机与端口;

        那如何查询这个端口号与主机呢?端口号就是上述指令中设置的8086,主机号需要指令查找:AT+CIFSR 

+CIFSR:APIP,"192.168.4.1"就是其主机号;

        连接成功后,由手机端向模块发送指令,指令通过串口显示在串口调试助手的窗口;

如果是由模块向电脑发送数据:需要提前发送一条指令;

AT+CIPSEND=0,5//向ID0 发送 5 字节数据包,然后再发送数据:

以上便是,在AP模式下,ESP8266作为服务器双方通信的建立; 

3.1.2 ESP8266作为客户端

指令集:

AT+CWMODE=2//设置为 AP 模式

AT+RST//重启生效

AT+CWSAP="ATK-MW8266D", "12345678",1,4//设置 AP 参数。SSID 为 ATK-MW8266D、密码为 12345678、 通道为 1、加密方式为 WPA_WPA2_PSK

AT+CIPMUX=0//开启单连接

AT+CIPSTART=”TCP”, ”192.168.4.XXX”,8086//建立 TCP 连接到 192.168.4.XXX:8086

AT+CIPMODE=1//开启透传模式(仅单连接 Client 时支持)

AT+CIPSEND//开始发送数据

         其中有一条指令为AT+CIPSTART=此处需要填的是手机端的IP(自动生成)与端口号(端口号自行设置);此时ESP8266作为客户端。它需要主动去连接手机;

3.2 STA模式 

3.2.1 ESP8266作为服务器

STA模式为:该模块相当于一个用户,需要连接外部的WIFI,通过连接的WIFI进行与其他设备的通信;

前提:处于一个拥有WIFI的环境;且模块与手机端连接同一WIFI下;

指令集:

AT+CWMODE=1//设置为 STA 模式

AT+RST//重启生效

AT+CWLJP//查看周围AP(WIFI热点)

AT+CWJAP=”ATK-MW8266D”, ”12345678”//加入 WiFi 热点。SSID:ATK-MW8266D、密码:12345678

AT+CIPMUX=1//开启多连接

AT+CIPSERVER=1,8086//开启 SERVER 模式,端口号为 8086

AT+CIPSEND=0,5//向 ID0 发送 5 字节数据包

其中,主机号依旧是利用:AT+CIFSR 查询;端口号,自己设定; 

AT+CWJAP= 后面的内容即为,要连接的WIFI热点与密码;

此模式,一定要保证模块与手机端连接在同一个WIFI下; 

3.2.2 ESP8266作为客户端

指令集:

AT+CWMODE=2//设置为 AP 模式

AT+RST//重启生效

AT+CWLJP//查看周围AP(WIFI热点)

AT+CWJAP=”ATK-MW8266D”, ”12345678”//加入 WiFi 热点。SSID:ATK-MW8266D、密码:12345678

AT+CIPMUX=0//开启单连接

AT+CIPSTART=”TCP”, ”192.168.4.XXX”,8086//建立 TCP 连接到 192.168.4.XXX:8086

AT+CIPMODE=1//开启透传模式(仅单连接 Client 时支持)

AT+CIPSEND//开始发送数据

其中,主机号依旧是利用:AT+CIFSR 查询;端口号,自己设定; 

AT+CWJAP= 后面的内容即为,要连接的WIFI热点与密码;

AT+CIPSTART=此处需要填的是手机端的IP(自动生成)与端口号(端口号自行设置);此时ESP8266作为客户端。它需要主动去连接手机;

 此模式,一定要保证模块与手机端连接在同一个WIFI下; 

3.3 连接原子云服务器

           原子云即原子云服务器,是正点原子推出的互联网云服务平台,它可以实现数据的远程 监控、转发和管理等功能; 

原子云的网址 https://cloud.alientek.com/创建并登入账号;

         创建好设备后,系统会自动为设备生成编号,这个设备编号就是 模块 使用 AT 指令连接原子云时需要的设备 ID。

         创建好设备后,就能后根据设备的编号和密码并通过 AT 指令操作 ATK-MW8266D 模块 连接原子云了。具体的 AT 指令如下所示:

AT+CWMODE=1//使能 ATK-MW8266D 模块的 STA 模式,以连接路由器的 AP.

AT+CWJAP=”ALIENTEK-YF”,”15902020353”// 连接路由器的 AP,以访问互联网

AT+ATKCLDSTA=”87909047502119387601”,”12345678”//连接原子云服务器

        当串口调试助手显示“CLOUD CONNECTED”后,说明已成功连接上原子云服务器, 此时在原子云的设备管理界面,也能够看到对应的设备显示为“已连接”的连接状态,如下 图所示: 

         当 模块成功连接原子云服务器后,即进入了透传模式,此时就能够在原子云的对应设备的“消息收发”操作界面通过原子云服务器发送消息至 模块,同时,也能后在该界面下,查看到接收自  模块的消息.

以上便是原子云使用的步骤:可能出现的问题有

1、指令是否为英文,且换行;

2、串口线是否接反;

3、是否连接在同一个WIFI下;

4、固件库是否烧录;(版本低的模块需要烧录才有原子云功能);

如果还有别的原因,欢迎大家在评论区讨论;

链接:https://pan.baidu.com/s/1LcfpbMCxnU8m1qZ3xilgFg 
提取码:1022

资料分享,固件库,串口助手,指令使用指南!

 总结:至此,我们将基本的ESP8266的使用详细的介绍完毕了,过程中遇到了各种各样的问题,其中主要的是接线问题,以及固件库的烧录;我们介绍了WIFI模块,硬件的搭建,指令的介绍,各种模式的工作方式及结果;大家一定一定多加练习,有问题及时在网站查找,多交流。后面我们也会讲解如何利用单片机对模块的控制;

创作不易,还请大家多多点赞支持!!!


http://www.kler.cn/a/158593.html

相关文章:

  • 什么是 C++ 中的友元函数和友元类?友元的作用是什么?有什么注意事项?
  • RPA真的是人工智能吗?
  • android 如何获取当前 Activity 的类名和包名
  • 十五届蓝桥杯赛题-c/c++ 大学b组
  • 解决 Spring Boot 中 `Ambiguous mapping. Cannot map ‘xxxController‘ method` 错误
  • c++数字雨实现
  • Koa开发
  • 【算法集训】基础数据结构:一、顺序表(下)
  • jmeter资料
  • SpringBoot_02
  • CoreDNS实战(九)-性能压测
  • vue.js怎么保证计算精度
  • AIGC: 关于ChatGPT中Function Call的调用
  • 2024年口碑比较好的猫罐头有哪些?2024年口碑比较好的猫罐头盘点
  • Python自动化办公:PDF文件的加密与解密
  • 【剑指offer|图解|位运算】训练计划VI+撞色搭配
  • Java的严格计算部分
  • 解决ant-design-vue中Select组件v-model值为空字符串不显示placeholder的bug
  • windows使用YOLOv8训练自己的模型(0基础保姆级教学)
  • 代码随想录二刷 | 栈与队列 | 用队列实现栈
  • 华容道问题求解第一部分_思路即方案设计
  • 掌握反转链表的艺术:LeetCode 206 深入解析与优化 - 双指针与递归方法精讲
  • 关于队列的简单理解
  • JS--异步的日常用法
  • 在vscode下将ipynb文件转成markdown(.md文件)的方法
  • 12.4 C++ 作业