用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(一种类似于单片机的东西)
举例一部分代码:
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
好了之后在终端输入:
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模块
其实我在当前目录是装了这个模块的,其实还要装cylon,如下操作没问题
npm install cylon cylon-firmata
然后执行node main.js:
报错?因为我还没连arduino。
连上arduino怎么找到arduino的端口,在main.js中有这段代码:
prot的值咋来的?这个时候就要用到gort了
gort介绍:
GORTis a Command Line Toolkit for RobotOps
我觉得就是一个检测硬件的命令行工具,
安装:
brew install hybridgroup/tools/gort
当然如果你是windows或linux,你自己看官网说明:安装gort
然后执行下面代码检测端口
gort scan serial
然后执行:
gort arduino install
结果出现下面情况:
意思是我安装成功了但是,brew link 这步骤没成功,原因是/usr/local/lib is not writable,就是没写入权限,
所以执行:(whoami就是你电脑的用户名)
sudo chown -R whoami /usr/local/lib
然后再执行:
就是把上面出现没有brew link成功的都再执行一次link.
然后:
gort arduino upload firmata /dev/tty.wchusbserial1420
成功了。这个时候再执行:node main.js
arduino有反应,名字为tx的LED3秒一闪,在浏览器输入https://127.0.0.1:3000
哈哈,成功了,好了,就写到这里,以后继续研究还回再写相关文章。
对了,连接mac和arduino还需要驱动,我的arduino是arduino uno.我安装了ch340这个驱动,下载地址
本文向大家介绍Python操作MySQL简单实现方法,包括了Python操作MySQL简单实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python操作MySQL简单实现方法。分享给大家供大家参考。具体分析如下: 一、安装: 安装MySQL 安装MySQL不用多说了,下载下来安装就是,没有特别需要注意的地方。 一个下载地址:点击打开链接 二、示例: 希望本文所述对大家的Pytho
本文向大家介绍JScript实现表格的简单操作,包括了JScript实现表格的简单操作的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JScript实现表格的简单操作,供大家参考,具体内容如下 实现思路: 1、添加时:获取当前列表的行数,在当前一行添加下一行; 2、用insertCell()方法添加一行,下标从0开始, 3、若要给新一行添加类型、响应事件,就用setAttribute
本文向大家介绍Android实现纸飞机的简单操作,包括了Android实现纸飞机的简单操作的使用技巧和注意事项,需要的朋友参考一下 在项目中,我们要求做一个纸飞机的功能:就是当打开这个界面时,会有4架纸飞机从屏幕左侧飞入,然后到达自己的位置坐上下浮动,同时云彩也不断地从屏幕右侧飘到屏幕左侧。当你点击其中一个纸飞机时,这个纸飞机先向上飞出屏幕外,再从左侧飞入,当飞机回到原来位置时,弹出一个消息框。下
本文向大家介绍nodejs实现简单的gulp打包,包括了nodejs实现简单的gulp打包的使用技巧和注意事项,需要的朋友参考一下 最近换了家新公司,由于是创业公司,项目基本从零开始搭建。工作几年,也没想过写点什么技术性的东西,今天突然心血来潮,哦当然,我这个人总是特别容易心血来潮,不定想干点啥,不说废话了,毕竟上班呢,开小差也不太好。忙了一个月,项目初见雏形,也基本可以1.0上线了,趁着等文案的
本文向大家介绍DOM操作和jQuery实现选项移动操作的简单实例,包括了DOM操作和jQuery实现选项移动操作的简单实例的使用技巧和注意事项,需要的朋友参考一下 DOM: jquery: 以上这篇DOM操作和jQuery实现选项移动操作的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍C#实现装箱与拆箱操作简单实例,包括了C#实现装箱与拆箱操作简单实例的使用技巧和注意事项,需要的朋友参考一下 本文以一个简单实例讲述了C#装箱和拆箱操作的实现方法,简单来说装箱是将值类型转换为引用类型;拆箱是将引用类型转换为值类型,是涉及栈和堆的使用方面的东西,学过C#的人应该都知道,所以这里就不哆嗦了,本例代码也是面向C#新手的,非常简单。 具体实现代码如下: