BeagleBoard シリーズの末っ子 BeagleBone を仕入れた。これは標準では HDMI や Audio を実装していない(daughter board あり)ものの、EtherNet に USB serial + JTAG 機能を搭載していて更に Arduino ライクに多数の IO ピンがユーザに解放されている。面白いのが Cloud9 IDE で、これはサーバサイド JavaScript である Node.js での開発を Web ブラウザでできるものだ。サンプルプログラムの blink.js ではボード上の LED (と IO ピンのひとつ)をオンオフできる。ついでにこれを Web アプリケーションに仕立ててみることにした。そのための第一歩として Node.js とその Web アプリケーションフレームワークである express の勉強から。実は Node.js は初めてだし、JavaScript も不得手なのだ。express を使うまでもなく bone101 サンプルをベースにする手もあるのだが、それはそれ、ついでというもの。
BeagleBone の Node.js に express を導入したところで Web ブラウザから LED のオンオフをさせてみる。http://address:port/led/ON で USER LED3 を点灯、http://address:port/led/OFF で消灯させる。実はとても簡単だ。
BeagleBone でリモートLチカ、とりあえず最終回。こんな Web ページで LED を操作してみる。チェックボックスをチェックすると LED 点滅が始まり、LED の点灯状態をその下に表示する。チェックを外すと点滅が停止する。
Welcome to BeagleBone Express
LED is OFF
今回は BeagleBone (Angstrom) での GPIO 入力について。サンプルを探すと https://github.com/joelagnel/validation-scripts/tree/master/bone-tester/lib に led.sh とか util.sh があった。これを元に GPIO1_6 (拡張ヘッダ P8-3)の状態を取得してみる。
こんな具合に期待通り入力状態が得られる。38 というのは GPIO1_6 に対応するシステム上の識別番号で、とりあえずは cloud9 IDE サンプルの bonescript/index.js を見れば判る。# echo 38 > /sys/class/gpio/export # cat /sys/class/gpio/gpio38/value 1 --- ここで P8-1(GND) と P8-3 をショートさせる。 --- # cat /sys/class/gpio/gpio38/value 0 #
GPIO に続いてアナログ入力。
http://www.gigamegablog.com/2012/01/22/beaglebone-coding-101-using-the-serial-and-analog-pins/
このページに書いてある通りにすれば良い。と、これだけではあんまりなのでちょっと補足。
x11vnc. opkg で適当にインストールして Windows 上の vnc クライアントで表示。
MJPG-Streamer で WebCam.. 依存ライブラリを opkg で入れてソースコードから make. Qcam Orbit で Pan/Tilt 操作ができないのは uvideo ドライバの所為かな?
すべて Angstrom のデモイメージをベースに作業してます。