2015-07-10 94 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,但硬件。它將平臺和設備抽象成接口形狀相同,但硬件可能完全不同。這是一個非常舒適的地方發展。