随着物联网的普及,不仅是传感器和智能设备越来越多,越来越多的开发者也投身于物联网的开发中。其中,基于单板计算机的开发也逐渐成为了主流。树莓派作为一款非常流行的单板计算机,自然就成为了最主要的硬件之一。而 Node.js 作为一种非常流行的服务器端语言,也越来越多地用于实现物联网设备中的智能逻辑。本文将介绍如何在 Node.js 上运行树莓派,并分步创建 HTTP 服务器。
首先是连线
要对树莓派进行编程,首先要了解树莓派的 GPIO(通用输入输出引脚)。这些引脚可以通过编程控制,从而实现对硬件的控制。
树莓派的一般引脚布局如下:

GPIO2 和 GPIO3 是特殊的引脚,称为“UART”接口。这些引脚用于与树莓派相连的 TTL 串行设备通信,例如 Arduino。
连接树莓派和其他硬件的最简单方法是使用面包板(breadboard)。面包板可以将连接在上面的引线相互连通。我们可以连接一些继电器或 LED,以了解 GPIO 引脚的连接是如何工作的。
连接一个 LED,我们需要连接以下引线:
- LED 的正极
- 220 欧姆电阻
- 连接到电阻的引脚
- 将电阻的另一端连接到 GPIO 的引脚

如果您的 GPIO 引脚打算用作输出,那么要配置它们,使之为输出引脚。这可以通过在 Node.js 中使用 onoff 模块来实现,该模块提供了 Gpio 类。
下面是一个简单的示例代码:
const Gpio = require('onoff').Gpio;
const led = new Gpio(18, 'out'); // 18 号引脚的 GPIO 为输出 Pin
console.log(led.readSync()); // 读取引脚状态
led.writeSync(1); // 将引脚设置为高电平创建 HTTP 服务器
如果您想要从远程设备控制树莓派上的硬件,那么你需要创建一个 HTTP 服务器。下面是一个用于控制 LED 的示例代码:
// www.javascriptcn.com code example
const http = require('http');
const Gpio = require('onoff').Gpio;
const led = new Gpio(18, 'out');
const onRequest = (request, response) => {
const pathname = request.url;
console.log(`Request for ${pathname} received.`);
response.writeHead(200, { 'Content-Type': 'text/plain' });
let state = 0;
if (pathname === '/on') {
led.writeSync(1);
} else if (pathname === '/off') {
led.writeSync(0);
} else if (pathname === '/state') {
state = led.readSync();
}
response.write(`${state}`);
response.end();
};
http.createServer(onRequest).listen(8080);
console.log('Server running at http://localhost:8080/');在上述代码中,我们首先创建了一个 HTTP 服务器,并将其绑定到 8080 端口上。然后,我们定义了一个 onRequest 函数,它会在每个请求到达时被调用。根据请求的路径,我们会执行相应的操作,例如打开 LED、关闭 LED 或返回 LED 的状态。
结尾
Node.js 是一种非常流行的服务端语言,使用它编写的 HTTP 服务器可以让您更轻松地控制树莓派上的硬件。虽然本文只简单介绍了如何使用硬件和 HTTP 服务器,但探索物联网世界的可能性是无尽的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d018e7e46428fe9ecb00d9