【本文发布地址https://blog.youkuaiyun.com/Stack_/article/details/119382046,未经许可不得转载,转载须注明出处】
一、ESP8266与NodeMCU
- 下图黑色的开发板是网上的NODE MCU开发板,由ESP8266WiFi模块、USB转TTL芯片、5V转3.3V的LDO、自动下载电路等组成。
- ESP8266指的是乐鑫推出的ESP8266EX芯片,用ESP8266EX芯片和FLASH芯片等封装在PCB上、金属屏蔽罩下便得到ESP8266模块。
- ESP01S、ESP12E、ESP12F这些型号的主芯片都是ESP8266EX,区别在于flash大小。
二、开发方式
开发方式 | @ 优快云 Tyrion.Mon |
---|---|
AT指令 | 刷入AT指令固件后给其usart接口发送AT指令、ESP8266返回对应信息进行开发。应用示例 |
官方SDK | 乐鑫官方SDK,LInux下开发或者Windows下用Eclipse开发。应用示例 |
Lua 脚本 | 刷入Node MCU的固件后,内部即运行了 Lua 解释器,编写Lua脚本进行开发。应用示例 |
Arduino | 乐鑫官方基于Arduino标准接口封装的SDK+Arduino编辑器开发 |
Micropython | 基于乐鑫官方SDK,待研究 |
三、方式1:串口AT指令
这种方式在刷入AT固件之后,我们只需要在单片机上编程跟ESP8266模块通讯即可,按照官方/安信可给出的AT指令手册发送与接收指令进行开发。
这种方式你可以很快按照网上的方法写出一个简单的应用,例如获取天气信息和时间信息。但是也有它的局限性,毕竟要额外加一片单片机,增加成本且不优雅,两块单片机之间协同完成任务肯定是比独自完成要复杂的,速度也受串口速度限制,SDK内有许许多多的API,AT指令应该做不到面面俱到。
如果只是想借助ESP将单片机数据上云这样一些简单应用,不想学太多东西不想折腾,这种方法是OK够用的。
四、方式2:NodeMCU Lua语言(不推荐)
1.开发工具
工具 | 获取方式 |
---|---|
固件 | 可以从此网站 选择需要的模块并在线编译,编译完成后发送到邮箱下载。QQ邮箱不行,网易邮箱可以。 |
固件烧写工具 | ESP8266Flasher 下载 |
编写Lua代码工具 | ESPlorer 下载 |
API文档 | 此网站 或在此网站的链接进入GitHub下载所有固件源码及API文档 |
国内访问GitHub经常抽风,我将这些资源打包上传了。HERE
2.烧写固件
打开ESP8266Flasher,COM Port选择NodeMCU的端口。Config页下选择固件路径,Offset填入0x00000,并点一下左边的方框,令需要下载的固件对应的方框内出现个 x
Flash size大小根据实际大小选择。ESP12E和ESP12F的Flash都是32Mbit即4MByte
配置完成后点击Flash(F)按钮下载固件
3.编写一个Lua程序并上传到Node MCU运行
安装JDK,并配置Java环境变量后打开ESPlorer。 下载JDK8
1、其中左边窗口是Lua编辑器,右边是Node MCU通过uart打印的数据。
2、编辑器注释不支持中文,输入中文会导致代码上传失败或者运行出错。
3、在打印信息窗口上右键可清空内容。
4、NodeMCU上电默认从init.lua开始运行,如果不存在这个文件,将显示
cannot open init.lua:
>
此时可以通过发送Lua代码运行或者点击Reload列出存储的文件并点击文件以运行程序。
5、使用哪个版本的固件就应该下载哪个版本的API手册,比如2.0.0和3.0.0的定时器API是不一样的,基于2.0.0的定时器代码无法在3.0.0的固件上运行.
按键 | |
---|---|
Save to ESP | 将该Lua文件保存到Node MCU中 |
Send to ESP | 将该Lua文件发送到Node MCU中,不保存。单次运行 |
Reload | 可以查看Flash空间以及上传了哪些文件,如果有文件会在Reload按键下列出来。点击文件可以运行,在文件上右键可以删除 |
不推荐原因
1、此开发方式需要额外学习Lua语言,因此不适合想要快速开发的朋友,但想多学一门语言的朋友可以尝试一下。
2、此开发方式讨论度低,遇到问题难找到解决方法。例如按照固件手册写的代码不带改的,有时运行到某行莫名出现反复重启的现象,网上无案例而无法解决。
3、不支持中文注释,这个问题非常严重。
五、方式3:Arduino C语言(推荐)
1.开发工具
工具 | 获取方式 |
---|---|
Arduino IDE(集成了编辑、编译和下载功能) | 下载地址 |
API文档 | HERE |
推荐理由:
1、使用C/C++语言开发
2、Arduino使用的人多
3、易上手
4、有很多的第三方组件/库可以调用。
但是不推荐使用Arduino编辑器直接写代码,虽然这个IDE集成度高、方便,但只适合写代码量不大的程序,因用这个编辑器写代码和用记事本写差别不大,太难受了。推荐使用VS Code代为编辑,调用Arduino编译下载(但是需要安装插件且配置比较麻烦)。
【如果不想太折腾,可以止步于此了。ESP8266/ESP32在Arduino这方面的第三方库和教程非常多,开源项目也多采用Arduino,其它的方式不如这种开发方式普及】
六、方式4:安信可一体化IDE(推荐)
我是从51、32开始学习嵌入式的,更喜欢基于乐鑫官方SDK去开发应用。
乐鑫官方是没有推出Windows IDE的,要实现在Windows下编译,需要安信可提供的集成了所需组件的IDE,这种方法最简单。或者按照博主半颗心脏的博文自行搭建开发环境,适合喜欢折腾的朋友们。
如果有Linux开发基础,直接在Linux下使用官方SDK开发更省事,不用太折腾开发环境。
开发环境配置如下:
[Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。]
由于乐鑫的SDK在持续更新,安信可的IDE也会更新,导致教程会部分过时。我根据实际情况作了补充,点击以下链接跳转文章
【【2023年1月】ESP8266 SDK开发之AiThinkerIDE_V1.5.2安装配置以及编写烧录一个程序(ESP8266_RTOS_SDK 3.x)】
如果按照安信可官方教程进行,发现这里闪退
或者出现如下报错
The following Python requirements are not satisfied:
click>=5.0
pyserial>=3.0
future>=0.15.2
cryptography>=2.1.4
pyparsing>=2.0.3,<2.4.0
pyelftools>=0.22
Please refer to the Get Started section of the ESP-IDF Programming Guide for setting up the required packages.
那么可能是环境变量没有配置好,或者环境变量多了些东西导致冲突了,删除无用的变量路径即可。
例如我按照博主半颗心脏的教程配置环境变量时添加了
\cygwin64\bin
导致和安信可IDE配置的环境变量冲突,删除后重启IDE即可通过编译。
待补充