从买回这款板子到现在大概已经有一个月左右。刚开始看到这块芯片就被它价格便宜、性能强悍所吸引,于是利用业余时间对这块板子小小研究了一番。我将从以下几个方面谈谈这个月我对这块板子的使用:
1)esp8266芯片 2)esp8266开发板 3)环境配置
4)开发小项目 5)补充知识
1 esp8266芯片
ESP8266/ESP8285 在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。支持标准的 IEEE802.11 b/g/n 协议,完整的 TCP/IP 协议栈。用户可以使用该模块为现有的设备添加联网功能,也可以构建独立的网络控制器。该芯片是高性能无线 SoC,以最低成本提供最大实用性,为 Wi-Fi 功能嵌入其他系统提供可能。
(对于Tensilica公司的MCU,esp8266芯片的官方厂家在知乎上有一篇文章是专门回答这个问题的,链接地址为乐鑫的物联网芯片esp8266使用的MCUTensilica L106到底是什么来头??。简单来说Tensilica是一家设计微处理器架构的公司,目前已经被Cadence公司收购。Tensilica公司的代表MCU是Xtensa处理器,这款处理器是一个可以自由装组、可以弹性扩张,并可以自动合成的处理器核心。而乐鑫公司的代表芯片ESP8266采用的是Tensilica公司的L106核心,拥有5阶流水线。而乐鑫的ESP32芯片则采用的是Tensilica公司的Xtensa 32bit LX6核心,其优势在于CPU强大的性能和低功耗。)
上图列出了乐鑫公司目前在售的几款esp8266芯片,其芯片特点为:
特点
802.11 b/g/n
内置Tensilica L106 超低功耗 32 位微型 MCU,主频支持 80 MHz 和160 MHz,支持 RTOS
内置10 bit高精度ADC
内置TCP/IP协议栈
内置TR 开关、balun、LNA、功率放大器和匹配网络
内置PLL、稳压器和电源管理组件,802.11b 模式下+18 dBm的输出功率
A-MPDU 、 A-MSDU 的聚合和 0.4 s的保护间隔
Wi-Fi @ 2.4 GHz,支持 WPA/WPA2 安全模式
支持AT本地升级及云端OTA升级
支持 STA/AP/STA+AP 工作模式
支持 Smart Config 功能(包括 Android 和 iOS 设备)
HSPI 、UART、I2C、I2S、IR Remote Control、PWM、GPIO
深度睡眠保持电流为 20 uA,关断电流小于 5 uA
2 ms 之内唤醒、连接并传递数据包
待机状态消耗功率小于1.0 mW (DTIM3)
工作温度范围:详情请见具体型号规格书
由此可见这款芯片的功能还是比较强大的。
2 esp8266开发板
一块esp8266开发板价格大概在十几块,这次我买的是带CH340ttl转usb芯片的开发板。如下图:
在安信可官网上可以下载esp8266的原理图和封装,链接为:ESP8266原理图PCB封装文件。网上有esp8266最小系统的原理图,如下图:
参考设计手册,不管是芯片的下载模式还是运行模式,EN(CH_PD),RST都需要置高,而GPIO15需要置低。GPIO0和GPIO2的高低电平决定了ESP模组的启动模式。串口通信需要占用TXD和RXD两个引脚。这里选用的是ch340芯片作为ttl转usb通信芯片,也可以采用pl2303芯片作为接口转换芯片。
在烧写bin程序时需要进入下载模式,即GPIO0置低,而运行模式需要把GPIO0置高。烧录完成需要重启并且rst一下。
3 环境配置
由于esp8266采用的是Tensilica公司的核心,目前支持esp8266的开发环境并不算多,一般包括:1)AT指令。直接采用串口对芯片发送AT指令或者利用其他单片机给esp8266发送AT指令;2)Arduino IDE。通过配置在原本的编程环境中添加对esp8266开发板的支持,编程语言用c语言,这也是目前网络上相对较多的使用方法。3)刷Node MCU固件,采用Lua语言编程,或者也可以刷其他固件,我这里刷的是micropython固件,编程语法和python基本类似,对一些常用的功能都有很好封装函数。
烧写工具采用ESP FLASH TOOL,下载地址为ESP FLASH TOOL烧写工具。 由于我这里烧写的micropython固件,我在这里就着重介绍一些micropython。
MicroPython是 Python 3 语言 的精简高效实现 ,包括Python标准库的一小部分,经过优化可在微控制器和受限环境中运行。MicroPython包含了诸如交互式提示,任意精度整数,关闭,列表解析,生成器,异常处理等高级功能。 足够精简,适合运行在只有256k的代码空间和16k的RAM的芯片上。
除了实现一系列核心Python库之外,MicroPython还包括访问硬件的“machine”等模块。
如上是micropython中文网的一段对micropython的介绍。由于最近在使用python作为目前主要的编程语言工具,所以上手microtpython也是十分容易的。下载micropython固件在micropython固件下载。利用esp8266 flash tool进行烧写,SPI MODE选择DIO,FLASH SIZE选择为32Mbit。烧写前先要对芯片进行擦除,然后点击“START”开始烧写程序,出现FLASH即说明烧写成功。