前言

  无线通信中除了最为常用的蓝牙之外,剩下的就是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,保姆级教程

【嵌入式模块】ESP8266完整教程相关推荐

  1. ESP8266模块使用完整教程

    在我入门ESP8266小黄板的过程中,过程是艰难的,因为网络上的资料太多太乱,官网上的资料不算太完备,而在技术交流群里面的就更乱了,所以想按自己学习所总结到的经验来分享给大家. 资源链接:http:/ ...

  2. Python pygame(GUI编程)模块最完整教程(1)

    提示:下滑文章左侧可以查看目录! 1 初识pygame 1.1 简介 参考资料:About - pygame wiki pygame是python中一个流行的GUI编程模块,是专门为了开发游戏而设计的 ...

  3. Python pygame(GUI编程)模块最完整教程(5)

    上一篇文章:https://blog.csdn.net/qq_48979387/article/details/128994501 13 显示 参考资料:https://pyga.me/docs/re ...

  4. 【Arduino 和 HC-05 蓝牙模块完整教程】

    [Arduino 和 HC-05 蓝牙模块完整教程] 1. 概述 2. 电路原理图 3. Arduino 蓝牙通信示例源代码 4. 将智能手机连接到HC-05蓝牙模块和Arduino 5. 通过蓝牙通 ...

  5. AST语法结构树初学者完整教程

    AST语法结构树初学者完整教程 编写你的第一个 Babel 插件 不太喜欢上来就讲大道理,先来个小栗子,做个简单而又实用的功能,做完后,理论你就理解一大半了. 我们需要antd里面的一个组件Butto ...

  6. 嵌入式数据库Sqlite移植教程-转

    嵌入式数据库Sqlite移植教程 sqlite-3.3.6编译安装与交叉编译全过程详细记录 本文介绍的内容都是基于 Linux RedHat 9.0 平台的. 一.PC机编译安装 请阅读在安装包里的 ...

  7. 物联网系列之WIFI模块ESP8266一介绍

    内容 Change history 内容 1        前言 1.1        目的 2        计划 2.1        测试环境 2.2        计划 3        行动 ...

  8. Android 动态界面开发框架 Tangram 使用完整教程

    阅读本文大概需要20分钟 熟悉阿里出品的vlayout的读者都知道,vlayout极大地扩展了RecyclerView的LayoutManager,从而为RecyclerView提供了一组布局.使用该 ...

  9. 基于STM32的ESP8266使用教程(一)

    关于为什么要写这篇文章,因为之前在做一个项目的时候需要使用WIFI模块.X宝搜WIFI模块的时候推荐ESP8266这个模块,说是价格便宜.使用方便.但是在使用的过程中发现的确使用方便(因为是基于AT指 ...

  10. 基于STM32的ESP8266使用教程(二)

    写在前面:博主懒癌晚期,考研结束之后想着HAPPY一下,结果把这事忘了,开学了又有很多事情要干,直到昨天一博友留言(有邮件提醒),才想起有这么个坑要填,特来填坑.相关软件程序请参考"基于ST ...

最新文章

  1. 一文告诉你,谷歌是否真的实现了「量子至上」
  2. 【CodeForces】576 C. Points on Plane
  3. @ModelAttribute运用详解
  4. HDU 1181 变形课(dfs)
  5. mysql5.7和8.0的区别_解答阿迪达斯Adidas ultra boost4.0与正品区别!如何选择?
  6. Web browser的发展演变
  7. Iview的Tabs设置居中
  8. 写在2017年的总结
  9. Oracle 或关闭中国研发中心(CDC):裁员 1600 人
  10. php无缝滚动文字,使用JS如何实现文字无缝滚动
  11. 笔记:数模美赛试题解析与研究
  12. oracle练习(mldn视频)二
  13. 计算机网络原理恺撒密码/列置密码总结
  14. VMware中的Fedora9下安装VMtool后图形界面无法启动
  15. Win11自带微软浏览器无法翻译
  16. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?
  17. 【深度学习机器翻译】GNMT:Google 的的神经机器翻译系统
  18. 【图像修复】基于matlab GUI FMM+Criminisi算法彩色图像修复【含Matlab源码 1507期】
  19. 【Python 实战基础】如何绘制热力图来模拟绘制北京景区热度图
  20. Drupal主题开发指南(5.x)

热门文章

  1. 外贸询盘通开篇我的十年SEO探索路
  2. 英伟达实时 3D 设计协作和仿真平台已正式发布
  3. 现代数字信号处理——维纳滤波原理及自适应算法
  4. 慕课《算法分析与设计》山东财经大学李恒武,第二章算法分析 测验题问题梳理答案
  5. 导航一体机端口测试软件,导航端口查看器
  6. 5年没发论文,读博想放弃?中科大博导万字自述:曾连收13封拒稿信...
  7. QtableWidget的表格加载图片设置
  8. DEA模型(数据包络分析)deap2.1操作方法
  9. Android的第一行代码
  10. SQL注入风险高,手写 SQL 须谨慎