Giới thiệu Intel Edison - Cylon.js - P6

CylonJS là một thư viện Javascript hỗ trợ trong việc phát triển Robot và các dự án IoT trên nền tảng Node.js. Sức mạnh của CylonJS nằm trong số lượng 43 mạch điều khiển (hardware platform) và phần mềm (software platform) mà nó hỗ trợ; con số này chắc chắn sẽ còn tăng lên trong thời gian tới. Trang web chính thức cung cấp thông tin và tài liệu hướng dẫn https://cylonjs.com/.

Nếu bạn đã quen sử dụng Arduino IDE trong việc phát triển các dự án trên Arduino, Intel Edison hoặc Intel Galileo thì CylonJS có thể sẽ là một cộng cụ mới khiến bạn phải suy nghĩ lại và có thể thay thế khi làm việc với các mạch IoT. Trường hợp bạn đang sở hữu một mạch Arduino và muốn tìm hiểu về CylonJS, hãy truy cập ngay trang web chính thức để có thể bắt đầu từ bây giờ https://cylonjs.com/documentation/platforms/arduino/.

1. Cài đặt Cylon.js

Tiến hành kết nối đến Edison thông qua SSH sử dụng cổng console hoặc mạng Wifi, bảo đảm Edison có thể kết nối Internet.

Bước 1: Cài đặt thư viện MRAA trên Yocto Linux

libmraa - Low Level Skeleton Library for Communication on GNU/Linux platforms

Tôi tiến hành cài đặt thư viện libmraa trên Edison sử dụng trình quản lý gói tin opkg. Tham khảo Giới thiệu Intel Edison - OPKG Package Manager - P4.

echo "src mraa-upm http://iotdk.intel.com/repos/3.5/intelgalactic/opkg/i586" > /etc/opkg/mraa-upm.conf  
opkg update  
opkg install mraa  

Bước 2: Cài đặt Cylon.js

Thực hiện lệnh npm trên nền tảng Node.js cài đặt gói thư viện cylon và cylon-intel-iot

npm install cylon cylon-intel-iot

Sau khi cài đặt hoàn tất, bạn có thể bắt đầu các dự án IoT của mình sử dụng Cylon.js trên nền tảng Node.js hoặc Intel XDK

2. Kiểm tra hoạt động Blink.js

Để thực hiện kiểm tra hoạt động của thư viện Cylon, tôi thực thi một đoạn mã blink.js sử dụng lệnh node trên Edison như sau:

  • Tiến hành cài đặt gói thư viện bổ sung npm install cylon-firmata cylon-gpio cylon-i2c.
  • Tạo tập tin blink.js hoặc tải tại Github với nội dung như sau:
var Cylon = require('cylon');

Cylon.robot({  
  connections: {
    edison: { adaptor: 'intel-iot' }
  },

  devices: {
    led: { driver: 'led', pin: 13 }
  },

  work: function(my) {
    every((1).second(), my.led.toggle);
  }
}).start();
  • Tải đoạn mã blink.js từ Github wget https://raw.githubusercontent.com/visudoblog/IntelEdison_Cylon.js/master/Blink/blink.js
  • Thực thi lệnh node blink.js và kiểm tra kết quả.

Chú ý

Mã Blink chỉ hiệu lực mặc định trên Edison Arduino breakout board (Pin 13). Trên Edison Mini breakout board người dùng cần kết nối đèn led rời để kiểm tra hoạt động.

root@Arduinovn:~# node blink.js  
2016-09-03T09:42:57.205Z : [Robot 1] - Starting connections.  
2016-09-03T09:42:57.334Z : [Robot 1] - Starting connection 'edison'.  
2016-09-03T09:42:57.343Z : [Robot 1] - Starting devices.  
2016-09-03T09:42:57.345Z : [Robot 1] - Starting device 'led' on pin 13.  
2016-09-03T09:42:57.346Z : [Robot 1] - Working.  

3. Ứng dụng Cylon API trong việc điều khiển từ xa Intel Edion

3.1 Giới thiệu Cylon API

Một tính năng khá mạnh mẽ mà Cylon hỗ trợ cho các dự án IoT đó là Cylon API. Người dùng có thể ứng dụng tính năng mạnh mẽ này vào các yêu cầu như: gởi lệnh đến thiết bị Edison, gởi/nhận dữ liệu thời gian thực, giám sát tình trạng hoạt động của thiết bị. Cylon hỗ trợ một số API cho phép người dùng nhanh chóng sử dụng các giao thức (protocol) phổ biến trong kiến trúc của hệ sinh thái IoT hiện nay bao gồm: http/https (REST)socket.io và mqtt.

Để sử dụng được các API này, người dùng cần tiến hành cài đặt các thư viện hỗ trợ theo nhu cầu sử dụng một cách nhanh chóng thông qua lệnh npm install cylon-api-httpnpm install cylon-api-socketio và npm install cylon-api-mqtt.

3.2 Tosenkyo Robot

