そこでTWE-Liteを使ってラジコンプロポの代りにならないか試してみたくなりました。
なおTWE-Liteとは、当初は東京コスモス電機でしたが今はそこから分離したMONOワイヤレスが出している無線モジュールです。
こんなの・・・
TWE-Liteは内蔵マイコンのプログラムを書き換える事ができるので、MONOワイヤレス社からは色々な用途のプログラムをダウンロードできる様になっています。この中にはラジコン用のアプリもあるのですが、ラジコンカーを前提にされたもので、そのままで飛行機やマルチコプターを制御するのには向きません。
これを何とかして受信側TWE-LiteからS-BUS信号を出せれば小さなマルチコプターぐらい飛ばせるんじゃないかと考えています。するとフタバとかの立派なプロポを使わなくても済むし、またフライトヨークやラダーペダルで操縦したり、ちょっと夢が広がるじゃないですか。
で、試してみる事にします。でもいきなり高出力版のREDを買うのもなんなので、まずは手持ちの通常出力版(こちらはBLUEという名前になったらしい)で試します。
まず送信側のTWE-Liteにはボリューム4個+スイッチ4個を付けて状態を発信します。この部分は「OpenStick無線化実験」の時のプログラムをほぼ流用です。
これを受けて受信側TWE-LiteがS-BUS信号を生成してフライトコントローラ(F3EVO)に入れるという計画です。
という事で早速プログラムを書いてデバッグです。受信側TWE-Liteが出すS-BUS信号を先日作成したS-BUS信号解読機(ArduinoMEGA256)に入力してデバッグを開始したのですが・・・受信機のデバッグ以前にS-BUS解読機側のスケッチがミスっていたのを発見。修正しました。
~~修正版S-BUS解読スケッチ(11bitデータに並び替える部分のミス修正)~~
int count; long interval; void setup() { Serial.begin(115200); // Terminal Serial1.begin(100000,SERIAL_8E2); // S-BUS count=0; } void loop() { int data[26]; int val[19]; int i; if (Serial1.available() > 0) { data[count]=Serial1.read(); interval=millis(); count++; } if ((interval+4 < millis()) && (0 < count) ) { count=0; val[0] =((data[1] & 0xff)<<0) + ((data[2] & 0x07)<<8); val[1] =((data[2] & 0xf8)>>3) + ((data[3] & 0x3f)<<5); val[2] =((data[3] & 0xc0)>>6) + ((data[4] & 0xff)<<2) + ((data[5] & 0x01)<<10); val[3] =((data[5] & 0xfe)>>1) + ((data[6] & 0x0f)<<7); val[4] =((data[6] & 0xf0)>>4) + ((data[7] & 0x7f)<<4); val[5] =((data[7] & 0x80)>>7) + ((data[8] & 0xff)<<1) + ((data[9] & 0x03) <<9); val[6] =((data[9] & 0xfc)>>2) + ((data[10] & 0x1f)<<6); val[7] =((data[10] & 0xe0)>>5) + ((data[11] & 0xff)<<3); val[8] =((data[12] & 0xff)<<0) + ((data[13] & 0x07)<<8); val[9] =((data[13] & 0xf8)>>3) + ((data[14] & 0x3f)<<5); val[10]=((data[14] & 0xc0)>>6) + ((data[15] & 0xff)<<2) + ((data[16] & 0x01)<<10); val[11]=((data[16] & 0xfe)>>1) + ((data[17] & 0x0f)<<7); val[12]=((data[17] & 0xf0)>>4) + ((data[18] & 0x7f)<<4); val[13]=((data[18] & 0x80)>>7) + ((data[19] & 0xff)<<1) + ((data[20] & 0x03) <<9); val[14]=((data[20] & 0xfc)>>2) + ((data[21] & 0x1f)<<6); val[15]=((data[21] & 0xe0)>>5) + ((data[22] & 0xff)<<3); val[16] = (data[23] & 0x1) ? 0x7ff : 0 ; val[17] = (data[23] & 0x2) ? 0x7ff : 0 ; val[18] = (data[23] & 0x8) ? 0x7ff : 0 ; // Failsafe for (i=0 ; i<19; i++ ) { Serial.print(val[i],DEC); Serial.print(F(" ")); } Serial.print(F("\n")); } }
大体動作がOKになったところでフライトコントローラ’F3EVO’に接続してみます。
フライトコントローラはUSBでPCに接続しておき、設定ソフト ’CleanFlight’ の ’Receiver‘ タブ使うと送信機の操作に合わせて信号が変化するのが確認できました。
ここまではTWE-LiteのDIPタイプをブレッドボードに載せて試していました。
大体イケてるっぽいので次は表面実装版のTWE-Liteモジュールを使い、実際に機体に載せる基板を作ります。
いつもの様にKicadでパターンを書いてガーバーデータを出力して・・・
でもウチのCNCの精度でこのパターンそのままでは削れる気がしません。そこでガーバーデータの座標値をテキストエディタで抜き出してJw-cadに読み込ませ、これを下書きにしてカットする部分を手書きしていきました。
こうしてカットラインの間隔を極力広いパターンに作り変えます。
そして切削。
と、軽く書きましたが何だかんだで失敗しながら3回切削しました。
チップ抵抗、チップコンデンサを1608サイズにしたのも失敗で、ルーペを見て汗をかきながらハンダ付けを行いました。
そして実装したのがこれ。
次は送信機を作っていきたいと思います。
Pingback: どどーんはじめました。~その5~ | ほいほい堂blog