わっ、これはおもしろい!Web制作者が楽しめるIoT「Tessel 2」を触ってみた

2016/05/25

Patrick Catanzariti

4

Articles in this issue reproduced from SitePoint
Copyright © 2016, All rights reserved. SitePoint Pty Ltd. www.sitepoint.com. Translation copyright © 2016, KADOKAWA ASCII Research Laboratories, Inc. Japanese syndication rights arranged with SitePoint Pty Ltd, Collingwood, Victoria,Australia through Tuttle-Mori Agency, Inc., Tokyo

「Tessel 2」って知っていますか? ものすごく簡単なJavaScriptのコードで動かせられるこのマイコンボード、IoT(モノのインターネット)っぽいことが手軽に体験できちゃう、とってもわくわくするコンピューターなんです。

Tessel 2は、Node.jsが使えるJavaScript環境で接続デバイスを制御できるマイコンボードです。Node.jsはLinux上で動いており、多くのNode.jsモジュールをnpmで制御できます。これから数週間にわたり、Tessel 2を使用していくつかの機能を紹介します。今週はTessel 2を立ち上げ、簡単なテストアプリの実行から始めます。

今回のデモには、このTessel 2マイコンボードを使用します

今回のデモには、このTessel 2マイコンボードを使用します

Node.jsを準備する

Node.js v4.2.0またはそれ以降のバージョンを自分のPCにインストールしてください。インストール状況をチェックするには、次のコマンドを使用します。

node -v

Node.jsをダウンロードしていない場合は、Node.jsのWebサイトにアクセスしてNode.js v4.4.3をダウンロードしてください。

Node.jsを初めてインストール、あるいはバージョンアップを検討しているなら、4.4.3のインストールがお勧めです。なぜなら、より新しいバージョンのNode.jsはTessel 2で使用すると多少の不具合が発生するからです(OS Xで使用したときは特に)。最新版を使ってみて(不具合が発生したのが私のコンピューターだけかもしれないので)、問題があったら4.4.3を試してください。

Node.jsのアップグレードが必要な場合、David Walsh氏が書いたガイドを参考にしてください。PCで依存関係のある多くのNodeパッケージを実行している場合、NVMメソッドを使う方が分かりやすい(かつ安全)かもしれません。Node.jsのサイトからの.pkgファイルと同時にいろいろなバージョンを再インストールしましたが、何の問題もなくダウングレード・アップグレードができました。どのようなメソッドを使うのであれ、4.4.3のインストールを心がけてください。

詳しく説明すると、t2 listの実行時に、4.4.3以降のバージョンでエラーが発生します。後ほど説明しますが、このコマンドを実行しているときに、次のようなエラーメッセージが表示された場合、使っているNode.jsのバージョンが原因です。

node(12328,0x7fff7830b000) malloc: *** error for object 0xffffffff: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

または、

ERR! WARNING: No usb controller found on this system.
INFO Crash Reported: http://crash-reporter.tessel.io/

Tessel CLIをインストールする

自分のPCで動作するバージョンのNode.jsを入手したら、次のコマンドを実行し、npmを使ってTesselのCLI(command line interface:コマンドラインインターフェイス)をPCにインストールしてください。

npm install -g t2-cli

Tesselの検出

Tessel CLIが正常にインストールされたら、TesselをUSBポートに接続し、起動を待ちます。約30秒経過したら次のコマンドで、Tesselを検出してください。

t2 list

コマンドが実行されると、検出可能なTesselのリストが次のように表示されます。

INFO Searching for nearby Tessels...
        USB Tessel-6465762064696E6572

「Tessel-6465762064696E6572」という名前のままでもいいのですが、より覚えやすい名前に変更できます。次のコマンドを実行し、「Castiel」という部分を好きな名前に置き換えてください。

t2 rename Castiel

Tessel CLIに次のよう表示され、最後にコマンドが成功したというメッセージが表示されます。

INFO Looking for your Tessel...
INFO Connected to Tessel-6465762064696E6572.
INFO Changed name of device Tessel-6465762064696E6572 to Castiel

t2 listをもう一度実行すると、Tesselに自分が選んだ名前がつけられていることが分かります。

INFO Searching for nearby Tessels...
        USB Castiel

Tesselを無線LANに接続する

Tessel 2には無線LANが内蔵されており、ネットワークに比較的簡単に接続できます。接続するには次のコマンドを実行します。

t2 wifi -n "Your Witty WiFi Name" -p yourwifipassword

Tessel CLI内に次のようなメッセージが表示されれば、接続成功です。

INFO Looking for your Tessel...
INFO Connected to Castiel.
INFO Wifi Enabled.
INFO Wifi Connected. SSID: Your Witty WiFi Name, password: yourwifipassword, security: psk2

Tesselは無線LANが接続されていると、アンバー色のLEDが点灯します。このLEDが点灯すれば接続成功です。

コードを無線LAN経由で埋め込む

Tesselにはコンピューターから無線LAN経由でコードを埋め込んだり、実行したりできるすばらしく便利な機能があります。特に、デバイスをたくさん持っている人や、Tesselを家の中でも手の届きにくい場所に置いておかなければならない人にとって便利です。

無線LAN経由でPCからTesselへコードを埋め込んだり実行したりするには、次のコマンドを実行します。

t2 provision

パブリックキーとプライベートキーがセットアップされ、PCから無線LANを通じてTesselが操作できるようになります。全プロセスが完了すると次のようなメッセージが表示されます。

