首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

NodeMCU 及其 DEVKIT 开发板进阶

NodeMCU 及其 DEVKIT 开发板进阶

创建您的自定义 NodeMCU 固件
创建您自己的自定义 NodeMCU 固件。,并选择您想要的选项。
图 3. 配置并创建您自己的 NodeMCU 固件除了标准(默认)选择之外,您可能还想选择以下这些重要选项:
  • ADC:支持对 NodeMCU 开发板的 A0 引脚上的模拟输入(电压电平)进行测量。
  • HTTP:支持编写代码来处理 HTTP 请求。
  • SSL / TLS:支持 HTTPS 安全连接。
  • MQTT:支持 MQTT 协议使用基于 TCP/IP                    的发布/订阅模型向其他设备或服务器发送数据。
  • Websocket:一个便捷的库,用于访问基于 websocket 的 Web 服务。
  • DHT:一个便捷的库,用于从 DHT 系列环境传感器读取数据。
  • 最终用户设置:支持使用 “捕获门户” 让用户输入自己的 Wifi 密码,而无需将 Wifi                    凭证硬编码到应用程序代码中。
创建固件后,系统将通过电子邮件向您发送一个下载固件二进制文件的链接。选择支持浮点数的构建版本,除非您知道您的应用程序将仅处理整数。
1c

将固件闪存写入 NodeMCU 设备

安装 esptool Python 库,使用它将刚下载的固件闪存写入 NodeMCU 设备。
使用 Python 和 pip,运行以下命令来安装 esptool 和它的所有依赖项。
sudo pip install esptool
使用 USB 线将 NodeMCU 设备连接到计算机。NodeMCU                上的蓝灯将在连接时短暂闪烁。然后,运行以下命令来将刚下载的固件(*.bin 文件)闪存写入 NodeMCU。
esptool.py --port=/dev/cu.SLAB_USBtoUART  write_flash  -fm=dio -fs=32m 0x00000 nodemcu-master-10-modules-2017-01-28-02-40-34-float.bin
在 Mac 上,端口是上面介绍的 /dev/cu.SLAB_USEtoUART;在 Windows 上,端口可能是                COM8;在 Linux 上,端口可能是 /dev/ttyUSB0。
1d

运行一些 Lua 代码

连接到您的 NodeMCU,运行一些 Lua 代码。幸运的是,在安装 esptool 时,系统还安装了                miniterm 作为依赖项。所以请继续运行以下命令。
miniterm.py /dev/cu.SLAB_USBtoUART




现在,按下 NodeMCU 开发板上的 RESET 按钮,然后按下计算机键盘上的 RETURN                键几次。您首先会看到一些随机字符,最后会看到一个交互式命令提示符。
--- Miniterm on /dev/cu.SLAB_USBtoUART  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
␒�␁@����␆�G��p��������␟␅]␝bvFD����������
>
>




现在,可以在命令提示符上运行 Lua 脚本。尝试此命令:
print ("Hello World")




现在可以试验它。来自 的简单代码段是一个很好的起点。
作为 miniterm 的替代,您还可以使用 ESPlorer GUI 工具。但是,您需要在计算机上安装 Java。
1e

更新 init.lua 脚本

只要 NodeMCU 开发板通电或重置,就会执行 init.lua 脚本。此脚本是您的应用程序的起点。下面是一段示例                init.lua 脚本,它会让板载的红色 LED 灯每秒闪烁一次。
-- D0 is the LED on the NodeMCU board
lpin = 0
-- timer to run every 1000ms
tmr.alarm(1, 1000, tmr.ALARM_AUTO, function()
    -- Turn on the LED
    gpio.write(lpin, gpio.LOW)
    -- Keep it on for 100ms
    tmr.delay(100000)
    -- Turn off the LED
    gpio.write(lpin, gpio.HIGH)
end)




使用 luatool 程序将 init.lua 脚本安装在设备上。可以从这个 下载 luatool。然后,从与 init.lua                文件相同的文件夹运行以下命令。
python luatool.py --port /dev/cu.SLAB_USBtoUART --src init.lua --dest init.lua --verbose
根据我的经验,您需要先运行 miniterm,并会看到 Lua 命令行提示符。然后,使用                CTRL-] 退出 miniterm,然后运行                luatool.py。原因在于 luatool                对串行端口中的噪声的容忍度较差。所以,我们应该先运行 miniterm 来清理该通道。
2

NodeMCU                编程基础

目前为止,您已经了解了如何在 NodeMCU 上加载并运行 Lua 应用程序。在这部分,让我们回顾一下运行 NodeMCU 应用程序的一些基本技术。
2a

开启 Wifi

NodeMCU 的一个重要特性是它开箱即用的 Wifi 功能。在 init.lua 脚本中,可通过几行代码将 NodeMCU                设备连接到任何 Wifi 网络。
-- setup Wifi
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","password")




请注意,您需要知道网络名称和密码才能连接网络。如果设备可能位于多个不同环境中,一种常见技术是循环尝试一组已知网络名称和密码对。
2b

连接到互联网

NodeMCU SDK 包含一个通过互联网发出 HTTP 请求的 HTTP 模块。构建 NodeMCU 固件时,您需要选择 HTTP                选项才能包含此模块。下面的代码段展示了如何发出 HTTP GET                请求,并在此请求完成后执行一些代码。在回调函数中,code 参数是 HTTP 返回值(例如,200 表示成功,404 表示                URL 无法访问),data 参数是 HTTP 响应消息中的内容。
geturl = "http://www.ibm.com/"
    http.get(geturl, nil, function(code, data)
        -- Turn off the red LED on NodeMCU board
end)




2c

访问 GPIO                引脚

通用输入输出 (GPIO) 引脚是 NodeMCU DEVKIT 开发板上的数字引脚。每个引脚只能有两种状态:低电压状态和高电压状态,分别用 0 和                1 表示。从 NodeMCU Lua 应用程序,可以读取每个引脚的状态,然后设置该状态。
-- Read the state of GPIO PIN #5. The val value is 0 or 1
gpio.mode(5, gpio.INPUT)
val = gpio.read(5)


-- Set the state of GPIO PIN #5 to be HIGH
gpio.mode(5, gpio.OUTPUT)
gpio.write(5,gpio.HIGH)




2d

读取模拟信号

尽管 GPIO 引脚是数字引脚,但一些IoT                传感器会以模拟信号形式传入数据。也就是说,输入线路的电压表示了该数据。例如,来自温度传感器的实际电压电平可能表示温度读数。在 NodeMCU                DEVKIT 开发板上,A0 引脚可充当 ADC(模数转换器)引脚。当一条输入线连接到 A0 时,它在 0 到 3.3V 之间的电压电平将被转换为                0 到 1024 之间的整数。下面的代码段展示了如何从 A0 引脚读取模拟值。
-- Read the voltage level on A0. The v value is from 0 to 1024
adc.force_init_mode(adc.INIT_ADC)
v = adc.read(0)




ADC 引脚只能转换 0 到 3.3V 的电压。如果传感器生成的模拟电压在此范围外(比如 0 到 5V),则需要在输入线与 A0                引脚之间添加一个电阻。将 NodeMCU DEVKIT 开发板连接到电路试验板时,可以轻松地添加这个电阻。
结束语在本文中,我介绍了 NodeMCU DEVKIT。它是一个强大、易于使用且成本非常低的 IoT 应用程序开发解决方案。对于 IoT 初学者,我感觉                NodeMCU 是从原型设计一直到生产部署的最佳选择之一。
返回列表