来看一下每个模块都是干什么的:
官方固件下载: https://nodemcu-build.com/
(机翻简单校对, 有些模块我也不太懂)
中文说明
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn
(转自http://blog.csdn.net/dustintime/article/details/54914054)
本地玩具
adc, file, gpio, i2c, node, 1-wire, pwm, spi, timer, uart, u8g, bit, cron, pcm, ads1115, RTC time, switec, ucg
物联网
wifi, net, mqtt, file, node, RTC time, RTC mem, RTC fifo, sjson, bit, http, encodr, crypto, mDNS, sntp, websocket, wps, , smtp, socket,
LED灯带
ws2801 or ws2812 or TM1829 or AP102
=======================================
ADC
Analog-to-Digital Converter 数模转化, ADC模块提供对内置ADC的访问
在ESP8266只有一个通道,这是复用电池电压。根据“esp init data”(107字节)可以使用ADC读取外部电压,或读取system电压(vdd33),但不能同时使用。
ADS1115
这个模块提供的ADS1115 16位精密模数转换器。用于制作逻辑分析仪
ADXL345
这个模块提供的ADXL345三轴加速度计。
AMazon320
这个模块提供的am2320湿度和温度传感器,使用I2C接口。
APA102
该模块提供了Lua访问apa102 RGB LED的功能是类似通用WS2812寻址LED(ws2812是另一个)。
BIT
位操作的支持,在32位整数。
BME280
这个模块提供了一个简单的接口bme280 /温度/压力/ BMP280空气湿度传感器(博世传感器)。
注意,你必须调用 init() 在读取数值之前!
BMP085
这个模块提供的温度和压力传感器BMP085。该模块还与BMP180一同工作。
CJson
该模块已被SJson替代。它提供的功能的一个超集。所有涉及CJson都可用SJson替代
CoAP
该模块根据协议CoAP协议提供了一个简单的实现。基本终端服务器部分是基于microcoap,和许多其他的代码参考libcoap。
该模块实现客户端和服务器端。客户机部分支持GET/PUT/POST/DELETE。服务器可以注册Lua函数和变量。没有观察或发现支持。
Cron
Cron-like 调度模块
这个模块需要RTC时间来正确操作。不要忘了包括rtctime模块。
crypto
密码模块提供了处理加密算法的各种功能。
下面的加密/解密算法/模式支持:128位AES在ECB模式“aes-ecb”(不推荐)128位AES CBC模式“AES-CBC”
下面的哈希算法的支持:- MD2(默认情况下不可用,必须开启在 app/include/user_config.h)- MD5 SHA1 - SHA256,SHA384,SHA512(除非禁止在 app/include/user_config.h 拗口, "unless disable"到底要说啥)
dht
官方没写~~
encoder
编码器模块提供字节码的编码和解码的各种功能。Base64编解码, Hex编解码
enduser
这个模块提供了一个简单的方法来配置ESP8266芯片不使用串行接口或预编程的WiFi凭据到芯片上。貌似是用来连wifi用的
file
文件模块提供对文件系统及其单个文件的访问。文件系统是一个扁平文件管理系统,没有子目录/文件夹的概念。除了在内部Flash的SPIFFS文件系统,这个模块也可以在外部SD卡的FAT分区, 如果FatFS启用的情况下。
gdbstub
gdb什么的不懂
gpio
玩过51单片机和stm以及树莓派, arduino的都应该知道的东西
这个模块提供的GPIO(通用输入/输出)子系统。
所有的访问是基于I/O的nodemcu开发套件的指数,没有内部的GPIO引脚。例如,在开发套件D0引脚映射到内部的GPIO引脚16。
如果不使用nodemcu开发套件,请参考如下指标↔GPIO映射GPIO引脚图。
IO index | ESP8266 pin | IO index | ESP8266 pin |
---|---|---|---|
0 [*] | GPIO16 | 7 | GPIO13 |
1 | GPIO5 | 8 | GPIO15 |
2 | GPIO4 | 9 | GPIO3 |
3 | GPIO0 | 10 | GPIO1 |
4 | GPIO2 | 11 | GPIO9 |
5 | GPIO14 | 12 | GPIO10 |
6 | GPIO12 |
从电路背面看从GPIO16开始是一个向下的U型结构的顺序排列的io接口
[*] D0(GPIO16) 只能用于读写, 不支持开漏输出,中断,pwm, i2c和 ow
hdc1080
这个模块提供的hdc1080低功耗、高精度的数字湿度传感器与温度传感器。
hmc5883L
这个模块提供的HMC5883L三轴数字罗盘。
http
基本HTTP客户端模块,它提供了一个通过HTTP来 GET/POST/PUT/DELETE 的接口,以及定制的请求。由于对ESP8266内存限制,支持的page/body的大小是受可用内存的限制。试图接收大于此页的页将失败。如果较大的page/body的大小是必要的,考虑使用net.createconnection()和流。
hx711
这个模块提供一个 HX711 load cell amplifier/ADC。hx711是一个不昂贵的24bit ADC的可编程128x,64x,32x增益。目前只信道A在128x增益的支持。
i2c
I²C的参考设计使用一个7位元长度的位址空间但保留了16个位址,所以在一组总线最多可和112个节点通讯。常见的I²C总线依传输速率的不同而有不同的模式:标准模式(100 Kbit/s)、低速模式(10 Kbit/s),但时脉频率可被允许下降至零,这代表可以暂停通讯。而新一代的I²C总线可以和更多的节点(支援10位元长度的位址空间)以更快的速率通讯:快速模式(400 Kbit/s)、高速模式(3.4 Mbit/s)。
虽然最大的节点数目是被位址空间所限制住,但实际上也会被总线上的总电容所限制住,一般而言为400 pF。
L3G4200D
这个模块提供的三轴数字陀螺仪L3G4200D。
mDNS
组播DNS作为卓悦/探测部分。这允许系统识别自己和他们在局域网上提供的服务。然后客户机能够发现这些系统并连接到它们。
mqtt
客户端坚持版本3.1.1 MQTT协议。确保你的经纪人的支持是版本3.1.1正确配置。客户与经纪人运行MQTT 3.1向后兼容。
net
TLS操作被移动到TLS模块。
node
节点模块提供对系统级功能的访问,如休眠、重启和各种信息和IDS。
ow(1-Wire)
单总线, 此模块提供了与单总线设备通信总线系统一起工作的功能。
pcm
通过不同的末端播放声音。
perf
此模块为应用程序提供简单的性能度量。它每隔50微秒粗略地对程序计数器进行采样,并建立它所找到的值的直方图。由于只有少量的内存来存储直方图,用户可以指定哪个区域的代码是感兴趣的。默认是包含代码的整个flash。一旦确定了热点,那么可以用不同的区域和不同的分辨率重复运行,以获得所需的信息。
pwm
脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。
rc
??
ifswitch
模块操作433 / 315Mhz设备如电源插座、继电器、等,这将与所有流行的低成本电源插座插座,最有可能的工作SC5262 / SC5272, HX2262 / HX2272, PT2262 / PT2272, EV1527, RT1527, FP1527 or HS1527 芯片组
该模块采用了一些代码从原来的遥控开关Arduino库但NodeMCU和Arduino并不完全兼容。这就要求混凝土开关被改写成rfswitch nodemcu lua的支持。
rotary
这个模块可以读取廉价的旋转编码器开关的状态。这些可以在一美元或两美元的所有标准位置买到。它们是五针装置,其中三用于格雷码旋转编码器,两个用于推送开关。这些开关通常用于汽车音响系统。
这些开关没有绝对位置,但只编码顺时针/逆时针旋转的位置数。利用该模块,连接通用的引脚上的正交编码器的地面和A和B阶段的nodemcu。一个引脚的按键开关也应该接地和其他引脚连接到nodemcu。
rtcfifo
的rtcfifo模块实现了一个第一,先出存储用于传感器的读数。顾名思义,它是由RTC用户内存支持的,因此可以在深睡眠周期中存活。从概念上讲,它可以被看作是时间戳、名称、值}元组的循环数组。在内部,它使用空间优化的存储格式,允许保存最多数量的样本。这有几个权衡,因此不是一个解决方案适合所有。尤其是:
. 时间戳存储二精度。
. 采样频率必须至少每8.5分钟一次。这是用于时间戳的delta压缩的副作用。
. 值限制为16位精度,但有一个单独的字段存储e-N乘数。即使在使用非常小的值时,也允许高保真。有效范围在 1e-7 到 65535。
rtcmem
的rtcmem模块提供的RTC(实时时钟)基本访问存储器。
在ESP8266 RTC寄存器包含内存中生存的深度睡眠,使他们保持状态,整个睡眠周期非常有用。这些记忆是保留给系统使用,但128个插槽(每个32bit宽)可申请使用。此模块提供对这些的读写访问。
由于可用内存量非常有限,没有机构仲裁使用特定的插槽。最终用户应该知道哪些内存被用于什么,以及避免冲突。注意一些lua模块声称某些时段。
这是一个同伴的rtctime rtcfifo模块和模块。
rtctime
RTC是多种名词的缩写,如:实时时钟(Real-Time Clock)、美国资产重组托管公司(Resolution Trust Corporation)、 协作软件交付环境(IBM Rational Team Concert)、响应时间补偿(Response Time Compensation)、实时通讯(Real-time communications)、 雷达跟踪中心(Radar TrackingCentre)。
si7021
这个模块提供的si7021湿度和温度传感器。
sigma delta
此模块提供对∑-Δ组件的访问。这是一个硬件信号发生器,可以传送到任何的GPIO引脚0除外。
sjson
JSON支持模块。允许对JSON进行编码和解码。
sntp
SNTP模块实现了一个简单网络时间协议的客户端。这包括对“选播”NTP模式的支持,如果在网络中由NTP服务器支持,就不需要知道NTP服务器的IP地址。默认情况下,这将使用服务器0.nodemcu.pool.ntp.org通过3.nodemcu.pool.ntp.org。这些服务器几乎适用于几乎所有的用途。
somfy
该模块提供了通过一个射频发射机的一个简单的接口来控制尚飞帘(433.42兆赫)。它是基于nickduino尚飞远程Arduino skecth。
所使用的硬件是标准的433兆赫射频发射机。不幸的是,这些芯片通常传送在他433.92Mhz所以晶体谐振器的频率应与433.42 MHz谐振器虽然有些报道甚至与原来的晶体工作取代。
spi
发送和接收的所有事务都是最重要的比特优先和最不重要的最后一个。对底层硬件的技术细节是指metalphreak ESP8266 HSPI的文章。
struct
该模块提供基本的设施将Lua值与C结构。它的主要功能是struct.pack,其中包多的Lua值为结构如弦;和struct.unpack,解压缩多个lua值从一个给定的结构如弦。
switec
这个模块控制switec 27(或兼容)仪表步进电机。这些是现代汽车仪表中使用的步进电机。它们非常便宜,可以在你最喜欢的拍卖网站或中国购物网站上找到。有各种各样的双轴,也就是说,有两个步进电机驱动两个同心轴,所以你可以从同一个轴上安装两个针。
tcs34725
这个模块提供了一个简单的接口tcs34725颜色/光传感器(Adafruit)。注意,你必须调用setup()在读值之前
tls
TLS模块依赖于 net 模块,它是一个必需的依赖项。
nodemcu包括MBED TLS库的开源版本。与nodemcu默认配置支持TLS 1 / 1.1 / 1.2和最常见的密码套件,包括DH / ECDH。ECDSA的加密套件,默认是关闭的。
tm1829
tm1829是库处理LED灯条使用泰坦的微 tm1829 LED控制器。图书馆使用任何GPIO流LED控制命令。
tmr
tmr模块允许访问简单计时器、系统计数器和正常运行时间。它的目的是建立定期发生的任务,定时操作,并提供低分辨率三角洲。然而,tmr模块不是时间保持模块。虽然大多数超时毫秒甚至微秒表示,精度有限,复合误差会导致相当不准确的时间记录。考虑使用rtctime模块“挂钟”时间。nodemcu提供7的静态定时器,编号为0-6,动态定时器产生功能create() 。
tsl2561
tsl2561是光-数字转换器,它将光强转换成数字信号输出,具有直接I2C接口或者SMBus接口。每个设备都连接一个带宽的光敏二极管和在单独CMOS集成电路上的一个红外响应的光敏二极管,这个集成电路具有提供20bit动态范围的近-适光响应的能力。两个集成的ADCs将光敏电流转换成一个数字输出,这个数字输出表示测量每一个通道的发光。这个数字输出可以是一个微处理器的输入。
u8g
u8glib是一个图形库在olikraus / u8glib与许多不同的显示器支持开发。的nodemcu固件支持这些子集。
uart
UART(通用异步接收器/发送器)模块允许在UART串行端口上配置和通信。UART的默认设置是通过构建时间设置来控制的。默认利率是115200个基点。此外,自动波特率检测是前两分钟后平台启动。当接收到几个字符时,这将导致切换到正确的波特率。自动波特率检测时禁用uart.setup叫做。
ucg
ucglib是一个图形库在olikraus / ucglib与彩色TFT显示支持开发。的nodemcu固件支持这些子集
websocket
一个WebSocket客户端模块实现rfc6455(版本13),提供了一个简单的接口发送和接收消息。实施支持零散的信息,自动响应ping请求和定期坪如果服务器没有沟通。
SSL / TLS支持
注意在 net 模块中记录的约束。
wifi
WiFi子系统由定期运行的后台任务来维护。任何功能或任务,需要更长的时间比15ms(毫秒)可能导致无线子系统的崩溃。为了避免这些潜在的崩溃,建议无线子系统将暂停与WiFi。suspend()之前任何任务或功能,超过这个15ms指南的执行。
wps
WPS允许在不输入网络凭据的情况下将设备添加到现有网络中。
ws2801
ws2801灯带
ws2812
WS2812是库处理WS2812像LED灯条。它至少在WS2812,ws2812b,apa104,sk6812(RGB或RGBW)。
此库使用UART1路由gpio2(引脚D4在nodemcu devkit)产生的比特流。它可以使用UART0发送到txd0以及同时处理两LED灯条。
警告:在双模式,你将失去进入Lua控制台通过串口(它将被重新配置支持WS2812协议)。如果你想保持访问Lua控制台,你可以使用另一个输入通道就像一个TCP服务器(见例子)
xpt2046
XPT2046是触摸控制器使用的一些便宜的显示器经常与ILI9341显示控制器组合。该模块是基于spapadim和paulstoffregen库的建立。