HK-450 フライバーレス・ヘリコプター(1)

クワッドコプターは、機械的な構造がほぼ無く、巧みな原理で飛行するのでクールで好きだ。
また、コンピューター制御(フライバイワイヤ)と密接に関係していて、電子回路と切っても切れない関係にあるのも良い。
だからと言って、機械的な構造を駆使して飛行するヘリコプターが嫌いな訳では無く(むしろ好き♪)非常に憧れる~(内燃機関が好きな理由も同じような感じだろうか)
前から、自分で飛ばしてみたくて、小型の室内ヘリなど買う寸前までいった事があるけどー、難しそうだし、際限無くはまりそうでスルーしてきたー。

HobbyKingと言うショッピングサイトがある、主に模型関係の部品を扱っているのだけど、
値段が信じられないくらい安くて、日本では買えないパーツや、面白い試みのパーツが盛り沢山、一番の問題は日本からでは送料が割高になってしまう事くらい・・
※幾ら以上だと送料無料とか、日本国内なら安全確実に安い料金で何処でも送れる、この「送料」が高い現実に、何度も躊躇するのだが・・
でも良く考えて「まとめて」買えば、どうにでもなるかもしれないと思い込む事にする、利用しない手は無いww

HobbyKing は色んなとこにリンクが溢れていて、何かの拍子にウィンドウショッピングを繰り返す事も多くて、「欲しい」欲求が抑えられないよー
そんなこんなで「HK-450」このヘリコプターは、450 サイズの規格で作られたヘリなのだがー、え!?、って値段で売られている。マジで・・・
この値段なら買ってもしょうがないなww、で、後先考えずにとりあえず買ってしまった・・
「本体」だけでは、飛ばないので、モーター、バッテリー、サーボ、ジャイロ、ESC 、必要そうな物を全て購入してしまう。
※それなりの出費だけど、マイクロヘリより本格的なヘリが手に出来る。

ヘリコプターの事なんて何も知らないけど・・・

それが、昨日届き、情報を調べながら、組み立て始めたので、その顛末をここに書いておこうと思う。

組み立てがある程度出来てしまったけどー

HK-450 フライバーレス
HK-450 フライバーレス

こんな感じ~

「何故フライバーレスなのかー」
ヘリコプターにはジャイロ(ローター制御)が必須だけどー、フライバーレスは、それより厳密な制御が必要で、より電子化された制御が必要な事からー、クワッドコプターに近いのかもしれない。
「ヘリコプターは飛ばすのが難しい」これは、昔から言われて来た事なのだがー、ジャイロや加速度センサー、マイコンによる姿勢安定制御ソフトウェアーの進歩が、この常識を変えようとしている。
※自分も姿勢制御ソフトウェアーを作ってみたい、研究してみたい~
↑この辺りも、あって研究目的で手を出したのもあるかもしれないwww

「安さと品質の関係」
本体は確かに安いけど、それだけでヘリが飛ぶハズも無い、「安物買いの銭失い」と言う言葉もあるけどー、日本の大手のように、アフターサービスなどコストがかからない分、空気が読める人だけに売る姿勢は、面白い。
キットには説明書は一切入って無い、聞く所によると、部品が足りないとか余分な部品が入っているとか、様々らしい、自分で考えて、調べて、スキルを上げて切り抜ける事が出来る人にだけ楽しめるものかもしれないww
もはや、ヘリを飛ばすのがゴールではない!作る過程がアドベンチャーゲームだwww
しばらくの間、それを含めて楽しむ事にしよう~♪

「キット以外に何が必要なのか?」
・1.5mm スクリューキャップドライバー(レンチ)
・2.0mm スクリューキャップドライバー(レンチ)
※一般的には、「6角レンチ」と呼ばれる事が多いです。
・小型プラスドライバー
・棒ヤスリ
※100近で売っている200円の「ダイヤモンド粉末入り」が良いです。
・2mm のドリル
・外形3mm、内径2mmのアルミパイプ
※サーボの固定は2mmのネジだけど、買ったサーボのマウントはラバーで固定するタイプなので、カラーを自作する。
・ヒシチューブ
※モーターを ESC を接続する場合、「直」で繋ぐので、ヒシチューブを被せる、テープで巻くより綺麗で確実
・バッテリーと接続するコネクター
※ESC には、バッテリーのコネクターが付属しないので、バッテリーに合ったコネクターを別途用意する。
・2×8mmネジ
※サーボホーンにリンケージを固定するビス、短すぎ!、タッピングビス的に使うのかも知れないけど、緩むのが不安なので、ビスとナットで固定。
・他に一般的な工具や材料など

※近くのホームセンターで、1本250円で、1.5mm のドライバーを買ったけど、軸がねじれてしまい、思った力で締められない、先端だけ 1.5mm で、中間は太くて剛性がある物が良いでしょうか。
※2mmの方も、ねじれる傾向はあるけど、ギリギリ我慢できるかも。

IMG_0372s

「サーボマウントカラーの製作」
今回買ったローター用サーボは、コストの関係で、HobbyKing 製メタルギアーアナログサーボサーボマウントは、ラバーで固定するタイプなので付属の2mmネジでは全く合わない、そこで、アルミパイプを加工してカラーを作る事にした。
※しかし、1個4.55ドルって・・・安!

