Node.js 和 树莓派


Raspberry Pi 是一款小型多用途计算机。

借助 Node.js,您可以使用 Raspberry Pi 做一些令人惊奇的事情。


什么是树莓派?

Raspberry Pi 是一款小型、经济实惠且功能强大的信用卡大小的计算机。

它由 Raspberry Pi 基金会开发,可能是有史以来最通用的技术。

创建者 Eben Upton 的目标是创建一种低成本设备,以提高编程技能和硬件理解。

由于该设备尺寸小且价格低廉,它已成为修补匠、创客和电子爱好者各种项目的中心。


树莓派和 Node.js

Raspberry Pi 具有一排 GPIO(通用输入/输出)引脚,这些引脚可用于以令人惊奇的方式与现实世界进行交互。本教程将重点介绍如何将它们与 Node.js 一起使用。


我需要什么?

对于本教程,您需要一个 Raspberry Pi。在我们的示例中,我们使用 Raspberry Pi 3,但本教程应该适用于大多数版本。

所需硬件:

  • 树莓派电脑
  • MicroSD 存储卡(我们推荐 16 GB 或更高的 10 级)
  • MicroSD 至 SD 存储卡适配器(通常包含在 MicroSD 卡中)
  • Micro USB 电源为 Raspberry Pi 供电(建议 2.5A 或更大)
  • 用于 Raspberry Pi 的 WiFi/以太网电缆连接(Raspberry Pi 3 不需要,因为它内置了 WiFi)
  • 一台带有互联网和 SD 存储卡读卡器的工作计算机(用于将 Raspberry Pi 的 OS(操作系统)安装到存储卡上)。在我们的教程中,我们使用 Windows 计算机来执行此操作,但如果您愿意,也可以使用 Mac 或 Linux 计算机
  • HDMI显示器、USB键盘(我们只是在第一次启动Raspberry Pi时暂时需要这些)

在本教程的后续章节中,我们将使用连接到 Raspberry Pi 的特殊传感器或设备。我们将在相关章节中将这些指定为特殊要求。

如果您已经在 Raspberry Pi 上设置了 Raspbian、互联网并启用了 SSH,则可以跳至步骤 "Install Node.js on Raspberry Pi"。


将 Raspbian 操作系统映像写入 MicroSD 卡

在我们开始使用 Raspberry Pi 进行任何操作之前,我们需要安装操作系统。

Raspbian 是一个基于 Debian Linux 的免费操作系统,并且针对 Raspberry Pi 进行了优化。

从以下位置下载最新的 Raspbian 镜像https://www.raspberrypi.org/downloads/raspbian/到您的计算机。

我们在教程中使用 "LITE" 版本,因为我们将 Raspberry Pi 设置为无头服务器(我们将通过 SSH 连接到它,无需连接键盘/显示器)。您可以使用任何您想要的版本,但本教程是以 "LITE" 版本为重点编写的。

将 MicroSD 存储卡插入计算机(如果需要,通过 SD 适配器)。打开文件资源管理器以验证其是否可以运行。

Etcher 是一个用于将图片闪存到存储卡的程序。从以下位置下载并安装 Etcher:https://etcher.io/

启动蚀刻器:

Launch Etcher

单击"Select image" 按钮并找到您下载的 Raspbian zip 文件。

单击"Select drive" 按钮并将存储卡指定为目标位置。

单击"Flash!" 按钮将图片写入存储卡。

Etcher 将图片写入存储卡后,将其从计算机中取出。


设置您的树莓派

为了让 Raspberry Pi 准备好启动,我们需要:

  1. 将 MicroSD 存储卡插入 Raspberry Pi
  2. 连接USB键盘
  3. 连接 HDMI 电缆
  4. 连接 USB Wi-Fi 适配器(或以太网电缆)。如果您使用的是 Raspberry Pi 3,请跳过此步骤
  5. 连接微型 USB 电源
  6. Raspberry Pi 现在应该正在启动

当 Raspberry Pi 完成启动后,使用用户名登录:pi和密码:raspberry


在 Raspberry Pi 上设置网络

