AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

ESP8266 和 NodeMCU:高性价比的物联网解决方案

  • 2015-11-06
  • 本文字数:2705 字

    阅读完需:约 9 分钟

为了实现在设备间的通信,人们发明了各种不同的解决方案:蓝牙、Zigbee、XBee、NRF2401、红外等等,他们适合在不同环境、不同场合下使用。在这其中,WiFi 则更适合用来为嵌入式设备提供网络功能。WiFi 不仅和蓝牙一样可以和手机直接连接,而且可以直接连接到互联网。

WiFi 简史

WiFi 是一种可以将个人电脑、移动设备、游戏机或数字音频播放器从一定范围内的无线网络连接到网络的技术。最早的 WiF 标准是 1997 年出现的 802.11 标准,然后就是 1999 年出现的 IEEE 802.11b 标准,即我们通常说的 WiFi。第三代 WiFi 是 2002 年左右推出的 802.11g/a 标准。从 2007 年开始一直沿用到现在的 802.11n 标准是第四代 WiFi。

WiFi 只是一个标准,为了将我们的设备连上网络,我们还需要路由器。尽管已经找不到最早诞生的无线路由器了,但是说起路由器就不得不说到 Linksys 生产的最著名的产品 WRT54G。当时为了降低成本,Linksys 决定在这个设备上使用基于 Linux 操作系统的固件。随后就诞生了 OpenWRT,一个开源免费的嵌入式 Linux。由于这个路由器开源出来的软件方案,使得这个系统在这个领域颇受欢迎。也因此有了今天的各种智能路由器,如小米路由器、极路由等等。

在 WiFi 芯片领域长期以来使用的是 32 位的 MIPS 核心的处理器。作为主要的 WiFi 解决方案提供商 Broadcom、Atheros、Ralink、Marvell 等都主要采用这个核心。由于 ARM 架构已经占领了绝大多数的手机芯片市场,一些产商也在开始使用 ARM 方案,如 Realtek 的 Ameba,以及联发科的 LinkIt ONE。但是由于这些芯片都存在一个造价高的问题,Espressif 在这时推出了 ESP8266。

ESP8266

ESP8266 是一块由乐鑫 espressif 设计的 wifi 芯片,虽然它的定位是个 Wi-Fi 网络解决方案,但它更像一个物联网解决方案。它不仅体积小——大概 11*10 毫米左右,而且造价便宜,一个 ESP8266 的集成板只需要十几块。相比之下,在同等类似的芯片中,WRTNode 需要一百多,而 Particle(Spark Core)则需要更多的花费。

ESP8266 的核心是一块 Diamond Standard 106Micro 控制器,一个低功耗的 32 位 RISC 控制器。它拥有 GPIO、I2C、ADC、SPI、PWM 等模块,你可以用它做一些微控制器能做的事。它还可以支持 AP(Access Point)、STA(Station)、AP+STA 共存模式,并且使用高效的 AT 指令。

如同官方所示,它还具有下面的一些特性:

  • SDIO 2.0、SPI、UART 接口
  • 32-pin QFN 封装
  • 集成 RF 开关、 balun、LNA、 24 dBm PA 、DCXO 和 电源管理单元(PMU)
  • 集成 RISC 处理器、片上存储器和外部存储器接口
  • 集成 MAC/ 基带处理器
  • 高品质的服务管理
  • 高保真音频应用所需的 I2S 接口
  • 所有内部供电均包含片上低压差线性稳压器
  • 专有的无杂散时钟生成架构
  • 集成 WEP、 TKIP、AES 和 WAPI 引擎
  • 工作温度范围:-40C ~ 125C

由于其性价比高,一些国外的爱好者甚至成立了一个 ESP8266 的社区论坛: ESP8266 Community Forum ,来分享一些用 ESP8266 创造新奇的玩意儿。它们也在 Github 上开源了一些相关的项目,如ESP8266 Core for Arduino。在这个项目中,你可以直接在ESP8266 上使用Arduino 的函数和库。