まず、外形3mm、内径2mmのアルミパイプを用意する。(近くのホームセンターで、1m、199円でした)
・3mmくらいでカットします。
※カッターを垂直に押し当てながらゴロゴロパイプを転がすと、柔らかいアルミなので意外と綺麗に切れます。
IMG_0373s
IMG_0375s
↑ちょっと失敗、でも、1000mmもあるので、何回でもやり直せますww

・何か丁度良い厚み(1.5mmくらい)の板を用意して、3mmの穴を開け、そこにパイプを入れます。
※電子工作用のユニバーサル基板が1.6mmで、角に3mmの穴が開いているので利用しました。
IMG_0376s
↑パイプの口を広げる為に、先の尖った円錐状の物を用意します、写真に写っているのは、旋盤のレースセンターですが、ポンチのような物で良いでしょう。

・板から飛び出たパイプの先端を、円錐状の物で広げます。
IMG_0377s
IMG_0378s

・さらに、平らな物で先端を潰して完成です。
IMG_0379s

IMG_0380s
力の加減があるのですが、何回かやれば思ったように創れます。

全部で6個必要です。

「テールブレード用サーボマウント」
HK-450 では、テールブレードのピッチ変更用サーボだけ、高速な物を要求しています、理由は良く判りませんが、通常の(フライバーレスでは無い)ヘリコプター用ジャイロが要求する仕様のように思います。
一応、高速タイプのデジタルサーボを選択しました。
トルクが1.8キロなので、少し弱いのかもとも思いましたが、ここに大きな力が働くとも考えられません、しかしながら、サーボのブラケットは大きな物が用意されていて、このサーボはそのままでは取り付けできません。
そこで、アルミの板を切って、サポートを作りました。
IMG_0369s
ホームセンターで売られているアルミは、柔らかく加工が楽で安いので気軽に使えます、但し、このくらいの厚さ(1.5mm)があるとカッターで切る訳にもいかないので鉄ノコで切り、端面をヤスリで仕上げます。

「バッテリーの滑り止め」
工具の滑り止めなどの名目で売られている「例の」シートを、接着剤で、張りました。
IMG_0381s

IMG_0382s
接着剤には、「セメダイン・スーパーX」を使いますww
これを知ったのは、デコ携帯に色々くっつけるのに女子が使っているのを観たのがきっかけですww
意外と柔軟で、何でも良くかなり強く接着します、「瞬間」ばかり多用していた自分には新しいです!、但し、接着には時間がかかります。
※「瞬間」も、最近ではアロンアルファでは無く、ロックタイトを良く使います、アロン何とかは、二回目くらいに使う時に固まって使えない事が多く「損」です、最後まで使えた記憶が殆どありません。
※セメダイン社最高!

「モーターとESCの取り付け」
モーターは、Turnigy Typhoon 2215H Brushless 450-Size Heli Motor 3550kvにしました、特別な理由はありません、kv 値は一応少し気にして、他の人が使っているモーターと同じくらいの物を選びました。
※値段が15ドルと安いです!
ESC は40Aが推奨ですが、以前に研究用に買った30Aの物があり、モーターの最大電流が28Aなのと、薄くてマッチするのでとりあえずそれを取り付けましたが、40Aの物も買ってあります。(かなり大きい)
※足りないようなら、40A品を付けますが、しばらくは、高速で飛行させる事は無いので、多分十分と思います。
BEC出力も2Aありますから、サーボ4個程度なら十分です。

IMG_0384s
※モーターのハーネス、1本だけ、細すぎるチューブを使った為失敗しているww

モーターとの接続は、回転方向があるので注意しなければなりません、仮に繋いでみて、回して、回転方向を確認します。
※メインのスパーギアには、自転車のようなクラッチが入っていて、逆回転だと空回りするので、どちらに回転するのが正しいのか直ぐに判ります。
※逆回転なら、3本のうち2本を入れ替えます。

このモーターには最大28Aもの電流が流れるので、接続はハンダで、ガッチリ行います、接続した部分がショートしないように、ヒシチューブで絶縁します。
ヒシチューブは熱で収縮するのですが、ガス半田コテのホットブローアタッチメントを使って処理します。
IMG_0388s
※コテライザーは、ガス半田こてで、非常に便利です、先端のアタッチメントも色々あり、便利!

今回はここまで~

サーボとのリンケージとか、どのように調整するのか不明な事も多く、その辺りは適当に流しましたが、これから地道にやっていこうと思います。
このヘリコプター、意外に軽いのでビックリしますが、剛性が必要な部分はアルミ(ジュラルミン?)の削りだし、フレームもカーボンで出来てます、この造りでこの値段はやはり脅威です、しかし元のヘリコプターの設計が良い事は凄く良く判ります。
上手く飛ばせるようになったら、オリジナルが欲しいですねー

次回は、ジャイロの設定などを中心に紹介する予定です。

RX マイコンでC++

少し間が空いたけど、またまたRXマイコン関連ですー

日本の組み込み(趣味)マイコンでは、まだ「C」が主流で、「C++」の情報が少ないように感じる。
デバイスドライバーもCで書かれたものが殆どで、C++で書かれた物が少ない(日本国内では観た事が無い)
※たとえば、複数チャネルを備えたUARTなど、テンプレートクラスを使えば、拡張性のあるコードがシンプルに書けると思う。