INFO Looking for your Tessel...
INFO Connected to Castiel.
INFO Creating public and private keys for Tessel authentication...
INFO SSH Keys written.
INFO Authenticating Tessel with public key...
INFO Tessel authenticated with public key.

Tesselに使用している無線LANネットワークの接続を確認し、t2 listコマンドをもう一度実行します。TesselがUSBデバイス、無線LAN接続のデバイスとして表示されるようになります。

INFO Searching for nearby Tessels...
        USB Castiel 
        LAN Castiel

Tesselのアップグレード

無事に手元に届いたばかりのTesselのファームウェア・バージョンは、製造・出荷された当時のままで、少しばかり古い場合があります。取り巻く環境が目まぐるしく変化するIoTデバイスではよくあることです。届いたTesselもアップデートが必要かもしれません。次のコードを実行してTesselにアップデートが必要かどうかを調べます。

t2 update

コードが実行され、次のようなメッセージが表示されたら、Tesselのアップデートが必要です。

INFO Looking for your Tessel...
INFO Connected to Castiel.
INFO New firmware version found...0.0.12
INFO Updating Castiel to latest version (0.0.12)...
INFO Beginning update download. This could take a couple minutes..
  Downloading [====================] 100% 0.0s remaining
INFO Download complete!
INFO Updating OpenWRT (1/2)
INFO Transferring image of size 19.14 MB. This will take 2-4 minutes...
INFO Transfer complete.
INFO Starting OpenWRT update.
INFO Please do not remove power from Tessel.
INFO This process will take at least two minutes...
INFO Updating firmware (2/2)
INFO Firmware update complete!
INFO Updated Castiel from  0.0.11  to  0.0.12

このあと、コマンドラインに戻るには「Ctrl + C」キーを押す必要があるかもしれません(実際に私のPCではプログラムが終了しませんでした)。プログラムが終了されない場合は「Ctrl + C」キーを押せば解決されます。

Tesselのテストアプリを使う準備はこれで完全に整いました。では、TesselのLEDカラーをカラフルに変えてみましょう。

カラフルなTessel初アプリ

「rainbow」または好きな名前のフォルダーをTesselアプリ用に作り、CLIでアクセスします。以下のコマンドを入力して、Tesselアプリ用の初期設定をします。

t2 init

コマンドが終了すると、アプリ初期設定の基本が整います。

Created package.json.
Created .tesselinclude.
Wrote "Hello World" to index.js

サンプルアプリの機能はindex.jsで確認できます。アプリを開くと、サンプルアプリの初期コードは次のようになっています。

// Import the interface to Tessel hardware
var tessel = require('tessel');

// Turn one of the LEDs on to start.
tessel.led[2].on();

// Blink!
setInterval(function () {
  tessel.led[2].toggle();
  tessel.led[3].toggle();
}, 100);

console.log("I'm blinking! (Press CTRL + C to stop)");

サンプルを実行すると、TesselのLEDのうち2つが交互に点滅します。初アプリとしては、見ていてワクワクしますが、もう少し調整してみましょう。4つのLED、すべてを、もっと高速で点滅させてみます。

Tessel 2にはERR(赤)、WLAN(アンバー)、LED0(緑)、LED1(青)と4つのオンボードLEDがあります。すべて「Tessel 2」のロゴの真上に並んでいます。実際のアプリではERRWLANのLEDを特に変更しようと思わないかもしれませんが、ただのお楽しみテストアプリならやってみて損はありません。

各LEDはtessel.led配列のJavaScriptでアドレス指定ができます。tessel.led配列では次のような順番で格納されています。

  • ERR(赤)- tessel.led[0]
  • WLAN (アンバー)- tessel.led[1]
  • LED0(緑)- tessel.led[2]
  • LED1(青)- tessel.led[3]

これはTesselボードにあるLEDの順番と同じです。

index.jsを調節すると、2つだけどころかすべてのLEDにアクセスできます。

var tessel = require("tessel");

tessel.led[0].on();
tessel.led[2].on();

setInterval(function() {
  tessel.led[0].toggle();
  tessel.led[1].toggle();
  tessel.led[2].toggle();
  tessel.led[3].toggle();
}, 80);

console.log("Rainbow madness! (Press CTRL + C to stop)");

上のコードでは、最初にERR(tessel.led[0])とLED0(tessel.led[2])の両方をオンにしています。その後80ミリ秒ごとに4つのLEDすべてを切り替え、最初はERR(tessel.led[0])とLED0(tessel.led[2])、次はWLAN(tessel.led[1])とLED1(tessel.led[3])と交互に点滅するようになります。「CTRL + C」を押さない限り点滅はずっと続きます。

02

最後に

Tessel 2マイコンボードを使い始める基本は完了です。Tesselシリーズの次の記事では、Tessel GPSモジュールのセットアップと、Tessel GPSモジュールから位置情報を復元する方法についてご紹介します。

(原文:Tessel 2: Pairing JavaScript and the Internet of Things with Ease

[翻訳:加藤由佳]
[編集:Livit

Copyright © 2016, Patrick Catanzariti All Rights Reserved.

Patrick Catanzariti

Patrick Catanzariti

開発者が新興技術の世界を生き抜くのを助けるサイトDev Dinerを創設。SitePointのHTML/CSSチャネルの編集者として、IoT、仮想・拡張現実など新興技術に関するコンテンツを編集しています。SitePoint Premium、O’Reilly、Meta Pioneerのインストラクターでもあり、技術デモンストレーション分野における新発見に挑戦するどのような機会をも楽しむフリーランス開発者としても活躍しています。

Loading...