ESP8266系列WIFI模块的使用·

2023-05-16

一、概述

ESP8266是由乐鑫公司出品的一款物联网芯片,因为价格较低,性能稳定等收到很大关注。该芯片可工作于三种种模式下,分别是:AP模式,station模式以及混合模式,通过常用的AT指令进行控制。自芯片面世以来发行过多种型号。单单我用过的就有ESP8266-01,ESP8266-12F,ESP8266-12E这三种。当然,我没接触到过的型号还有很多。在使用这三种芯片时均是使其工作在AP模式下。所以,就拿这三个型号说一下ESP8266在AP模式下的配置吧(AP模式下通信协议为TCP,也就是说AP模式下的ESP8266相当于一个TCP服务器)。

二、ESP8266-01

因为ESP8266-01是比较早的型号,所以也存在诸多不完善的地方。一开始用的时候也走过很多弯路,例如:ESP8266-01型号不支持1200及2400的波特率(网上的资料说是支持的),就因为这个原因就玩坏了三块芯片,将近100人民币就打水漂了(幸亏指导老师还安慰我,学习的过程就是消耗的过程),一开始不知道什么原因,后来才发现是波特率的问题。因为一开始的测试用的普中V3.0的学习版,该板搭载的是12.0Mhz的晶振,而且身边也没有可以换的11.0592Mhz的晶振,没办法才选择了2400的波特率,最终导致三块ESP8266-01坏掉。而且坏掉后上电就出现乱码,这些乱码用“格西烽火串口助手”中的所有波特率都读不出来所以一旦出问题无法修复。另外,该芯片对电压要求出奇的高,标准3.3V,一点小的电压波动都会引起模块工作异常。网上曾有一种说法,“十个不能正常工作的芯片中就有八个是电压问题引起的”。(ESP8266-01的接线图如下)


三、ESP8266-12F

ESP8266-12F相比于ESP8266-01有很多改进。首先12F的flash闪存比较大,另外12F支持机智云的MCU运行。当然,与增加的功能相适应,12F增加了很多IO口,一般是16个。但工作在AP模式下,二者并没有本质区别。但是12F有一个缺点就是需要自己搭建一些简单的外围电路。(接线图如下)

四、ESP8266-01与ESP8266-12F工作在AP模式下的配置命令。

1.基本配置命令:

AT+CIOBAUD=******//修改波特率为********(模块初始波特率默认为115200,该命令通过串口助手发送,重新上电后有效)

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

AT+CWSAP="111","222",11,0//设置wifi名字为111,密码是222,通道号是11,加密方式是OPEN(可以修改)

AT+CIPMUX=1//启动多路连接方式(可以修改)

AT+CIPSERVER=1,5000//开启server,端口号为5000(可以修改)

AT+CIPSEND=0,5//向id为0的链接发送5字节数据(可以修改)

2.单片机控制程序:单片机型号为STC89C52RC,晶振11.0592MHz,波特率为9600(控制程序均为自己编写且测试有效)

#include<reg51.h>


void Serial_Inti();//初始化程序(必须使用,否则无法收发)

void Uart_Sends(unsigned char *str);//发送char型字符串

//void Delay1ms(unsigned int t);//1ms延时函数

unsigned char Uart_Receive();//接收字符子函数

void Uart_Dat(unsigned char dat);//数据发送子函数

void Wifi_Init();//wifi模块初始化

void Uart_Byte(char byte);//字节发送子函数

void Delay1ms(unsigned int t);//t ms延时子函数


/*串口初始化子函数*/

void Serial_Inti()//串口初始化,一定注意不要启动T1的串口中断

{

    TMOD = 0x20;

    SCON = 0x50;

    TH1 = 0xFD;

    TL1 = TH1;

    PCON = 0x00;

ES=0;//关闭串口中断

    TR1 = 1;

}



/*字符串发送子函数(用于配置)*/

void Uart_Sends(unsigned char *str)