Windows などのアプリケーションプログラマーは別だが、組み込み系プログラマーは、まだC++に対して、「負」の感情を持っているのだろうか?

最近AVRでプログラムする機会があり、C++が実用レベルで扱える事を知ったー
又、arduino を触る機会があり、そのコードはC++が中心である事も知った。
ARM系、海外の組み込みプログラムでは、C++が普通に使われている、何故日本は未だにCなのだろうか?

さて、RXマイコンの開発環境なのだがー、C++でプログラムする場合に必要な事を考えてみたい。

AVRではメモリーの制限からSTLを扱う事が困難だ、RXマイコンなら全てのデバイスでは無理だけど、少なくともRX621など、RAMもROMもある程度豊富にあればSTLも怖くないと思われる。
以前にSH2AでSTLが正しく動作しなかったのだが、それは、静的な初期化関数のコンストラクターが正しく呼ばれていない事に起因するようだった。

ARMの gcc などの情報から、「.ctors」セクションに初期化が必要な関数のコンストラクターテーブルが格納される事は判ったので、リンカースクリプトに.ctorsセクションのロード命令を記述して、簡単なコードを書き、アセンブルリストを観て確認してみた。

typedef unsigned int uint32;

class func {

uint32 count_;

public:
func() : count_(0) { }

void service() { ++count_; }
uint32 get() const { return count_; }
void set(uint32 v) { count_ = v; }
};

func func_;

↑たとえば、こんなクラスを宣言して、静的なクラスを配置する、「func_」は、main 関数が実行される以前にコンストラクターが呼ばれなければならない。
※funcクラスでは、コンストラクターで、count_を0で初期化している。

リンカースクリプトに、以下のように書いたが、mapファイルを観ても、.ctorsのサイズは0となっている・・・
.ctors :
{
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
}

最適化を0にして、アセンブラリストを確認すると、初期化関数自体はあるが、当然呼ばれていない・・・

fff80b31 <__GLOBAL__sub_I_func_>:
fff80b31: 7e a6 push.l r6
fff80b33: ef 06 mov.l r0, r6
fff80b35: 66 11 mov.l #1, r1
fff80b37: fb 2e ff ff 00 mov.l #0xffff, r2
fff80b3c: 39 c7 ff bsr.w fff80b03 <__Z41__static_initialization_and_destruction_0ii>
fff80b3f: 3f 66 01 rtsd #4, r6-r6

そこで、C++の標準的リンカースクリプトを参考にしてみたー「/usr/tkdn-20110720/rx-elf/rx-elf/lib/rx.ld」
そして、判ったー、最近の gcc では、別のセクションに格納されているようだー、これは、4.6 くらいからそうなったようだー

