注:本文部分摘自于http://www.tinylab.org/nodemcu-kickstart/
NodeMCU 是一款开源的物联网开发平台,其固件和开发板均开源,自带 WIFI 模块。基于该平台,用几行简单的 Lua 脚本就能开发物联网应用。
其主要特点如下:
像 Arduino 一样操作硬件 IO 提供硬件的高级接口,可以将应用开发者从繁复的硬件配置、寄存器操作中解放出来。用交互式 Lua 脚本,像 Arduino 一样编写硬件代码!
用 Nodejs 类似语法写网络应用 事件驱动型 API 极大的方便了用户进行网络应用开发,使用类似 Nodejs 的方式编写网络代码,并运行于 5mm*5mm 大小的 MCU 之上,加快您的物联网开发进度。
超低成本的 WIFI 模块 用于快速原型的开发板,集成了售价低于 10 人民币 WIFI 芯片 ESP8266,为您提供性价比最高的物联网应用开发平台。
基于乐鑫 ESP8266 的 NodeMCU 开发板,具有 GPIO、PWM、I2C、1-Wire、ADC 等功能,结合 NodeMCU 固件为您的原型开发提供最快速的途径。
其硬件详细配置如下:
有两种串口配置
NodeMCU 目前支持的开发主机系统类型涵盖 Windows,Linux 和 Mac OS X,也支持通过 VMware 虚拟机搭建的 Linux 环境。
需要提到的是,如果用虚拟机的话,请优先用 VMware 而不是 VirtualBox。虽然用 VirtualBox 也能够通过串口虚拟化 进行 Lua 开发,但是由于 VirtualBox 无法虚拟 uhci 的 cp210x,所以 VirtualBox 中的 Linux 上就无法直接烧录固件,会很不方便。
下面是我们推荐的优选开发环境:
纯 Linux(首推 ubuntu)
在 Mac OS X 上安装 VMware,在 VMware 中运行 Linux(首推 Lubuntu)
在 Windows 上安装 VMware,在 VMware 中运行 Linux(首推 Lubuntu)
本文主要介绍上述三种,实际上核心还是 Linux 开发环境,后面两个只要额外安装 VMware 并在主机上也安装上 USB 串口驱动即可。
如果大家手头没有 Linux 环境,那么建议通过 VMware 来安装 Linux,这样更安全可靠,避免搞坏原来的系统。
VMware 可以从官方下载,安装好以后再从 Ubuntu 官方下载 Lubuntu 14.04 ISO,之后启动 VMware 来安装 Lubuntu。安装时先创建/Add 一个 Lubuntu(Create a custom virtual machine -> Linux -> Ubuntu 64bit),之后通过设置/Settings 选择 Startup Disk 从 CD/DVD 启动安装,选择刚下载的 ISO,安装成功后,再通过 Startup Disk 选回从 Hard Disk(SCSI) 启动即可。
至于纯 Windows 或者纯 Mac OS X 环境,都不推荐,因为在 Linux 下,一条命令就可以安装所需的大部分工具,而在 Windows 和 Mac OS X 会浪费掉大量的时间去不同地方找不同工具,然后再花费更多倍的时间去解决各类软件编译和安装问题,事倍功半。而且 OS X 对于基本的开发环境,往往还存在收费服务,实在是不友好,珍惜生命,远离它们!
但是如果真地厚爱它们,大家还是可以通过参考后续资料,尤其是 Noduino/Noduino SDK 相关部分,很详细地介绍到了 Windows 和 Mac OS X 的开发环境,另外,参考资料中的其他软件或者工具基本都有提供 README.md 对各自的安装做了说明,请予以参考。
下载CH340驱动,安装之后。
右击 我的电脑->管理->设备管理器->端口(COM和LPT) 可以看到ch340驱动以及串口号。
有三种方式可以得到固件:
NodeMCU提供了在线云编译,选择好需要的模块,填写邮箱地址,很快会发到邮箱中。参考:https://nodemcu-build.com/(推荐)
下载别人编译好的固件包。
自行编译,得到固件包。
设置好串口号
点击Config->点击小齿轮按钮,设置好得到的固件路径
点击Flash
点击刷新按钮,选择串口号,点击open,会显示正在连接。如果好长时间连接不上,可以按一下NodeMCU上的reset按钮。会显示出固件信息,点击Chip ID,会返回ID信息,说明交互正常。
右边区域是交互页面,会显示交互信息
左下有一行输入框,可以输入需要执行的命令,也可以在下拉菜单中选择,点击send发送。
命令参考:
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn
如:
>print(“Hello,NodeMCU”)
>Hello,NodeMCU
编写好lua脚本,点击Send to ESP,可以看到右边区域开始上传代码,结束之后。代码开始执行,右边区域显示交互信息。
点击 Upload ,将代码上传到NodeMCU, 命令行输入dofile(“filename.lua”),开始执行filename.lua。
注:如果在Send 或者 Upload 失败,可以按reset之后,多次尝试。
注:Save to ESP、Send to ESP、Run、Upload四种有些区别,可以自己去发现,本人没有深究。
注: 本人使用的版本
需要主机安装驱动,然后VMware中点击 虚拟机->可移动设备 可以看到ch340设备,点击连接。
dmesg 命令查看已经安装的ch340驱动
ls -l /dev/ttyUSB0 查看驱动安装的时间等
minicom为linux下串口通信工具,用做NodeMcu调试
$ sudo apt-get install minicom -- 下载安装minicom
$ sudo minicom -D /dev/ttyUSB0 -- 使用-D可以指定串口设备
进入minicom之后,可以通过crtl-A进入设置模式,然后按 A - Z 键进入不同的设置界面。
常用的按键:
Q :退出minicom
L :保存串口日志
Z :获得帮助
P :设置串口
NodeMCU提供了在线云编译,选择好需要的模块,填写邮箱,很快会发到邮箱中,链接:https://nodemcu-build.com/
也可以自己进行编译,在https://github.com/nodemcu/nodemcu-firmware/releases/下载源代码。
也可以使用
$ wget -c https://github.com/nodemcu/nodemcu-firmware/``releases/download/0.9.6-dev_20150704/nodemcu_float_0.9.6-dev_20150704.bin
下载别人编译好的固件
接着咱们把烧录工具 esptool.py 下载下来。同时安装其他必要工具。
$ sudo apt-get install git python python-serial python-setuptools
$ git clone https://github.com/themadinventor/esptool.git
$ cd esptool
$ python setup.py install
接着通过 esptool.py 烧录固件:
$ sudo esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m -ff 40m 0x00000 nodemcu_float_0.9.6-dev_20150704.bin
烧录完以后按下 RST 重启进入新固件。
sptool.py 烧写时默认的通信波特率为 115200,为了加速烧写速度,可以通过 –baud 921600 设置为 921600。
开机之后可以通过
file.format() 格式化文件系统
测试过两个工具都可以用来上传 Lua 程序,分别是:
luatool.py:可用于命令行传送 Lua 脚本,无须复杂的图形化工具支持,同时支持通过串口和 Telnet 上传
nodemcu.py:除了不支持通过 Telnet 上传外,基本功能同 luatool,只是操作方式稍有差异
下载上述工具:
$ git clone https://github.com/4refr0nt/luatool.git
$ git clone https://github.com/md5crypt/nodemcu.py.git
两个都可以进行文件传输,第二个还可以作为串口终端,两个都依赖 pySerial,第二个还需要安装 clipboard:
$ easy_install clipboard
$ minicom -D /dev/ttyUSB0 --进入串口助手
file.format() --格式化文件系统
print(“Hello,NodeMCU”) --打印字符串
gpio.mode(0, gpio.OUTPUT) --设置0脚为输出模式
gpio.write(0, gpio.LOW) --0脚置低
gpio.write(0, gpio.HIGH) --0脚置高
node.restart() --重启NodeMCU
以上是通过串口操作执行每条命令,可以通过luatool批量上传,将脚本提前写好进行批量上传。
在上传前,写好一个lua脚本
$ vi test.lua
print('Hello, NodeMCU 1.0')
gpio.mode(4, gpio.OUTPUT)
gpio.write(4, gpio.LOW)
通过luatool上传
$ cd /luatool
$ sudo ./luatool.py -p /dev/ttyUSB0 -b 9600 -f test.lua -r
上传完成之后,
$sudo minicom -D /dev/ttyUSB0 --进入minicom
dofile("test.lua") --执行test脚本
-p 指定上传设备
-b 设置波特率
-f 指定脚本路径
-r 上传完重启
-h 获得帮助