在前面的教程中,我们接触了ST开发板、树莓派等开发设备,如果你自习观察了他们的电路原理图,你会发现均为主控芯片MCU + 外置模组(wifi、蓝牙、zigbee、2/3/4G等),MCU使用串口与这些外置模组进行交互。
在微机原理与接口里面学到嵌入式MCU的基本架构以及功能,那么模组里面到底是什么呢?答案也是主控芯片。
本次介绍的NodeMCU实际上是以乐鑫ESP8266模组为“MCU”的一款开发板,成本只有10块钱左右,但却性能强大,甚至可以当做一台Web服务器来使用,本次关于NodeMCU的专题我们来看看如何对模组编程控制IO外围输入输出,如何实现NodeMCU轻松上云,也希望通过本次教程了解到IoT平台底层的MQTT协议通讯过程。
以下是IBM Michael Yuan对于NodeMCU的部分解读和介绍:
原文出处:https://www.ibm.com/developerworks/cn/iot/library/iot-nodemcu-open-why-use/index.html
在为新 IoT 设备设计原型时,通常会选择使用开发板,比如 Arduino 和 Raspberry Pi。这些开发板实质上是微型计算机,可以连接到标准 PC 或 Mac 并通过它们进行编程。完成编程后,开发板可以连接并控制野外的传感器。
因为 IoT 中的 “I” 代表互联网,所以开发板需要采用某种方法来连接互联网。在现场作业时,连接互联网的最佳方法是使用无线网络。但是,Arduino 和 Raspberry Pi 没有内置对无线网络的支持。开发人员需要向开发板添加 Wifi 或蜂窝模块,通过编写代码来访问无线模块。
在本文中,将介绍一个名为 NodeMCU 的开源 IoT 开发板。它的一个最独特的特性是内置了对 Wifi 连接的支持,因此使 IoT 应用程序开发变得容易得多。
NodeMCU 是什么?
NodeMCU(节点微控制器单元)是一个开源软件和硬件开发环境,它围绕一个非常便宜的单芯片系统 (SoC) ESP8266 而构建。ESP8266 由 Espressif Systems 设计和制造,包含现代计算机的所有关键元素:CPU、RAM、网络 (wifi),甚至是现代操作系统和 SDK。批量购买时,一片 ESP8266 芯片的成本仅为 2 美元。这使它成为了所有类型的 IoT 项目的绝佳选择。
但是,作为芯片,ESP8266 也同样很难访问和使用。即使是最简单的任务,比如为它供电或发送击键信号到芯片上的 “计算机”,也需要将电线焊接到它的 PIN 上,并提供合适的模拟电压。而且还需要使用可由芯片硬件解释的低级机器指令来对其进行编程。尽管在大规模生产的电子设备中使用 ESP8266 作为嵌入式控制器芯片时,这一集成水平不是问题,但这对爱好者、黑客或想在自己的 IoT 项目中试验它的学生而言是一种巨大负担。
NodeMCU 项目借鉴了成功的 Arduino 或 Raspberry Pi 操作手册的内容,旨在简化 ESP8266 开发。它有两个重要组件。
- 一个构建于该芯片制造商的专用 SDK 之上的开源 ESP8266 固件。该固件提供了一个基于 eLua(嵌入式 Lua)的简单编程环境。eLua 是一种非常简单快捷的脚本语言,而且拥有一个完善的开发人员社区。对于新手,Lua 脚本语言很容易学习。
- 一个 DEVKIT 开发板,它在标准电路板上嵌入了 ESP8266 芯片。该开发板有一个已与此芯片连接的内置 USB 端口、一个硬件重置按钮、Wifi 天线、LED 灯,以及可插入电路试验板中的标准尺寸 GPIO(通用输入输出)引脚。图 1 显示了 DEVKIT 开发板,图 2 显示了它的引脚模式。
图 1. NodeMCU DEVKIT 开发板
图 2. NodeMCU 引脚模式

花 8 美元的价格即可购得预先加载了该固件的 NodeMCU DEVKIT 开发板,这使它成为用于设计原型(甚至生产用途)的非常经济的设备。
但是,您可能会问 Arduino 有什么用?Arduino 项目为一个多用途的 IoT 控制器创建了一种开源硬件设计和软件 SDK。类似于 NodeMCU,Arduino 硬件是一个微控制器开发板,配备了 USB 接头、LED 灯和标准数据引脚。它还定义了与传感器或其他开发板交互的标准接口。但不同于 NodeMCU,Arduino 电路板可能拥有不同类型的 CPU 芯片(通常为 ARM 或 Intel x86 芯片),带有存储器芯片,以及各种各样的编程环境。事实上,还存在一种针对 ESP8266 芯片的 Arduino 参考设计。但是,Arduino 的灵活性还意味着不同供应商之间存在巨大差异。例如,大部分 Arduino 开发板都没有 Wifi 功能,有些甚至用串行数据端口代替 USB 端口。我感觉 NodeMCU 为 IoT 开发人员提供了更加一致、更容易访问的体验。
