【嵌入式模块】ESP8266完整教程

2023-05-16

前言

  无线通信中除了最为常用的蓝牙之外,剩下的就是WiFi了,但是相比于蓝牙模块一般只用来进行透传,WiFi模块的可自定义程度要更强,而这也导致了WiFi模块的入门相对难了一点。

参考资料

  • WIFI模块的STA模式和AP模式有什么区别 - 百度知道
  • ESP8266的两种开发方式 - 知乎
  • ESP8266 NodeMCU引脚说明 - 简书
  • ESP-01S-ESP8266入门教程 - 博客园
  • esp8266-01s介绍与使用 - CSDN——资源丰富,涵盖广泛
  • ESP8266模块使用完整教程 - CSDN——资源较多,但有点老,也有点深
  • 关于ESP8266自动下载和CH340的几件事 - CSDN
  • ESP8266串口WiFi模块的基本使用和配置教程 - 电子论坛
  • 安信可固件汇总

认识ESP8266

  关于ESP8266的各种资料在网上很杂也很乱,似乎就没有找到一个完整版的入门教程,通过查找各种资料并进行交叉比对,我对ESP8266有了一个整体的认识。

两种状态

  ESP8266为一个WiFi透传模块,和蓝牙透传模块具有主从两种工作模式一样,也具有两种工作模式:STA模式(Station)AP模式(Access Point),一般WiFi模块还会有一个STA+AP模式,即可以在两种模式下切换的状态。
  AP模式下,WiFi模块产生热点,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。该模式对应TCP传输协议中的服务端(TCP Server)
  STA模式下,WiFi模块为连接到无线网络的终端(站点),可以连接到AP,一般无线网卡工作在STA模式下。该模式对应TCP传输协议中的客户端(TCP Client)

  透传,又称透明传输,具体来说就是“输入即输出(如从WiFi模块串口输入的字符会透传到服务器端)”,数据不改变,不同协议之间的转换(如串口到WiFi、蓝牙等)由模块完成。使用者无需关心内部具体实现,因此模块对于使用者是“透明的”、似乎不存在的(因为可无视中间的实现原理)。一个高度封装的模块,应该隐藏内部实现细节,仅对外提供使用接口。

两种开发方式

  ESP8266系列一般都具有两种开发方式,一种为AT指令开发方式,即厂家出厂时预先在ESP8266芯片烧入好固件,封装好WiFi的协议栈,内部已经实现透传,而用户只需要使用一个USB转TTL的模块或者单片机的串口就能实现与WiFi模块的通信,发送AT指令来对WiFi模块进行控制。(和蓝牙透传模块类似)
  另外一种开发方式就是SDK开发,因为ESP8266本身即是可编程的芯片,可以把它视为一个带有无线通信的单片机,而用户需要在专门的IDE中编写对应的程序,然后通过烧写固件的方式将程序写入到芯片中,因此,此时想要实现WiFi通信,需要自定义WiFi协议栈,因此对用户掌握的相关知识要求更高。
  所以,如果发现一个ESP8266模块对AT指令没有反应,那很有可能是内部的程序不是既定的AT固件,而是被烧入了其他程序。

分类

  很多人会遇到这样一种情况:先有器件再去学知识。因此往往会面临器件型号与所学知识不匹配的问题,因此,学习ESP8266,了解其各种型号及其对应的参数显得非常重要。
  在某宝上搜索ESP8266,会发现有很多种型号,包括ESP-01、ESP-01S、DT-06、ESP-12F,如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  其中DT-06一般只使用AT指令开发,而且这个模块可以用电脑连接WiFi产生的热点之后在浏览器中直接配置WiFi模块,省去了麻烦的AT指令,更加便捷。【所以不太需要烧入固件】
  ESP-01S和ESP-01两种型号基本一样,其中ESP-01S表面只有一个LED灯,ESP-01表面有两个LED灯,且ESP-01S优化了内部电阻。参考链接
  最让我纠结的是第三种——ESP-12F,因为淘宝上面有两种非常类似的板子,一种是使用CP2102作为USB转TTL,体现为上面那个芯片为四方的芯片,而当时我买的那种USB转TTL芯片为CH340C,体现为上面那个芯片为双列的引脚,如下图所示。
在这里插入图片描述
  理论上来说,大家核心芯片一样,只是换了USB转TTL的芯片,那装上驱动应该得是一样的用法才对,但显然不是。我看很多教程上面都说将WiFi模块通过USB线直接连接到电脑即可,但是我的这个【新的板子】插上电脑会提示音,但马上就没了,设备管理器找不到串口,而且经过测试发现,当按下RST按键时,电脑能够识别,一松手又不行了。问题类似于这个链接中描述的一样。
  经过多方查找资料,最终通过一个教程找到了问题所在:带有CP2102的ESP模块直接插上USB线即可烧入程序;而带有CH340的ESP模块直接连接电脑为运行内部程序的模式,如果要进入下载程序的模式,需要上电后按住FLASH按键,然后按一下RST键,即可发现电脑识别出了端口。
  此外,如果在这个板子中烧入AT固件,是没办法通过USB线进行串口通讯来传输AT指令的,必须要用一个USB转TTL的模块连接到其引出来的TX,RX引脚来进行通讯

