python esp8266模块_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(如下图):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础C#总结

由于在学习c#这段视频是为了辅助设计模式的学习,这部分的内容也和VB的内容很大程度上是一样的.虽然在开始的 时候,有些困难.在接触了一些例子和实验后.理解起来变得顺畅了很多.下面是对c#基础内容的总结.很多内容都在VB中有 过接触,所以都是些基础知识.捋一捋,将这些时间脑子的…

e站app改内置hosts_米家踢脚线电暖器E评测:符合现代家居审美 全屋取暖“小钢炮”...

【科技犬】对于没有集中供暖的长江中下游地区居民而言,电暖器是不折不扣的"保命神器"。而在深秋的北方,昼夜温差较大,这种时候使用灵活、易于搬运的电暖器也成为更加明智的选择。在北方每年的冬季,室内温度就直接关系着…

asterisk libxml2

asterisk 在configure的时候,会去/usr/bin下检查有没有xml2-config这个可执行文件,还回去检查 编译的工具链中有没有libxml2.so这个库文件,即使是交叉编译,/usr/bin下应该也是上位机的xml2-config 而且xml2-config和libxml2.so的…

锐炬显卡可以linux吗,Intel Broadwell桌面CPU性能测试:Iris Pro 6200核显无敌了

Intel已经在Computex 2015发布了Broadwell-H桌面版处理器,分别有Core i7-5775C和Core i5-5765C两款,另有3款BGA封装的嵌入式型号。它们的特色是内置Intel史上最强Iris Pro 6200核显、以及较大的超频空间。这款处理器现在已经解禁,发布了评测&…

经纬度转化为xy坐标系_Arcgis添加经纬度矢量点

今天帮舍友作图,才体会到九边说的。学技术使人清醒,清醒的认识自己能力有限。少去网上怨天怨地,踏踏实实去提升实力。这是她给我的原始数据,一堆经纬度点。首先我们先进行数据去重,当然这一步可以根据自己数据考虑是否…

CSS中class优先级问题

CSS中class样式的优先级&#xff08;或者层叠效果&#xff09;是根据class在<style>或者css文件中定义的顺序比较&#xff0c;而不是根据class应用的顺序&#xff0c;定义越靠后优先级越高&#xff1b;如 <html> <style>.class1{color:red;}.class2{color:bl…

惊群现象

引用&#xff1a;http://www.cppblog.com/isware/archive/2011/07/20/151470.aspx-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------“据说”…

物联网课程学习目标_学习攻略|软件工程统计方法amp;amp;物联网

软件工程统计方法&&物联网任课老师&#xff1a;余松森&#xff0c;葛红课程特点及困难本课程的主要内容涉及统计机器学习方法&#xff0c;以及如何采用Python进行应用实现。同学们在学习中主要遇到以下问题&#xff1a;1、在课程内容方面&#xff0c;课本上的关于pytho…

笨办法学linux dhcp,iptables使用指南(上)

iptables-save用来把当前的规则存入一个文件里以备iptables-restore使用。它的使用很简单&#xff0c;只有两个参数&#xff1a;iptables-save [-c] [-t table]参数-c的作用是保存包和字节计数器的值。这可以使我们在重启防火墙后不丢失对包和字节的统计。带-c参数的iptables-s…

tdk怎么设置_你真的做好网站的标题、描述、关键词(TDK)设置了吗?

SEO其实是个苦活累活&#xff0c;大部分的工作都是在每日不断的坚持与重复。当然也是个细致活&#xff0c;很多的工作都是对一些细节问题的处理。可能平时你没留意到的地方&#xff0c;就是你的网站数据没能上来的原因。比如说SEO的基础设置&#xff1a;TDK。说到TDK(标题、描述…

流言终结者——C语言内存管理

写在前头&#xff1a; 我不能保证此文中&#xff0c;我的观点和理解全是对的&#xff0c;这也不是一篇教学贴&#xff0c;只是我偶尔突发奇想了几个特殊的场景&#xff0c;然后用实验得到结果&#xff0c;对结果进行分析&#xff0c;遂成此文。所以文中肯定存在错误&#xff0c…

