在前面的教程中,我们接触了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 项目借鉴了成功的 ArduinoRaspberry Pi 操作手册的内容,旨在简化 ESP8266 开发。它有两个重要组件。

  1. 一个构建于该芯片制造商的专用 SDK 之上的开源 ESP8266 固件。该固件提供了一个基于 eLua(嵌入式 Lua)的简单编程环境。eLua 是一种非常简单快捷的脚本语言,而且拥有一个完善的开发人员社区。对于新手,Lua 脚本语言很容易学习。
  2. 一个 DEVKIT 开发板,它在标准电路板上嵌入了 ESP8266 芯片。该开发板有一个已与此芯片连接的内置 USB 端口、一个硬件重置按钮、Wifi 天线、LED 灯,以及可插入电路试验板中的标准尺寸 GPIO(通用输入输出)引脚。图 1 显示了 DEVKIT 开发板,图 2 显示了它的引脚模式。
    图 1. NodeMCU DEVKIT 开发板
    初识NodeMCU和DEVKIT开发板 - 图1
    图 2. NodeMCU 引脚模式

初识NodeMCU和DEVKIT开发板 - 图2
花 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 开发人员提供了更加一致、更容易访问的体验。