一入坑便停不下来。。。 
还挺有意思的哈,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. MAGENTO for XAMPP install config -搬家配置与安装配置

    MEGENTO . 2.2.3 .   支持  PHP version is 7.0.2|7.0.4|~7.0.6|~7.1.0 虚拟机主机配置 环境扩展配置 其他错误 httpd-conf  ——  ...

  2. 基于Matlab实现多次最佳一致的函数逼近(类似求渐进函数)

    %%%做系统识别很重要,方法上完全符合系统识别最基础的理论 function [sun]=main(n) fplot(,],'r'); x=ones(n+,); :n+ x(j+)=cos(pi*(n ...

  3. 一个故事讲清楚BIO NIO 异步

    转载请引用:一个故事讲清楚NIO 假设某银行只有10个职员.该银行的业务流程分为以下4个步骤: 1) 顾客填申请表(5分钟): 2) 职员审核(1分钟): 3) 职员叫保安去金库取钱(3分钟): 4) ...

  4. (二叉树 递归) leetcode 144. Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. Example: Input: [1,null,2,3 ...

  5. [TJOI2007] 调整队形

    题目链接 区间 DP 的经典模型之一. 题意是将整个串通过四种操作变成一个回文串,根据套路,不难设计出 dp[i][j] 表示为使区间 [i, j] 成为回文串的最少操作次数. 先判断 a[i] 是否 ...

  6. Decision tree(决策树)算法初探

    0. 算法概述 决策树(decision tree)是一种基本的分类与回归方法.决策树模型呈树形结构(二分类思想的算法模型往往都是树形结构) 0x1:决策树模型的不同角度理解 在分类问题中,表示基于特 ...

  7. Entity Framework入门教程(1)---Entity Framework简介

    什么是Entity Framework 学习EF的前提:熟练使用Linq和Ado.net,因为在使用EF框架进行开发时,我们大多数情况使用Linq进行查询和操作,而EF的底层实现用的是Ado.net. ...

  8. .net Core 下数据库访问

    SqlSugar :是一款高性能(达到ADO.NET最高性能水平)SqlSugar :是除EF外拉姆达解析最完善的ORM,多表 .UnionALL. 交叉子查询.真实的批量操作和分页SqlSugar ...

  9. 第三节:框架前期准备篇之利用Newtonsoft.Json改造MVC默认的JsonResult

    一. 背景 在MVC框架中,我们可能经常会用到 return Json(),而Json方法内部又是一个JsonResult类,那么JsonResult内部又是什么原理呢?在MVC框架中,各种xxxRe ...

  10. [浏览器事件循环] javaScript事件循环 EventLoop

    前言 Event Loop即事件循环,是指浏览器或Node的一种解决javaScript单线程运行时不会阻塞的一种机制,也就是我们经常使用异步的原理. 先熟悉基本概念 [堆Heap] 堆是一种数据结构 ...