一入坑便停不下来。。。 
还挺有意思的哈,233,,,, 
资料杂,自己一个一个去找确实浪费了不少时间,而且大多还都是英文的,需要硬着头皮看。 
这次实践入门,更是对英语的重要确信无疑。Github必须要玩的6了,多好的东西啊,就那么放到你的眼前就因为你的不懂英文把人家拒之门外,可悲可怜可叹~ 
另外还对API文档也感悟颇深,多么详细的资料。多么好的教程,可惜自己以前就是不会用。哎~ >

不扯淡了,分享自己探索历程希望你可以少走弯路。

Lua初识

NodeMCU自带LUA的解释器,所以可以用LUA语言给其编写控制程序,LUA是一个轻量级的脚本语言,用C语言编写,编译后解释器大小仅仅100多K。LUA旨在针对内存有很大限制的嵌入式系统。NodeMCU还提供交互命令行环境,比Arduino的编程调试环境友好

NodeMCU还可以支持Arduino的IDE对其编程,简介参见这篇 
Blog:https://lifeinplaintextblog.wordpress.com/nodemcu-arduino-ide-2/ 
首先你要知道它是一个脚本语言,如果你有学过脚本语言比如JS、python的话,直接看API文档就差不多了。

突然有那么点感悟,脚本语言似乎大同小异,虽然我还是个渣渣。脚本语言真的好写好用,好玩,哈哈哈哈哈~~~

当然了呢,如果你未曾学过任何脚本语言的话这个当然也可以作为你的第一门脚本语言来学习,入门个人感觉也是相当快的,不会了再记得查API文档就行了。

(在NodeMCU的学习更新中还会再开一个专题来记录下Lua)

NodeMCU的两种开发方式一种是AT命令, 
另一种就是基于Lua的开发了。(目前自己是这么理解的)

所以呢,入门NodeMCU第一步当然是入门Lua了。

NodeMCU

像 Arduino 一样操作硬件 IO 提供硬件的高级接口,可以将应用开发者从繁复的硬件配置、寄存器操作中解放出来。

用交互式 Lua 脚本,像 Arduino 一样编写硬件代码!

用 Nodejs 类似语法写网络应用 事件驱动型 API 极大的方便了用户进行网络应用开发,使用类似 Nodejs 的方式编写网络代码,并运行于 5mm*5mm 大小的 MCU 之上,加快物联网开发进度。

超低成本的 WIFI 模块 用于快速原型的开发板,集成了售价低于 10 人民币 WIFI 芯片 ESP8266,提供性价比最高的物联网应用开发平台。

基于乐鑫 ESP8266 的 NodeMCU 开发板,具有 GPIO、PWM、I2C、1-Wire、ADC 等功能,结合 NodeMCU 固件为开发提供最快速的途径。 

这个开发板的名字叫 NodeMCU DevKit 别问我为啥,乐鑫爸爸起的好名字。

NodeMCU —> 节点微控制单元

ESP8266也只是一款芯片而已,ESP 12E是用ESP8266做的WiFi模块

刷固件 
怎么样?固件!! 
牛逼不?哈哈哈,,, 
其实呢?不然,当你习惯它的叫法就好了。不就是个底层嘛,有啥了不起嘞!:)tao

什么叫固件?

就是ESP8266芯片内部预先写入的程序,可以简单记忆为:固定在芯片里的软件叫固件。 
固件是基础程序,本事再大的芯片也需要固件的支持才能运行高级程序。 固件是硬件的命根子。

刷固件的软件这里取: 
https://github.com/nodemcu/nodemcu-flasher

-注意下载的系统位数要对应

然后呢,开始我们的表演:

第一步

选择现有的固件: 
固件去哪搞嘞?

你可以自己写SDK,当然对于我们新手一般上不了那种高度。

巧了,人家有个自定义模块固件!! 
https://nodemcu-build.com/

选择master 
 
自定义模块提供了各种各样的模块,包括

传感器,LED驱动,通信协议等等,选择自己感兴趣的模块。 默认已经选择了一些模块。

提交后,过一会就会收到邮件。 邮件里面有两个bin文件的下载地址,一个是float,一个是integer。 
float的比较大,下载那个任君选择,区别是带不带float。

我选择了 

adc,bit,,coap,crypto,enduser_setup,file, 
rtcfifo,rtcmem,rtctime,sjson,sntp,tmr,uar, 
twebsocket,wifi,ws2812

杂项(不选也没啥事) 

