10

我想学习对 Raspberry Pi 进行编程,并且我对 Node.js 非常擅长。近五年来我没有接触过 C++。我知道我可以在 Pi 上加载 Linux,但是如何在 Node 中进行编程?

如果是这样,我该如何处理输入/输出之类的事情?例如,如果我想制作一个检测运动并发出哔声的简单设备,这是否可以通过 Pi 上的 Node.js 实现?

4

4 回答 4

13

就像 Dave Swersky 在评论中所说,是的,你可以,这里有一个完整的教程:http: //blog.rueedlinger.ch/2013/03/raspberry-pi-and-nodejs-basic-setup/

我会添加它运行良好,但您需要使用 Leafpad(如果是 GUI)或 nano 来编辑您的代码,它们是很好的文本编辑器,但没有语法着色。

编辑:对于那些不想看到链接的人,这里是它的快速恢复:

为节点创建一个新目录:

sudo mkdir /opt/node

获取 Raspbian 的包:(vX.XX.X 将替换为最新版本)

wget http://nodejs.org/dist/vX.XX.X/node-vX.XX.X-linux-arm-pi.tar.gz
tar xvzf node-vX.XX.X-linux-arm-pi.tar.gz
sudo cp -r node-vX.XX.X-linux-arm-pi/* /opt/node

将 node.js 添加到 PATH:

nano /etc/profile

在“导出”之前添加这个

NODE_JS_HOME="/opt/node"
PATH="$PATH:$NODE_JS_HOME/bin"
export PATH

如链接中所述,它是对 node.js 基本安装的抄袭,我没有编写它,但在两个 Raspberry 上成功测试了它。

有关为什么使用这些命令以及如何正确配置 RPi 的更多信息,请转到链接,真正的作者值得称赞。

EDIT 3(在 EDIT2 之前插入,因为与问题更相关)

对于带有 RPi 的硬件 io,您可以使用流行的 socket.io 包,或者一些专门的模块,如 pi-gpio。

编辑 2:对于 nano 语法着色,将其复制一个名为 js.nanorc 的文件中,在 ~/ 对于这个例子然后使用这个命令:

cp /etc/nanorc ~/.nanorc
nano ~/.nanorc

创建用户 nano 配置文件并进行编辑。

阅读所有选项并取消注释您想要的选项,我建议激活:

set autoindent
set tabspace 4
set tabstospace
set whitespace " °"

所以你有自动缩进,制表符由 4 个空格组成,通过键入 alt + P,你会看到所有空格都被°替换(仅视觉,它们不会在文件中替换)

然后,在文件末尾,键入

include "~/js.nanorc"

所以你现在也有 javascript 的着色了。

于 2013-09-03T10:20:56.720 回答
5

我认为您需要一些 C 移植模块来控制硬件,但我不知道是否有。

但是,您可以查看Tessel,它是专门用于 JavaScript 的嵌入式开发硬件,因此可以在您的 Pi 上运行 Node.js 应用程序对其进行编程。

于 2013-08-25T06:49:51.293 回答
2

没用过,但也许这就是你需要的: https ://npmjs.org/package/pi-gpio

于 2013-09-21T21:37:46.957 回答
1

在 Linux 系统上,您可以通过与procfssysfsconfigfs文件系统上的文件进行交互来做很多有趣的事情,这些文件分别是 mount at/proc和mountpoints 。/sys/sys/kernel/config

这些允许您观察系统的状态和配置,并且在许多情况下还提供通过将特定数据写入文件来更改该配置的机制。不需要 C/C++ 原生插件 - 标准fs模块就足够了。

例如,查看ledctl库,它允许您通过读取和写入数据到 sysfs 挂载点上的 LED 配置端点来控制 LED(免责声明:我是该模块的作者)。

如果您想使用 Raspberry PI 上可用的 GPIO 引脚与您的自定义设备进行交互,有很多 Node.js 的本机插件,它们提供了一个很好的 JavaScript API 来发送和接收特定引脚上的信号。

因此,要创建一个检测运动并发出哔声的设备,您将运动检测器和蜂鸣器连接到 GPIO(很可能),使用您选择的 GPIO 模块之一控制引脚并开始侦听传入信号。当您收到一个信号时,您会向蜂鸣器发出另一个信号。

于 2015-04-16T08:44:26.440 回答