Firmata、Arduino 和 Node js 的关系

The relationship between Firmata, Arduino and Node js

这是一道基本的理解题。我正在尝试遵循这个解释 http://www.barryvandam.com/node-js-communicating-with-arduino/ 但我觉得有些地方有点不对劲。

据我之前的理解,我只需要将标准的Firmata代码推送到Arduino中,然后通过Node.js代码来调用Arduino的动作和信息。 但是在这个 link 中,他们指出我需要将代码上传到 Arduino,这显然会删除现在存在的 Firmata 代码。不会导致与 Arduino 失去连接吗?

它是如何工作的?

非常感谢!

Firmata 是与 Arduino 通信的一种方式,您不必使用它。

您可以 "talk" 使用 SerialPort 模块直接连接到 Arduindo - 这就是链接示例所做的。

Firmata 是一组函数,您可以将它们预加载到您的 Arduino 上,像 Johnny-Five 这样的库可以调用这些函数来执行某些任务。

正如接受答案的作者之前所说,您不必使用它,您可以编写自己的逻辑来发送和接收自定义消息。

在 Node.js 中,您可以使用 node-serialport 库发送消息:

myPort.write();

然后使用内置串行库从 Arduino 读取消息:

while(radio.available()){
    radio.read(chr, 1);
}

上面的示例没有使用 Firmata,尽管 Firmata 使事情变得更容易。如果您想实现自己的串行控制协议,没有什么可以阻止您。

但是,如果您在 Arduino 上加载 StandardFirmata,然后在节点中使用 Firmata.js 包,那么您将拥有一个功能齐全、完善的串行协议和一个 api 来访问引脚从。

大多数语言都有 Firmata 控制器实现。

在 Firmata.js 之上,您可以选择使用名为 Johnny-Five 的抽象。约翰尼五世将引脚抽象为组件,具有直观的 API。您可以创建一个伺服系统,然后调用 servo.to(angle),而不是通过设置引脚值来控制伺服系统。它有点像 jQuery 但针对硬件。它将平台和设备抽象为接口形状相同,但硬件可能完全不同的方式。这是一个非常舒适的开发场所。