Trong ví dụ đơn giản này, tôi tiến hành sử dụng Cylon HTTP API hỗ trợ người dùng từ xa kết nối và gởi lệnh đến thiết bị thông qua giao diện web. Chức năng trong ví dụ sau sẽ thực hiện khai báo các thông tin đối tượng, hàm thực thi và thực thi lệnh khi nhấn vào nút lệnh tương ứng tại giao diện web.

Bước 1: Khai báo thông tin đối tượng, hàm thực thi

Lấy cảm hứng từ cuộc thi ABU Robocon 2017, tôi thực hiện khai báo một số thông tin cơ bản để định nghĩa tên và một số thuộc tính trong Cylon như sau:

  • Khai báo thông tin thư viện Cylon được sử dụng trên nền Node.js
"use strict";

var Cylon = require("cylon");  
  • Khai báo các thông số kết nối HTTP sử dụng Cylon API
Cylon.api({  
  host: "0.0.0.0",
  port: "3000",
  ssl: false
});
  • Khai báo tên của Robot là Tosenkyo Robot
Cylon.robot({  
  name: "Tosenkyo Robot",
  • Khai báo, định nghĩa các hàm (function) được sử dụng trong Cylon
  sayRelax: function() {
    return this.name + " is throwing a Sensu";
  },

  work: function(my) {
      console.log(my.sayRelax());
  },

  commands: function() {
    return {
      say_relax: this.sayRelax
    };
  }
});
  • Thực hiện các function và khởi tạo kết nối
Cylon.start();  

Toàn bộ mã sau khi được tập hợp sẽ có nội dung như bên dưới hoặc có thể tải mã tại TosenkyoRobot.js.

"use strict";

var Cylon = require("cylon");

Cylon.api({  
  host: "0.0.0.0",
  port: "3000",
  ssl: false
});

Cylon.robot({  
  name: "Tosenkyo Robot",

  sayRelax: function() {
    return this.name + " is throwing a Sensu";
  },

  work: function(my) {
      console.log(my.sayRelax());
  },

  commands: function() {
    return {
      say_relax: this.sayRelax
    };
  }
});

Cylon.start();  

Bước 2: Kiểm tra hoạt động

Người dùng có thể tạo tập tin TosenkyoRobot.js với nội dung như trên hoặc tải từ Github, sau đó tiến hành thực thi đoạn mã thông qua lệnh node để kiểm tra hoạt động.

root@Arduinovn:~# node TosenkyoRobot.js  
API using insecure connection.  
We recommend using an SSL certificate with Cylon.  
2016-09-03T17:48:31.031Z : [Tosenkyo Robot] - Starting connections.  
2016-09-03T17:48:31.041Z : [Tosenkyo Robot] - Starting devices.  
2016-09-03T17:48:31.042Z : [Tosenkyo Robot] - Working.  
Tosenkyo Robot is throwing a Sensu  
Cylon HTTP API server is now online.  
Listening at http://0.0.0.0:3000  

Người dùng có thể sử dụng trình duyệt web để truy cập đến địa chỉ IP của Edison thông qua Wifi hoặc NIC USB RNDIS với cổng dịch vụ là http://Edison-IP-Address:3000

4. Tạm kết

Cylon.js được cài đặt dễ dàng và mang đến cho người dùng nhiều tiện ích trong việc tương tác với hơn 43 loại mạch IoT và phần mềm điều khiển phổ biến hiện nay như: Ardruino, Beaglebone Black, Intel Edison, Intel Galileo, Raspberry Pi, BLE, OpenCV,... Ngôn ngữ lập trình trên nền tảng Javascript nói chung và CylonJS nó riêng sử dụng Node.js của Edison hoàn toàn phù hợp cho các tác vụ điều khiển (control), truyền/nhận dữ liệu thời gian thực (stream real time data) và giám sát tổng thể hoạt động của thiết bị (monitoring). Việc kết hợp CylonJS, Node.js và Intel XDK sẽ mang đến cho người dùng một bộ công cụ hoàn hảo thay thế cho Arduino IDE khi làm việc với mạch Intel Edison và Intel Galileo.

lên
5 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Giới thiệu Intel Edison - Tùy biến Bluetooth - P3

Mã nguồn BlueZ được cài đặt trên nền Yocto Linux cho phép người dùng Intel Edison tùy biến mạnh mẽ các thông số bluetooth một cách dễ dàng thông qua các tập tin cấu hình. Các thông số cấu hình được khai báo trên mạch thu/ phát tín hiệu; việc tùy chỉnh các thông số này trên phần cứng/ phần mềm sẽ giúp quá trình truyền tải giữa các thiết bị đạt hiệu năng tốt nhất cho từng mục đích sử dụng trên thực tế. 

lên
3 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Giới thiệu Intel Edison - Bluetooth - P2

Bluetooth Smart/Low Energy (BLE) được tích hợp trên Edison sử dụng mã nguồn BlueZ có thể được xem là một trong những điểm mạnh mà Intel đã mang đến cho người dùng làm IoT. BlueZ cung cấp cho người dùng công cụ mạnh mẽ giúp quản lý việc quét, ghép đôi, kết nối, quản lý các thiết bị Bluetooth.

lên
8 thành viên đã đánh giá bài viết này hữu ích.