固件及其刷新方法

  所谓固件,是指ESP-8266芯片内部的程序,如果要运行AT指令,则要在ESP8266中烧入固定的固件,这个一般是来自厂家官网,比如乐鑫。

硬件方面

  如果要对ESP8266烧入固件/程序,可以使用较为普遍的USB转TTL模块,也可以去买一个专门的下载器,如下图所示:
请添加图片描述
  这个下载器主要使用于ESP-01S,连接方式如下图所示:

请添加图片描述
  相比于使用杜邦线连接USB转TTL模块更加简便,而且这个下载器也兼具USB转TTL的功能,在下载完程序之后按一下上面的按键即可与WiFi进行串口通信。一物两用。

  那如果手边只有USB转TTL模块怎么办呢?也只是麻烦一点。一样可以烧入固件,但需要注意两点:

  • 最好使用外部电源,如AMS1117产生的3.3V,因为据说USB转TTL的电源不够稳定,而ESP-8266就需要非常稳定的电源。
  • 接线不能只接4根线(RX,TX,VCC,GND),其他的三根线也要接(GPIO_0、GPIO_2、EN)

具体操作方法可以参考这个文字教程或者这个视频教程。

软件方面

  对于软件,比较常用的有两个:FLASH_DOWNLOAD_TOOLSArduino IDE

  • FLASH_DOWNLOAD_TOOLS
    这个软件主要是用于向ESP8266芯片中写入bin文件。首先打开这个软件,会弹出一个黑框以及一个选择界面,不用管黑框,直接选择ESP8266,如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    需要注意,如果FLASH SIZE选择了8M,那么烧入的固件也必须选择8M的。此外,点击START之后,当绿色方框内显示Finish时,表明固件烧入完毕。
  • Arduino IDE
    上文提到,ESP8266本身也可以视为一个单片机,因此其内部的程序也可以自定义编写,而IDE就可以选择Arduino IDE,但使用前需要简单配置一下。具体方法如下:
  1. 打开文件->首选项,在附加开发板管理器网址中粘贴这个地址:http://arduino.esp8266.com/stable/package_esp8266com_index.json,如下图所示。
    在这里插入图片描述
  2. 然后点开工具->开发板->开发板管理器
    在这里插入图片描述
  3. 等下面的进度条加载完毕后在搜索框中输入ESP8266。即可得到一个唯一的选项,安装即可。在这里插入图片描述
    注意:如果显示下载失败可以考虑翻墙,因为下载地址为Github。
  4. 安装完毕后再次点击工具->开发板,可以发现多了一个ESP8266板子。
    在这里插入图片描述
  5. 在给ESP-12F烧入程序时,一般可以直接选择第一个,或者NodeMCU 0.9,而给ESP-01S烧入程序时,一般就是选择第一个就行。
    在这里插入图片描述

AT指令开发方式

  烧入AT固件之后,接下来就是使用AT指令来控制WiFi模块了,这里的所有AT指令都需要加上回车换行
  另外就是,由于AT指令依赖于烧入的AT固件,因此建议找到对应型号的WiFi模块的说明书,参考上面列出的AT指令。
  本文不再赘述。

SDK开发方式

  一般来说,说到SDK开发,大都是使用ESP-12F,因为它所有引脚都引出了,这样可自定义程度更高。

  • ESP8266开发专栏 - CSDN
  • ESP-12F开发教程_太极创客 - BiliBili
  • Lua Loader开发资料汇总
  • Lua Loader下载

补充教程

  • 【嵌入式模块】再探ESP8266,保姆级教程
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【嵌入式模块】ESP8266完整教程 的相关文章

  • TensorFlow中numpy与tensor数据相互转化

    numpy与tensor数据相互转化 xff1a Numpy2Tensor 虽然TensorFlow网络在输入Numpy数据时会自动转换为Tensor来处理 xff0c 但是我们自己也可以去显式的转换 xff1a data tensor 6
  • ESP32环境搭建 HomeKit 平台搭建 苹果智能家居HomeKit

    本文所有操作环境在linux下 xff0c 参考README文档 xff0c 官方sdk获取连接 https github com espressif esp apple homekit adk HomeKit是Apple开发的框架 xff
  • 乐鑫代码中Ring Buffers (环形缓冲区)说明

    本文翻译自乐鑫文档 xff0c 详见链接地址 xff0c 结合用例自行测试 xff0c 欢迎交流 源码链接ringbuf c 项目中用乐鑫的wifi模组 xff0c esp8266 xff0c esp32中发现ringbuf的身影 xff0
  • Qt界面程序中嵌入其他可执行exe程序

    背景 xff1a 本文实验环境 windows10 xff0c qt5 14 由于工作需要写了一个小的qt程序 xff0c 然后在实际使用过程中还要和其他小工具来回切换 xff0c 就想能不能把其他工具代码集成 xff0c 最后发现对我来说
  • Windows10系统旧电脑打包迁移新电脑

    由于需要换了一台新电脑 xff0c 但是配置系统是个繁琐的大工程 xff0c 想想windows的环境变量啥的就头大 xff0c 就想偷懒把系统直接转移到新电脑 xff0c 网上搜索了一下是可行的 xff0c 好多ghost备份还原 xff
  • 线程池1.0和any类

    threadpool h ifndef THREAD POOL H define THREAD POOL H include lt iostream gt include lt memory gt include lt functional
  • esp8266,esp32中的SPI FLASH 访问模式(QIO QOUT DIO DOUT)

    本文 ESP8266 和 ESP32 支持四种不同的 SPI flash 访问模式 xff1a DIO DOUT QIO 和 QOUT 这些可以通过 esptool py write flash 的 flash mode 选项设置 这些控制
  • IMX6ULL裸机启动,IMX6ULL运行freeRtos

    IMX6ULL裸机启动 xff0c IMX6ULL运行freeRtos 裸机启动部分 imx6ull中根据运行代码位置的不同RAM flash SD卡 xff0c 上电会先运行片上ROM中的代码 xff0c 搬运的数据大小是不同的 xff0
  • freeRtos中操作pxCurrentTCB部分汇编指令的理解

    关于freeRtos中操作pxCurrentTCB部分汇编指令的理解 asm void vPortSVCHandler void INDENT OFF PRESERVE8 ldr r3 61 pxCurrentTCB Restore the
  • 嵌入式开发中bin文件合并

    1 tr span class token string 39 000 39 span span class token string 39 377 39 span lt span class token operator span dev
  • 鲁班路由器AX1800折腾记录

    京东云鲁班畅享版64G Ram 512M flash 16M 型号 RF CP 02 ssh功能 当时看到帖子说R2010能直接进入ssh xff0c 果断关闭自动升级 xff0c 这一步就省略了 xff0c 参考如下 鲁班R2010 开通
  • Cannot convert a symbolic Tensor to a numpy array

    使用TF进行计算 xff0c 出现 xff1a Traceback most recent call last File 34 infer py 34 line 14 in lt module gt logits 61 classifier
  • ARM嵌入式系统为什么要做内存对齐

    做嵌入式系统软件开发 xff0c 经常在代码中看到各种各样的对齐 xff0c 很多时候我们都是知其然不知其所以然 xff0c 知道要做好各种对齐 xff0c 但是不明白为什么要对齐 xff0c 不对齐会有哪些后果 xff0c 这篇文章大概总
  • 第一篇博客,Hello World

    Hello World 这是我的CSDN第一篇博客 xff0c 掐指一算 xff0c 从学单片机开始 xff0c 学习开发嵌入式软件已经5年了 终于找到一个小窝能够和大家一起分享交流技术 今天是一个美好的开始 xff0c 你好 xff0c
  • Buildroot构建指南--Overview

    使用Buildroot 让嵌入式Linux系统构建更加便捷 本文以Buildroot 2016 05的版本为基础来讲解 xff0c 不同版本之间有细节差异 xff0c 需要根据读者使用的版本自行调整 Buildroot是什么 Buildro
  • Buildroot构建指南--快速上手与实用技巧

    Buildroot官方全英文使用手册的链接是https buildroot org downloads manual manual html xff0c 需要知道每一个细节的朋友 xff0c 可以仔细查阅 xff0c 这篇文章只是我自己从中
  • 构建Linux系统之实现Gnome桌面

    3 3 基于Ubuntu 实现Gnome 桌面 GNOME 是 GNU 网络对象模型环境 The GNU Network Object Model Environment 的简称 xff0c 目标是基于自由软件 xff0c 为Unix 或者
  • Buildroot构建指南——工具链

    Linux系统的交叉编译工具链用来将源代码变成bin文件或者库文件的一个软件 一般大家默认工具链等于gcc或者arm linux gcc xff0c 但是实际上 xff0c gcc只是工具链的编译器部分 xff0c 不是全部 xff0c 制
  • Buildroot构建指南——根文件系统(Rootfs)

    Buildroot构建指南 根文件系统 Rootfs Buildroot的Rootfs构建流程有一个大框架 xff0c 有些部分是Buildroot系统做好的 xff0c 有些细节需要自己来实现 xff0c Rootfs也是Buildroo
  • 面向对象地分析Linux内核设备驱动(1):——Linux内核驱动中面向对象的基本规则和实现方法

    Linux内核驱动中面向对象的基本规则和实现方法 内核版本 Linux Kernel 2 6 34 xff0c 与 Robert Love的 Linux Kernel Development 第三版 所讲述的内核版本一样 源代码下载路径 h

随机推荐