ESP8266使用笔记之常用固件

开发板使用的是NodeMCU开发板

目录

1.学习使用ESP8266官方的SDK

        1.1使用SDK提供的AT固件

        1.2使用SDK Build固件

2.学习使用NodeMCU固件(上层可使用Lua开发)和MicroPython固件(上层可使用MicroPython开发)

学习使用ESP8266官方的SDK

使用AT固件:

下载开发包:esp8266_nonos_sdk_v1.5.4.7z,/bin/目录里面包含已经编译好的固件,NodeMCU上ESP8266模块带的SPI ROM大小为4MB,

参考2a-esp8266-sdk_getting_started_guide_cn.pdf:

使用烧写工具nodemcu-flasher烧写:

ai-think串口调试助手内置了常用的AT指令,比如发送 AT+GMR 可以获取版本信息:

使用SDK Build固件

下载esp8266_nonos_sdk_v1.5.4.7z,以其中IoT_Demo为例,熟悉固件的编译:乐鑫针对 ESP8266 提供两种SDK:NON-OS SDK 和 RTOS SDK(基于FreeRTOS):

1.修改源程序:

因为我使用的NodeMCU上的SPI ROM大小为4MB

参考2b-esp8266_non-os_sdk_iot_demo_guide_cn.pdf,需要修改下面的配置(\examples\IoT_Demo\):

在应用的入口点添加一个输出:

2.编译固件

(使用VirtualBox+官方基于lubuntu的编译环境:ESP8266_lubuntu_20141021.ova):

把修改过的 \examples\IoT_Demo\ 拷贝到 /ESP8266_NONOS_SDK/ 的根目录,切换到\ESP8266_NONOS_SDK\IoT_Demo\:

执行编译:

按照提示选择:2(noboot)-0-2-0-4(4096KB)

编译完成:会在\ESP8266_NONOS_SDK\bin\目录生成这两个文件:

3.重新烧录编译的固件,只需要更新编译生成的两个(offset分别为:0x00000和0x40000):

使用串口工具:波特率为74880(去源代码里面看):

这时PC会发现名为:ESP_6CE44B(后面的数字是MAC地址的后6位)的 AP(阅读user_init()会发现其中配置了开发板的AP功能),下图(左边是开发板打印出来的信息,可以看到开发板获取到了PC的MAC地址)是PC连上该 AP的信息:

通过网络调试助手简单分析一下ESP SDK API:

下图是ESP8266固件大致的初始化流程:

下图是使用网络调试助手与NodeMCU通信的截图:

小结:

1. ESP8266_NONOS_SDK-2.0.0提供了大量API供应用程序调用,user_init()就是应用程序的入口点;

2. SDK 以库文件的形式提供,API参考:2c-esp8266_non_os_sdk_api_reference_cn.pdf;

NodeMCU固件和MicroPython固件

NodeMCU固件是针对NodeMCU开发板,基于NON-OS SDK开发的固件;NodeMCU固件使用轻量化的脚本语言Lua,并使用基于spiffs的文件系统;

MicroPython固件支持使用MicroPython语言来开发;

上面两种固件实际上就是把两种脚本语言的解释器移植到了ESP8266上,固件开发者基于ESP8266的SDK移植解释器并实现各种Module,但是NodeMCU只支持ESP8266平台;而MicroPython则支持多种平台,比如ESP8266、ESP32、stm32等等。

下面通过点亮开发板上的一个LED来看看如何通过脚本编程硬件:

NoceMCU开发板上有2个LED,一个位于ESP8266模块上,该LED接GPIO2,把GPIO2拉低可以点亮LED;还有一个LED位于USB转串口芯片旁边,该LED接GPIO16,把GPIO16拉低可以点亮改LED。

使用NodeMCU固件

烧写工具nodemcu-flasher自带一个NodeMCU固件:nodemcu-flasher-master\Resources\Binaries\nodemcu_integer_0.9.5_20150318.bin

小结一下:

1. nodemcu默认执行的脚本是init.lua,如果找不到就显示命令提示符">"用来接收串口发来的指令;

2. nodemcu固件里面GPIO16的index被设成了0(led = 0);

3. 网站:https://nodemcu-build.com/index.php提供了Build NodeMCU固件的服务,其中可以定制固件需要支持的Module。

NodeMCU固件

应用入口点位于:nodemcu-firmware-master\app\user\user_main.c::user_init(),system_init_done_cb()是ESP8266 SDK提供的API,用于注册系统初始化完成的回调函数参考:2c-esp8266_non_os_sdk_api_reference_cn.pdf

nodemcu_init()最终会调用到下面的代码来加载init.lua。整个NodeMCU的源代码可以看成是从user_init()开始构建的一个应用,该应用实现的Lua解释器的功能。

使用MicroPython固件:

http://micropython.org/download#esp8266下载ESP8266平台的MicroPython固件并烧录。

小结一下:

1.MicroPython固件默认执行的脚本是main.py,如果找不到就显示命令提示符">>>"用来接收串口发来的指令;

MicroPython固件

阅读MicroPython的源代码,可以发现MicroPython支持多种平台:ESP8266、ESP32、stm32等。

以ESP8266为例,应用入口点位于micropython-master\ports\esp8266\main.c::user_init(),下图system_timer_reinit()和system_init_done_cb()是ESP8266 SDK提供的API参考:2c-esp8266_non_os_sdk_api_reference_cn.pdf

init_done()最终会调用到pyexec_file("main.py")来加载main.py,整个MicroPython的源代码可以看成是从user_init()开始构建的一个应用。

