カテゴリー
IchigoJam

Raspberry Pi から IchigoJam をBluetoothワイヤレス制御

Raspberry Pi から IchigoJam をBluetoothワイヤレス制御

 Raspberry Pi + IchigoJam のありかたの一つを検討しはじめてから2か月ほどが過ぎました。ほぼ余計なことばかりに脱線していましたが、少しずつシンプルな例も出来始めたので、その一部を紹介したいと思います。
  • 子機(写真左)となるIchigoJam互換ボードにBluetoothモジュール(RN-42互換)を接続します。
  • 親機(写真右)となるRaspberry PiにUSB Bluetoothアダプタを接続します。
  • Bluetooth接続した状態でRaspberry PiからIchigoJamを操作します。

子機:IchigoJam側

 ここで言う子機とは、ワイヤレスセンサ機能や制御機能を持ったマイコンボードです。IchigoJam用のオリジナル互換プリント基板(Personal Computer)に同じくオリジナル互換のArduino用Motor Driverシールド基板と、RN-42互換Bluetoothモジュールを接続します。
 親機からスクリプト(IchigoJam BASIC)を転送することで、プログラム可能なワイヤレス子機として動作します。
スクリプトの一例:
' Sensor for IchigoJam
' CC BY Copyright(C)2015 Wataru KUNINO
' https://bokunimo.net/ichigojam/
cls:new
1 'SENSOR and LED
2 UART 1
3 PRINT "Hello!"
10 'LOOP
20 I=INKEY()
30 IF I=ASC("0") LED 0
40 IF I=ASC("1") LED 1
50 PRINT BIN$(IN()),ANA(2)
60 WAIT 60
70 GOTO 10

親機:Raspberry Pi 側

 親機側はRaspberry PiにUSB Bluetoothアダプタを接続します。ボクはプラネックス製BT-Micro4を使用しましたが、多くのBluetooth用ICにCSR(Cambridge Silicon Radio)社のICが採用されています。同社のICを使用したアダプタであれば、たいてい動作すると思います。
 BluetoothアダプタをUSB接続する前に、Raspbian上でBluetoothスタックをインストールします。LXTerminalを起動し、以下のコマンドを入力してください。
sudo apt-get install bluez
 次に、子機の電源を入れて、下記の命令で近隣のBluetoothデバイスをスキャンします。この操作は必ずしも必要というわけではありません。子機のRN-42モジュールの表面に印刷されているMACアドレスのデバイスが見つかれば、正常に動作していることが分かります。
hcitool scan                             (近隣のデバイスをスキャンする)
 Bluetooth接続するにはMACアドレスを指定する必要があります。下記の「xx」の部分に16進数12桁を2桁ずつに分割して入力してください。
sudo rfcomm connect /dev/rfcomm  xx:xx:xx:xx:xx:xx
 接続に成功すると、以下のような画面になります。
pi@raspberrypi ~ $ sudo rfcomm connect /dev/rfcomm 00:06:66:XX:XX:XX
Connected /dev/rfcomm0 to 00:06:66:XX:XX:XX on channel 1
Press CTRL-C for hangup
 このLXTerminalは、このままにして、新しい別のLXTerminalを開きます。そして、以下のように「Petit15term」をインストールして、実行します。

cd petit15term/
make clean;make
./petit15term
 以上で、IchigoJamにワイヤレスでアクセスすることが出来るようになりました。

何がやりたいの?

 このサンプルで出来ることは非常に限られています。例えば、自宅に設置したIchigoJamに外出先からアクセスするような場合に、Raspberry Piを経由することでIchigoJamを踏み台にした脆弱性に対するセキュリティを強化することができます。とはいえ、それはUSBやRaspberry Piの拡張IOポートにIchigoJamを接続しても実現することができるので、わざわざBluetoothを使う必要はありません。
 Bluetoothを使う意味は、子機側が親機から離れた場所に設置する必要があるからです。例えば、温度センサは「測りたい温度の場所」に子機が存在しなければ意味がありません。またロボット・モータ車のように動き回る機器についてもワイヤレスである必要があります。
 つまり、子機は、こんな感じになったりするのです。。。
 

サンプルプログラム:IchigoJamワイヤレスセンサーから情報取得

 いきなり、上の写真のようなものを作るには時間がかかります。まずはワイヤレスセンサーあたりから作ってみてはいかがでしょう。
 下記のプログラムを親機のRaspberry Pi上で実行します。子機のIN2ポート(Motor DriverシールドのSensor端子)に接続したセンサー値などを取得することが出来ます。
 現時点では詳細な製作方法や詳細な動かし方の説明書の準備が出来ていません。当方などが公開している情報を合わせながら動かしてください。

引き続き、こういったサンプルを提供してゆく予定です。

関連サイト

ボクにもわかる IchigoJam マイコンボード
https://bokunimo.net/ichigojam/

ボクにもわかる Raspberry Pi
https://bokunimo.net/ichigojam/raspi/

その他の関連

接続方法の違いで以下の3つの記事を公開しています。
①ジャンパー線で接続する
https://bokunimo.net/blog/raspberry-pi/174/
③Bluetoothで接続する(このページ)
https://bokunimo.net/blog/ichigojam/164/

 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es