PROVIDE (__preinit_array_start = .);
KEEP (*(.preinit_array))
PROVIDE (__preinit_array_end = .);
PROVIDE (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
PROVIDE (__init_array_end = .);
PROVIDE (__fini_array_start = .);
KEEP (*(.fini_array))
KEEP (*(SORT(.fini_array.*)))
PROVIDE (__fini_array_end = .);

※ちなみに簡単に説明すると、「.preinit_array、.init_array」セクションが、コンストラクターの開始アドレステーブルが格納されるセクションであり、「.fini_array」はデストラクターの開始テーブルが格納されるセクションとなっているようだー
又、「KEEP」は、重要なキーワードで、最適化された場合、どこからも参照されないアドレステーブルは、削除される為、それが起こらないようにするものだ。

「__GLOBAL__sub_I_func_」は、「__Z41__static_initialization_and_destruction_0ii」を呼んでいるのだが、コンストラクターとデストラクターが共通になっており、引数を使って呼び分けているようだ。

初期化コードはこんな感じ~

int main(int argc, char**argv);

extern int sbss;
extern int ebss;
extern int idata;
extern int sdata;
extern int edata;

extern int _preinit_array_start;
extern int _preinit_array_end;
extern int _init_array_start;
extern int _init_array_end;

int init(void)
{
// R/W-data セクションのコピー
{
int *src = &idata;
int *dst = &sdata;
while(dst < &edata) { *dst++ = *src++; } } // bss セクションのクリア { int *dst = &sbss; while(dst < &ebss) { *dst++ = 0; } } // 静的コンストラクターの実行(C++ ) { int *p = &_preinit_array_start; while(p < &_preinit_array_end) { void (*prog)(void) = (void *)*p++; (*prog)(); } } { int *p = &_init_array_start; while(p < &_init_array_end) { void (*prog)(void) = (void *)*p++; (*prog)(); } } // main の起動 int argc = 0; char **argv = 0; int ret = main(argc, argv); return ret; } C++ テスト・コード

※今後 rx.ld を解析して、自分のシステムに合った物に修正する必要がある、リンカースクリプトにはまだまだ不明な事が多い・・・

とりあえず今回はここまで。

久々のツーリング(2/2)

さて前回の続きですー

今回は長野から埼玉、東京(立川の自宅)までです。

県道106号をずっと進むと、県道68号にぶつかるので右(秩父方面)へ。

本当は、県道2号→県道124号→国道299号の予定でしたがー、県道2号へ曲がる所をスルーしてしまいました・・・
ここからが、悪夢の始まりですーー、道なりに進むと、標識が、ストリートビューでは「通行止」となってますが、現在は「不通」では無いと思います、標識も良く観たら、「三国峠、中津川林道」と書いてありますがー、瞬間しか観ていない為、上の「秩父」を観て、なんだー、「秩父に抜けられるじゃん」って思い、そのまま進みました・・・

ここはもう県道では無く、単なる舗装された林道なので、道は狭く、車一台分くらいしかありません、何か嫌な予感はあったのですがー、小雨が降ってきた感じで、寒く、引き返すのもなぁーと思いながら、この道なら問題無いと思いそのまま進みます。

で、三国峠ですよ・・。

中津川林道は、高校生くらいに、友達につられて来た事ありますが、舗装されていないかなりハードな林道です、オフ車なら好んで来ても、RC45みたいなロードバイクで来るとこじゃありません・・・
この標識を観て、引き返そうと思いましたがー、以前の印象では、「舗装されて無いけどー、それなりに走れた感じ」だった為、引き返すのも大変だし、そのまま行く事にしましたー
少し走ってみて、それが間違いと気がつきましたがー、少し行ったら楽になるのでは?と期待しつつ18キロを泣きながら走破しました(涙)、もうね、ガッタガタで、でこぼこ、ニュートラルにしてエンジン切って惰性で進む程度の速度(10~20キロ)でしたね・・・、なるべく平坦そうなとこを選びつつ、ヒイヒイ言いながら、まだ終わらんのか、まだ続くのかと、ひたすら耐える感じです、でも不思議なもんで、最後の方は、多少滑るのが少し楽しくなってましたーー

そしてようやく林道をぬけましたここでしばし休憩ですー、オフローダーが4人くらいいて、笑われましたー、自分は「知らなかった」と照れ隠しですwwカウルの下の方には泥が溜まり、ラジエターが詰まってます(涙)、しばらく休憩してましたがー、既にかなり遅い時間、まだ自宅まで相当距離があるので、そうそうに出ました。

「彩の国ふれあいの森」から県道210号へ、ここの県道も最近道が新しくなったのか、気持ちイイとこです、そして国道140号へ、甲府に抜けて411号を戻っても良いのですがー、同じ道を通るのも何なので、秩父方面へー、ひたすら140号、さすがに休日の国道、けっこう車がいて途中、渋滞してたりします、秩父市内は凄い渋滞・・・、全然動きません・・・、仕方無いので、すり抜け・・、国道299号を日高方面へ

国道299号も凄い渋滞です、道の駅「果樹公園あしがくぼ」で休憩、もう既にかなり暗くなっており、少し寒いです、早々に出発。

299を少し進み正丸トンネルの手前を右に(青梅、名栗)、県道53号は、多少狭いけど、青梅に抜けるには最高の裏道です。

ひたすら53号、途中曲がり角ですが、やっぱり53号ww。
途中の交差点をとりあえず右、(左でもいいんだけど)、そして次の交差点を左(トンネル方面へ)、そのまま、道なり、途中で県道28号へ、青梅市内に入ったら、適当に県道5号(新青梅)を東京方面へ。

そんなこんなで、やっと自宅に到着、8時過ぎになってましたー。

次に「中津川林道」を走る時は、オフ車かモタードで!
※全然懲りてないwww

次の日は、洗車してましたー

久々のツーリング(1/2)

先日の連休、久々にツーリングに行ってきましたー、ソロツーなので日帰りです。

カメラを持っていかなかったのと、写真撮影の為に停止するのが面倒で、写真は1枚も無し!
※次に行く時には撮影も重要なミッションとして行う予定ですw

久々にツーで思う事もあり、そのあらましを残しておきたいと思います。
※リンクとしてストリートビューを所々入れておきます。

自分がツーリングで目指すのは、とにかく空いた道で、渋滞が無く、舗装が綺麗で安全な事です。
自分のバイク、ブレーキにはかなり投資していて、ブレーキが気持ち良く、フロントが沈んだ状態からのコーナーワークが楽しくて仕方ありませんww

そんなこんなで、いつものように新青梅街道を奥多摩方面に進みます。
家を出たのは10時くらいでしたが、意外と込んでましたー、「ジョイフルホンダ」が悪いのかと思いきや、16号の手前で工事の為車線規制をしており、それが原因のようでしたー
新青梅街道は16号の手前で県道5号に合流します、それを道なりに行くと青梅の辺りで411号にぶつかります、ここで奥多摩方面へ。

いつもの事ですがー、青梅線沿いの411号は連休とゆー事もあってそれなりに込んでいます、途中道幅が広い部分とかあるので、すり抜けます。
バイクが後ろに付くと道を譲ってくれるドライバーもいます、ありがたい事です。
対向の車線で、それなりにバイクとすれ違い、最近、ほとんどしなくなったピースサインを出してくれる人がたまにいて驚きますが、用意が出来てなくて反応出来ません・・・
※法定速度以内だから文句は言えないけど、凄まじく遅い車がいます、(軽自動車のドライバーに多い)こんな車は絶対に道を譲りません、大抵後ろに巻き込まれた車が連なっています、少しは流れを考えて欲しいです・・

そんなこんなで411号を進んで行くと、奥多摩駅の手前(かなり)で「海沢大橋」とゆう交差点があります、ここを左に曲がり、県道164号を走ると奥多摩駅の渋滞をパス出来るので、自分はいつも利用します。
途中長いトンネルがあり、温度が低くて寒いですww、自分は一度しか見た事ないですが、スピード取締りを行っています、直線が長いからとスピードを出すとヤバイですwww
トンネルを出るとT字路でまた411号に合流します。

さらに411号を進み奥多摩ダムに行く道を過ぎトンネルを抜けると右側に大きな駐車場があり、ここで休憩です。
休みで天気も良いので、バイクや車が沢山います、売店で缶コーヒーを買い、しばし休憩・・・

411号を山梨方面に進みます。
奥多摩周遊道路は確かに道は良いのですがー、取締りが激しいし、車も多く、追い越し出来ないので、特別な理由が無い限り行きません。
※それより、行く方面が違いますが、139号を抜ける道が面白いですww
今回は、山梨に抜けるので、そのまま411号を行きます、最近、周遊道路に曲がる交差点を過ぎた辺りから先でスピード取締りを行っていたとの報告があります。
この辺りくらいから交通量が減り、すこぶる快調です、「のめこい湯」の前と少し先に最後のGSがあるので、ガソリンに余裕が無い場合は給油すると良いでしょう~、のめこい湯の先のGSは休日は閉めている事が多いようです。
「のめこい湯」は良く行く温泉の一つです、凄く良い温泉と思います。

さらに411号を進み「柳沢峠」に向かいます、最近、道が改修され、舗装も新しくなり、非常に走りやすく安全になりました。
柳沢峠の売店を過ぎたとこも、狭く曲がりくねった道がバイパスされて、非常に綺麗で走りやすくなりました、名物となりつつあるループのようなとこもあります。
この辺りから、大菩薩の湯の辺りでもスピードをやっているとの事なので、慎重に!

今回、「塩山市」に入った辺りで昼食、名物の「ほうとう」を食べました確か1380円、結構高いですが、量はそれなりにありましたー、味は普通ですかー。

昼食後、ここからが本番ですw、山梨の県道の何が凄いかってー、もう、道が空いてて空いてて、広くてー最高なんですー県道31号に向かいます、140号とぶつかっています。
140号から入った処は、民家が多く、それなりですが、直ぐに、民家も少なく、休日なのに車も殆ど走っていません、それでいて、コーナーが沢山あり堪能できます。
※地図を観て、県道で、クネクネしてるとこを試してますwww

峠を越え、街中に下りて来たら、混んでいる街中を少しだけ走り、今度は県道104号(千代田湖方面)へ、ガソリンを入れるなら、この辺りが良いでしょう、ここは、休日、それなりに混んでいます(街中なので)が、そこを過ぎれば気持ちよく走れます、ずっと進むと県道7号への分岐に来ますので、「昇仙峡グリーンライン」へ。
この辺り、観光地なので、そこそこ車がいますが、そこを過ぎれば、また辺鄙な道になりますw
御岳町の辺りで左へ県道7号は続きます、途中から県道27号へバトンタッチ、ガンガン進みます。

高速の手前で、県道616号との分岐になりますが、右の27号を少し走り、交差点を右に曲がり「須玉/明野」方面616号へ、少し進むと、分岐になります、616は右なのですがー、真っ直ぐ(稲坂路)にーしばらく行くと県道23号に合流します。
そのまま進むとT字路になります、右(23号)へ、ここも休日の昼間とは思えない交通量で、すこぶる快調!。
塩川ダムの手前で、分岐があります、右が「増富ラジウムライン」、左の県道610号へ、ひたすら610号~、途中、「信州峠」を境に県道106号に変わります(県境ですねー)

今回はここまでー、続きは、次のブログでー

クワッドコプター再び

今まで、色々と失敗続きで、まともに飛行していない・・

KK2.0

以前に買った、コントローラーは、ホバリングもまともにできないし、設定も色々変えてみたが全く上手く行かない・・・
よくよく調べてみると、ジャイロがどうもおかしく、モニターで出力の変化を確認してみたがー、正常に機能していないようだった・・・

無理やり飛行させてみたがー、ホバリングもまともに出来ないような状態の為、速攻で墜落、壊してしまったのだったー

それから、月日は流れー、再挑戦の為、ホビーキングで、新しいUAVのコントローラーを買ってみたー

Multiwii and Megapirate AIO Flight Controller

今度は、別のやつ。

まず、以前に墜落させて壊してしまった「足」を作り直した、今度は、壊れにくく、ショックを吸収できるようにピアノ線で工作。

LandingGear1
LandingGear2

基板を固定し、受信機を設置

QuadCoptor

で、買った状態で飛ばしてみたが・・・
うーーん、やはりホバリングすらまともに出来ない・・
※真っ直ぐ上に上がらない・・・(多少ドリフトするのは仕方無いにしても・・・)

このボード、USB 接続出来るので、センサーの状態とかモニター出来る~、アプリケーションとか、色々苦労したが、何とか、内部の状態を観る事が出来たがー、ジャイロも加速度センサーも問題無い!
そこで、色々情報を探すのだが、MultiWii 系の物は多いのだがー、MegaPirateNG に関する物が少ないようだ・・・
そもそも、「MegaPireteNG」より「MultiWii」の方がメジャーぽいし・・・

まぁ、ファームを書き換えても、元に戻せるので、MultiWii を試してみようと思い、最新の2.2を取ってきて、スケッチの設定をこのボード用にし、アップロードしてみた。

「MultiWii」について:
そもそも、「MultiWii」は、Wiiのコントローラーに使われているセンサーを利用して UAV 用のプログラムを「arduino」で動作させるべく始まったようでー、進化してきている。
今回買ったボードは
• ATMega 2560 Microcontroller
• MPU6050 6 axis gyro/accel with Motion Processing Unit
• HMC5883L 3-axis digital magnetometer
• MS5611-01BA01 highprecision altimeter
• FT232RQ USB-UART chip and Micro USB receptacle
主に、↑のような特徴があり、GPS を繋いで自立飛行させたり、かなり色々出来そうで、これから楽しみ。

今度はホバリングはまともに出来そうな感じで、でも部屋の中は狭く、外で試さないと判らない・・

とりあえず、ボードはまともなので、これから、順次試してみたい。

16×16ドットマトリックスLEDでテトリス

昔は、「C++」なんてのクチでしたが、ここ数年は、C++ を改めて勉強するようになり、ようやくやりたい事が表現出来るようになってきました。

C++ は非常に難しい言語なので独学では難しい側面もあり、習得には時間がかかりますが、複雑な処理を安全で判り易く記述する事が可能だと思います。
※自分は、友人のおかげでスマートに学習する事が出来ました。

C++ の場合、記述方法として「かなり強く従わせる」ような風潮があります、しかしこれには「意味」があります、多くの人はそれが自分のスタイルに合わないとか、馴染まないとか言って、避けてしまい、本当の価値を見失っている事が多々あり、誤解されている事を多くみかけます。
又、不合理で自分勝手な方法論で実装された、クズ同然のコードも多くみられます、非常に残念ですが、良い「先生」を見つける事は難しいのです。

今まで、AVRではメモリーが少ないとか、組み込みマイコンでとか、やった事無いとかなどの理由で「C」言語での開発でしたが、WinAVR で、C++ も使える事が判り、C++ に移行しています。
WinAVR では、STL は標準ではサポートしていないようですが、boost も一部使う事が出来ます、一番の問題は、メモリーが少ない点で、それさえ設計の段階で考えておけばコード効率も優れているようです。
普段のプログラムを C++ で創るのが日常的になると、C ではもはや満足出来ないところまできています(精神的)しかし良い時代です、512 バイトの RAM と 8 キロバイトの ROM を持った 8 ビットの RISC でも C++ で実装出来るのですから。

今回、ATMega88 でドットマトリックス LED を制御するに辺り、スイッチを付けたので、何か、ゲームでも作ってみたくなり、「テトリス」を作ってみました。
※バグが色々ありますがww

ATMega88 LED DotMatrix 16x16
ATMega88 LED DotMatrix 16x16

Dot Matrix LED TETRIS

ソースコード一式

16×16ドット・マトリックスLED

以前に、秋葉原の「鈴商」で赤色 LED の16×16のドットマトリックスが安く売られていた。
※確か400円くらいだったと思う、今でもまだ在庫があれば売られていると思う、緑もあったと思う。
LT-5013T

この手の物はジャンクに近いものだが、一応新品で、簡単なピンアサインをメモした紙が付いている。
16×16くらいの物だと、普通に買うとかなり高価で、このくらいの解像度があれば、かなり面白い表現も出来る。
丁度、キッチンタイマーを作ってみたくて、1個買っておいたーーー
それから数ヶ月、ようやく時間が取れたので、ドライブしてみた。

最初の問題は、このモジュールから出ているピンの間隔だ、「2mmピッチ」うーーん、ユニバーサル基板には不満な間隔・・
他の8×8とかは2.54mmピッチなのに、しかも32本を格納出来ない事も無いのにーー(それが安い理由かもしれないww)
まぁ、このモジュールの設計者(タコ)は、自作する立場を考える必要も無いので、適当に選んだ結果なのだろうけど・・・
しかた無いので、まずピッチ変換基板を作って、作業性を良くする事から始めた。

DotMatrixBottom

かなり強引だけど、とりあえずインチピッチのコネクタで接続出来るようにした。

次にドライバーの仕様を考えた、16×16のダイナミックスキャンだけど、全てのLEDを点灯した場合、1個に2mAでも512mAも必要。
ダイナミック点灯なので duty は1/16となる、たまたま秋月で、8ビットのシフトレジスターとラッチが合体したIC「NJU3711D」を売っていたので2個購入。
残念なのは、このICは5V動作で、電流も最大25mA、3.3Vで駆動出来ない、でもまぁいいか・・・
※買った後で見つけたのだけど、TIにまさにLEDドライブの為のICがあったTLC5940これを知っていたら、これにしたのに・・・

さて、気を取り直して、仕様の続き、25mAだと、1/16で、1.5625mA、少し暗いかなぁーと思って、テストしてみたが、そんなに暗く無い事が判り、全体で25×16=400mAの消費となった、これならUSBの電源でも駆動できる。(ソフトを作る時を考えるとUSBの電源でまかなえるのは正しい!)

キッチンタイマーにしたいので、なるべく小さく作りたい。
デコーダーに74HC138を2個使い、4to16のデコーダーとした、マイコンは、おなじみのAVRとした、在庫が沢山あったATmega88にする。(168や328に交換できるので便利)
74HC138で25mAを吸わすのは厳しいと思い、PチャネルデュアルMOSFETFDS4935Aをドライブしている。

DotMatrixTop

基板の裏はこんな感じ

DotMatrixBottom2

かなり苦しいけど、とりあえず1品物なので、まぁいいかーーーって感じ。

とりあえず、0.5秒間隔ランダムで表示してみた。

これから本格的にソフト開発なのだが、スイッチ類と音をどうするかを考えないといけない・・・

-----
文字の表示を行ってみた、リソースは以前に作った液晶用の6×12ピクセルのフォントなど。
文字のスクロール

RX マイコン

今更感が強いが、秋月のRXマイコンボードを動かしてみた。

AKI-RX62
AKI-RX62

コストや開発環境、性能、その他色々な点を考えると、ARM マイコンを使う方が「筋」なのかもしれない・・
しかし、個人的な理由で、RX マイコン「推し」なのである。
・国産だから。(昔から日立のマイコンを多く使ってきている)
・ルネサスには頑張って欲しい。(逆風の中、色々頑張っている様子が伺える)
※プロダクトは悪く無い、折角伸びしろがあるのに、単純なコストの勝負で無くなってしまうのは残念・・
・比較的安く入手できるようになった。
※以前は、個人には売ってくれなかったが、最近は、1個でも購入可能となっている。
・周辺のペリフェラルが扱いやすい。
・ドキュメントが日本語である。(別に英語でもいいけどww)

など、「推し」の理由はいろいろとあるけど・・

「日本人だろ!、RX使えRX!」みたいなww

・開発環境の整備
まずは開発環境、ルネサスには統合環境もあるし、フリーで使えるものもある、しかし、しかしである・・・
自分はどうも IDE と呼ばれるところの統合環境があまり好きでは無い、gcc と make emacs があればそれで良いと思ってる。
エクリプスとかは最悪だと思う。
確かに、Visual Studio は、本当に良く出来ているし、デバッグ環境は素晴らしい~、しかし、常にあそこまでの環境は必要無いと思う。
※まぁ、考え方は人それぞれであるし、強制は出来ないけど~

趣味程度の遊びで、C コンパイラに10万とかありえないので、開発環境にコストはかけられない、そこで、当然のように gcc !
て言うか gcc が好き!
※Windows のプログラム開発でも gcc をメインに使っている~
組み込みのプログラムであっても C++ を多用するつもりなので、boost とかも部分的に動かすつもり、なので g++ も動作可能な事。
※将来的には C++11 も使いたい!

1)cygwin の整備
gcc を使う場合には、この環境が一番扱いやすい
※ make、makedepend を入れておく事

2)RX 用 gcc の準備
自分でソースコードから作ろうかと思ったが、コンパイル済みのバイナリーを入手出来るので、とりあえず、それを落とすのが良いと思う。
rx-elf-gcc

※展開は以下のように行う
$ cd /usr
$ tar xjvf tkdn-20110720-gcc.tar.bz2
.bashrc にパスを通しておく
> PATH=$PATH:/usr/tkdn-20110720/rx-elf/bin

3)RX マイコン用フラッシュプログラムツールのインストール
現在、フラッシュのプログラムツールは2種類あるようだ、「FDT(Flash Development Toolkit)」と、「Renesas Flash Programmer」
で、後者の方が、フラッシュの書き込みだけなら簡単で判りやすい。
※ツールのダウンロードにはアカウントが必要(無償評価版をダウンロード)
※ FDT でも書き込めます。

4)サンプルプログラムの入手
動作確認を行う為のサンプルプログラムを用意しました。
LED テストの簡単なサンプル

5)コンパイルと実行
$ make
でコンパイルされ、フラッシュ書き込み用モトローラー形式のファイルが出来ます。
AKI-RX62 に確認用 LED(赤) をCN1、25番(P30) に接続します。
※抵抗は 680 程度
「Renesas Flash Programmer」を起動します。
AKI-RX62 は、DIP スイッチの 1(BOOT)、2(リトルエンディアン)を ON 、3、4を OFF とします。
USB ケーブルを PC と接続し、電源を入れます。
※最初に接続した時は、ドライバーのインストールなど多少時間がかかります
※ アプリケーションの設定では、USB Direct で接続し、12.0MHz、x8、x4 とします。
mot ファイルを選択して、「スタート」すれば、書き込みが開始されます。
電源を OFF にして、DIP スイッチの1(boot)を OFF にしてから電源を入れると、LED が点滅すると思います。

次回は、もっと実用的なプログラムを紹介します。

LEDシーリングライト

最近ツイッターに、製作記をつぶやくので、長文でのブログはあまり書かなくなってきている・・

それでは宜しく無いので、先日作ったLEDシーリングライトの製作記などを~

-----

動機としては、パワーLEDが安くなった事で、高輝度な照明を作るハードルが下がった事が要因に思う。
それと、インバーター式蛍光灯は、意外と寿命が短く、直ぐに交換の時期が来る。
イニシャルコストは高くても、長持ちして、電気を食わないのはありがたい、コストは直ぐに回収できる。

最近、それなりの値段で購入出来る電球型LEDランプを沢山使って、シーリングライトを作る事も考えた
けど、あのLED電球は罠だと判ったww
光量をギリギリまで出す為と、なるべく買い替えサイクルを短くする為、LEDの仕様ギリギリで使っている、
発熱も多く、光量が落ち始める時期が早く、制御回路もわざとショボく作っていると思う。
※自分の予想では、LEDの光量が落ちる前、保証期間が切れる辺りで、壊れると思う、2000円やそこら
の品が10年とか使えたら、電気メーカーは困ると思う。

LEDシーリングライトは、まともなやつを買うと5万とかするので、自分で作るのが一番となるww

いわゆる1WパワーLEDは、350mAの電流を流すことができ、大体100ルーメンの光量が得られる。
効率で考えると、砲弾型や、チップ型のLEDを沢山並べて1Wの電力で発光できる「光量」の方が大きい。
※たとえば、秋月で50個1700円で売られている角型のLED(OSW443Z4E1)の場合だと、
30mAで30ルーメンの光量が得られる(但し、内部は3個直列なので)1Wの電力で得られる光量は、
116ルーメンとなる、発熱も少ないので、放熱は必要無い。

パワーLEDの、もう一つの問題として、「熱」がある、1WのパワーLEDは放熱無しでは、使えない、
それも、かなりおおきな熱を出すので、それなりに大きな放熱器が必要なので、意外と使い勝手は悪いと思う。

とはいえ、とりあえず作って、使ってみない事には、判らない事も多い。

6畳の部屋では、どのくらいの明かりが必要なのだろうか?
売られているLEDシーリングライトの光量からすると4000ルーメン以上は必要そうである・・
とりあえず、秋月で、24V30WのSW電源が安く売られていたので、それを使って3000ルーメンを目標
に作ってみた。

秋月で、パワーLEDが3個アルミの基板に接続済みのモジュールが600円で売っていた、とりあえずコレを
10個買って来たー(6000円)、定電流モジュールは、以前にストロベリー・リナックスで買ったパワーLED
用モジュール、1個のモジュールで、LEDモジュール2個を直列(9個)に駆動するので、5個のモジュールを使う
(525円×5個)

まず最初に、どのくらいの放熱が必要なのか調べてみたー、そして、一番コストの安い方法を考えた。
ホームセンターで、3mm厚のアルミバーを買って、10分割し、表面積を稼ぐ為、穴を開けてみた。
そしてLEDモジュールに取り付けて、実験してみたー・・・

うーーん、十分じゃないかな・・、もっと小さくても良いかもしれない・・
※実際には、50円で買った、TO-220用の放熱器を足しているけど・・

さて、このLEDモジュールでリグを組む、アルミアングルが安くて丈夫で軽い。

で、こんな感じで出来た~

初めは、暗いかもと思ったが、十分な明るさがある、それと、電源を入れて直ぐに明るいので気持ちいが良い~
※パワーLEDは明るさが集中している為、直接観ると目が焼ける感じで危ない、もっと緩い光じゃないと、寝室には辛い。
それと、調光も必要だなー

2号機は、4500ルーメンくらいで作るかな~

クアッドコプター4

前回の記事から、随分経ちますが、4回めをポストします。
ゲーム関係の仕事で時間が取れず、休みの日は、何もヤル気が起きず、映画観たりして、ゴロゴロする日が続いてました・・(涙)

SH7125 で制御基板、ソフトを作っていましたが、ジャイロの I2C 読み込みが上手く出来ずに悩んでいました。

でも、とりあえず、空に浮かべたくて、完成した制御ボードを購入してみました、でも自作制御ボードは引き続き進めます。
制御ボードは色々調べると、「Hobbyking KK2.0 Flight Controller」 が安くて、高性能な感じで、購入しました。

このボードの特徴としてー
・クワッドコプターだけではなく、色々なタイプのマルチローターや通常のヘリなどを電子制御で安定させる事が出来るようです。
・液晶表示付きで、セットアップが簡単です。
・ISP ポートもあり、ファームの書き換えで、バージョンアップに対応出来ます。(Atmega324)
・低価格($29.99)、国内では、Daytona7 で扱っていました。(4200円)
※ただ、今観たら、リストに無かったですね・・、Hobbyking から直で買っても、送料と時間が少々かかるだけなのですが・・・
・ジャイロは3軸「InvenSense Inc.」、加速度センサーも3軸「Anologue Devices Inc.」
・ファームは非常に良くできているようです、ソースコードも公開されています(アセンブラ)

これだけの機能と性能で、この値段は凄いですー

設定ですがー、簡単なマニュアル(PDF)がありますーが、良くわからない部分も多く、先人のブログなどが役にたちます。
※自分も色々参考にさせてもらいました、ありがとう御座います~

初号機

でーーー、とりあえず、試行錯誤を行い、空に浮かべるまでできましたが、直ぐに墜落させてしまい、プロペラが折れたり、色々修理してます・・(涙)
垂直に上げて、また下ろすだけのつもりでしたがー、ドリフトして補正したら逆に動いて、パニックになり、無理な操作を行い、ガシャーンです(涙)
とりあえず、ラジコンなんで、操縦を習得する必要がありますね・・・

Just another WordPress site