mediastreamer2 的简介

原文&#xff1a;http://www.linphone.org/eng/documentation/dev/mediastreamer2.htmlMediastreamer2 是一个功能强大且小巧的流引擎&#xff0c;专门为音视频电话应用而开发。这个库为linphone中所有的接收、发送多媒体流提供处理&#xff0c;包括音/视频捕获&#xff0c;编码…

C# 监控字段_监控交换机选择:千兆/百兆/核心/PoE/光纤交换机选型指南

我们就交换机选型时的四个主要方面讲一下。01选择千兆还是百兆&#xff1f;视频监控系统的网络中&#xff0c;需要传输大量、持续的视频数据&#xff0c;这就要求交换机具有稳定转发数据的能力。交换机接入的摄像头数量越多&#xff0c;流经该交换机的数据量就会越大。我们可以…

python 头条 上传_Python+selenium自动化之文件上传

邮箱的主要功能就是邮件消息的收发阅读&#xff0c;之前的文章写了邮件的查收和编写&#xff0c;本篇介绍邮件的附件上传。还是以腾讯企业邮箱为例&#xff0c;进行实际案例操作。文件上传的实现大体分为两种&#xff0c;一种是input标签&#xff0c;一种非input标签。腾讯企业…

JAVA学习笔记——JAVA基础语法之精华

一、标识符 概念&#xff1a;JAVA里面我们可以给他取名字的&#xff08;变量、类、方法等等&#xff09;就是标识符&#xff1a; 注意&#xff1a;1、标识符只能包含字母、数字、下划线还有美元符号$ 2、只能以字母、下划线和美元符号开头 二、变量 概念&#xff1a;JAVA中储存…

编译mediastreamer2/ffmpeg/linphone(x86平台)

--------------------------在x86环境下编译mediastreamer2的步骤--------------------------------------1&#xff09;编译OGG库 音频编解码 http://www.xiph.org/downloads/ ./configure --prefix/usr --disable-static 2&#xff09;编译SPEEX 音频编解码./configure -…

c语言 行程长度编码,C语言编程题,求大佬帮助,关于数组的。

满意答案6kidf3xhs2017.11.07采纳率&#xff1a;41% 等级&#xff1a;8已帮助&#xff1a;62人2 个关键&#xff1a;2位数字的随机数&#xff1a; a[i] 10 rand() % 90;10位或个位 含5 的 并高于平均值的 数&#xff1a;if (a[i]>ave && ( a[i]%50 || (a[i]/10)…

python多级字典嵌套_使用pythonscsv DictReader创建多级嵌套字典

完全是Python noob&#xff0c;可能遗漏了一些明显的东西。我到处找遍了&#xff0c;还没有找到解决办法&#xff0c;所以我想我应该寻求一些帮助。在我正在尝试编写一个函数&#xff0c;它将从一个大的csv文件构建一个嵌套字典。输入文件的格式如下&#xff1a;Product,Price,…

wpf学习笔记二 深入学习 xaml

1、XAML 主要用于绘制UI界面&#xff0c;最大的优点是能使UI与运行逻辑分离开来&#xff0c;使得整个程序回到逻辑处理上来。 每一个标签对应.NET Framework类库的一个控件类。通过设置标签的Attribute&#xff0c;不仅可以对标签所对应的控件 对象Property进行赋值&#xf…

cortex a7 a53_小号“A7”终于亮相,配4米9车长 大溜背!堪称15万内最强颜值!

原标题&#xff1a;小号“A7”终于亮相&#xff0c;配4米9车长 大溜背&#xff01;堪称15万内最强颜值&#xff01;今天来推荐一款b级轿车&#xff0c;大家都知道现在国内热度最高的就上suv车型了&#xff0c;但是销量最高的车型依旧还是轿车车型&#xff0c;因为轿车车型的粉丝…