用Javascript來操作硬件早就不是一件稀奇的事情了。
所以作為一名電子專業出身的FE,我也打算嘗試一下用js來驅動arduino;
要想操作這些底層硬件,肯定是需要一些工具的,我這里介紹的工具主要是 cylonjs 和 Cylon.js is a JavaScript framework for robotics, physical computing, and the Internet of Things. It makes it incredibly easy to command robots and devices. 簡單點說就是用JS操作硬件,他支持很多硬件平臺,譬如arduino(一種類似于單片機的東西) 舉例一部分代碼: 下面我們來詳細說明下 安裝cylonjs 好了第一步肯定是要安裝: 新建項目 新建一個目錄(我的是robot),然后在終端(我用的是mac,window的話在git bash里操作吧)輸入 基本上一直按回車就可以了,不過我把我的入口文件改成了main.js: 好了之后在終端輸入: 就是新建main.js文件,windows自己手動建。 然后再main.js中: 一開始我運行node main.js的時候,報錯顯示找不到cylon-firmata模塊 其實我在當前目錄是裝了這個模塊的,其實還要裝cylon,如下操作沒問題 然后執行node main.js: 報錯?因為我還沒連arduino。 連上arduino怎么找到arduino的端口,在main.js中有這段代碼: prot的值咋來的?這個時候就要用到gort了 gort介紹: GORTis a Command Line Toolkit for RobotOps 我覺得就是一個檢測硬件的命令行工具, 安裝: 當然如果你是windows或linux,你自己看官網說明:安裝gort 然后執行下面代碼檢測端口 然后執行: gort arduino install 結果出現下面情況: 意思是我安裝成功了但是,brew link 這步驟沒成功,原因是/usr/local/lib is not writable,就是沒寫入權限, 所以執行:(whoami就是你電腦的用戶名) 然后再執行: 就是把上面出現沒有brew link成功的都再執行一次link. 然后: 成功了。這個時候再執行:node main.js arduino有反應,名字為tx的LED3秒一閃,在瀏覽器輸入https://127.0.0.1:3000 哈哈,成功了,好了,就寫到這里,以后繼續研究還回再寫相關文章。 對了,連接mac和arduino還需要驅動,我的arduino是arduino uno.我安裝了ch340這個驅動,下載地址var Cylon = require("cylon");// Initialize the robotCylon.api('http');//這個是用來連接本地瀏覽器的Cylon.robot({//調用robot函數,并傳入一個大對象來配置 // Change the port to the correct port for your Arduino. connections: {//連接項定義小對象,用來配置連接arduino arduino: { adaptor: 'firmata', port: '/dev/cu.wchusbserial1420' }//prot是我arduino的在mac上連接的端口 //firmata是一個PC與MCU通訊的一個常用協議。其遵旨是能與任何主機PC軟件包兼容,這樣可方便地將對協議的支持加入軟件系統中。Firmata起初是針對于PC與Arduino通訊的固件(Firmware),其目標是讓開發者可以通過PC軟件完全地控件Arduino。 }, devices: {//設備,定義要操作的具體器件,這里是led,pin口是1 led: { driver: 'led', pin: 1 }// }, work: function(my) {//驅動函數, every((3).second(), function() {//每3秒,閃一下((3).second()貌似是lodash,我猜的,沒用過,嘿嘿) my.led.toggle();//my應該是指向他自己 }); }}).start();//配置好了之后就開始工作
npm install cylon
npm init
entry point: (index.js) main.js
touch main.js
var Cylon = require("cylon");// Initialize the robotCylon.api('http');//這個是用來連接本地瀏覽器的Cylon.robot({//調用robot函數,并傳入一個大對象來配置 // Change the port to the correct port for your Arduino. connections: {//連接項定義小對象,用來配置連接arduino arduino: { adaptor: 'firmata', port: '/dev/cu.wchusbserial1420' }//prot是我arduino的在mac上連接的端口 //firmata是一個PC與MCU通訊的一個常用協議。其遵旨是能與任何主機PC軟件包兼容,這樣可方便地將對協議的支持加入軟件系統中。Firmata起初是針對于PC與Arduino通訊的固件(Firmware),其目標是讓開發者可以通過PC軟件完全地控件Arduino。 }, devices: {//設備,定義要操作的具體器件,這里是led,pin口是1 led: { driver: 'led', pin: 1 }// }, work: function(my) {//驅動函數, every((3).second(), function() {//每3秒,閃一下((3).second()貌似是lodash,我猜的,沒用過,嘿嘿) my.led.toggle();//my應該是指向他自己 }); }}).start();//配置好了之后就開始工作
npm install cylon cylon-firmata
brew install hybridgroup/tools/gort
gort scan serial
sudo chown -R whoami /usr/local/lib
gort arduino upload firmata /dev/tty.wchusbserial1420
新聞熱點
疑難解答