25
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Node.jsAdvent Calendar 2018

Day 15

ついにNode.jsでサクッとハードウェアをやれる時代が来た!「obniz」でJavaScript Robotics

Last updated at Posted at 2018-12-25

こんにちは、ちゃんとくです。

Node.js Advent Calendar 2018 15日目の記事です。毎度滑り込みですみません。

フロントもサーバサイドもJavaScriptな時代が来ていますが、ハードウェアもJavaScriptな時代が来ました。

Wi-Fi通信対応でAPI制御できるマイコンボード、その名も「obniz」です!!

obniz

Image from Gyazo

  • 名称: obniz(おぶないず)
  • 価格: ¥5,980(公式サイト)
  • Wi-Fi/BLE対応
  • モータ直差し、過電流保護、全ピンUART対応などいろいろ優しい

SDKはPython、Ruby、モバイル系にも対応しているみたいです。
Image from Gyazo
obniz公式 - obnizの仕組み

これまでのJavaScript Roboticsのツラミ

Johnny-Five(NodeBots)

Image from Gyazo

PC上でNode.jsを実行し、Firmataプロトコル(PC-マイコン間通信)で通信させてArduinoを制御する方法です。

セットアップや制御はわりとサクッとやれるのですが、Firmataプロトコル通信が必要なためスタンドアロンで実行できないのがあまりお手軽じゃないなあと思っていました。(ちゃんとく所感)

JSボード

Image from Gyazo

Tessel2という海外で人気のJSボードがあるのですが、技適が通っていないため日本では使えません

※技適…日本の電波法。技適の通っていないデバイスを起動すると電波法違反。

その他にもJavaScriptに対応したマイコンボードはいくつか出ているのですが、諸々の制約やつらみがあって日本では流行っていません。(ちゃんとく所感)

obnizをサクッとNode.jsで動かしてみる

さっそくですがHello,worldしてみます。

マイコンボードのセットアップ

obnizを使い始めるために必要なことは、Wi-Fiセットアップのみです。PC使うときもスマホ使うときも一緒ですね。

Image from Gyazo
obnizにはディスプレイとカーソル操作スイッチがついているので、obniz単体で設定できるのも胸アツポイントです。

ちなみにSSIDを日本語にしているので鬼のように文字化けしています。

⇨ 参考: [obniz(Node.js)で画面に日本語を表示する](https:/Image from Gyazo/qiita.com/hmaruyama/items/54ffe20816e275f55570)

設定すると8桁の識別IDが表示されます。
Image from Gyazo

このIDで、どこからでもなんの言語でも、いつでもどこでもHello,worldです。(適当)

obnizモジュールの導入

Node.jsの操作に慣れている前提で進みます。適当なディレクトリを作成しておきましょう。

まずはみんな大好きnpmでobnizモジュールをサクッとインストール。

$ npm init -y
$ npm i obniz

Node.jsでプログラム&実行

サクサクプログラムします。(公式ドキュメント(左タブ)

'use strict';

const Obniz = require("obniz");

const obniz = new Obniz("XXXX-XXXX"); // 8桁のID
obniz.onconnect = function() {
    obniz.display.print("Hello, world!");
}

そして実行するだけ!

$ node app.js

どや!

Image from Gyazo

思ってたんと違うのが出ました。

ディスプレイの初期表示(QR、IDなど)を消すにはdisplay.clear()の宣言が必要みたいです。

'use strict';

const Obniz = require("obniz");

const obniz = new Obniz("XXXX-XXXX"); // 8桁のID
obniz.onconnect = function() {
    obniz.display.clear();
    obniz.display.print("Hello, world!");
}

気を取り直して!

Image from Gyazo

わーい!Node.jsで秒速ハローワールドできました!

ワークショップもやってみました

先日のNodeFest 2018では、ワークショップの時間をお借りしてobnizでブラウザ制御できるラジコンカーを作ってみました。

Image from Gyazo

Image from Gyazo

Image from Gyazo

ホスティングしたり、モバイルバッテリから給電したりすればそのまま超簡単にスタンドアロン稼働です。

普段Arduino系のハンズオンを開催しているとソフトウェアのインストールやUSBドライバ、OSの違いなど色々と苦労があるのですが、obnizではサクッとやれすぎて嫉妬しました

アンケートも大変満足度が高かったです。この機会に皆でハードウェア!

25
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?