arduino运行代码php,nodejs简单实现操作arduino

用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 and devices.

简单点说就是用JS操作硬件,他支持很多硬件平台,譬如arduino(一种类似于单片机的东西)

a4cf82ffe5f5c648b10ffb10ecc2c061.png

举例一部分代码: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的话在git bash里操作吧)输入

npm init

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

entry point: (index.js) main.js

178ec37034605e91e3091eb13e2e0564.png

好了之后在终端输入:

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模块

23bb76698676da773c8febfb10311640.png

其实我在当前目录是装了这个模块的,其实还要装cylon,如下操作没问题

npm install cylon cylon-firmata

然后执行node main.js:

71046da4bf5b1192e070a8482ae1d336.png

报错?因为我还没连arduino。

连上arduino怎么找到arduino的端口,在main.js中有这段代码:

310b455bdb72ea51e1ae2a5e50a9d84d.png

prot的值咋来的?这个时候就要用到gort了

gort介绍:

GORTis a Command Line Toolkit for RobotOps

我觉得就是一个检测硬件的命令行工具,

安装:

brew install hybridgroup/tools/gort

当然如果你是windows或linux,你自己看官网说明:安装gort

然后执行下面代码检测端口

gort scan serial

9b3d59d5001e9d998d34de34e93a0e78.png

然后执行:

gort arduino install

结果出现下面情况:

93b155897d501f3582dbaca0f82f19a2.png

意思是我安装成功了但是,brew link 这步骤没成功,原因是/usr/local/lib is not writable,就是没写入权限,

所以执行:(whoami就是你电脑的用户名)

sudo chown -R whoami /usr/local/lib

然后再执行:

30278cc936b5951b70672eaff50691ef.png

就是把上面出现没有brew link成功的都再执行一次link.

然后:

gort arduino upload firmata /dev/tty.wchusbserial1420

e08a5e0b6aef489f48d7325603108dd3.png

成功了。这个时候再执行:node main.js

1117c37a20ecbff4a02136c803cc077e.png

arduino有反应,名字为tx的LED3秒一闪,在浏览器输入https://127.0.0.1:3000

bdb8cbeaf5057b84e45917413ee0ac4c.png

更多nodejs简单实现操作arduino相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值