本文资料及工具地址:https://github.com/CQUPTLei/ESP8266
ESP8266和ESP-12F是紧密相关的概念:
这是ESP 12F模组:
这样的情况很常见,比如stm32芯片和开发板;w800芯片和neptune开发板等等。
乐鑫科技:全球领先的 AIoT 解决方案平台
乐鑫科技(股票代码:688018)是一家全球化的无晶圆厂半导体公司,成立于 2008年,在中国、捷克、印度、新加坡和巴西均设有办公地,团队来自约 30 个国家和地区。乐鑫多年来深耕 AIoT 领域软硬件产品的研发与设计,专注于研发高集成、低功耗、性能卓越、安全稳定、高性价比的无线通信 SoC,现已发布 ESP8266、ESP32、ESP32-S、ESP32-C 和 ESP32-H系列芯片、模组和开发板, 成为物联网应用的理想选择。我们致力于提供安全、稳定、节能的 AIoT 解决方案。同时,我们坚持技术开源,助力开发者们用乐鑫的方案开发智能产品,打造万物互联的智能世界。
2019 年 7 月,乐鑫科技在上海证券交易所科创板挂牌上市。
公司官网:https://www.espressif.com/zh-hans,可以去这里下载芯片的资料,固件,IDE等资源。
安信可科技:
深圳市安信可科技有限公司成立于2012年,是专业的物联网无线通讯模组的供应商。为全球物联网终端提供包括WiFi、蓝牙、LoRa、离线语音、UWB、NB-IoT、2.4G、GPS、4G通讯模组及物联网无线连接解决方案的一站式服务,产品主要配套于物联网应用,协同打造智慧城市、智能家居、智能穿戴、智能安防、智慧养殖等行业终端。安信可服务于物联网,专注无线连接领域,致力于让无线联网更简单。
高性价比智能联网模块,内置MCU,友好的二次开发接口;高性能、高可靠性、高可扩展性的物联网云,可快速接入第三方智能云平台;可直接使用标准APP,开发0投入
多条标准化产线,助力快速打样,快速验证,快速出货;通过 ISO9001 国际质量体系认证,使时效和品质达到空前的平衡
DOCS资料库、论坛、邮件等多平台提供技术服务,完整的API接口,多样的SDK包,极大缩短集成时间,助力产品批量生产、迅速落地
基于安信可物联网平台服务开放产品丰富,合作形式多样,集成服务更多,性价比更高。
本文使用的ESP 12F模组即该公司研发。
官网:https://www.ai-thinker.com/product/overview,在这里可以下载ESP12F的资料,固件等。这里的AT固件可以连接安信可的云服务、腾讯云等,有多种选择。
我使用的是开发板,而不是单独的模组,开发板是在ESP 12F模组的基础上添加了一些外围电路,把引脚印出来,以及USB接口等。其核心还是ESP12F模组。所以资料看ESP 12F的就好了。
开发板大概像下图这样,当然具体的设计每家厂商会有一些区别。你也可以自己设计板子。
先来看看ESP 12F模组参数。
安信可官网提供的都有。
ESP-12F
是由安信可科技开发的 Wi-Fi 模块,该模块核心处理器ESP8266 在较小尺寸封装中集成了业界领先的 Tensilica L106
超低功耗 32 位微型MCU,带有16位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS
,集成Wi-Fi MAC/ BB/RF/PA/LNA
。
ESP-12F Wi-Fi 模块支持标准的 IEEE802.11 b/g/n
协议,完整的TCP/IP 协议栈。用户可以使用该模块为现有的设备添加联网功能,也可以构建独立的网络控制器。ESP8266 是高性能无线 SoC,以最低成本提供最大实用性,为Wi-Fi 功能嵌入其他系统提供无限可能。
模组的接口不少,既可以自己编程,使用该模组作为主控芯片;也可以与其他MCU搭配,常见的是ESP 12F为stm32提供联网功能。
特性:
完整的 802.11b/g/n Wi-Fi SoC 模块
内置 Tensilica L106 超低功耗 32 位微型 MCU,主频支持80 MHz 和160 MHz,支持 RTOS
内置 1 路 10 bit 高精度 ADC
支持 UART/GPIO/ADC/PWM/SPI/I2C 接口
采用 SMD-22 封装
集成 Wi-Fi MAC/ BB/RF/PA/LNA
支持多种休眠模式,深度睡眠电流低至 20uA
串口速率最高可达 4Mbps
内嵌 Lwip 协议栈
支持 STA/AP/STA+AP 工作模式
支持安卓、IOS 的 Smart Config(APP)/AirKiss(微信)一键配网 支持串口本地升级和远程固件升级(FOTA)
通用 AT 指令可快速上手
支持二次开发,集成了 Windows、Linux 开发环境
样子都差不多,引脚都表明了的,引脚的复用前面那张图已经标明了。
不一样的可能就是USB附近的那个芯片了,有的是ch340的有的是cp2102或者其他,连接电脑的时候下载对应的驱动就行了。
固件(Firmware
)是指嵌入式系统中的一种软件,它是安装在硬件设备上的一组指令和数据,用于控制设备的操作和功能。固件位于硬件和操作系统之间,负责管理硬件设备的低级操作,例如启动、初始化和控制硬件功能。
与传统软件不同,固件是直接存储在硬件设备的非易失性存储器中,例如闪存或只读存储器(ROM)。它通常以二进制形式存储,并由硬件设备的制造商预先安装或通过固件更新进行更新。
固件的主要目的是为硬件设备提供基本的操作和功能。它可以实现设备的启动和关机过程、处理输入和输出、管理存储器、控制外围设备等。例如,固件可用于控制打印机的打印过程、路由器的网络连接、智能手机的硬件功能等。
固件还可以包含操作系统的一部分,称为嵌入式操作系统。这种情况下,固件不仅负责硬件的控制,还提供了一些高级功能和服务,例如文件系统、网络协议栈、驱动程序等。
由于固件直接与硬件交互,因此对设备的性能和功能有着重要的影响。固件更新是常见的做法,用于改进设备的性能、修复错误、增加新功能或提供安全性补丁。
ESP8266芯片具有自己的固件,被称为ESP8266固件或NodeMCU
固件。
NodeMCU固件是一种开源固件,基于Lua脚本语言,特别设计用于ESP8266芯片。它提供了一套易于使用的功能和API,使开发者能够快速开发物联网应用程序。
NodeMCU固件提供了一系列的功能模块和库,包括Wi-Fi连接管理、网络协议支持(例如HTTP、MQTT等)、GPIO控制、PWM输出、ADC采集、文件系统访问等。它还支持通过串口进行编程和调试,并提供了命令行交互界面。
使用NodeMCU固件,开发者可以使用简单的Lua脚本语言来编写应用程序,而无需深入了解底层的Wi-Fi和网络协议。这使得ESP8266芯片的开发变得更加容易和快速。
除了NodeMCU固件,ESP8266芯片还可以使用其他固件,例如官方提供的Espressif Systems的AT固件,或者第三方开发者基于ESP8266芯片开发的其他固件。这些固件提供了不同的功能和编程接口,以满足不同的开发需求。
ESP8266的存储系统是32M的 Flash + 80KB的SRAM。(可以理解为电脑的SSD和内存条)
闪存通常分为以下几个部分:
Bootloader
(引导加载程序):引导加载程序是在芯片上电时首先执行的代码,它负责初始化芯片、加载固件和跳转到固件的执行点。这个是你无法修改或者擦除的。Firmware
(固件):固件是主要的应用程序代码,它包含了设备的功能和逻辑。固件部分占据了闪存的大部分空间。这是我们可以修改的。ESP8266的内存包括32 KiB指令RAM,32 KiB指令缓存RAM,80 KiB用户数据RAM(存储程序代码、变量、堆栈和其他运行时数据)和16 KiB ETS系统数据RAM
固件与底层硬件打交道如果要字节编写固件,就需要了解ESP8266 芯片的寄存器等信息,通常是一件麻烦的事情。所以我们通常使用厂商开发好的固件,直接用,或者基于固件编写上层应用。
固件也是一种程序,开机就运行,通过编写不同的固件,他也能提供很多不同功能。
通常使用AT指令来运行固件中设计好的各种功能,比如链接一个WiFi,固件为上层应用提供了友好的接口。我们可以使用Ardunio IDE来进行上层应用的开发,在我们的应用中,可以通过AT指令使用固件中开发好的功能。
我们的程序下载到ESP8266上并不会修改固件内容,就像你给电脑安装一个软件一样,并不会修改系统功能。
通常,也可以使用其他MCU连接ESP8266,通过发送AT指令和接收回复来进行编程。比如使用STM32与ESP8266进行串口通信,实现某些功能。
材料:
固件自己去官网下载即可,可能会更新的。
引脚连接:
UART 0已经与开发板上的USB相连了,可以直接使用USB连接电脑,也可以使用杜邦线连接UART的引脚,使用串口转USB模块连接电脑,其实是一回事。(记得用数据线,而不是劣质的电源线)
下载固件:
(1)打开Flash下载工具:选择 Developer Mode
(2)选择你刚刚下载的固件,设置地址为0x0,选择com口,其他的参考下图。点击start即可。
有的固件有多个bin文件,你需要根据他的配置文件设置:
可以参考我提供的资料的:ESP_AT指令指南操作。
使用串口调试助手测试,可以使用XCOM。
默认的数据位设置为8位(8 data bits),停止位设置为1位(1 stop bit),校验位设置为无校验位(no parity),波特率115200。
如图,初始化会输出一些乱码字符。
一些测试:
把 永 远 爱 你 写 进 诗 的 结 尾 ~