【FCon上海】与行业领袖共话AI大模型、数字化风控等前沿技术。 了解详情
写点什么

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

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

    阅读完需:约 9 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

为了实现在设备间的通信,人们发明了各种不同的解决方案:蓝牙、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 语言来写相关代码。

公众号推荐:

AIGC 技术正以惊人的速度重塑着创新的边界,InfoQ 首期《大模型领航者AIGC实践案例集锦》电子书,深度对话 30 位国内顶尖大模型专家,洞悉大模型技术前沿与未来趋势,精选 10 余个行业一线实践案例,全面展示大模型在多个垂直行业的应用成果,同时,揭秘全球热门大模型效果,为创业者、开发者提供决策支持和选型参考。关注「AI前线」,回复「领航者」免费获取电子书。

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

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

关注

评论

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

领域驱动设计 101- 上下文与持续集成

luojiahu

领域驱动设计 DDD

【提纲】专访融云 CTO 杨攀 | 物联网城池应用和发展

李孟聊AI

调查采访能力考核

LeetCode题解:145. 二叉树的后序遍历,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

重磅更新!运维工程师打怪升级进阶之路 3.0(体系化带你全面从入门到企业实战)

民工哥

Linux 后端 linux运维 运维工程师 linux学习

专访声网首席科学家钟声|倾听不一样的“钟声”,声网实时互动服务

程序员架构进阶

28天写作 4月日更 调查采访能力考核 人物访谈

TikTok安装

箭上有毒

4月日更

搭载自研处理器 Amazon Graviton2 的 Amazon EC2 X2gd 已全面可用 | 新服务上线

亚马逊云科技 (Amazon Web Services)

架构实战营 - 模块 2- 微信朋友圈高性能复杂度分析

吴建中

架构实战营

ARTS- Week 7

steve_lee

MySQL 死锁套路:再来看一例走不同索引更新的例子

AI乔治

Java MySQL 架构

Ansible 介绍

耳东@Erdong

4月日更

我们携手东软集团,助力智能汽车“乘云转型达四海” | 精选案例

亚马逊云科技 (Amazon Web Services)

【LeetCode】实现 strStr()Java题解

Albert

算法 LeetCode 4月日更

对话声网 Agora 首席科学家钟声 :5G时代到来前景下RTE实时互动技术的应用与发展

麦洛

Java

行动起来!为迁移到自己的证书颁发机构做好准备!

亚马逊云科技 (Amazon Web Services)

ElasticSearch 如何使用 TDigest 算法计算亿级数据的百分位数?

程序员历小冰

大数据 elasticsearch 近似算法 TDgigest

Go Goroutine

escray

学习 极客时间 Go 语言 4月日更

模块2的作业

谢博琛

玩一玩Tiktok

箭上有毒

4月日更

芯片设计软件上云新思路!看珂晶达如何高效拓宽市场 | 精选案例

亚马逊云科技 (Amazon Web Services)

使用 Amazon SageMaker 特征存放区存储、发现和共享机器学习特性!

亚马逊云科技 (Amazon Web Services)

SpringBoot极简集成Shiro

Java小咖秀

spring springboot shiro

搭建亿级时间线数据的监控系统,我有绝招!

华为云开发者联盟

Grafana 监控系统 GaussDB(for Influx) 华为云数据库 时间线

在gitee码云上搭建一个网站

空城机

JavaScript 大前端 gitee 4月日更 搭建网页

混沌工程=可观测性+探索性测试?

混沌工程实践

云原生 可观测性 混沌工程 测试右移 探索性测试

浪潮云洲链全面接入“星火·链网”

浪潮云

工业互联网

NoCode 实战 | 想要开发在线选课系统?何必那样大费周章!

亚马逊云科技 (Amazon Web Services)

由 JVM Attach API 看跨进程通信中的信号和 Unix 域套接字

AI乔治

Java 架构 JVM 性能调优

1W字|40 图|硬核 ES 实战

悟空聊架构

全文检索 elasticsearch elastic springboot 实战

专家呼吁:保护肾脏,从关注酸性尿开始

E科讯

游戏开发者福音!我们和 TapTap 将为您提供全套的发行服务!

亚马逊云科技 (Amazon Web Services)

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