{

while(*str!='\0')

{

SBUF=*str;

while(!TI);//等待发送完成信号(TI=1)出现

TI=0;//清除发送中断标志位以继续发送

str++;

}

}



/*WIFI模块初始化*/

void Wifi_Init()

{

Delay1ms(3000);

Serial_Inti();

Uart_Sends("AT+CWMODE=2\r\n");

Delay1ms(2000);

Uart_Sends("AT+CWSAP=\"******\",\"*****\",11,0\r\n");//wifi名称及密码设置

Delay1ms(2000);

Uart_Sends("AT+CIPMUX=1\r\n");

Delay1ms(2000);

Uart_Sends("AT+CIPSERVER=1,5000\r\n");

}



/*字节发送子函数*/

void Uart_Byte(char byte)

{

SBUF=byte;

while(!TI);

TI=0;

}



/*数据发送子函数*/

void Uart_Dat(unsigned char dat)

{

Uart_Sends("AT+CIPSEND=0,1\r\n");

Delay1ms(1000);

Uart_Byte(dat);

Uart_Byte('\r');

Uart_Byte('\n');

Delay1ms(100);//延时100ms防止出现循环发送现象

}



/*指令接收子函数*/

unsigned char Uart_Receive()

{

unsigned char order;

RI=0;//先将接收表示位置0,防止wifi'配置使的返回信息将其置1

while(!RI);//等待接收到信息后跳出循环

order=SBUF;//当RI==1时接收到数据

RI=0;//清除接收中断标志位以继续接收

return order;

}

void Delay1ms(unsigned int t)   //误差 0us

{

    unsigned char a,b,c;

for(t;t>0;t--)

    for(c=1;c>0;c--)

        for(b=142;b>0;b--)

            for(a=2;a>0;a--);

}


五、ESP8266-12E CP2102

刚开始使用ESP8266-12E CP2102时很蒙,因为焊接在CP2102板上之后原来的操作方式就不再适用。经过摸索发现了一个比较合适的而且好用的固件ESP8266_Doit_ser2net(v2.4).bin。所以方向很明确,要给12E刷新固件。首先ESP8266-12E CP2102长这样:

用USB线连接PC,下载工具为flash_download_tool_v1.2_150512.exe,选择ESP8266_Doit_ser2net(v2.4).bin,下载地址为0x00000,按住Falsh键不放,然后按Reset键,使芯片进入下载模式,点击软件上的START开始下载,下载完成后重新上电。(如下图)

下载成功重新上电后就会发现这个固件的好处。连接wifi访问192.168.4.1就会出现以下界面

在该界面可以直接设置芯片的波特率以及AP模式下的配置,省去了麻烦的AT命令。所以,ESP8266-12E CP2102是我目前为止用到的最好用的ESP8266系列模块。

当然,我所涉及到的只是ESP8266的冰山一角,期待以后更加深入的学习!


