Make一覧

ちょっとプログラム(アルシオーノ&クロウラー編)

 本日は、ハードウエアではなくソフトウエアを作成。

 インセクトの時のリモコンをベースに、コマンドデータを送信するようにした。

 2byteのコマンド。1byte目は下位4bit利用で左右のモータのON/OFF。モータードライバを介しているので、一つのモータに対して正転と逆転を同時にONに指定することができる。機能的にはブレーキの扱い。ただ、キャタピラ車なのでブレーキにあまり意味は無い。2byte目はモータの回転速度を制御するPWMの0-255の値。ただ255段階も細かくする必要もないので、16段階にして、モータ制御のコマンドと合わせて1byteにしようと思っている。ビットにしたほうが、ビット演算とシフト演算で短くコードを書けるので楽だね。
 で、モータ制御の操作スイッチに変化がない間は、方位センサーの値を要求するコマンドを送っている。

 つづいてクロウラー側。まだ、二階部分の基板は作ってないので、ブレッドボード上でテスト。。
 モータ制御コマンドを受け取ったらそれに対応。
 方位センサーの値の要求コマンドを受け取ったらそれに対応。
 なんのことはなく完成。

 ソフト部分ができてきたので、明日はハンダ付けの日かな?


アルシオーノの二階部分の検討

20130602_01

 最初、アルシオーノ付属の基板を利用することを考えていた。でもパープルの配線で囲んだ内側は、表面実装部品用のユニバーサル基板なので使えない。
 でもアルシオーノ。結局はArduinoとピン互換なので・・・。

20130602_02

 アルシオーノを手に入れたMTM07で手に入れたサンハヤトの当時新発売のArduino基板を使うことにした。これだと、3軸加速度+地磁気センサと2軸地磁気センサの両方載せられそう。この方向で作成してみます。


アルシオーノでXBeeな基板作成

20130601_01

 予定通りエキサードラボさんのアルシオーノを作成。プリント基板なのでさくさくと進む。LCDは使わないのでその部分は端折る。
 今回、電源は規定の5Vでなく3.3Vに変更。マイコンはATmega328Pのままだけど、3.3Vなのでクロックは16MHzから8MHzへ変更。16MHzのセラロックは使わずに、手持ちの8MHzのセラロックを半田づけ。
 XBeeのソケットもそれをはんだづけする部分もあるのでこれも半田付。しかし、そこからつながってるのはGNDだけ。XBeeの電源、DOUT、DINは孤立のランドがあるのみ。

 この段階で、ATmega328PのArduinoブートローダを書き換え。ISP端子があるんでAVRISPmk2にてATmegaBOOT_168_atmega328_pro_8MHz.hexを書き込み。その後シリアルでのプログラム転送もOK。

20130601_02

 XBee周りは配線で対応。3.3V電源にしたので、アルシオーノに付属の5V→3.3V降圧用のダイオードは使わず。XBeeを抜かずにAVRのハードシリアルから切り離す仕組みとして、ジャンパピンをTX,RXにつけました。ISPでHEX書き込むなら別に無くても良いのだけども、シリアル書き込みもするかなと。

20130601_03

 で、ソフトウエアの変更。
 リモコン側と、今回作った操作される側の2つが揃っていないのでArduinoIDEで環境を切り替えるのが面倒です。モータードライバ&モータを繋ぐと五月蝿いので、LEDで動作確認中。

 この週末はソフトの作成までかな。日曜に趣味を頑張ってしまうと、月曜からの仕事へ脳みそが変換出来ない。
 あとアルシオーノの販売元のエキサードラボさんのHPがなくなっていた事に1年半の時間を感じる。


クロウラー準備

 無限軌道のクロウラー。ホントは上にものをつかむギミックが乗るののだけど、そこは省いた形。

 今夜は2階建てにして、XBee、モータドライバと電池を載せて遊んでみた。動画は無し。
DSC_0447

 この週末お休みで、XBeeとモータドライバの間にATmega328Pを挟んだ感じでコマンドコントロール系に変更します。ついでに、加速度・地磁気センサの値を受信してログ保管。
 XBee&ATmega328Pは2011年12月のMake: Tokyo Meeting 07で仕入れてきたアルシオーノを組み立てて使ってみます。せっかく買ったので使わないと。制御系の電源は3.3Vで行くのでクリスタルは手持ちの8MHzに取り替えます。距離センサは手持ちに3.3V対応のVCNL4000が1つだけあるので搭載してみようかな。という感じです。
 コンデンサマイクを複数置いて、”手を叩いた方向へ進む”とかもやってみたいです。

 他は、多分自宅のリビングでは走行不可能な、ボールキャスターとタイヤ2つによるメカも仕入れました。でも、やはりキリムの床では進まないかも知れない。


XBeeリモコンの寄り道

20130530_01
(コントローラが埃っててすみません。すっかり弾幕系STGをプレイしていないので。)

 こんな感じでPC用のUSBゲームコントローラのジョイスティック部分での操作も検討中。モータの回転をPWM調整すればアナログジョイスティックが有効活用できる。

 最初はPCにコントローラを接続して、DirectInput経由でC#あたりでなんとかという妄想をしてたけど。PC使うならkinectで操作するくらいでないと面白く無いなと。kinectも本格的にいじる前に次のfor Windowsが来年出そうですが。


LSM303DLHC正常動作しました。

 サンプルソースをちゃんと読んだら、ちゃんと書いてあるじゃん。


// Calibration values. Use the Calibrate example program to get the values for
// your compass.
compass.m_min.x = -364; compass.m_min.y = -291; compass.m_min.z = -336;
compass.m_max.x = +265; compass.m_max.y = +345; compass.m_max.z = 180;

 X,Y,Z軸のMAXとMINの値を表示させるスケッチをつかって、自分のLSM303DLHCの計測値の範囲を取得。ブレッドボード接続のままぐるんぐるん・くねんくねんとセンサーを手で動かすのは難しい。
 昨日作った360度方位をLCDに表示するスケッチに書き換えて、正常動作を確認できました。
 実は、二軸方位センサHMC6352も手に入れていて、こいつもやはりキャリブレーションがいる。こっちはセンサーをキャリブレーションモードにしてぐるぐる回せばOKみたい。二軸なのでくねんくねんは要らないw。で、この値がセンサ内に保存されるのかどうか?調べておこう。じゃないと毎回ぐるぐるしなくては。