1.前言
最近在学习ESP8266,记录一下。先来了解一下ESP8266。简单来说,ESP8266就是一个比较便捷的WIFI芯片。通过它可使设备很快实现WIFI联网。
ESP8266的开发方式有3种:AT指令、LUA、SDK开发。其中AT指令最为简单,通过串口发送 AT+命令 的方式就可以实现ESP8266的控制,但实际上AT指令和LUA都是基于某一个具体SDK来实现的,就是所谓的二次开发。
AT指令集也有不止一个,官方AT固件、安信可AiCloud AT固件
安信可AT:
(AT指令集 :http://wiki.ai-thinker.com/aicloud
AiCloud 2.0开发文档:http://wiki.ai-thinker.com/aicloud/docs/atdevelop)
可以看到,以下的AT指令就是基于AiCloud来实现的,而这个AiCloud则是厂商开发好并烧写进芯片的程序。所以我们可以通过串口来控制芯片联网和数据传输。可以根据
http://wiki.ai-thinker.com/esp8266/examples/at_demo(ESP8266 AT指令开发实例) 来学习。
图1.1.AT指令集(AiCloud)
乐鑫官方AT:
官方也有一个AT固件(官方AT固件:https://www.espressif.com/zh-hans/support/download/at AT指令集:https://www.espressif.com/zh-hans/support/download/documents 选择型号,找到:ESP8266 Non-OS SDK AT 指令集 )了解了一下,AiCloud和它好像都差不多原理,但是AT指令不是兼容的。AT+CWLAP是官方AT指令集里面的一条,但是AiCloud的固件里是没有的,使用AiCloud 的AT固件 时输入后返回
AT+CWLAP
ERROR
而使用官方的AT固件时,会返回当前环境能搜索到的SSID等信息。
2.关于ESP8266的关系
查资料发现,ESP8266有两个比较相关的厂商:
1.乐鑫:http://www.espressif.com/
2.安信可:http://wiki.ai-thinker.com
3.NODEMCU:http://nodemcu.readthedocs.io/en/master/
乐鑫是ESP8266,ESP32芯片的生产商,生产芯片和提供芯片的官方SDK开发包。
安信可主要是生产ESP的ESP8266 芯片,安美的 SX1278 芯片 等WIFI模组,并提供一些联网和开发的方案,AiCloud就是安信可研发的,安信可还有一个ESP-TOUCH的便携配网方式(微信也搞了一个AIRKISS),可以方便使用模组的用户只通过上位机(手机)就可以发送wifi的SSID和密码给设备,实现快速联网,没有输入键盘和显示屏的设备也可以很方便快速地接入互联网了。
NODEMCU 似乎是提供通过Lua语言可以方便的进行开发ESP8266方案的厂商,这个大不了解。
3.ESP8266的学习和开发
下面来学习一下开发和烧录:
3.1 开发环境的搭建
首先是开发环境的搭建,根据平台的不同,开发环境也有所不同。主要的开发平台是第2小节中所提到的3个,乐鑫官方,安信可,NODEMCU。NODEMCU不熟悉,需要再查资料看看
乐鑫官网:请参考:https://www.espressif.com/zh-hans/support/explore/get-started/esp8266/getting-started-guide (ESP8266 SDK入门指南 1.5章)
安信可 :请参考:http://wiki.ai-thinker.com/ai_ide_install(如何安装安信可一体化开发环境 )
接下来使用的是安信可的开发环境,并编译、下载官方NON-OS SDK。根据上述教程安装即可。
3.2 SDK下载
SDK官方下载地址:https://www.espressif.com/zh-hans/support/download/sdks-demos 大体上官方的SDK分两种,1.NON-OS SDK 不带操作系统的SDK,2.RTOS SDK 带free rtos的SDK
这里先使用NON-OS SDK。版本:ESP8266 NONOS SDK V2.2.0 将其下载下来,并解压后按 3.3 节组织调整文件结构。
3.3 SDK修改
在接下来的测试中,运行官方的各个例程看看结果如何。因为乐鑫官网教程下,编译 ESP8266 SDK 需要使用 Linux 操作系统,或者安装VirtulBox 虚拟机,比较麻烦。安信可的开发环境,是WINDOWS下运行的,IDE用的是ECLIPSE ,它也可以编译官方的SDK,用于编译官方SDK,也就是使用乐鑫原厂固件时,需要调整文件结构, 否则将编译出错,Console报错:make[2]: *** user: No such file or directory. Stop.
1.需要将 SDK里面的文件夹中的 driver_lib 文件夹名字 改为app。
复制前先删除app文件夹里面所有文件 。
完成后如图3.1 有多余文件可能会报错,若出错尝试删除多余文件。
图3.1 在编译官方SDK的时候文件夹截图(Non-OS SDK) 图3.2 官方例程
- app: 用户工作主目录,用户级代码及头文件均放在此目录下编译。(将 driver_lib( 外设驱动的库文件,如:UART、I2C 和 GPIO 等)的所有文件复制到此处。
- bin: 编译生成的 BIN 文件,可直接下载到 Flash 中。
- documents: SDK 相关的文档或链接。
- examples: 可供用户二次开发的示例代码,如 IoT Demo 等。(将)
- include: SDK 自带头文件,包含了用户可使用的相关 API 函数及其他宏定义,用户无需修改。
- ld: 链接时所需的脚本文件,若无特殊需求,用户无需修改。
- lib: SDK 提供的库文件。
- tools: 编译 BIN 文件所需的工具,用户无需修改
3.4 编译环境启动和SDK导入
1.打开
,安信可编译环境,第一次打开先设置IDE位置,和编译器位置。根据实际情况设置。
图3.3 开发环境配置工具
-----> Import
3.C\C++------> Existing Code as Makefile project----->NEXT
4.点击Browser选择工程文件夹,编译器选择Cygwin GCC 然后点击Finish,导入完成。
3.5 编译和下载
3.6 验证例程烧录结果
4.总结