左肩理想,右肩担当。君子不怨永远不会停下脚步!



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP8266系列WIFI模块的使用· 的相关文章

  • 为什么我在 Android 上无法检测到带有 unicode 字符的 wifi SSID?

    我有一个 Wi Fi AP 其 SSID 是一串 unicode 字符 例如 我希望 Android 设备连接到它 当我的设备 Nexus One 检测到热点时 SSID 看起来像这样 并且无法识别它 知道如何解决这个问题吗 802 11数
  • 手机在捕获 Wi-Fi 探测请求时不会发送所有存储的 ssid

    我使用 scapy 构建了一个脚本来捕获 monitornig wi fi 接口中的探测请求 我成功捕获了请求以及其中包含的一些 SSID 但手机中存储的大多数网络都不会被广播 对于为什么会发生这种情况 还没有一个明确的模式 有些手机根本不
  • ESP8266 在简单的 http 请求后崩溃

    我正在使用 NodeMCU V3 模块 每当我尝试向服务器发出 http 请求时 模块就会崩溃 这是代码 void setup WiFi begin wifi name wifi password while WiFi status WL
  • Wi-Fi Direct UWP 超时(HRESULT 异常:0x800705B4)

    我正在使用 UWP API 启动 Wi Fi Direct 接入点服务 开始正常 我在用着WiFiDirectConnectionListener使用以下命令监视连接到接入点的设备ConnectionRequested事件 var conn
  • 如何在 python 中连接/断开/配置无线网络?

    我正在寻找是否有一种方法可以在 python 中连接或断开无线网络 最好是一种在我提供密码的情况下适用于公共网络和安全网络的方法 如果我可以配置有关无线的选项 那将是一个额外的好处 例如 查看范围内的所有网络 查看有关范围内的网络的信息 例
  • Wifi 睡眠,即使有锁

    总结 即使获取了wifi锁 当手机使用电池运行时 wifi也会在一段时间后断开 我已将问题简化为带有启动线程的按钮的单个活动 它只是向 PC 上运行的回显服务器发送 100 000 个字符串 每 100 毫秒一个字符串 请参阅下面的代码 我
  • 我可以枚举可用的 WLAN 吗?

    我想获取我周围可用的 WLAN 的信息 例如 SSID 这可能吗 Edit 可能是 通过市场认证 的意思 不 这在当前的 API 集中不可用 而且我认为 Mango 集中也没有提到它
  • 以编程方式连接到 Android wifi 网络

    我正在尝试连接到选定的 wifi 网络 从 UI 但无法连接到它 这是我的代码 private boolean addNetworkAndActivate ScanResult scanResult String password Wifi
  • 对 NEHotspotHelper.register 的调用永远不会返回

    我正在开发一个 iOS 应用程序 它需要自动连接到 WiFi 网络 我们已向 Apple 请求 NEHotspotHelper 扩展 该扩展已获得批准 现在我正在尝试自动连接到周围的WiFi网络 但是调用方法NEHotspotHelper
  • 通过 Wi-Fi 扫描 MFI 产品

    在 iOS 8 中 Apple 允许我们通过 Wifi direct 连接到设备并与其共享 WiFi 网络凭据 我们可以在 wifi 设置页面中执行此操作 也可以在应用程序中执行此操作 我正在尝试启动扫描来查找 wifi MFI 设备 我可
  • 如何通过已知路由器上的三角测量来确定我的位置?

    有没有可用的开源软件 基本上 我只想根据位置固定且已知的路由器的信号强度进行三角测量 我意识到可能存在干扰的情况 但我们还是坚持列出已知的源代码 谢谢 我不知道任何三边测量软件 有人应该编写一个开源库 看看三边测量 http en wiki
  • 如何在 .net 中获取可用的 wifi AP 及其信号强度?

    有没有办法使用 NET 访问所有 WiFi 接入点及其各自的 RSSI 值 如果我可以在不使用非托管代码的情况下完成它 那就太好了 或者如果它可以在 Mono 和 NET 中工作 那就更好了 如果可能的话 我将不胜感激代码示例 谢谢 以下是
  • 如何捕获无线路由器的原始信号?

    我现在看到了几个项目 它们从典型无线路由器收集的无线电数据中获取新颖的空间信息 http wisee cs washington edu http wisee cs washington edu http www extremetech c
  • Android wifimanager总是返回true

    这简直要了我的命 任何帮助将不胜感激 我想使用 wifi 管理器连接到开放网络 我遇到的问题是该代码声称连接到任何网络 甚至是不存在的网络 下面是执行并使用网络 SSID 调用的完整代码 无论您传递给它什么字符串作为网络的 SSID 即使不
  • 多久轮询一次 wifi 信号强度?

    理想情况下 我希望近乎实时地监控无线网络的信号强度 比如每 100 毫秒一次 但如此高的频率可能有点过大了 我正在使用托管无线网络 http managedwifi codeplex com 库轮询 RSSI 我实例化一个WlanClien
  • 使用 SPIFFS 加载文件时出现问题 (ERR_CONTENT_LENGTH_MISMATCH)

    好吧 这两天我一直在研究这个问题 但我仍然觉得我一无所获 我最近开始使用SPIFFS 文件系统 for Arduino开发于呼扎 ESP8266像FSBrowser ino例如 虽然它在分离代码方面非常出色 但随着我的代码不断增长 它在稳定
  • 如何在没有互联网的情况下通过 wifi 提供网站服务?

    我想通过开放的 wifi 连接提供网站服务 但我不希望此 wifi 连接能够访问互联网 这是否可能以及我将如何去做 我已经在本地设置了网站 并通过本地主机或 IP 地址在浏览器中进行了访问 但我不确定如何设置网络服务器并通过 wifi 为网
  • 检测wifi是否启用(无论是否连接)

    对于 GPS 跟踪应用程序来说 在打开 WIFI 的情况下记录位置信号会导致数据非常不精确或存在间隙 在开始跟踪之前 我已使用可达性查询来检测 wifi 是否可用 问题是 如果进行该查询时 wifi 已启用但未连接到网络 则表明无法通过 w
  • 如何打开实际上已关闭的 Wifi 适配器的无线电?

    我在用着托管无线网络 http managedwifi codeplex com获取我的 Wifi 适配器的无线电状态 如果收音机实际上已关闭 如何将其打开 像这样的东西 WlanClient wlanClient new WlanClie
  • 如何从 iOS 应用程序检测不安全的 wifi 网络

    我想检测我的应用程序中是否存在不安全的 wifi 网络 是否有任何公共 iOS API 可以实现相同的目的 没有记录的 API 可以获取该信息 如果您的应用程序需要通过网络发送和接收敏感数据 您通常应该假设没有安全连接