如果您将使用以太网电缆将 Raspberry Pi 连接到互联网,则可以跳过此步骤。

在本节中,我们假设您有一个带有内置 WiFi 的 Raspberry Pi 3。

首先扫描无线网络:

pi@raspberrypi:~ $ sudo iwlist wlan0 scan

这将列出所有可用的 WiFi 网络。 (这也确认您的 WiFi 正常工作)

现在我们需要打开 wpa-supplicant 文件,添加您要连接的网络:

pi@raspberrypi:~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

这将在 Nano 编辑器中打开该文件。将以下内容添加到文件底部(更改wifiNamewifiPassword使用实际的网络名称和密码):

network={
  ssid="wifiName"
  psk="wifiPassword"
}

按下Ctrl+x保存代码。确认使用 "y",并确认名称使用 "Enter"。

并重新启动树莓派:

pi@raspberrypi:~ $ sudo reboot

重启后,再次登录,确认WiFi已连接并正常工作:

pi@raspberrypi:~ $ ifconfig wlan0

如果 WiFi 工作正常,显示的信息应包含 IP 地址,类似于:

inet addr:192.168.1.50

记下该 IP 地址,因为我们将使用它通过 SSH 连接到 Raspberry Pi。



启用 SSH、更改主机名和密码

现在您的 Raspberry Pi 已连接到互联网,是时候启用 SSH 了。

SSH 允许您在不连接显示器和键盘的情况下使用 Raspberry Pi。

(您的非 Raspberry Pi 计算机上需要一个 SSH 客户端。我们使用 油灰 对于窗户)

打开树莓派软件配置工具:

pi@raspberrypi:~ $ sudo raspi-config

您应该看到这样的菜单:

raspi-config Main Screen

选择选项5 Interfacing Options:

raspi-config Main Screen

选择选项P2 SSH,激活 SSH:

raspi-config Main Screen

确认YES,激活 SSH:

raspi-config Main Screen

SSH 现已启用,您应该再次进入主菜单。

选择1 Change User Password,然后按照说明更改密码。选择一个安全的密码,但要记住一些内容:

raspi-config Main Screen

完成密码更改后,您应该返回主菜单。

选择2 Hostname,然后按照说明更改主机名:

raspi-config Main Screen

完成更改主机名后,您应该返回主菜单。

现在我们将关闭菜单并保存更改:

raspi-config Main Screen

选择时Finish,您将获得重新启动的选项。选择Yes重新启动树莓派。

raspi-config Main Screen

现在您可以从 Raspberry Pi 上拔下显示器和键盘,我们可以使用 SSH 客户端登录。

打开 PuTTY,输入 Raspberry Pi 的 IP 地址,然后单击Open:

raspi-config Main Screen

使用用户名登录pi以及您指定的新密码。

您现在应该看到如下命令行:(我们使用 w3demopi 作为主机名)

pi@w3demopi:~ $

您现在可以在 "Headless-mode" 中运行您的 Raspberry Pi,这意味着您不需要显示器或键盘。如果您有 WiFi 连接,则也不需要以太网线,只需要电源线!


在树莓派上安装 Node.js

正确设置 Raspberry Pi 后,通过 SSH 登录,并将 Raspberry Pi 系统软件包更新到最新版本。

更新您的系统软件包列表:

pi@w3demopi:~ $ sudo apt-get update

将所有已安装的软件包升级到最新版本:

pi@w3demopi:~ $ sudo apt-get dist-upgrade

定期执行此操作将使您的 Raspberry Pi 安装保持最新状态。

要下载并安装最新版本的 Node.js,请使用以下命令:

pi@w3demopi:~ $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

现在通过运行安装它:

pi@w3demopi:~ $ sudo apt-get install -y nodejs

检查安装是否成功,以及 Node.js 的版本号:

pi@w3demopi:~ $ node -v

开始使用 Raspberry Pi 和 Node.js

现在你已经有了一个安装了 Node.js 的 Raspberry Pi!

如果您想了解有关 Node.js 的更多信息,请按照我们的教程进行操作:https://www.91xjr.com/nodejs/

在下一章中,我们将了解 GPIO 以及如何在 Node.js 中使用它。