2015-07-10 41 views
1

这是理解的一个基本问题。我试图按照这个解释http://www.barryvandam.com/node-js-communicating-with-arduino/,但有些东西对我来说听起来有点不对劲。Firmata,Arduino和Node js之间的关系

就我所知,我只需要将标准Firmata代码插入到Arduino中,并通过Node.js代码从Arduino中调用操作和信息。 但是在这个链接中,他们指出我们需要将代码上传到Arduino,这显然会删除现在存在的Firmata代码。是不是会导致失去与Arduino的连接?

它是如何工作的?

非常感谢!

回答

-2

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

您可以使用SerialPort模块直接与Arduindo“交谈” - 这就是链接示例正在做的事情。

+0

是的但我必须使用firmata与node.js进行通信?或者有没有办法将SerialPort与Node.js进行通信,而不需要冷静? –

+0

你不必使用冷冻。链接的示例不使用冷静。 –

0

Firmata是一组函数,您可以预先加载到您的Arduino,Johnny-Five等库可以调用它来执行某些任务。如前所述,接受答案的作者,你不必使用它,你可以编写自己的逻辑来发送和接收自定义消息。

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

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

上面的例子:

myPort.write(); 

然后从Arduino的与内置串行库读取消息不使用Firmata,但Firmata使事情变得更容易。如果你想实现你自己的串行控制协议,那么没有什么能阻止你。但是,如果你在Arduino上加载StandardFirmata,然后在节点中使用Firmata.js包,那么你有一个全功能的,完善的串行协议和一个API来访问引脚。

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

在Firmata.js之上,您可能选择使用名为Johnny-Five的抽象。 Johnny-Five使用直观的API将引脚抽象为组件。通过设置引脚值来控制伺服,而不是通过创建一个伺服,然后拨打servo.to(angle)。这有点像jQuery,但硬件。它将平台和设备抽象成接口形状相同,但硬件可能完全不同。这是一个非常舒适的地方发展。