以ESP32为例,应用入口点位于micropython-master\ports\esp32\main.c::app_main(),下图nvs_flash_init()是SDK提供的API,xTaskCreate()是FreeRTOS提供的接口

mp_task()最终会调用到pyexec_file("main.py")来加载main.py。

下面的脚本会使ESP8266模块上的LED按1s间隔闪烁:

但是当我们点"Save to ESP",会报错,原因是Save操作会先打开main.py,然后修改,但是我们开发板上还没有main.py(如下图):

ESP8266 NodeMCU开发板相关推荐

  1. ESP8266 NodeMCU开发板连接手机热点问题

    ESP8266 NodeMCU开发板连接手机热点问题 前言: 众所周知,esp是构建一个IOT工程里得力助手之一,通俗点来说就是:"WIFI模块" 不过下面要讲的是esp8266中 ...

  2. ESP8266 Nodemcu 开发板 + Blinker 电脑远程开机支持小爱同学和手机APP

    文章目录 前言 一.物联网是什么? 二.效果展示 1.使用的硬件 2.接线展示 三.TMP模块供电,状态检测 四 代码解析 1. 指定PIN,定义一些按钮 2.这是小爱同学的代码,BLinker还支持 ...

  3. NodeMCU开发板详解(ESP8266开发篇)

    1.ESP8266芯片 2.开发板介绍 此板子的size - 引脚信息 当引脚以数字输出模式工作时,低电平是0V (灌电流),高电平是3.3V (拉电流). digitalWrite(4,HIGH)操 ...

  4. NodeMCU开发板详解

    NodeMCU开发板详解 数字输入输出引脚(GPIO) 如下图所示,ESP8266芯片四周分布很多引脚.这些引脚大部分可用作输入输出使用.这些用作输入输出的引脚统称为GPIO. ESP8266芯片的G ...

  5. 【嵌入式物联网】NodeMCU开发板引脚介绍和主要技术参数

    ESP8266芯片的GPIO引脚可用作数字输入来读取引脚电平,也可用作数字输出向外围电路发出控制信号.在这一点上,GPIO引脚与Arduino开发板的引脚功能十分类似. 请留意:在很多介绍ESP826 ...

  6. ESP8266 D1-UNO-R3开发板的初步测试

    简 介: 测试购买到的基于ESP8266的开发板,但是始终没有能够成功下载程序.问题尚待后期进行测试. 关键词: ESP8266,Arduino #mermaid-svg-6x74Q9rymsvfSg ...

  7. Esp8266物联网开发板详细使用教程

    文章目录 前言 需要的资料 搭建SDK开发环境 SDK的编译和烧写 前言 之前在做智能家居的时候需要用到esp8266,我这边因为esp8266物联网开发板的技小新教程相对齐全就不用串口模块,直接使用 ...

  8. Arduino文档阅读笔记-WeMos D1 ESP8266 WIFI开发板入门

    WeMos D1开发板以ESP8266WIFI开发板为基础,使用Arduino开发板的设计,工作电压为3.3V设计出来的开发板,这个开发板仅仅是使用了Arduino uno的布局设计,并不是Ardui ...

  9. esp32 鸿蒙,ESP8266最佳开发板--ESP-LAUNCHER开发板评测

    要评选中国影响力十大芯片,ESP8266必在其中.虽然开发文档有些混乱,各种生态纷杂,但它的低价,给了开发者更低门槛,也让更多人都参与到WiFi的开发体验中来. 从这种意义上来说,ESP8266是一款 ...

最新文章

  1. Java 高并发面试题
  2. 60分钟快速入门PyTorch
  3. 转】MyEclipse使用总结——在MyEclipse中设置jsp页面为默认utf-8编码
  4. 局域网服务器没显示,无法登录服务器 局域网也不显示连接
  5. java 字符串contain_如何使用java.lang.String.contains()方法
  6. salesforce 零基础学习(十八)WorkFlow介绍及用法
  7. 剑指offer——面试题46:求1+2+...+n
  8. EPLAN导入EDZ文件
  9. 2021年全国职业院校技能大赛(中职组)网络安全竞赛正式赛题A模块防火墙部分解析
  10. 建筑企业并购:人才整合策略
  11. CISAW信息安全保证人员介绍
  12. 新浪微博热搜榜“背后的男人”讲述热搜背后的秘密
  13. 1分钟了解什么是枚举/以及枚举的使用
  14. python解一元二次方程虚根_Python编程实现数学运算求一元二次方程的实根算法示例...
  15. python人机对战_【人机对战】用python打造经典井字游戏
  16. 【牛客内部题:富婆价值最大化!】模拟贪心C++
  17. CP2102 USB to UART Bridge Controller 驱动安装
  18. 现代计算机基本工作原理,计算机基本原理
  19. 《从一到无穷大》中的程序思维
  20. 浅谈js开源库jQuery

热门文章

  1. 虫师 Selenium3 基于Python 生成HTML测试报告误区记录
  2. L3-008. 喊山
  3. java新手案例_java初学者都要掌握的案例
  4. ubuntu下 vscode 配置c++ 环境和opencv
  5. 守着“伪需求”闭门造车,还谈什么大数据价值变现
  6. python找完数 pta_PTA——完全数
  7. scRNA-seq | 吐血整理的单细胞入门教程(ID转换)(六)
  8. 【netcore】 docker 读写文件问题 报错Gdip
  9. python复制出现错误_Python中的错误和异常
  10. 个人中心修改用户头像