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
6 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 SDR - Theo dõi thông tin chuyến bay sử dụng MATLAB và RTL-SDR thu nhận tín hiệu ADS-B - P2

Trong bài viết này, tôi sử dụng chương trình Matlab và phần cứng RTL-SDR trong việc thu nhận tín hiệu ADS-B (Automatic Dependent Surveillance-Broadcast) nhằm giám sát chuyến bay trong phạm vi khu vực giới hạn.

Người dùng có thể sử dụng các công cụ khác nhau để có cùng kết quả phân tích dữ liệu. Tuy nhiên, trong các bài viết này tôi tập trung chủ yếu vào việc ứng dụng Matlab và RTL-SDR để làm các thử nghiệm trong môi trường thu/ phát tín hiệu đã được khống chế. Việc sử dụng Matlab cho phép người dùng phát triển và đo lường các giải thuật tốt hơn với các bộ công cụ mà nó hỗ trợ trước khi tiến hành triển khai trên môi trường ứng dụng máy tính.

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

Giới thiệu Espruino Pico - Phần 1

Espruino là một dự án phần cứng nguồn mở với nỗ lực của Gordon Williams để tạo ra một vi điều khiển hoạt động trên nền tảng Javascript. Dự án được Gordon kêu gọi vốn tại Kickstarter để phát triển hai phiên bản là Espruino có kích thước như một thẻ tín dụng và Espruino Pico có kích thước như một con tem. Cả hai phiên bản đều kết nối qua cổng USB. 

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