对了关于上面的邮箱(不支持QQ,可以申请微软的OutLook) 
注意输入两次,并且第二次不能复制,完了之后稍等片刻,就可以收到编译好的bin文件直接用就行。

如果采用SDK开发的话,直接可以用eclipse编译的Bin文件就行

第二步:

打开刷固件的软件,“Config”下选择你要的bin 文件 

然后“Operation”中点击Flash就可以开始刷了

更新:

不知道啥时候这个固件上面加了新选项功能: 

关于那个第二个的 ‘Debug On’倒是对于调试挺好用的! 
第三个现在没试过,欢迎在下面占坑评论!

ESPlorer编写程序

下载:https://esp8266.ru/esplorer/ 

一般自动选择COM口,如果没有选择再手动来一下就OK。 
编写第一个小程序“HelloWorld”

tmr.alarm(0, 1000, tmr.ALARM_AUTO, function()
print("Hello NodeMCU!\n")
end
)
  • 1
  • 2
  • 3
  • 4

lua补充:

tmr.alarm(1,2,3,4)

4个参数的含义分别为定时器×、定时间ms、模式、回调函数 
模式有三个可供选择:

tmr.ALARM_AUTO –>自动重置 
tmr.ALARM_SINGLE–>单次触发 
tmr.ALARM_SEMI –>手动重置

今天遇到几个问题记录一下: 
也许你也会遇到: 
①固件烧完之后,怎么下程序都下不进去的问题解决

其实也不是程序的问题,更不是固件的问题。而是波特率的选择问题,查阅的网上的说法,没有一个标准的,实践也没有发现固定的,也许超出自己的知识体系吧。一般而言,所谓的一般从云编译下载的固件,波特率选择115200

而我在实验杨大神的这个实验的时候发现,115200不行,必须改为9600才行。 
传送门:http://www.cnblogs.com/yangfengwu/p/6243619.html

更新:

随着理解的加深,这里对固件稍写不进去的情况进行个人认知层面的简单分析。

首先呢,要知道程序的下载是通过串口的,当然你如果之前的程序是有关操作串口的话,如果模块一上电,就开始执行我们之前的程序,我们新写的程序也得通过串口烧录,那么结果可想而知了!怎么办呢?

莫急。。。。。。

解决方案:

1. 多次重复烧写固件 
无奈中的无奈之举,效果然而也并不是非常好,这种办法能不能治好看你运气了!

2.刷写LUA固件和AT交叉进行

3. 进行地址改写(这个方法我觉得应该是最实用的!!!) 
怎么个改写地址法呢?看图,一切都明白了! 
 
就是想法把原来的lua操作串口的程序给破坏掉,而我们的程序又是在FLASH中,那么多次改变烧录地址,不就很有可能给刷掉吗?!!!

像这种情况怎么避免呢?

简单,你想啊,为了留有时间下载程序,哦不,应该讲清除你之前的程序,你完全可以用定时器进行定时,等多久后再执行你现在的程序啊。 
在这期间,可以疯狂地进行

file.remove("init.lua");

②部分固件的更新导致语句有所变化

后来也是杨大神帮忙解决的,非常感谢。 
具体的修改杨大神也在它的博客写了。 
传送门:http://www.cnblogs.com/yangfengwu/p/6407727.html

记录一下两次的代码

old:
wifi.setmode(wifi.STATIONAP)
wifi.sta.config("ACLAY","wange903")
wifi.sta.connect() new:
wifi.setmode(wifi.STATION)
APConfig={}
APConfig.ssid="ACLAY"
APConfig.pwd="wange903"
wifi.sta.config(APConfig)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
版权声明:转载记得声明~~~ :) https://blog.csdn.net/ReCclay/article/details/77726095
文章标签: NodeMCU
个人分类: ESP8266之LUA开发

