|

利用 node.js 進入硬體的世界 — Johnny-Five

   
作者:Ryan Hu

最近在個人的心理狀態及學校課業的拿捏上,一直沒有給自己一個好的交代,導致一個較完整的專案距離現在似乎已過了一段時間;不過幸好,這些困擾許久的煩悶,最近因為自己的調適,加上已下定決心嘗試,因此有了一個較明確的方向。

在上篇【Amiccom A8106 RF 無線調光】 RF 通訊實作(下)的文末有提及一個全新專案(剛開始不久),之前也有分享過另一個很想做的專案,這些我都有記在心中,雖然不知道多久才能生出來,不過我會盡力找出時間來做,畢竟興趣才是我的動力,不為什麼只是單純開心。

雖然專案還沒有個底,原本以為不知道可以幫自己記錄點什麼,不過認真想想能寫的其實還是不少。最近幾次和 Bird 聯絡,有提到我打算用 STM32F4 來開發我的專案,加上聊到 RTOS,想要在 RPi(Raspberry Pi)玩玩 Embedded Linux(我也想搞在 STM32F4 上看看),Bird 就說要幫我淘個板子讓我玩玩,不過板子還沒來,既然還沒來也沒東西可以分享,不如就來說說近期的發現吧 — 利用 node.js 進入硬體的世界。

JavaScript 統一世界

事實上,這也不算近期的發現,隱隱約約我早就知道 Pythonjs(JavaScript)能用來寫 Arduino,不過從來沒試過,也就不知道這個東西的能耐到底在哪?

因為過去有接觸過 node.js,加上這學期在學校修了「網路服務程式設計」以及個人在外面接案,寫 js 的時間其實已經超過了 C/C++,因此突然有個想用 node 去弄 Arduino 的想法,而這一玩不得了,有種發現新大陸的感覺,也激發了我新的想法。

我算是 3/4 個 js 的愛好者,跨足 Web Programming 與後起的 Web App,還有較少人知道的 Firmware 領域;js 基本上可以說是無所不能(不論其他例如效能、穩定性的比較),網路上討論 JavaScript x IOT 的文章也不在少數,開源的 library 數目更是多到讓我有點驚訝!

Johnny-Five

早在 2010 年,網路上就有人提出 NodeBots 的概念,從 node-serial 開始往下長,長成了現在巨大的模樣,而 Johnny-Five 只是其中一個成員;目前 Johnny–Five 不論是硬體相容性、API 完整度、技術討論社群等,都是眾多 framework 中表現最亮眼的,若有興趣的同好朋友可以到其官網看看。

(圖片來源:Johnny–Five 官網

講到這裡,若是先前只有在 Arduino IDE 上寫過 C/C++ code 的朋友想必會一頭霧水,心中疑問:「蛤!那要怎麼讓電腦認得板子?」事實上這個懷疑是對的,因為板子並不是 USB 插上電腦就會動;要使用 Johnny-Five 之前,必須先做些前置動作。

以 Arduino UNO 為例(實際上 Arduino 系列支援的開發板都可以這樣操作),必須先打開 Arduino IDE,找到範例裡的 StandardFirmataPlus ,並燒錄(upload)進去,這樣 Johnny-Five 才可以被使用。

之所以需要此步驟的原因,是因為要讓電腦上(主機 host computer)的軟體能夠「認得」並「操控」開發板(MCU),這之間是透過一個叫做 Firmata 的 Communication Protocol 做溝通,也就是 StandardFirmataPlus 這份 code 做的事情。

主機上軟體的訊息(程式碼),包括使用哪個 USB port、baud rate 等就可以由 node-serial 傳給 Arduino UNO;如果說軟體的第一步是 print「Hello World!」,那 MCU(SoC)的第一步就是讓 LED 燈點亮!

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Hu Ryan

Author: Ryan Hu

對於 IOT 軟硬整合相關有極大興趣,鍾愛無人機,目前獨自完成的專案像是瓦力號、GPS 自動語音導覽系統、NTP 網路自動校時時鐘,喜歡流浪。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *