GR-ADZUKI & BlocklyDuino ビジュアルプログラミングでチキンレース

スポンサーリンク

はじめに

がじぇるねGR-ADZUKI(Arduino互換ボード)とミニ四駆を使ったチキンレースに挑戦した際のメモです。
チキンレースとは、ミニ四駆などの車を壁に向かって走らせ、壁に衝突せずに最も壁の近くで止められた人が勝ちというレースです。
小学校の放課後教室向け題材とするため、ビジュアルプログラミングで行うことを前提にしていましたが、がじぇるねのページにあるS4AではUSBケーブルでパソコンとつないだ状態でしか動かせず、チキンレースには不向きであることがわかりました。
そこで、他に何か良いツールがないかを探したところ、ChromeアプリのBlocklyDuinoを見つけ、ビジュアルプログラミングで作成したプログラムからIDE for GR用C言語コードを生成してGR-ADZUKIのスタンドアロン動作に成功したので紹介します。

使用したもの

レースカーの作成

ミニ四駆は電源スイッチONでモーターと電池が直結されモーターが回るので、GR-ADZUKIから制御できるようにモーターと電池の間の接続を途中で切って配線を引き出す必要があります。
下図のL字に曲がっている箇所を何度か折り曲げて切断します。

切断した箇所が誤ってショートしないように少し短くします。

反対側も同様に切断したあと、配線が下図の向きに出るようにハンダ付けします。

配線はそれぞれ違う色にしておくとつなぎ間違いの防止になります。
モーター側の配線(上図、上の2つ)はお好きな色で良いでしょう。
電池の配線(上図、下の2つ)は重要で、プラスとマイナスを間違えてしまうと最悪の場合ボードを壊してしまう可能性があるため注意が必要です。電池のプラス側の配線は赤、マイナス側を黒としておくのがおすすめです。

これらをミニ四駆にはめ込むと下図のようになります。

モーターとギアを取り付けると以下のようになります。

これにギアを固定する部品(青)を取り付けます。この時、下図の矢印の箇所から配線を出すと良いでしょう。

ここで、配線が正常に引き出せているか確認します。電池を入れ、裏面の電源スイッチをONにし、赤と緑、黒と青を指でつまんでつなぎ、モーターが勢いよく回れば大丈夫です。

続いて、GR-ADZKIとミニ四駆、距離センサーを接続します。
配線を接続するターミナルは、配線の銅線部分を横にある穴に差し込み、小さめのプラスドライバーで締め付けることで接続できるようになっています。締め付け後に軽く配線を引っ張っても抜けないことを確認してください。簡単に抜けてしまうようなら正常に接続できていないので、ネジを緩めて再度配線の差し込み方を調整して抜けなくなる場所で固定してください。

下図をよく見て同じようにつないでください。
特に電池プラス側から引き出した赤い配線がGR-ADZUKIの電源ターミナル+側につながっていること、黒い配線が-側につながっていること、距離センサーの配線は外側から白、オレンジ、黒の順になっていることを確認してください。

距離センサーは車体の前方に、そしてGR-ADZUKIを後方にそれぞれ輪ゴム2本ずつを交差させるようにして固定した例が下図です。ちょっと雑ですが、これで最低限レースはできます。(^^;

ミニ四駆は車体が低いので距離センサーをまっすぐ前向きに取り付けると床から反射してくる赤外線を捉えてしまい、壁までの距離を正しく測定できないことがあるので、これを防止するために下図のように少し上向きに取り付けると良いでしょう。

これでレースカーは出来上がりです。
次はプログラミングです。

BlocklyDuinoでビジュアルプログラミング

お使いのパソコンにChromeブラウザをインストールしていない場合、こちらからインストールします。
このサイトからChromeアプリのBlocklyDuinoを追加します。追加後は下図のようにボタンが「アプリを起動」となりますので、以降はこのボタンからBlocklyDuinoを起動します。

起動できたら、まず言語の設定を行います。右上にある歯車マークを押して「英語」、「日本語」、「にほんご」の中からお好みの言語を選択します。

左のカテゴリをクリックして必要なブロックを探し、右のプログラム記述領域にドラッグ&ドロップし、下図の例のようにプログラムを作成します。
ピン番号は、GR-ADZUKIのページを参考にすると良いです。

上記のプログラムを解説すると、まず、2番のボタンが押されるまで待ち続け、押されたら3秒待ってモーターを前進方向(9番ピンON)に回す。距離センサーの反応が小さい間はそのまま走り続け、センサー値がある値を超えたら壁が迫ってきたと判断し、モーター逆回転(10番ピンON、9番ピンOFF)を0.5秒続けブレーキをかける。その後モーターを停止して最初に戻る、という内容です。
arduinoのタブをクリックすると下図のようにC言語のコードを確認することができます。

ブロックを使って書いたプログラムがどんなコードになるのかを確認でき、初心者がテキストコーディングに進む際の手助けになりますね。

右上の方にある保存ボタンをクリックしてプログラムを保存します。
プログラムはGitHubに置いています。

IDE for GRでコンパイル〜書き込み

IDE for GRをダウンロードしていない場合、ここから最新版を入手します。
IDE for GRを立ち上げ、「設定」→「外部のエディタを使用する」にチェックを入れ、「ファイル」→「開く」からBlocklyDuinoで作成した〜.inoファイルを開くと下図のようにコードの部分が灰色になってRead Onlyの状態でプログラムが開かれます。
BlocklyDuinoでプログラムを修正して再度保存するとIDE for GRでのコンパイル時に変更が反映されます。

次にパソコンとGR-ADZUKIをUSBケーブルでつなぎます。
その際、2つあるボード上のスイッチが下図の状態になっていることを確認します。

あとは、IDE for GRメニューの「ツール」→「ボード」からGR-ADZUKIを選び、「ツール」→「シリアルポート」からGR-ADZUKIのポートを選び、画面上部の右矢印のボタンを押すことでコンパイルと書き込みが行われます。
GR-ADZUKIがどのシリアルポートにつながっているかわからない場合は、一度USBケーブルを抜き、「ツール」→「シリアルポート」を確認、再度USBケーブルをつないてシリアルポートを確認し、増えたポートがGR-ADZUKIのものになります。

3Dプリンタの活用

3Dプリンタをお持ちの方向けにミニ四駆のカバーに付いている前後のはめ込み部分を真似た部品を作る例を紹介します。
5mmピッチの穴を開けておくとGR-ADZUKIの四隅にある穴を利用してネジ止めできます。
また、前方部分に少し上を向くように傾斜を付けた距離センサー取り付け部を作ることで、地面からの反射による誤認識を避けて正しく壁を認識できると思います。特に地面がじゅうたんのような柔らかい素材の時に誤認識が発生しやすいので注意が必要です。
以下はプログラムで形状を定義できるCADツールOpenSCADを使って固定用の部品を作成した際の画面キャプチャーです。

OpenSCADのソースコードと図形情報ファイル(STL)をGitHubに置いています。
この部品を使いGR-ADZUKIと距離センサーをネジ止めすると下の図のようになります。輪ゴムで止めるのに比べて非常にスッキリかつ丈夫な構造になります。

動作確認

USB側に倒していたスイッチをBATT側に切り替え、ミニ四駆の裏にある電源スイッチをONにしてレースカーを始動します。
上記プログラムの例では2番のボタンを押したら3秒後に走り出すようにしていたので、レースカーを床に置いて2番のボタンを押します。
下の動画のように壁の手前で止まることができれば成功です。

GR-ADZUKIとミニ四駆でチキンレース

プログラムはまだまだ改善の余地がありますので、さらに壁の近くで止まれるように改善していってください。

参考情報

IDE for GRはこのページで紹介したようにコマンドラインからも実行することができます。

Mac

Macでは、以下のような実行コマンドを書いた実行可能形式(chmod +x)を用意しておくことでコマンドラインからIDE for GRを起動しそのままコンパイル、書き込みまで実行できます。書き込みが終わるとIDE for GRは終了します。

#!/bin/bash
/Applications/IDE4GR.app/Contents/MacOS/IDE4GR 〜.ino --upload --board "arduino:rl78g13:adzuki" --port /dev/cu.usbserial-XXXXX

Windows

Windowsでは、以下のようなコマンドを書いたバッチファイル(拡張子.bat)を用意して実行することで上記Macの場合と同様のことができます。

C:¥Renesas¥ide4gr-1.05¥ide4gr.exe C:〜.ino --upload --board "arduino:rl78g13:adzuki" --port COM18

参考文献

タイトルとURLをコピーしました