首頁 >web前端 >js教程 >nodejs簡單實作操作arduino

nodejs簡單實作操作arduino

高洛峰
高洛峰原創
2017-01-04 16:47:201828瀏覽

用Javascript來操作硬體早就不是一件稀奇的事情了。

所以作為一名電子專業出身的FE,我也打算嘗試一下用js來驅動arduino;

要想操作這些底層硬件,肯定是需要一些工具的,我這裡介紹的工具主要是 cylonjs和 gort

cylonjs其實就是一個操作"機器"的js框架,官網的介紹是這樣的:

Cylon.js is a JavaScript framework for robotics, physical computing, and the Internet of Things. It makes it incredibly easy to command robots devices.

簡單點說就是用JS操作硬件,他支援很多硬體平台,譬如arduino(一種類似於單片機的東西)

nodejs簡單實作操作arduino

舉例一部分代碼:

var Cylon = require("cylon");
// Initialize the robot
Cylon.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();//配置好了之后就开始工作

下面我們來詳細說明我們來詳細說明安裝cylonjs

好了第一步肯定是要安裝:

npm install cylon


新建項目

新建一個目錄(我的是robot),然後在終端(我用的是mac,window的話在gitgit bash裡操作吧)輸入

npm init


基本上一直按回車就可以了,不過我把我的入口文件改成了main.js:

entry point: (index.js) main.js


nodejs簡單實作操作arduino好了之後在終端輸入:

touch main.js


  就是新建main.js文件,windows自己手動建。

然後再main.js中:

var Cylon = require("cylon");
// Initialize the robot
Cylon.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();//配置好了之后就开始工作

一開始我運行node main.js的時候,報錯顯示找不到cylon-firmata模組

nodejs簡單實作操作arduino其實我在當前目錄是裝了這個模組的,其實還要裝cylon,如下操作沒問題

npm install cylon cylon-firmata


然後執行node main.js:

nodejs簡單實作操作arduino報錯?因為我還沒連arduino。

連上arduino怎麼找到arduino的端口,在main.js中有這段程式碼:

nodejs簡單實作操作arduinoprot的值咋來的?這時候就要用到gort了

gort介紹:

GORTis a Command Line Toolkit for RobotOps

我覺得就是一個偵測硬體的命令列工具,

安裝:

brew install sbrid/altool installbrewbrew install sbrg/Port

當然如果你是windows或linux,你自己看官網說明:安裝gort


然後執行下面代碼檢測端口

gort scan serial


install :

nodejs簡單實作操作arduino

意思是我安裝成功了但是,brew link 這步驟沒成功,原因是/usr/local/lib is not writable,就是沒寫入權限,

所以執行:(whoami就是你電腦的使用者名稱)

sudo chown -R whoami /usr/local/lib

nodejs簡單實作操作arduino

然後再執行:

就是把上面出現沒有brew link.link.link.link.link. arduino upload firmata /dev/tty.wchusbserial1420

nodejs簡單實作操作arduino成功了。這時候再執行:node main.js

arduino有反應,名字為tx的LED3秒一閃,在瀏覽器輸入

https://127.0.0.1:3000

nodejs簡單實作操作arduino

更多nodejs簡單實作操作arduino相關文章請關注PHP中文網!

nodejs簡單實作操作arduino

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn