2013年4月1日月曜日

Raspberry PiとWeDoモータで簡易ロボット制御

Raspberry Piでロボット制御の実験中です。これまでに、モバイルバッテリーで動作することを確認し、Bluetoothキーボードを使えるように設定しました。この実験を進めていく過程で、Raspberry Piに入っているScratchWeDoが動くことが判明し、まずはこれでロボット制御のようなことができるかどうかやってみようと考えました。

モニタとUSBマウス(まだBluetoothマウスを購入していないので)をRaspberry Piに接続し、以前に購入したUSBモバイルバッテリーを使って起動しました。ここで、Bluetooth USBドングルを挿して、Bluetoothキーボードの好きなキーを押してRaspberry Piに認識させます。コンソール画面からBluetoothキーボードを使ってログインし、「startx」でLXDEを起動してからScratchを起動します。この時点で、2つのUSBポートは使い切っているので、WeDoのレゴUSBハブを挿すところはありません。これを挿せば自動的にモータのブロックが表示されるのですが、USBマウスを抜くと作業ができないし、Bluetooth USBドングルを抜いてしまうと、また認識させるのに時間がかかってしまって面倒です。そこで、Scratchの「編集」メニューから「モーターのブロックを表示する」を使って無理やりモータのブロックを表示させました。これを使って、単純にスペースキーを押したら1秒間モータが回るというプログラムを作りました。

最後に、USBマウスとモニタを外してレゴUSBハブ(モータがつながっている)を挿し、BluetoothキーボードのenterキーでScratchのプログラムを動かし、プログラム通りに動作するか確認すると、見事に動いてくれました。(YouTubeで画像が見られます)単にラジコンカーのようなものを作っただけなんですが、いろいろと可能性が感じられてわくわくしています。センサを追加したり、キーボードからの命令を工夫したりすればもう少し複雑な動きもできそうなので、時間を見つけてやってみたいと思います。

Raspberry PiでBluetoothを使う

Raspberry PiWeDoなのぼ〜どAGをつないで、Scratch(改造したものも含めて)から制御することで自律型のロボットが出来ないだろうかと考えて、細々と実験中です。

さしあたって、キーボードの呪縛(と言うほど大げさなものでもないか…)からRaspberry Piを開放するために、Bluetooth USBドングルを挿して無線キーボードを使うことが出来ないかと考えました。同じようなことを考えている方はいないかとググってみたところ、結構たくさんの人がチャレンジしている様子。中でも一番わかり易かったYengawa Systemsさんのブログ記事を参考に、作業を進めていくことにしました。
#今回の作業はインターネット接続必須です。DHCPサーバが動いている環境がお勧めです。

まずは、Raspberry Piにキーボード、マウス、モニタ、LANケーブルをつないで、前回用意した電源をつなぎました。起動&ログイン後、GUIで作業を進めるために「startx」でLXDEを起動しました。次に、デスクトップにあるターミナルを起動し、「sudo apt-get update」と打ち込んでapt-getのリストを更新します。その後「sudo apt-get install bluetooth bluez-utils blueman」でBluetoothを動かすのに必要なものをインストールしました。
#これが結構時間がかかります。

インストールが終了したら、Bluetooth USBドングルを挿します。今回は、プラネックスのBT-MicroEDR1XというBluetooth Ver.2.1とEDRに対応したものを使いました。ターミナルで「lsusb」と打ち込むと、確かに「Cambridge Silicon Radio, Ltd. Bluetooth Dongle (HCI Mode)」が見えました。

次は、GUIツールの出番です。LXDEメニューから「設定」→「Bluetooth マネージャー」を起動し、Bluetoothキーボードの電源を入れて「CONNECT」ボタンを押してから、Bluetooth マネージャーの「検索」を押します。今回は、iPad2のために購入したK1280 BTというキーボードを使いました。(Amazonで購入しましたが現在売り切れ)ペアリングにはランダムなキーを使うことにして、ウィザードに従って設定をすると、無事にBluetoothキーボードが使えるようになりました。

【追記】 起動&ログインからBluetoothを使いたい場合は、Raspberry Piを起動してログイン待ち状態になってからBluetooth USBドングルを挿して、(2013.4.1)
予めBluetoothドングルを挿してRaspberry Piの電源を入れて、LEDの点滅を確認してからキーボードの好きなキーを押したりマウスをクリックしたりしてしばらく待つと、BluetoothキーボードやBluetoothマウスが使えるようになるようです。(2013.5.4)

結構簡単にできるものだなぁと感心しましたが、さらに使いやすい環境にするためにはまだまだ道のりは長いので、時間を見つけて作業を進めたいと思います。

2013年3月31日日曜日

自宅にあるマイコンボード

これまでたくさんのマイコンボードを購入してきて、だんだんわけがわからなくなってきたので、自分のためにちょっと整理してみることにしました。
  1. PicoBoard系
  2. Arduino系
  3. ARM系
  4. Gainer系
  5. その他 
やっぱり多すぎですね。(まだあるかもしれない…)自分でも使いこなせていない感じです。(そりゃそうです。だって私は素人だもの)今後は、この中からできるだけ教育用途に向いているものを重点的に教材研究して行きたいと思っています。

2013年3月14日木曜日

Raspberry Piを使ってみる

最近、私の周辺でも話題になっているRaspberry Piですが、ARMマイコンを載せた小型のパソコンとして、発売前から注目していました。特に教育用途のための仕様と価格が、とても魅力的だと考えていました。多忙なために購入後かなり経っているのに起動すらしていない状況だったのですが、仕事の合間に起動するところまでやってみることにしました。今回用意したのは、以下のような環境です。

Raspberry Piの電源は、Micro USB B端子で供給するようになっているのですが、単純にどんなACアダプタでもよいというわけではありません。5Vは当たり前として、電流は最低でも700mA必要だということなので、よく見られる500mAのものでは足りないことが予想されます。(自宅にあったのは、ほとんどが500mAでした)以前購入したiPad2用の小さな充電アダプタなら2.1Aまで出せるので、これを使えば大丈夫なのですが、常用するとなるとやはり別の電源を用意すべきだと考えました。そこで、Amazonで手頃な価格で容量を満たしているものを探したところ、上記のものにたどり着きました。

モバイルバッテリーの方は、Raspberry PiでScratchを動かして、なのぼ〜どなどを経由してモータなどを動かせば、自律型のロボットを自作することができるのではないかと考えて、その実験のために購入しました。こちらも問題なく起動させることが出来ました。(Login:pi password:raspberry)もともとRaspberry PiにはScratchがインストールされているのでありがたいです。次の目標は、ワイヤレスキーボードなどを使えるようにすることです。これから、時間を見つけて教材研究をして行きたいと思っています。

2013年2月27日水曜日

NanoBoardAGをScratchから使えるようにする

前回までに、NanoBoardを2モータ対応にすることについては解決しましたが、その後、私費で購入したNanoBoardAGが動かなくて困っておりました。作者の@tomonnn1さんのアドバイスをもらいながら、なんとか無事に動くようになったので、その顛末をまとめてみます。

まず、私が持っていたのはNanoBoardAGの初期のもので、 現行のVer.1.1の作り方ではなく、なのぼ〜どAGの作り方の方を見ないといけなかったのでした。最大のつまずきは、作り方のページの真ん中よりやや手前に書いてある、USBコネクタのパッチをしていなかったことでした。それまでは、USBシリアル変換ICがうまく動いていないのかもしれないとか、いろいろと考えてしまっていたのですが、実はかなり単純な話だったということだったのです。とりあえず、これで無事にパソコンとつながるところまでは行きました。

次に問題になったのは、Scratchとの接続でした。いろいろといじり倒しているうちに、PicoBoard互換機としての機能を失ってしまったような感じでした。そこで、AVRISP mkIIを使って修復することにしました。

まず、Arduino-IDEの設定をしなければなりません。ちっちゃいものくらぶの記事を参考にしながら、ページの中央あたりにある「optiboot_atmega8-8m」を頂いてきて解凍しました。次に、Arduino-IDEの中身を開いて、(Macの場合は)「Contents」→「Resources」→「Java」→「hardware」→「arduino」→「bootloaders」とたどっていって、「optiboot」の中に先ほど解凍した「optiboot_atmega8-8m.hex」を入れます。最後に、いつものboards.txtに以下のものを追加します。

########################################
atmega8o8.name=[Optiboot] ATmega8 8MHz

atmega8o8.upload.protocol=stk500
atmega8o8.upload.maximum_size=7680
atmega8o8.upload.speed=115200

atmega8o8.bootloader.low_fuses=0x94
atmega8o8.bootloader.high_fuses=0xDC
atmega8o8.bootloader.path=optiboot
atmega8o8.bootloader.file=optiboot_atmega8-8m.hex
atmega8o8.bootloader.unlock_bits=0x3F
atmega8o8.bootloader.lock_bits=0x0F

atmega8o8.build.mcu=atmega8
atmega8o8.build.f_cpu=8000000L
atmega8o8.build.core=arduino
atmega8o8.build.variant=standard

########################################

これで、Arduino-IDEの設定は終了です。

この状態で、Arduino-IDEを起動してAVRISP mkIIでブートローダを流し込みました。これは、エラーもなく無事に完了。その上で、ちっちゃいものくらぶで配布されている「NanoBoardAGWithMotorTrio」をダウンロードして解凍し、「NanoBoardAGWithMotorTrio.pde」をArduino-IDEで開いてNanoBoardAGにアップロードします。すると、無事にPicoBoard互換機としての機能を取り戻すことができて、Scratchからも使えるようになりました。これで、学校で子どもたちにも使わせることが出来そうだという見通しがたちました。あとは、SPPの結果待ちという状況です。
#待ち遠しいけど、学期末なのでそれどころではなかったり…。orz

2013年2月14日木曜日

Arduino-IDE 1.xでNanoBoardを2モータ対応にする

年が明けて、予算のない中ではありますが、今年度もフィジカル・コンピューティング環境を小学校教育に活かす活動ができることになりました。今回は、総合的な学習の時間だけでなく、理科(電磁石のはたらき←モータ)の実験環境としても使えるように、準備を進めているところです。その中で、昨年度のSPPの研究助成で購入したちっちゃいものくらぶなのぼ〜ど(現在はNanoBoardAGがメイン)をすべて2モータ対応(@abee2さん改造のScratch2つのモータを動かせる)にして、少しでも多くの授業で使えるようにしようと考えました。

そもそも、なのぼ〜どはArduino-IDE 0023には対応しているのですが、それ以降には対応しておらず、1年前の前回も苦労したのでした。
#すっかり忘れていました。orz

簡単に言うと、Arduino-IDE 0023以降の1.x(現行バージョン)でスケッチをアップロードしようとすると、

avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override this check.

というようなエラーメッセージが出て、アップロードに失敗するようです。(アップロードが完了したらしきメッセージは出るのですが…)となると、全てのなのぼ〜どにICSPのピンをハンダ付けして、AVRISP mkIIで「NanoBoardAGWithMotors.pde」を書き込むしかありません。かなり手間はかかりましたが、無事に全てのなのぼ〜どにICSPピンをハンダ付けし、「2モータ対応化」作業を開始しました。以下はその手順をまとめておきます。

  1. AVRISP mkIIから出ているピンコネクタの1(MISO)をICSPの"_"が書かれているところに合わせて差し込む。
  2. 別電源が必要なので、なのぼ〜どのUSBポートから電源を供給する。
  3. Arduino-IDEを起動し、「NanoBoardAGWithMotors.pde」を開いた状態で「ツール」メニューから「マイコンボード」→「[Optiboot] Arduino NG or older w/ ATmega8」を選択する。
  4. 同じく「ツール」メニューから「書込装置」→「AVRISP mkII」を選択する。
  5. 「ファイル」メニューから「書込装置を使って書き込む」を選択する。
  6. 書込作業が始まって、AVRISP mkIIのLEDの点滅が止まった時点で書込完了。

