2014年5月27日火曜日

ArduinoでGPSロガーを作ってみた。

とりあえずArduinoでSDが扱えるようになったのでGPSロガーを作ってみた。
せっかくLCDもあるのでGPSの情報をLCDに表示できるタイプ。
GPSのNMEAパーサーもライブラリとしてあったので結構簡単に。

今回使用したライブラリはmicroSDHCの読み書きにSD.h、NMEAパーサーとしてTinyGPS++.h、LCD表示にPCD8544.h、あとGPSはUTC時間なのでローカルタイムに変換するためにTime.hを使用した。

ついでにU-bloxのGPSを使用したので自動でボーレートと位置情報の更新レートを変更するようにした
まぁまたまた海外サイトを参考にさせてもらったわけだが(SDのファイル名設定の部分とかそのまま頂きました…


ボードはArduino Pro miniの16Mhzタイプを3.3Vで動かしてます…
まぁ動いてるからよしとしよう・・・
なのでSDカードもGPSも直結してますw

NMEAパーサーにTinyGPS++を使用したのでGPGSAセンテンスを解釈できる。
これでGPSのFIXステータスが確認できます!(NOFIX、2DFIX、3DFIX)

GPSのUTC時間からローカル時間への変換は一旦time_t型に突っ込んでからローカル時間に変換してます…
ついでにSDカードに書き込むときにもこの時間を利用してファイルの更新日時つけてます。
なんか無駄な所ありそう?

とりあえずブレッドボード上ではうまく動いてる模様。
意外と車移動では5Hz更新(一秒間に5回)がいい感じ。
ログはNMEA to KMZ file converterを使わせてもらってGoogle Earthで見てます。
数種類ためしたけどこのツールが一番使いやすい気がする。

あとは小さくまとめないとな。バッテリーは何を使おうか…

2014年5月23日金曜日

ArduinoにmicroSDHCをつないでみた。

久しぶりにArduinoをいじってみた。
まぁMultiWiiもArduinoなんだけどねw

MultiWii用に買ったGPSとArduino Pro mini互換ボードでGPSロガーでも作ってみようかと。
Arduino Pro miniはOptifixに書き換え済み。

このボードの便利な点はFTDIがついてないので電圧は5Vに固定されない!
まぁ16Mhzなんだけども今回は3.3Vでがんばってもらっちゃいます。
なんで3.3Vなのかと言うとGPSもSDHCも電圧が3.3Vだからレベル変換とか面倒だったので。

microSDHC 8GB以下は値段がほぼ変わらないので8GBを買ってみた。Class 4で500円以下。
変換アダプタ付きってところがポイント。

ピンヘッダを直で半田してしまえばブレッドボードで扱いやすい!
端子部分を適当にがりがりやると半田が乗りやすい気がする。
今回はSPI接続なのでこんなもんでOK。
3番に半田が乗ってないのはmicroSDHCでは使用してないため。

そのままブレッドボードにさせるのは便利ー
なかなかこの方法はコストパフォーマンス高い気がする。

FTDIボードは3.3V仕様を接続。
SDカードはArduinoの標準ライブラリで使用できる。

2014年5月18日日曜日

MicroWiiで2軸ジンバルを動かしてみた。

スキッドと一緒にぽちっていた2軸ジンバルを組み立ててみた。
とりあえずラジコンサーボの安いタイプ。

別なフレーム用だけど安いやつがあったのでw
ラジコンサーボは別売り。マイクロサーボと標準サイズのサーボが必要らしい。
どっちも0.07sのデジタルサーボにしてみた。
最近ホビキンのバックオーダーがひどくて…
とりあえずこの二種類にしてみた。

さらにネジが必要w
M2x6は付属してくるんだけど一個だけ不良品でナットに入らなかった…
ネジぐらい予備入れてくれよ…


部品がそろったところで組み立ては結構簡単。一部バリ取りしないと組みたたなかったりはご愛嬌。

問題はF330フレーム用のジンバルじゃないからどうやって固定するかってところなんだけど
ちょうど手元にあった40mmのM3スペーサーがちょうどよかった。
バッテリーもう一個乗せられそうなぐらいのスペースできるしw
なかなかいい感じ。
ROLL方向のサーボはちょっとサイズが小さかったようで付属のネジが使えなかった。


お次はMicroWiiのファームウェア設定。
バージョンはMultiWii 2.3を使用している。
ファームウェアのほうは
#define SERVO_TILT
のコメントアウトをはずすだけ。

MicroWiiとラジコンサーボの接続。
TILT方向のサーボをA0、ROLL方向のサーボをA1に接続する。

これでとりあえず準備OK。
I2C_GPSをオフらないと容量オーバーで書き込めなかったけど…

サーボの設定はMultiWiiConfを使う。
ConnectしたらCAMSTABが追加されてるはず。とりあえず全部にチェックしたので常時オンになった。

READボタンを押すとSERVOタブが出てくるはず。
そこのGIMBALボタンを押すとラジコンサーボの設定ができる。
GO LIVEを有効にすると動かしながら設定ができる。
とりあえずMIDで中心を決めて、PROPのほうで傾きとサーボの動く量の比率が設定できる。
マイナスの値だとリバース。
動かしながらちょうどいい値になったらMINとMAXをぶつからない程度に調整する感じ。
40mmスペーサーだとMINとMAXがそのままでもぎりぎりぶつからなかったw

あとは飛ばすだけか。

2014年5月17日土曜日

F330フレームにスキッドをつけてみた。

F330フレームって事故ると折れやすいのよね…
羽が外れたりバッテリーが外れたりして落ちまくっていたのでF330フレームも3パック目突入。

というわけでスキッドつけたら多少壊れにくくなるんじゃね?っていう安易な考えでスキッドを探してみた。

F450用とかはいろいろあるみたいなんだけどF330用っていうのはなかなか見つからない。
アームと友締めするタイプはアームのナットが抜けてきたりするそうなのでプレートに固定するタイプがいいな…


ホビキンを見ているとそれっぽいのを発見。なんかフレームにはさめそうな感じ。
しかしF330用って書いてないのね…
とりあえずぽちって見た。
全部ばら売り。
Multi Rotor Undercarriage 105x240mm (White)
Multi Rotor Undercarriage 105x240mm (RED)
Glass Fiber Tube 8x5x330mm (Black)
あと京商のマフラーキャップ

プレートを挟んでるだけなんだけど意外としっかり固定されてるかも。
離着陸してみないとわからないけど。

これで下にスペースができたのでカメラジンバルも積める!
一応スキッドと一緒に注文しておいたんだけどネジが足りないので明日買って組み立てよう…

2014年5月10日土曜日

MicroWiiにGPSをつけてみた。

MicroWiiはUSBから直接ファームウェアを書き換えられる上にシリアルポートも1ポートついてるからGPSがそのままつながりそうなんだけど、シリアルポートはBluetoothで使用しているのでi2cでGPSをつないでみた。

i2cでGPSをつなぐためにi2c-GPS-Navボードが必要。GPSと別々にebayで買ってみた。
GPSはVK24U7っていうやつを購入。U-blox NEO-6M使ってる人は多いけどU-bloxの7シリーズが使ってみたかったので。UBX-G7020搭載で10Hz対応らしい。

U-bloxのGPSは安いしU-bloxプロトコルが使えるからいいかも?

とりあえずi2c-GPS-Navボードに付属してたケーブルをGPS用に組み替える。
このGPS側のピンアサインは左からEN、GND、RX、TX、VCC、PPS。EN何も繋がなくても大丈夫だった。VCCは3.3~5V対応らしい。

お次はi2c-GPS-Navボードのファームウェア書き換え。
このボードはArduino互換なのでArduino IDEでファームウェアを書き換えられます。
今回はArduino IDE 1.0.5とファームウェアはI2C_GPS_NAV_v2.2Beta1-r62.rarを使用した。
ちなみにArduino IDEでボードは"Arduino Pro or Pro Mini (5V, 16MHz) W/ATmega328"を選べばOK。

どうやらこのバージョン、Ubloxプロトコル周辺に不具合があるようで今回はUbloxプロトコルを使いたいので、修正版I2C_GPS_NAV_v2_2.inoをこちらから持ってきて上書き。

上書きしたらI2C_GPS_NAV_v2_2.inoを開いてconfig.hタブを開く。
今回はUbloxプロトコルでボーレート57600bpsを使用したいので

#define GPS_SERIAL_SPEED 57600


//#define NMEA
#define UBLOX
//#define MTK_BINARY16
//#define MTK_BINARY19
//#define INIT_MTK_GPS

というような感じに書き換えた。

さらにこのボードは超音波センサをつけられるようになってるみたいなんだけど今回はつけないので

//#define SONAR

とした。


Ubloxプロトコルを使うとGPSモジュールを自動設定してくれるみたいなんだけどNEO-6M用にできてるのでこのままだと5Hzになってしまう。
自動で10Hzに切り替えるようにI2C_GPS_NAV_v2_2タブの"#if defined(UBLOX)"あたりもいじる。

1266行目あたりに"//set rate to 5Hz" とある。
ここでGPSモジュールを5Hzに切り替えてるようなのでここを10Hz対応にすればいいはず。

というわけでこの行を

 0xB5,0x62,0x06,0x08,0x06,0x00,0x64,0x00,0x01,0x00,0x01,0x00,0x7A,0x12 //set rate to 10Hz

という感じに書き換えた。

後はファームウェアを転送するだけ。
5VのFTDIボードを使用する場合はGPSを抜いておいたほうがいいかも?
今回は3.3Vに設定したFTDIボードを使用した。

なんか書き換えられないなぁ と思ったらFT232RL死んでたのでIC乗せ買えた…

とりあえず今回はUbloxプロトコルを使用するのでGPSモジュール側は何も設定しなくていいはず。
このi2c-GPS-Navボード、そのままMicroWiiのI2Cポートにさせるんだけど、SCLとSDAが逆だったのでピンを入れ替えたw なんという罠…



次はMicroWii側のファームウェアを書き換え。

config.hのI2C_GPSのコメントアウトをはずし、

#define I2C_GPS

地域にあわせた磁気偏差の設定をする。よくわからないけどとりあえずコメントに従った…
ちなみにコメントのリンク先で磁気偏差を調べると度分で表示されてるので度に直さないとだめみたい。

#define MAG_DECLINATION -7.12f

みたいな感じで書き換え

ボードでArduino Leonardを選びなおすの忘れずにw



とりあえずバッテリーつないで外に放置。
室内でBluetoothで接続してMultiwiiConfigを見てみるとGPSがFixした!
これでとりあえずGPSの設定は完了。
細かい設定はとりあえずPOS HOLD試してみてからかなぁ

GPS情報を見るときはmw-winguiを使ったほうがいいかも。
これだとGoogle MapでGPS情報見れるのでわかりやすい。

2014年5月5日月曜日

クアッドコプター中破…

友人とクアッドコプターを飛ばしに行ってきた。
ある程度曇っててかぜもなくいい感じの天気だったのに
離陸直後バッテリーがずるっと滑って一回転w
さすがに760gの機体で200gのバッテリーが外れたらバランス崩すわ…
フレームだけじゃなくてモーターも逝っちまったので
友人のクアッドコプターの調整をメインに飛ばしてきた。

無造作にいろいろ転がってるけど…
現地でMultiWiiの調整は今回はVivoTab Note8を使用。
やっぱりプログラムをいじるときはZenbook Primeを持っていったほうがよさそうだ。
地味にArduino IDEが重い?ってかなんでこんなにArduino IDE重いんだろ…
Javaだからか?


そして地味にBluetoothモジュールが便利。VivoTab Note8だとデジタイザペンも使えるので結構いい組み合わせかもしれない。



そして帰宅してバラしてみると予想以上に被害は甚大だった…
本日の犠牲者…
モーターはケーブルが根元から切れてたから死んだな…

6本ぐらいだし半田付けで何とかなるかも?
とおもってやってみたら意外と何とかなってしまった…


普通に修理完了。
一応モーターぽちった。

2014年5月4日日曜日

MicroWiiの気圧センサの精度向上!

毎週のようにクアッドコプターを飛ばしてようやく安定するようになってきたのでANGLE以外のモードにも手を出してみようかなと…

とりあえずANGLEではそこそこ飛べるようになってきたので取り合えずALT HOLDが使えるように風と光に弱い高度センサの精度向上を目指すことに。
一応電源ラインのコンデンサは追加してあるのであとは光と風をさえぎるだけ!

黒いスポンジを探してたんだけどなかなか見つからなかったのでダイソーで見つけたイヤホンパッドを使ってみることに。
しかし黒でも意外と光を通してしまう…
というわけで二枚重ねにしましたー

両面テープで張って完成。I2Cのピンアサインのシルクが見えなくなってしまったが仕方ない…

さてあとは飛ばしてどうなるか…

2014年5月3日土曜日

VivoTab Note8のデジタイザペンが使えなくなる不具合?

クアッドコプター設定ツールのMultiWiiConfigを動かすためにクアッドコプター飛ばしにいくときにいつもVivotab Note 8を持って言ってるんだけど昨日突然タッチペンが使えなくなって困った…

MultiWiiConfigは数字が細かいからタッチペン便利なのよねぇ
むしろタッチパネルじゃ設定できないし!

調べてみると存知の不具合のようで…

対処法もいろいろあってデバイスマネージャーでデジタイザペンを無効にしてから有効にするとか
UEFIのDefault値ロードさせてSave and Exitしたり
レジストリをいじったり


昨日使えなくなったときは無効にしてから有効にする方法でもまったく復活せず…
UEFIのDefault値ロードで普通に直った。

いつのまにかWacomのドライバも出てたようなんだけどこれを入れてもエラー10は発生する模様。

次回発生したらMicrosoft Communityで見つけたレジストリいじる方法試してみるかな…

2014年5月2日金曜日

クアッドコプターにカメラ積んでみた

毎週のようにクアッドコプター飛ばしに行ってたけどANGLEモードでだいぶ安定するようになってきたのでためしにカメラをつけて飛ばしてみた。


とりあえず適当に固定…


音量注意!
もっと高画質なカメラ積みたいねぇ
あと固定なので地面か空しか見えないという状態にもなるので難しいな…
ジンバル的なの作らないとだめそう。