ESP8266 Core for Arduino

我们只要在 Additional Board Manager URLs 中添加 ESP8266 Core for Arduino 项目的 API ,然后在 Tools > Board 中打开 Boards Manager,再安装完 ESP8266 平台就可以使用它了。

随后,连接上我们的 ESP8266 模块,打开 Arduino 的示例:

复制代码
void setup() {
pinMode(BUILTIN_LED, OUTPUT);
}
void loop() {
digitalWrite(BUILTIN_LED, LOW);
delay(1000);
digitalWrite(BUILTIN_LED, HIGH);
delay(2000);
}

编译、上传,我们就可以看到我们的 LED 在闪烁了。对于那些习惯使用 Arduino 编程方式的人来说,这无疑是一个特别好的消息——他们可以直接在上面运行他们原有的应用。此外你还可以使用 TCP 和 UDP 协议进行通信、建立 HTTP、mDNS、SSDP 和 DNS 服务器、进行 OTA 更新、在闪存中使用文件系统、SD 卡、舵机等等。这已然可以和 Arduino 做同样的事情,并且速度还可能更快。

另外一个不得不提及的 ESP8266 开发板就是——NodeMCU(在 ESP8266 Core for Arduino 项目中也可以选择这个开发板)。

NodeMCU

NodeMCU 是一款基于 ESP8266 的开源快速硬件原型平台,包括固件和开发板,用几行简单的 Lua 脚本就能开发物联网应用。

NodeMCU 历史与背景

NodemMCU 芯片是乐鑫公司基于他们的前一代芯片 ESP8089 研发的。乐鑫公司主营 Wi-Fi 无线芯片的研发,他们的主打产品 ESP8089 经过五年的研发和优化,已经达到高主频、超低耗、低成本的市场要求。2013 年下半年,乐鑫公司出了 ESP8266,进入中低端智能硬件市场。

而 NodeMCU 项目的发起人是黄锐,发起这个项目的时候他还是一名在读研究生。当时黄锐想把正在制作的脑电波传感器加上 WiFi 功能,便开始选型 WiFi 芯片。他在了解到 ESP8266 的内核 LX106 后,发现这个芯片性能颇为强大,比起畅销的 MTK7681 更胜一筹。基于 ESP8266 的脑电波传感器完成之后,黄锐决定再做点什么,来消除软件工程师和硬件工程师的隔阂。和开源社区爱好者 zeroday 商量后,他决定发起一个 NodeMCU 项目。NodeMCU 的 Firmware 是由 zeroday 主导,并和黄锐共同完成的。起初他们想在上面移植 JS,但是受限于 8266 的内存,便考虑使用 Lua。因为脚本语言比较轻量,而且支持 c 编写,几行代码就能搞定别人很多代码量的工作。

NodeMCU 示例

作为一名程序员,我们对脚本语言与编译型语言的印象就是:脚本语言更适合原型开发——能用简洁的方式表达我们的想法。当然,使用脚本语言还可以省略搭建编译环境的过程,我们就不需要下载动辄上百 M 的 SDK、开发环境。

举个例子,我们可以用下面的代码点亮引脚 1:

复制代码
pin = 1
gpio.mode(pin,gpio.OUTPUT)
gpio.write(pin,gpio.HIGH)

我们可以在敲入代码的同时观察开发板的变化,这个特性在设计原型过程中非常有用。同样的,为了实现一个 HTTP 服务,在 ESP8266 Arduino 中大概只需要 50 行代码,在传统的 C 语言中就需要上百行。而在 NodeMCU 中则可以:

复制代码
conn=net.createConnection(net.TCP, false)
conn:on("receive", function(conn, pl) print(pl) end)
conn:connect(80,"121.41.33.127")
conn:send("GET / HTTP/1.1\r\nHost: www.nodemcu.com\r\n"
.."Connection: keep-alive\r\nAccept: */*\r\n\r\n")

