マイコン一覧

アルシオーノで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つによるメカも仕入れました。でも、やはりキリムの床では進まないかも知れない。


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。で、この値がセンサ内に保存されるのかどうか?調べておこう。じゃないと毎回ぐるぐるしなくては。


地磁気&加速度センサLSM303DLHCテスト

20130529_01

 ストロベリーリナックスの地磁気&加速度センサLSM303DLHCをテスト。
 簡単にArduinoUNOに液晶シールドを載っけたものに電源はエネループ。LSM303DLHCは電源2.16Vから3.6Vで、IOは1.71Vから電源+0.1V。5VのArduinoUNOのI2Cとは直結出来ないので、自宅に3つくらい在庫してある秋月電子のI2C専用レベルコンバータAE-PCA9306を介して接続。

 で、動かしてみるとなんかの影響を受けているのか、キャリブレーションしていない所為なのか値が偏る。地磁気による方位を表示させてても、グルっと回ると確かに360度分の数値が動いて戻ってくるのだけども、90度単位で動いても数値が90単位で変わるわけでもなく。原因を調べないと。ライブラリの問題なのか、キャリブレーションの問題なのか?ただ、決まった方向を向いてれば数値は同じなので地磁気はとれているはずだ。地磁気以外の磁気的要因だったりするとモータ使った機器に載せるのは無茶だろうか?


pinMode(Pin, INPUT_PULLUP);

 朝、なにげにRSSリーダでチェックしていたら、スイッチサイエンスさんのブログにこんなエントリーが

 はい、知りませんでした。先週作ったXBeeラジコンの送信機も、同じような回路。内部プルアップ抵抗を使って、ボタンを押してないときはHIGH,ボタンを押すとGNDに直結してLOWという感じ。
 自分が書いたコード自体も、

pinMode(LeftUP, INPUT);
digitalWrite(LeftUP, HIGH);

昔からある手法の、ピンをINPUT指定しておきながらdigitalWriteでHIGH出力すると、内部プルアップ抵抗がオンになるというもの。
これが、

pinMode(LeftUP, INPUT_PULLUP);

の1行にまとめられるので、お得です(笑)


XBeeラジコンテスト2

20130519_01

 昨日の続き。まずリモコンのコントローラを作成。左上赤が左モータ正転、左下黒が左モータ逆転、右上赤が右モータ正転、右下黒が右モータ逆転。黄色は砲弾発射では無く、未定義。
 スイッチのチャタリングがあるかと思ったけれども、特に対策無しでOKだった。

20130519_02

 XBeeのデジタル出力のテスト。モータつけると五月蝿いので、まずはLEDで確認。

20130519_03

 モータをつけたテスト。デジタル回路側の電源に単四電池2本を想定していたのだけども、単四2本の電池ボックスが手持ちになかった。手持ちの在庫からCR123Aの電池ボックスが見つかったのでこれで仮に代用した。

20130519_04

 タミヤのインセクトに載せてみた感じ。

 ブレッドボードだとAVRマイコンを載せる余裕が無いので、C基板かスイッチサイエンスさんの基板で作り変えます。動画は操作しながらの撮影が出来ないのでまたいつか。ツレに手伝ってもらうかな。

コントローラのボタン割り付けは今は、
 [パターンA]
 左上
  押しているあいだ DIO1をオン、離したらDIO1をオフ
 左下
  押しているあいだ DIO2をオン、離したらDIO2をオフ
 右上
  押しているあいだ DIO3をオン、離したらDIO3をオフ
 右下
  押しているあいだ DIO4をオン、離したらDIO4をオフ

なのだけど、
 [パターンB]
 左上
  押したら DIO1をオン、DIO2をオフ
 左下
  押したら DIO2をオン、DIO1をオフ
 右上
  押したら DIO3をオン、DIO4をオフ
 右下
  押したら DIO4をオン、DIO3をオフ
 黄色
  押したら DIO1,DIO2、DIO3、DIO4をオフ

 こっちのほうが押しっぱなしにしなくていいから楽かしらん?と思っている。

 あと、キャタピラの方のタミヤのキットも作成しなければ。