一、ESP8266入门(基于LUA开发)
序
一入坑便停不下来。。。
还挺有意思的哈,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
一、ESP8266入门(基于LUA开发)的更多相关文章
- 三,ESP8266 SPI(基于Lua脚本语言)
https://www.cnblogs.com/yangfengwu/p/7520260.html 重点是说SPI通信协议,,,, 不要害怕协议因为协议是人规定的,,刚好我也是人......规定的协议 ...
- ESP8266使用详解--基于Lua脚本语言
这些天,,,,今天终于看到了希望,,,天道酬勤 先说实现的功能...让ESP8266连接无线网,然后让它建立服务器,,我的客户端连接上以后,发给客户端发数据模块打印到串口,,往ESP8266串口里发数 ...
- 基于lua的网页脚本开发语言cgilua(转)
这里为大家介绍基于lua脚本实现的网页开发语言,cgilua 介绍 cgilua使用Lua是一个用于创建动态网页的服务器端脚本语言.纯LUA脚本和LUA页(LP)的支持,cgilua.Lua脚本是一个 ...
- 二,ESP8266 GPIO和SPI和定时器和串口(基于Lua脚本语言)
https://www.cnblogs.com/yangfengwu/p/7514336.html 我们写lua用这个软件 如果点击的时候提示安装,,安装就行,,如果没有提示呢可以,按照下面链接的提示 ...
- 一,ESP8266下载和刷固件(基于Lua脚本语言)
用自己的小板测试...... 安排上呢 一, ESP8266下载和刷固件(Lua开发----体验一下lua开发的魅力所在) 二, 控制一个灯亮灭 三, TCP服务器 四, TCP客户端 五, UDP ...
- OpenResty(Nginx+Lua)开发入门
Nginx入门 本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: nginx启动.关闭.重启 http://www.cnblogs.com/derekchen/archi ...
- 四,ESP8266 TCP服务器(基于Lua脚本语言)
我要赶时间赶紧写完所有的内容....朋友的东西答应的还没做完呢!!!!!!!没想到又来了新的事情,,....... 配置模块作为TCP服务器然后呢咱们连接服务器发指令控制LED亮灭 控制的指令呢咱就配 ...
- ESP8266 LUA脚本语言开发: 准备工作-LUA开发说明
前言 开发Lua需要使用这个软件 注:该软件需要按照JDK 即 JAVA虚拟机,如果没有安装过JDK,请先看JDK安装教程安装JDK USB线连接开发板接入电脑 选择自己的串口号 波特率115200 ...
- ESP8266 LUA脚本语言开发: 准备工作-LUA开发是怎么来的
前言 当前8266有各种开发 1.在官方已经封装好的C库上开发(SDK开发) 2.官方在SDK的基础上封装的AT指令程序(AT指令开发) 3.在SDK的基础上嵌入脚本语言(Lua,Python等开发方 ...
随机推荐
- [BZOJ 4818] [SDOI 2017] 序列计数
Description Alice想要得到一个长度为 \(n\) 的序列,序列中的数都是不超过 \(m\) 的正整数,而且这 \(n\) 个数的和是 \(p\) 的倍数. Alice还希望,这 \(n ...
- 通过SQL脚本来查询SQLServer 中主外键关系
在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主 ...
- java 发送 mail 纯文本发送和html格式发送
一:需要引入mail maven jar包 <!--邮件发送包--> <dependency> <groupId>javax.mail</groupId> ...
- go 数组 切片 字典 结构体
数组 ##数组的定义与赋值: 1. var num [3]int num = [3]int{1,2,3} 2. var num [3]int = [3]int {1,2,3} 3. num := [3 ...
- DirectX11 With Windows SDK--14 深度测试
前言 当使用加法/减法/乘法颜色混合,或者使用透明混合的时候,在经过深度测试时可能会引发一些问题.例如现在我们需要使用加法混合来绘制一系列对象,而这些对象彼此之间不会相互阻挡.若我们仍使用原来的深度测 ...
- css长度单位学习(em,rem,px,vw,vh)
绝对长度单位 绝对长度单位代表一个物理测量 [像素px(pixels)] 像素,为影像显示的基本单位,译自英文"pixel",pix是英语单词picture的常用简写,加上英语单词 ...
- [物理学与PDEs]第3章习题3电磁场的矢势在 Lorentz 规范下满足的方程
设 $\phi$ 及 ${\bf A}$ 分别为电磁场的标势及矢势 (见第一章 $\S$ 6). 试证明: 若 $\phi$ 及 ${\bf A}$ 满足条件 $$\bex \phi+\cfrac{1 ...
- 9、el表达式的使用
一.EL表达式的作用: 1).使用变量访问web域中存储的对象 ${user } 2).访问javabean的属性 ${user.address.city } 3).执行基本的逻辑运算(el表达式 ...
- Contest2161 - 2019-3-21 高一noip基础知识点 测试4 题解版
传送门 预计得分:100+100+100+10=310 实际得分:100+0+82+10=192 你们基础知识不行啊——by wxg T1 一看数据范围就是搜索 但是不能因为数据范围就断送了dp的心 ...
- 找不多控件, or 控件为null
组件化开发,命名要使用moudle区分, 同名,在最后合成的时候,会出现很多问题,