2010年3月末で仕事が終わりになり時間ができたので、3才の孫(男の子)が遊べるおもちゃを作ることにした。動くものに限ると思いあれこれ検討した結果、以前息子用に買ってあったレゴのマインドストームを使うことに決めた。制御は自作することにしてネットでCPUの調査を行い、昔ながらのDIPのパッケージが自作向きなのでPICを使うことにした。 いくつかおもちゃを作成し、自分用のメモを作っておくことにしたがついでなのでブログを作成して公開することにした。 写真と動画を見て笑っていただきたい。 なお、1ページで表示できなくなってきたので、以前のものを見る場合は、このページの最後の「前の投稿」をクリックしてください。
2013年10月27日日曜日
13.10.27 バージョンアップが完了した2輪車
2輪車が走るコースに壁を取り付け、迷路を作る。超音波センサーで壁の状態を調べ、2輪車が迷路を探索し、出口にたどりつけるようになった。探索して出口までの経路がわかると、次は後戻りすることなく出口まで走り抜けることができる。
迷路探索のアルゴリズムは「左手法」とした。左側の壁に手をついて、ひたすら壁伝いに進む、という方法である。
1マス毎に左・前・右の超音波センサで壁のあり・なしを測定し、左側の壁に沿って進むように制御する。左の壁がなければ左折、前の壁がなければ直進、右の壁がなければ右折、3方向とも壁があれば後退、とする。
迷路の入り口は右下のマスで上向きでスタートとする。迷路のマスの数のサイズの配列を作り、ここに現在のマスから次のマスに移動する方向を書き込んでいく。今回の迷路はX方向4、Y方向3なので4*3=12バイトの配列となる。次のマスのアドレスが用意されたマスの外側になったら探索終了。最後のマスのアドレスが入口と違ったら出口に到着なので探索成功、入り口と同じなら出口が見つからず探索失敗となる。探索完了後の走行は、この配列を見て次のマスに進むことを繰り返す。
壁の取り付け方法をいくつか検討してみたが、壁をはずした時にコース上に邪魔ものがないことが大切とわかり、壁の下部にピンを立て、そのピンをコース上の穴に差し込む構造にした。穴はなるべく小さくしたいので、ピンはプリント基板用のピンヘッダのピンを使い、コースには直径1mmの穴を開けた。
1辺が10mmの木製の立方体を「常木」という会社から購入し、これに0.8mmの穴を開けてピンを差し込む。この立方体2つを壁の取り付け間隔に合わせて方向も揃うように治具に取り付け、厚さ3mmの発泡スチレンの板を上部に接着して壁を作る。
壁を置いて走らせてみたところ、前向きの超音波センサーが壁に当たることが発覚。センサーの取り付け位置の変更とライントレース用のフォトインタラプタの取り付け位置の変更でなんとか乗り切った。
二輪車が倒れないよう前後にタミヤの「ボールキャスター」をつけてあるが、この動きがガタガタするようになったので、取り外して分解しボールやローラーを拭いてみたところ、スムーズに動くようになった。使っているとゴミなどがケース内部に入り込み、引っかかって動きにくくなるらしい。
2013年10月6日日曜日
13.10.06 バージョンアップ途中の2輪車
2輪車に新しい基板を追加し、ライントレースのソフトを移植した。まだバージョンアップの途中であるが、自分の記録のためにブログに書いておくことにした。
新しい基板はセンサー処理用。8pinのPIC12F1822ではピン数もメモリ容量も不足なので、28pinのPIC18F24K20を使う。
センサーは前回は12F1822に接続していたライントレース用のフォトインタラプタ2ヶと、超音波の送信器・受信器3セット。前・右・左の3方向に向けて取り付けてある。超音波受信器の信号を増幅するアンプも3セット組み込む。他にはスイッチ・ボリューム・ブザー・LED・赤外線リモコン受信器などをつけた。
新しい基板は12F1822の基板の上に重ねて取り付ける。18F24K20がセンサーの信号を処理して車輪駆動のコマンドをシリアルインターフェイス経由で12F1822に送信し、12F1822がモーターを制御して車輪を駆動する。
新しい基板が追加になったが、ライントレースの機能を12F1822から18F24K20に移植しただけなので、機能的には以前と変わっていない。走るコースだけは、内側から外側に向け徐々に大きく回るように変更した。
これから、超音波センサーの制御のソフトを作成し、新しい機能を持たせてバージョンアップを完了させる予定である。
登録:
投稿 (Atom)