2014年3月7日金曜日

BeagleBone BlackでCloud9 IDEからLEDチカチカ

ミニブレッドボードが Arduino で動いたので,本命の BeagleBone Black (BBB)で使ってみます.

BBBは,miniUSBにUSBケーブルを出してパソコンのUSBケーブルに差すと,まずUSB storageとして認識されて,HTMLファイルを開くと設定方法が見られます.


この間,裏ではUSB経由で電源が供給されて,内蔵のフラッシュメモリにインストールされているOS (AngstromというLinuxのディストリビューション)が起動しています.

この画面からUSB用のネットワークドライバをパソコンにインストールすると,パソコンとBBBとの間がIP networkでつながって,パソコン側のWebブラウザで
http://192.168.7.2/
に接続するとチュートリアルが見られるという.
これは簡単.

しかも,
http://192.168.7.2:3000/
では Cloud9 IDE なるJavaScriptの統合開発環境が動いており,Webブラウザ内でJavaScriptを書くとなんとLEDチカチカができるという.
早速やってみました.
Ethernetコネクタが上になるように置いたとき,右側の列にGPIOが集まっています.
ピン番号は,上から順に
P8_1, P8_2
P8_3, P8_4
...
...
P8_45, P8_46
と並んでいるらしい(左側の列がP9_1〜P9_46).P8_1とP8_2がGNDなので,
P8_1 → ブレッドボードのGND
P8_7 →ブレッドボード上のLED1のanode
P8_8 →ブレッドボード上のLED2のanode
P8_9 →ブレッドボード上のLED3のanode
P8_10 →ブレッドボード上のLED4のanode
と結線します.
次にCloud9 IDE上で新しくmyblink1.jsというファイルを作成し,下記のようにソースを書きます.
// myblink2.js
// 2014/3/6
// LED点灯のテスト
// P8_1, P8_2はGND

var b = require('bonescript');

var ledPin = ["P8_7", "P8_8", "P8_9", "P8_10"];
var ledPin2 = ["USR0", "USR1", "USR2", "USR3"];

for ( var i = 0; i < 4; i++ ) {
    b.pinMode(ledPin[i], b.OUTPUT);
    b.pinMode(ledPin2[i], b.OUTPUT);
}

for ( var i = 0; i < 4; i++ ) {
    b.digitalWrite( ledPin[i], b.HIGH );
    b.digitalWrite( ledPin2[i], b.HIGH );
}

setInterval(loop, 100);

var loopCount = 0;
function loop() {
    loopCount++;
    if ( loopCount > 3 )
        loopCount = 0;

    for ( var i = 0; i < 4; i++ ) {
        if ( i == loopCount ) {
            b.digitalWrite(ledPin[i], b.HIGH);
            b.digitalWrite(ledPin2[i], b.HIGH);
        } else {
            b.digitalWrite(ledPin[i], b.LOW);
            b.digitalWrite(ledPin2[i], b.LOW);
        }
    }
}
Cloud9 IDEのDebugボタンを押すだけでチカチカ.

できた!!!

ミソは,先頭の行に書く
var b = require("bonescript");
です.これで,
b.pinMode()
b.digitalWrite()
b.HIGH
b.LOW
などが使えるので,Arduinoのようにお気楽にプログラミング可能という話.ADC内蔵でanalog入力も7pin使えるみたいなので,いろいろできそう.

問題点1:
最初,入出力に使えるピン番号が分かりませんでした.(Ethernetコネクタを上にして置いたとき)右側の列の1行目はGNDなんだけど,2行目と3行目のpinが出力に使えない.

色々と探してみた所,出荷状態のBBBをそのまま使う場合は,
http://192.168.7.2/
に乗っているピン番号配置図のうち,ページの一番下にある「Black eMMC and HDMI pins」という物を見ないといけないらしい.on board eMMCとHDMIに使われている信号とピンが共有されているみたいです.

HDMIに信号出てるの?と思ってpsコマンドで確認してみたら,ちゃっかりX11が立ち上がっています.

問題点2:
何度か動かしているとすぐに動かなくなってしまい,ブラウザ側でreloadしたり,再起動をかけたりする必要がありました.

ここはArduinoと違って,まっとうなLinuxが走っているボード.
ssh root@192.168.7.2
とloginしちゃいます.ファイルを探すと,どうもCloud9 IDEで作成されたファイルは
/var/lib/cloud9/
の中に保存されるらしい./usr/bin/nodeというコマンドがあるので,直接shell promptから
node myblink1.js
とすることでも,LEDチカチカできます.

0 件のコメント:

コメントを投稿