一、ESP8266入门(基于LUA开发)的更多相关文章

  1. 三,ESP8266 SPI(基于Lua脚本语言)

    https://www.cnblogs.com/yangfengwu/p/7520260.html 重点是说SPI通信协议,,,, 不要害怕协议因为协议是人规定的,,刚好我也是人......规定的协议 ...

  2. ESP8266使用详解--基于Lua脚本语言

    这些天,,,,今天终于看到了希望,,,天道酬勤 先说实现的功能...让ESP8266连接无线网,然后让它建立服务器,,我的客户端连接上以后,发给客户端发数据模块打印到串口,,往ESP8266串口里发数 ...

  3. 基于lua的网页脚本开发语言cgilua(转)

    这里为大家介绍基于lua脚本实现的网页开发语言,cgilua 介绍 cgilua使用Lua是一个用于创建动态网页的服务器端脚本语言.纯LUA脚本和LUA页(LP)的支持,cgilua.Lua脚本是一个 ...

  4. 二,ESP8266 GPIO和SPI和定时器和串口(基于Lua脚本语言)

    https://www.cnblogs.com/yangfengwu/p/7514336.html 我们写lua用这个软件 如果点击的时候提示安装,,安装就行,,如果没有提示呢可以,按照下面链接的提示 ...

  5. 一,ESP8266下载和刷固件(基于Lua脚本语言)

    用自己的小板测试...... 安排上呢 一, ESP8266下载和刷固件(Lua开发----体验一下lua开发的魅力所在) 二, 控制一个灯亮灭 三, TCP服务器 四, TCP客户端 五, UDP ...

  6. OpenResty(Nginx+Lua)开发入门

    Nginx入门 本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: nginx启动.关闭.重启 http://www.cnblogs.com/derekchen/archi ...

  7. 四,ESP8266 TCP服务器(基于Lua脚本语言)

    我要赶时间赶紧写完所有的内容....朋友的东西答应的还没做完呢!!!!!!!没想到又来了新的事情,,....... 配置模块作为TCP服务器然后呢咱们连接服务器发指令控制LED亮灭 控制的指令呢咱就配 ...

  8. ESP8266 LUA脚本语言开发: 准备工作-LUA开发说明

    前言 开发Lua需要使用这个软件 注:该软件需要按照JDK  即 JAVA虚拟机,如果没有安装过JDK,请先看JDK安装教程安装JDK USB线连接开发板接入电脑 选择自己的串口号 波特率115200 ...

  9. ESP8266 LUA脚本语言开发: 准备工作-LUA开发是怎么来的

    前言 当前8266有各种开发 1.在官方已经封装好的C库上开发(SDK开发) 2.官方在SDK的基础上封装的AT指令程序(AT指令开发) 3.在SDK的基础上嵌入脚本语言(Lua,Python等开发方 ...

随机推荐

  1. [SimplePlayer] 3. 视频帧同步

    Frame Rate 帧率代表的是每一秒所播放的视频图像数目.通常,视频都会有固定的帧率,具体点地说是每一帧的时间间隔都是一样的,这种情况简称为CFR(Constant Frame Rate);另外一 ...

  2. 用UE4蓝图制作FPS_零基础学虚幻4第二季

    课时1:案例演示 05:12 课时2:工程准备 07:35 (把一个项目从一个工程移动到另一个工程) 1.新建一个空白工程,不包含初学者内容 2.选择我们要复制的工程,按右键,如下图: 复制到新工程的 ...

  3. Zookeeper 启蒙

    2018-12-14 关键词: Zookeeper入门介绍 . Zookeeper是什么.Zookeeper架构解析.Zookeeper应用场景.Zookeeper有什么用 本篇文章系笔者依据当前所掌 ...

  4. bzoj 1208: [HNOI2004]宠物收养所 (Treap)

    链接:  https://www.lydsy.com/JudgeOnline/problem.php?id=1208 题面: 1208: [HNOI2004]宠物收养所 Time Limit: 10 ...

  5. LoadRunner【第二篇】原理及使用流程

    loadrunner工作原理 性能测试只关注底层数据,不关注业务,不关注客户端动作.所以,脚本运行正确不一定业务就正确(业务是否正确,如果是查询,我们可以通过检查点来判断:如果是增删改操作,可以看通过 ...

  6. Day049--jQuery的文档操作和事件介绍

    今日内容 DOM操作(CRUD) js中DOM document.createElement('p') appendChild() insertBefore() removeChild() 创建元素 ...

  7. 3537. 【NOIP2013提高组day2】华容道(搜索 + 剪枝)

    Problem 给出一个类似华容道的图.\(q\)次询问,每次给你起始点,终止点,空格位置,让你求最少步数 \(n,m\le 30, q\le 500\). Soultion 一道智障搜索题. 弱智想 ...

  8. ComboBox下拉列表框

    属性:DropDownStyle(下拉.可编辑等).Items(条目) 事件:SelectedIndexChanged选择项改变触发 Items内容:总经理.副总经理.财务部 DropDownStyl ...

  9. JS学习笔记Day14

    一.正则表达式 (一)正则的概念 1.正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符 (二)创建正则的方式 1.字面量的 ...

  10. css 函数

    css还有一些强大的函数: 1. calc 可以混合多种单位来计算 div { font-size: calc(100vw/5 + 1rem - 100px) } 2. max.min.clamp m ...