原文:NodeMCU(ESP8266)开发笔记

1.NodeMCU简介

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 固件为您的原型开发提供最快速的途径。

其硬件详细配置如下:

  • 核心模组为 ESP8266
  • MCU 为 Xtensa L106
  • RAM 50K
  • Flash 512K
  • D1~D10:10 GPIO, 每个都能配置为 PWM, I2C, 1-wire

有两种串口配置

  • CP2102 USB 串口,即插即用(官方驱动支持 Windows, OS X,Linux 以及 VMware)
  • CH340 USB 串口,国内用的较多,需要安装ch340驱动。
    注:VMware中,安装Ubuntu系统,只需在主机中安装驱动即可。然后将设备连接到VMware中。虚拟机->可移动设备,可以看到ch340设备,点击连接即可。

CP2102版本
这里写图片描述

CH340版本
这里写图片描述

2.开发环境

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 对各自的安装做了说明,请予以参考。

3.操作步骤

以Windows 和 VMware下Ubuntu环境为例(CH340版本):


Windows环境下NodeMCU开发

需要用到的工具:

  • sciTe –lua开发环境,用于lua学习。具体参考:http://www.runoob.com/lua/lua-environment.html
    注:在安装过程中,如果连接服务器失败。可以自行下载所需的库,然后重新进行安装。
  • CH340驱动
  • ESP8266Flasher – 烧录ESP固件
  • ESPlorer – 类似于串口调试助手,用于和NodeMCU进行交互,也可以上传lua脚本
    注:需要java环境,需要安装JDK。
  • Fans_ESP8266_SDK_Make.exe – 编译ESP固件 具体参考:http://blog.csdn.net/u013636122/article/details/50630235

(1)安装CH340驱动

下载CH340驱动,安装之后。
右击 我的电脑->管理->设备管理器->端口(COM和LPT) 可以看到ch340驱动以及串口号。

(2)获取固件

有三种方式可以得到固件:

  1. NodeMCU提供了在线云编译,选择好需要的模块,填写邮箱地址,很快会发到邮箱中。参考:https://nodemcu-build.com/(推荐)

  2. 下载别人编译好的固件包。

  3. 自行编译,得到固件包。

(3)固件烧录

设置好串口号
点击Config->点击小齿轮按钮,设置好得到的固件路径
点击Flash
这里写图片描述
这里写图片描述

这里写图片描述

(4)开始使用

  1. 打开ESPlorer.jar,会看到如下界面:
    这里写图片描述
    注:ESPlorer需要安装JDK环境

  2. 点击刷新按钮,选择串口号,点击open,会显示正在连接。如果好长时间连接不上,可以按一下NodeMCU上的reset按钮。会显示出固件信息,点击Chip ID,会返回ID信息,说明交互正常。

  3. 右边区域是交互页面,会显示交互信息
    左下有一行输入框,可以输入需要执行的命令,也可以在下拉菜单中选择,点击send发送。
    命令参考:
    https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn
    如:

    >print(“Hello,NodeMCU”)  
    >Hello,NodeMCU  
    
    • 1
    • 2

这里写图片描述
4. 左边区域是lua脚本编写区域。

编写好lua脚本,点击Send to ESP,可以看到右边区域开始上传代码,结束之后。代码开始执行,右边区域显示交互信息。
点击 Upload ,将代码上传到NodeMCU, 命令行输入dofile(“filename.lua”),开始执行filename.lua。
注:如果在Send 或者 Upload 失败,可以按reset之后,多次尝试。
这里写图片描述
注:Save to ESP、Send to ESP、Run、Upload四种有些区别,可以自己去发现,本人没有深究。


Vmare下Ubuntu环境开发

注: 本人使用的版本

  • VMware workstations 12 pro
  • Ubuntu 14.0 Desktop

需要用到的工具:

(1)下载安装ch340驱动

需要主机安装驱动,然后VMware中点击 虚拟机->可移动设备 可以看到ch340设备,点击连接。

dmesg  命令查看已经安装的ch340驱动  
ls -l /dev/ttyUSB0   查看驱动安装的时间等  

(2)安装minicom

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 :设置串口

(3) 下载并烧录esp固件

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() 格式化文件系统

(4) 下载并安装luatool

测试过两个工具都可以用来上传 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    

(5)开始使用

$ 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 获得帮助

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