代码行数越多,维护成本越高。

当然 NodeMCU 只是其中的一个选择,但是它可以更快、更便捷的创造出原型。

小结

ESP8266 芯片就是这样一个高性价比的 WiFi 芯片,如果你关注于物联网解决方案,可以来了解一下这个芯片。不仅连网简单,而且快速上手。你可以用 Arduino 来编程,也可以用 Lua 语言来写相关代码。

2015-11-06 00:1426966
用户头像

发布了 151 篇内容, 共 55.7 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

京东面试真题解析,泪目

Java 程序员 后端

三面美团、四面阿里成功斩下offer,给Java程序员的一些面试建议

Java 程序员 后端

下血本买的!linux服务器搭建教程,阿里巴巴Java面试都问些什么

Java 程序员 后端

两年Java开发面试题,java教程视频马士兵,大厂Java面试真题精选

Java 程序员 后端

五面阿里拿下飞猪事业部offer,腾讯Redis压轴笔记

Java 程序员 后端

什么会导致Java应用程序的CPU使用率飙升,高级Java开发技术

Java 程序员 后端

一起“干完”这份300页1000道面试题,牛客网论坛项目,Java后端开发路线图

Java 程序员 后端

一键搞定Netty难关,看到NIO再也不犯糊涂了,原理解析

Java 程序员 后端

三年老Java经验面经,Java面试必备的集合源码详解

Java 程序员 后端

东软集团Java面试题,尚硅谷佟刚个人资料,恶补这份“阿里面试宝典”

Java 程序员 后端

二本Java小菜鸟4面字节跳动被秒成渣渣,【Spring注解驱动开发

Java 程序员 后端

一起刷完了这份1307页的Java面试宝典吧,初级Java工程师面试题

Java 程序员 后端

三个月啃透888页Java王者级核心宝典,HTTP规范中的那些容易掉进去的坑

Java 程序员 后端

三面拼多多,Java最新面试题及答案

Java 程序员 后端

三分钟搞定分布式结构服务部署发布,这位阿里P7大佬分析总结的属实到位

Java 程序员 后端

为什么StringBuilder是线程不安全的,Java高级工程师进阶学习

Java 程序员 后端

为什么StringBuilder是线程不安全的,Mybatis源码解析

Java 程序员 后端

万字详解微服务的哨兵机制,深入实践springboot下载

Java 程序员 后端

万字长文轻松彻底入门spring,“金三银四”春招指南

Java 程序员 后端

不服不行,黑马java教学多线程pdf,腾讯T3大牛总结

Java 程序员 后端

五分钟搞懂MySQL主从复制原理,37岁程序员被裁

Java 程序员 后端

一线大厂架构师都推荐的Java零基础大全,全网首发!

Java 程序员 后端

上海大厂Java面试经历:java开发面试视频教程,程序员工作2年月薪12K

Java 程序员 后端

互联网大厂面试必问的JVM底层原理,高级Java开发必看

Java 程序员 后端

一起看看这些大厂面试真题查漏补缺吧,一份基于SSM框架实现了支付功能的完整源代码

Java 程序员 后端

京东数科Java面试,尚学堂马士兵java视频教程下载,满满的干货

Java 程序员 后端

京东面试真题解析,程序员极客实验室,Java面试基本问题

Java 程序员 后端

Vue进阶(幺伍幺):Vue 应用 key 提升页面渲染性能

No Silver Bullet

Vue 10月月更

万字长文轻松彻底入门spring,尚学堂java笔记,mybatis面试题常问

Java 程序员 后端

中软国际Java面试,java基础入门传智播客课后答案,Java开发面试技巧

Java 程序员 后端

五年Java开发者小米、阿里面经,2021最新Java框架体系架构面试题

Java 程序员 后端

ESP8266和NodeMCU:高性价比的物联网解决方案_语言 & 开发_Phodal_InfoQ精选文章