一入坑便停不下来。。。 
还挺有意思的哈,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. [模板] CDQ分治&&BZOJ3262:陌上花开

    简介 CDQ分治是分治的一种, 可以看做归并排序的扩展, 利用离线将一些 \(O(n)\) 的暴力优化到 \(O(log n)\). 它可以用来顶替一些高级(log)数据结构等. 一般地, CDQ分治 ...

  2. bugku web web基础

    web基础$_GET $what=$_GET['what'];echo $what;if($what=='flag')echo 'flag{****}'; 看了这段代码知道,需要用get提交what= ...

  3. 高斯消元(Gauss消元)

    众所周知,高斯消元可以用来求n元一次方程组的,主要思想就是把一个n*(n+1)的矩阵的对角线消成1,除了第n+1列(用来存放b的)的其他全部元素消成0,是不是听起来有点不可思议??! NO NO NO ...

  4. Vivado中VIO核使用

    前言 使用场景:在使用In system debug时需要使用按键触发查看相关信号,但不想用板子上的按键. VIO:Virtual input output,即虚拟IO. 主要用作虚拟IO使用:VIO ...

  5. di.xml

    di.xml文件 该di.xml文件配置对象管理器要注入的依赖项. 领域和应用入口点 每个 模块 都可以具有全局和区域特定的di.xml文件.Magento读取di.xml系统中声明的所有配置文件,并 ...

  6. php中fastcgi和php-fpm是什么东西

    参考和学习了以下文章: 1. mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据 2. 实战Nginx_取代 为了如何一步步的引出fastcgi和php-fpm,我先一点一 ...

  7. Java【第四篇】基本语法之--循环

    循环语句功能 在循环条件满足的情况下,反复执行特定代码 循环语句的四个组成部分 初始化部分(init_statement)循环条件部分(test_exp) 循环体部分(body_statement) ...

  8. Pandas系列(四)-文本数据处理

    内容目录 1. 为什么要用str属性 2. 替换和分割 3. 提取子串 3.1 提取第一个匹配的子串 3.2 匹配所有子串 3.3 测试是否包含子串 3.4 生成哑变量 3.5 方法摘要 一.为什么要 ...

  9. mysql My SQL获取某个表的列名

    My SQL获取某个表的列名 DESC TableName SHOW COLUMNS FROM TableName SELECT COLUMN_NAME  FROM information_schem ...

  10. MySQL学习笔记(一)Ubuntu16.04中MySQL安装配置(5.6优化、错误日志、DNS解决)

    目录 第一部分.5.6安装.配置.自动备份 第二部分.5.7源码安装.配置.自动备份 第一部分.5.6安装 1.安装mysql sudo apt-get install mysql-server su ...