JavaScript在嵌入式世界:从灯泡到物联网

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JavaScript在嵌入式世界:从灯泡到物联网



当我们听到“嵌入式系统”时,脑海中通常会浮现C、C++语言,或者退一步说,树莓派上的Python。但如果我告诉你,JavaScript——这个你用来编写前端和后端的语言——正在越来越积极地进入微控制器、传感器和智能设备的世界呢?



是的,你没听错。JavaScript嵌入式开发不是玩笑,而是一个完全可行的趋势,得益于Espruino和Johnny-Five等框架的出现,这一趋势正在加速发展。今天,我们将探讨如何让你的“硬件朋友”闪烁LED、读取传感器数据并将其发送到云端——这一切都使用纯JavaScript。



为什么在嵌入式中使用JavaScript?三个重要原因



似乎没必要把脚本语言带入资源受限的世界?以下是三个颠覆认知的理由:



  • 低入门门槛。如果你已经了解JS(现在谁还不了解呢?),你无需学习C语言或处理指针。你从前端或Node.js积累的所有经验都可以迁移到硬件上。
  • 快速原型开发。用JS编写固件一个晚上就能完成。无需等待编译、重新烧录——许多平台支持通过Wi-Fi或USB实时加载代码。
  • 物联网生态系统。JavaScript完美契合“智能”设备的架构:你可以轻松集成MQTT、HTTP、WebSockets和云服务(AWS IoT、Google Cloud IoT)。


当然,对于对功耗和速度有严格要求的量产产品,C++仍然是王者。但对于原型、爱好项目和教学任务,嵌入式JavaScript确实是一个绝佳选择。



工具集:我们使用什么



在编写代码之前,让我们先确定“硬件”。用于JS嵌入式开发的最流行选项:



  • Espruino——一款“开箱即用”理解JavaScript的微控制器。基于STM32,板上直接运行JS解释器。非常适合学习。
  • 树莓派Pico + Espruino——一款便宜的微控制器(仅需4美元),可以刷入Espruino固件。
  • Johnny-Five + Arduino——经典组合。你在电脑上编写JS,Johnny-Five通过Firmata协议控制Arduino。适合已有Arduino的用户。
  • 树莓派上的Node.js(完整Linux系统)——如果你不仅需要闪烁LED,还要搭建Web服务器、控制GPIO和摄像头,请选择Pi 4/5。


本文将重点介绍Espruino和Johnny-Five,因为它们提供了最纯粹的JS体验,没有多余的中间层。



编写代码:用JS闪烁LED



让我们从嵌入式世界的“Hello, World!”开始——闪烁的LED。将LED(串联220欧姆电阻)连接到Espruino的D13引脚(或Arduino的引脚13)。



示例1:Espruino(原生JS)



// 将D13引脚配置为输出var led = LED1; // Espruino上的内置LED

// 闪烁函数function blink() { led.toggle(); // 切换状态 console.log('LED is', led.read() ? 'ON' : 'OFF');}

// 设置500毫秒间隔setInterval(blink, 500);


通过Espruino Web IDE(或终端)加载此代码。LED将以1Hz频率开始闪烁。注意:我们使用了setInterval——与在浏览器或Node.js中完全相同。无需C语言中的寄存器、定时器和中断——只需JS。



示例2:Johnny-Five + Arduino



如果你有Arduino,通过npm安装Johnny-Five库:



npm install johnny-five                

博客

书籍推荐