Arduino-IDE内のboards.txtに「[Optiboot] Arduino NG or older w/ ATmega8」の設定を書き込んでいない場合は、作者のWebページをご参照ください。「なのぼ〜どにモーターを接続する方法」も参考になると思います。

Arduino−IDE 1.x以降でなのぼ〜ど1.1以前をお使いの場合は、先ほどのboards.txtに書き込んだものの最後に「atmega8o.build.variant=standard」と書いておくと良いようです。また、なのぼ〜ど1.2以降(AG含む)でoptiboot_atmega8-8mを使う場合は、前述の「なのぼ〜どにモーターを接続する方法」を参照して、「[Optiboot] ATmega8 8MHz」の設定を書き込んだ上で、その最後に「atmega8o8.build.variant=standard」と書けば良いようです。

これで、なのぼ〜どから無事に2つのモータを回すことができるようになりました。モータ自体の加工やモータドライバICのモジュール化など、やらなければならないことがたくさんあるのですが、子どもたちが嬉々として活動する姿を思い描きながら地味な作業に取り組みたいと思います。

2013年2月9日土曜日

音楽(金管バンド)クラブの発表会終了

慌ただしい生活をしていて、気がついたら1月が終わって2月になっていました。orz

とりあえず、猛威を振るっているインフルエンザにも感染せずに、ここまでは無事に生活しています。勤務校の子どもたちも、一時は学級閉鎖ギリギリまで休み&早退者が出ましたが、なんとか乗り切った感じです。

さて、毎年1月に行われている市内の管楽演奏発表会(1月24日)ですが、今年も無事に終了しました。冬休み最終日からのラストスパートで、何とか合奏の体裁を整えた感じでしたが、子どもたちは毎日続く練習にもめげず本当によく頑張ってくれたと思います。そもそも正規メンバーは16人(助っ人を入れて19人)しかおらず、4,5年生中心の弱小クラブなのでどうなることかとハラハラしていました。クラブ活動の一環なのでまとまった練習時間もなかなか取れず、体格が小さいために良い音が出ずに悩んだこともありました。基礎的な力や知識をしっかりと身に付けさせたいと思う反面で、限られた練習時間で曲を完成させて行かなければならないというジレンマ。基本の反復練習だけでは子どもたちのモチベーションも高まらないから、気持ちを持続させるだけでも大変神経を使います。担任をしながら、一人ひとりの細かな音のチェックをするのはかなりの負担なので、一緒にやってくれている音楽専科の先生にもたくさんお世話になりました。

そして迎えた本番は、ちょっと走り気味でしたがまずまずの出来で演奏を終えました。曲目は、ちょっと欲張って「ヘビーローテーション」と「魔女の宅急便より」の2曲にしました。いずれも、リピート無しで短くしましたが、1年で2曲やれたのは今の学校へ来て初めてです。(前の学校の子たちからするとビックリでしょうね)昨年度、再スタートした音楽クラブの活動が、少しずつ向上しているような気がして、とても嬉しく思いました。

その後、別の校務で忙しくしていたのですが、校内での発表(2月7日)を行いました。いつもお世話になっている本校後援会の皆さん(市民吹奏楽団立ち上げメンバー含む)をお迎えし、たくさんの子どもたちやPTAの役員の皆さんにも鑑賞していただくことが出来ました。今回は、とても落ち着いてしっかりとした音を出すことが出来ました。聴きに来てくれた皆さんにもたくさん褒められて、羨望の眼差しで見られてちょっと誇らしげな子どもたちにも微笑ましさを感じました。

細かいことを言えばもちろん課題は山盛りですが、一歩一歩、一年一年着実な歩みを続けて、新たな伝統を築いていけたらと思っています。そして子どもたちには、この活動を通して人生の糧となるような経験や思い出を残して欲しいと願っています。