随机推荐

  • 【CentOS7 Samba服务器配置】

    第四章 Samba服务器配置 文章目录 第四章 Samba服务器配置前言一 Samba是什么 xff1f 二 使用步骤1 安装软件包2 配置Samba服务器3 创建文件夹4 添加 Samba 用户5 开启服务6 测试 总结 前言 本章学习S
  • ArgumentError: Could not parse rfc1738 URL from string

    使用flask sqlacodegen遇到如上问题时 xff0c 引号要用双引号 xff0c 并且要mysql xff08 如果你使用的是其他的数据库这里应该填你使用的数据库 xff09 注意 注意 注意要加上数据库驱动 xff0c 向下面
  • 多任务学习为什么有效?

    前言 多任务学习 xff08 Multi task Learning MTL xff09 在机器学习领域应用广泛 xff0c 比如自然语言处理和计算机视觉等领域 xff0c 这也侧面反映了 MTL 的有效性 本文将从 MTL 的概念 使用动
  • 简单绕过chrome(谷歌游览器) 查看已保存的密码

    利用场景 xff1a 同事或朋友外出有事 xff0c 电脑未锁屏离开座位 可以利用这一间隙 xff0c 查看Ta在Chrome浏览器上保存的账号密码 查看逻辑 xff1a 当我们要查看Chrome浏览器上保存的密码时 xff0c 点击显示
  • 根据数据库表生成 model 类

    根据数据库表生成 model 类 创建一个Django项目 code django admin startproject xxxx code 修改setting文件 xff0c 在setting里面设置你要连接的数据库类型和连接名称 xff
  • STM32基础(4)使用SysTick滴答定时器实验精准延时

    原理 SysTick 定时器也叫 SysTick 滴答定时器 xff0c 它是 Cortex M3 内核的一个外设 xff0c 被嵌入在 NVIC 中 它是一个 24 位向下递减的定时器 xff0c 每计数一次所需时间为 1 SYSTICK
  • 在px4,gazebo环境中添加激光雷达,双目相机和下视摄像头

    在搭建好px4的仿真环境后 xff0c gazebo中仅为一架裸机 xff0c 不含其他传感器 本文将在该环境下把激光雷达 xff0c 双目相机 xff0c 下视摄像头集成到飞机上 xff0c 方便后续的算法测试 修改仿真启动文件 找到 F
  • Oauth2.0的四种模式

    1 授权码模式 xff08 1 xff09 资源拥有者打开客户端 xff0c 客户端要求资源拥有者给予授权 xff0c 它将浏览器被重定向到授权服务器 xff0c 重定向时会 附加客户端的身份信息 如 xff1a uaa oauth aut
  • nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

    输入nvidia smi显示 NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver 但是torch cuda is available 还能
  • RunnerGo开源版的安装教程(Windows)

    文章目录 一 启动Hyper V服务二 安装docker三 准备 docker 和 docker compose 环境四 cd runnergo 进入到目录五 配置文件 config env 修改 默认基本可以不用改六 修改应用暴露的端口号
  • Docker Desktop requires a newer WSL kernel version.

    问题描述 xff1a Docker Desktop requires a newer WSL kernel version 问题截图 xff1a 问题原因 xff1a WSL不是最新版 解决方案 xff1a 适用于 Linux 的 Wind
  • 傅里叶变换(一)——认识傅里叶变换

    注 xff1a 本文为博主参考书籍和他人文章并加上自己的理解所编 xff0c 作为学习笔记使用并将其分享出去供大家学习 若涉及到引用您的文章内容请评论区告知 xff01 如有错误欢迎指正 xff01 参考文章 xff1a https zhu
  • 解决笔记本装linux后触摸板无法用的问题

    困扰好久 xff0c 好像没多少人遇到类似的问题 xff1f 仅把我的解决办法分享出来提供一个思路 那就是 把内核版本升级到4 17以上 至于更换内核教程 xff0c 参考这里安装和使用新的内核 要比教程里多下载一个 linux modul
  • 快速幂和矩阵快速幂

    快速幂 快速幂是数论中最简单的几种算法之一 xff0c 顾名思义 xff0c 就是快速计算某个数的多少次幂 相较于传统循环pow的计算方法 xff0c 快速幂的复杂度为 O l o g 2
  • ucosii中消息队列、消息邮箱、信号量的区别

    1 用信号量进行行为同步时 xff0c 只能提供同步的时刻信息 xff0c 不能提供内容信息 若被控制方要求得到控制方的内容信息时 xff0c 可以使用消息邮箱或消息队列 2 但由于消息邮箱里只能存放一条消息 xff0c 所以使用消息邮箱进
  • 项目时间管理的几种方法

    随着项目活动分解的深入和细化 xff0c 工作分解结构 WBS 可能会需要修改 xff0c 这也会影响项目的其他部分 例如成本估算 xff0c 在更详尽地考虑了活动后 xff0c 成本可能会有所增加 xff0c 因此完成活动定义后 xff0
  • 【内网学习笔记】25、Exchange 邮件服务器

    1 Exchange 的基本操作 在 Exchange 服务器上的 PowerShell 里进行以下操作 将 Exchange 管理单元添加到当前会话中 add pssnapin microsoft exchange 查看邮件数据库 Get
  • cuda.tensor转为numpy, 以及numpy与tensor互相转换

    1 cuda tensor转为numpy 解决 TypeError can 39 t convert cuda 0 device type tensor to numpy Use Tensor cpu to copy the tensor
  • [软件工程]第三章 结构化方法————(2020.6.11学习笔记)

    目录 1 xff0c 第一节 结构化需求分析 2 xff0c 第二节 结构化设计 第一节 结构化需求分析 需求分析面临的挑战 xff08 1 xff09 问题空间理解 xff08 2 xff09 人与人之间的通信 xff0c 有效沟通 xf
  • ESP8266系列WIFI模块的使用·

    一 概述 ESP8266是由乐鑫公司出品的一款物联网芯片 xff0c 因为价格较低 xff0c 性能稳定等收到很大关注 该芯片可工作于三种种模式下 xff0c 分别是 xff1a AP模式 xff0c station模式以及混合模式 xff