「電装」カテゴリーアーカイブ

電装には僕もいる!!

こんにちは。次期電装班長予定の稲田です。「ん?WASAの電装にこんなやついたっけ?」となる方もいらっしゃるかもしれないので軽く自己紹介を。36代の電装班は3人おりまして、しゅよっくんやtwitterで有名な二人の他、私もおります。しゅよっくんでは回路の実装等を担当していました。今後お見知りおきを。
今回は、現在の電装班の活動について紹介したいと思います。電装班では現在作業を分担し、各自電装設備の開発を行っています。現在は、センサー開発、機体に搭載する基板の設計、操舵系統の開発、センサー取り付け部設計などを行っています。WASAの作業場は狭いので、電装班は他班とは離れ、学生会館の部室で作業しています。最近、大掃除をしたのと、なぜかティファールを持ち込むものが現れたため、限界作業をしている他班を尻目に非常に快適に作業をしています。これなら、進捗も爆上げ!だよね…(多分)。
では、少しだけ私の担当している操舵系統のお話をしようと思います。昨年度機体AIbisに搭載された操舵系統をベースに、今年度のパイロットの希望などに合わせ、操舵系統の改良版ソースコードを現在書いています。とはいえ、私もまだプログラミングを初めて7か月程度の初心者。解読だけで手間取っています…。ですが、さすがに解読にもめどが立ってきたので、今後はどのようにシステムを改修していくのか、検討していこうと思います。
まだまだ電装として修業も半ばの私たちですが、今後も頑張っていいプログラムを書いていこうと思っています。では、またの機会に!!

しゅよっくん3D化計劃の栄光と蹉跌

みなさん、初めまして。WASA鳥人間プロジェクト36代(20年執行代)電装班の天野と申します。今回は電装班1年生の制作課題であるしゅよっくん制作について書いていこうと思います。坦々としゅよっくん制作の話を書くのはこちらが辛いので、我々電装班1年が制作において直面した問題や反省点などを中心にまとめていけたらと思います。

 

WASA関係者の方はご存知かと思いますが、電装班では1年生の電装系に関する知識・理解の向上の為、公式マスコットキャラクターであるしゅよっくんを早稲田大学理工学部の学祭である理工展に向けて制作して参りました。例年しゅよっくんには実際の機体の制御を学ぶ為、距離センサー(高度計)、サーボモーター(操舵系)2個が搭載されています。また、本体はスタイロフォームで造形されており、平らな可愛いボディが特徴的でした。

今年で4年目を迎えるしゅよっくん制作ですが、「しゅよっくん制作に新たな風を吹かそう!」と意気込んでいた我々は、“平面からの脱却”をテーマに3Dプリンタでボディを出力、首と距離センサー部分にサーボモーターを搭載し、周囲の人を検知する仕様のしゅよっくんを制作する事にしました。

 

なぜ、このような仕様になったのか?

 

それには大きく2つの理由が存在します。まず、今年の電装班1年生が全員プログラミング経験者であった事です。前回の電装班紹介記事にもありました通り、電装班には現在3名の1年生が在籍しております。そしてその内全員がプログラミング経験者と云うかなりの幸運に恵まれました。しかし、経験者である事に多少の余裕を覚えていた我々は歴代のしゅよっくんを見て、

 

「あれ?これ、フツーに作れるんじゃね?(笑)」

 

などと、僭越ながら心の中で軽くマウントを取っていたのです。

そんな中、高校時代に3DCADを触った事のある私が「しゅよっくんを3Dプリンタで立体化しよう!」などと軽々しく豪語してしまった事により“しゅよっくん3D化計劃”は爆誕しました。これに拍車を掛ける様に、しゅよっくん3D化の話を聞いた18年執行代電装班の某先輩方による「完成したら焼肉」のお言葉。我々にはしゅよっくんを3D化するしか残された道はありませんでした。そう。全ては焼肉の為に。

 

ここからが制作。第2章の幕開けです。

 

プログラミングに関して自信のあった我々は当初「しゅよっくんなんて夏休み中に終わらせようね♪」などとしゅよっくん制作を軽々しく捉えており、設計コンセプトや仕様に関する話し合いを適当に済ませていました。さらに、制作を効率的に進める為、しゅよっくんに搭載するセンサーごとに分担を決め、それぞれが進捗を管理していました。8月上旬頃まではこの体制で何とか上手くいっていたものの、次第に不透明な仕様設定によるボロが出始めます。

 

「3DCAD完全に理解した。からの、3DCAD全然わからない。。。」

「あっ、パーツ買ってきてないじゃん。秋葉原遠いなぁ。というか、お金大丈夫??」

「えっ音声機能実装するんすか!?」

「基盤実装の担当誰?君?いや、僕じゃないよ?」

「何か、良くわかんないけどサーボ動いてるね。よし、時間ないしこのまま実装で。」

「そういえばこの計劃、リーダー居なくない?」

 

始めは些細な問題だったのかもしれません。しかし土台をしっかりと形成していない以上、一度傾いた当初の予定の崩壊は誰にも止められませんでした。度重なる遅延と膨れ上がる制作コストにより、結果としてしゅよっくん3D化計劃はお披露目である理工展前日の11月2日の夜まで続き、制作コストは2万円を軽く超え、しゅよっくんは従来の4倍近い価格の妖怪カネ喰いモンスターへと変貌を遂げたのでした。

まだまだ書き足りない事もありますが、制作に関するお話はここで終わりにします。

 

今回の制作では、プログラムや各種センサーへの理解以外にも多くの知見を得る事が出来ました。自分達への過剰評価、複数人でものづくりをする難しさ、各種仕様に関して共通認識を持ち合わせる事の重要性、「報告」「連絡」「相談」などなど。実機の電装系に携わる前にこれらの問題点に気付き、改善しようと思えた事は我々にとって非常に有意義な経験でありました。

 

しゅよっくん制作が終わり、1年生は実機の実装に向けて大きく成長しなければなりません。実機にはパイロットが搭乗しており、もちろん失敗は許されません。フライバイワイヤ方式により機体を制御している弊チームにとって電装系のトラブルはパイロットの命に直結します。「なんとなく動いた」「制作がギリギリ間に合った」では駄目なのです。パイロットに安心して飛んでもらえる、そして自信を持ってプラットフォームから「いってらっしゃい」が云える、そんな電装班へと成長していきたいと考えています。

 

最後に、しゅよっくん3D化計劃を温かく見守って下さった皆様に厚く感謝を申し上げます。本当にありがとうございました。

 

先輩方、焼肉まってます。

 

天野

電装班長挨拶

こんにちは,WASA35代電装班長をさせていただくことになりました伊藤です.

執行代となりはや1か月が経ちました.自分たちの代が中心となり機体を作っていくということで責任感が強くなりましたが,またその分だけ自分たちで自由に考えてできるという楽しみも増え,ゆるーく作業をやってます.

さて,作業の話となりますが,現在は計測機器の試作,ちょっとそれに飽きてきたな~というときにはケーブル製作を行っています.計測機器について,今年から機速計としてピトー管を導入することを考えています.まだいい感じの差圧センサを模索中の段階です...

今年は電装班として3人の1年生が入会してくれました.現在の活動として1年生には,11月に開催される理工展にむけてしゅよっくん(WASA鳥proの公認ゆるキャラ)の製作を行ってもらっています.去年まではスタイロフォームを切り出して作っていたのですが,今年の1年生はとてもはりきっておりなんと3Dプリンターで作製しており,完成が楽しみです!優秀な後輩たちが入ってきてくれてぼくもほっとしております...笑

最後に,今年の電装ではみんなで楽しく,一丸となって作業をすることを第一としてつくりあげていきたいと思っています.応援の程よろしくお願いします!

【電装班】今話題のWi-Fiモジュールを幅広くつかってみよう!

こんにちは、春休みに入れて
とてもうれしい電装班長のマイケルです

前回のAndroid用マップの作り方ブログが割りと好評だったので、今回も情報系の人向けのテクニカルな内容とします。(実は引き継ぎ資料の一部として書いてます。お許しください。)

今回は今流行りのWi-FiモジュールであるESP8266について書いてみたりします。

ESP8266はArduinoIDEPlatformIOMicroPythonNodeMCU/LUAなど様々な方法で開発できる低価格Wi-Fiモジュールであり、うまく使えば無限に可能性は広がるものです。
esp8266 使い方」とかでググると「IFTTT+LEDで簡単IoT!ESP8266で特定のハッシュタグのツイートがあったらLEDを光らせる」や「ESP8266でのサーバー機能の使い方」というように、大量のブログが出てくるのでたくさん調べれて学べば入門に関してはそんなに大変じゃないと思います。

そこで今回は主に「ググってもなかなか出てこない(気がする)ESP8266の機能」について少し紹介してみます。ESP8266内蔵のファイルシステムとデバッグ方法についてはなかなかネット上に使い方が最新版のドキュメンテーションを読めば全部わかりますが長いし(英語なので)なかなかツライですね。

今回は基本的に、主流のArduinoIDEを使う前提で話を進めます。

1. ファイルシステム(SPIFFS)について

現在日本で一般的に販売されているESP-WROOM-02には2MBのストレージが内蔵されており、1MBがプログラム用ストレージ、もう1MBがファイルシステム用のストレージに割り当てられている。ファイルシステム用のストレージにはSDカードと同じようにファイルの読み書きができます。

1MBのファイルシステム用ストレージを使ってみましょう。元ネタはこれです。

ArduinoIDEを使用している場合、パソコンから任意のファイルを書き込んでくれる便利なツールがあります。

・ツールのインストール方法

1  ツールをダウンロードする (https://github.com/esp8266/arduino-esp8266fs-plugin/releases/download/0.3.0/ESP8266FS-0.3.0.zip) (クリック後にダウンロードが開始します)

2  ArduinoのSketchディレクトリに”tools”というディレクトリを作る(存在しない場合)

3  ダウンロードしたzipファイルを先程の”tools”ディレクトリに解凍する(ディレクトリ的に”<home_dir>/Arduino/tools/ESP8266FS/tool/esp8266fs.jar”という構造になります)

4  Arduino IDE を再起動する

5 スケッチを開く

6  そのスケッチのディレクトリを開く

7 そのディレクトリに”data”というディレクトリを作る

8  Arduino IDE でボードやポートを設定する

9  上のバーにある”Tools”→”ESP8266 Sketch Data Upload”をクリックして “SPIFFS Image Uploaded” が表示されるまで待つ。割りと時間かかるので落ち着いて待ちましょう。

SPIFFSオブジェクトの使い方

※使用時は冒頭に#include "FS.h"を入れておく必要があります。

SPIFFS.begin()

SPIFFSシステムをマウントする。SPIFFS系の処理を行う前に実行する必要がある。マウントが成功したらtrueを返し、失敗したらfalseを返す。

SPIFFS.end()

SPIFFSシステムを取り外す。OTAを使ったファームウェア書き込みの前に使う。

SPIFFS.format()

SPIFFSシステムをフォーマットする。要はストレージを初期化する。

SPIFFS.open(path, mode)

pathのファイルをmodeで開く(文字列の文字数上限:31)。modeはC言語でファイルを開くときと同じで、"r","r+","w","w+","a","a+"のようにファイルモードを入れておけば良い。
このメソッドではFileオブジェクトが返される。ArduinoのStreamオブジェクトで使えるメソッドは基本的に全部使える。

使用例:

File f = SPIFFS.open("/f.txt", "w");
if (!f) {
    Serial.println("file open failed");
}
while (f.available()){
    Serial.print(f.read());
}
Serial.println();
f.close();
SPIFFS.exists(path)

pathのファイルの存在を確かめる。

SPIFFS.openDir(path)

pathにあるディレクトリを開いてDirオブジェクトを返す。

SPIFFS.remove(path)

pathにあるファイルを削除する。

SPIFFS.rename(pathFrom, pathTo)

pathFromからpathToへファイル名を変える。(ファイルの移動とかできます)

FSInfo fs_info;
SPIFFS.info(fs_info);

pathにあるファイルのサイズなどの情報を取得する。

ファイルシステムをうまく使うことで、外付けストレージを使わずに小さなファイルサーバーやデータロガーが作れるので是非使ってみましょう。

WASAではこの機能を操舵系統の各種パラメータを初期設定するためのデバイスに使ってます。

2. デバッグ方法

ESP8266を使った開発には「謎のバグ」がつきものです。

しかし、「謎のバグ」に立ち向かう方法はいくつかあるのでご紹介してみます。

元ネタはこれこれです。

1.リアルタイムで細かいデバッグ情報を得る。

ESP8266にはメインプログラムに割り込んでデバッグ情報を吐き出す機能があります。これの使い方を軽くご紹介します。

まずは上のバーからボートやシリアルポートの設定をしてください。

次に、下図のように、”Debug Port”を”Serial”に設定してください。

“Debug Level”には取得したいデバッグ情報の種類を選択します。COREにしたらESP8266の基本情報、WIFIにしたらWi-Fiの接続状況などについての情報がSerialポートを介して得られます。これらの情報を基にデバッグしましょう。

デバッグ情報の種類が多いとSerialに出力するのに時間がかかってメインプログラムの処理に悪影響を及ぼすことがあります。プログラムがバグって詰みそうなときにだけ有効にすることをオススメします。


Screen_Shot_2018_02_17_at_17_25_40


Screen_Shot_2018_02_17_at_17_26_15

2.システムクラッシュ時に吐き出される情報を解読する。

「謎のバグ」のほとんどはシステムクラッシュ時に発生します。

入力電力が不足した場合や、不正なメモリアクセスを行ってしまった場合には以下のようなスタックダンプが行われます。

Exception (0): epc1=0x402103f4 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: sys
sp: 3ffffc10 end: 3fffffb0 offset: 01a0

>>>stack>>>
3ffffdb0:  40223e00 3fff6f50 00000010 60000600
3ffffdc0:  00000001 4021f774 3fffc250 4000050c
3ffffdd0:  400043d5 00000030 00000016 ffffffff
3ffffde0:  400044ab 3fffc718 3ffffed0 08000000
3ffffdf0:  60000200 08000000 00000003 00000000
3ffffe00:  0000ffff 00000001 04000002 003fd000
3ffffe10:  3fff7188 000003fd 3fff2564 00000030
3ffffe20:  40101709 00000008 00000008 00000020
3ffffe30:  c1948db3 394c5e70 7f2060f2 c6ba0c87
3ffffe40:  3fff7058 00000001 40238d41 3fff6ff0
3ffffe50:  3fff6f50 00000010 60000600 00000020
3ffffe60:  402301a8 3fff7098 3fff7014 40238c77
3ffffe70:  4022fb6c 40230ebe 3fff1a5b 3fff6f00
3ffffe80:  3ffffec8 00000010 40231061 3fff0f90
3ffffe90:  3fff6848 3ffed0c0 60000600 3fff6ae0
3ffffea0:  3fff0f90 3fff0f90 3fff6848 3fff6d40
3ffffeb0:  3fff28e8 40101233 d634fe1a fffeffff
3ffffec0:  00000001 00000000 4022d5d6 3fff6848
3ffffed0:  00000002 4000410f 3fff2394 3fff6848
3ffffee0:  3fffc718 40004a3c 000003fd 3fff7188
3ffffef0:  3fffc718 40101510 00000378 3fff1a5b
3fffff00:  000003fd 4021d2e7 00000378 000003ff
3fffff10:  00001000 4021d37d 3fff2564 000003ff
3fffff20:  000003fd 60000600 003fd000 3fff2564
3fffff30:  ffffff00 55aa55aa 00000312 0000001c
3fffff40:  0000001c 0000008a 0000006d 000003ff
3fffff50:  4021d224 3ffecf90 00000000 3ffed0c0
3fffff60:  00000001 4021c2e9 00000003 3fff1238
3fffff70:  4021c071 3ffecf84 3ffecf30 0026a2b0
3fffff80:  4021c0b6 3fffdab0 00000000 3fffdcb0
3fffff90:  3ffecf40 3fffdab0 00000000 3fffdcc0
3fffffa0:  40000f49 40000f49 3fffdab0 40000f49
<<<stack<<<

一見意味分からなさそうですが、解読ツールがあるので解読してみましょう。

インストール方法は上で説明した書き込みツールと同じです。ツールはhttps://github.com/me-no-dev/EspExceptionDecoderにてzip形式でダウンロードできます。

エラーが発生してシリアルモニタにスタックダンプが行われたら下図のボタンのようにツールを開いてください。

なお、ツールを開く際にELF形式のファイルを要求されることがあります。プログラムを再びコンパイルし書き込むと解消されます。

Screen_Shot_2018_02_17_at_18_51_05

ツールが開かれたらダンプされた情報をツール上半分の画面に貼っつけてみましょう。「◯◯行にある〇〇が悪いです!」というように詳しいデバッグ情報が返されますのでデバッグが捗ると思います。

非常に便利だと思うので是非ツールを有効活用しましょう!

今回のブログはこれで終わりにします。お役に立てたら幸いです。
今後もこんな感じのブログを何回かやりますがネタが切れそうなのでリクエスト等ありましたらご気軽にお声掛けください。鳥人間の電装関係なら書けそうなものは書きます!

春休みに入ってから、電装班は鳥人間コンテストに向けたケーブルづくり、各種部品の設計、プログラム調整など、さまざまな活動に励んでいます。
引き続きご声援、よろしくお願い致します!

WASA2018年度電装班長 藤田一輝(マイケル)

@hujatadayo

kazukif@fuji.waseda.jp

【電装班】Android用マップアプリの作り方

あけましておめでとうございます

今年もよろしくお願いします

18年度電装班長の藤田(マイケル)です

学科の課題に追われていて最近はこれといったネタがないので、今回のプログではちょうど最近の活動で行っているAndroid Studioを使ったマップアプリ開発の方法を軽くご紹介します。

情報系に興味のある人向けとなりますのでそうでない方には完成形だけみて頂ければ幸いです。

早速ですが、1ステップずつ噛み砕いてご紹介していきましょう。

  1. Android Studioをインストールする。
    1. Android StudioはAndroid端末用アプリを開発するためにGoogle社が提供しているIDEです。
    2. Androidアプリは基本的にJava言語をベースに作るものなので、開発の際はJava言語を予め知っておくことをオススメします。
  2. Android Studio で新しいプロジェクトを始める。
    1. アプリケーション名などは当然ですがご自由に決めちゃってもらって構いません。
    2. SDKバージョンは API 17 以降にしてください。これ以前ですと正常に動作しなくなる可能性があります。
    3. アクティビティは”Empty Activity”(空のアクティビティ)を選択してたらこの後が楽です。今回はこれを選択します。
    4. アクティビティ名やレイアウト名はそのままで構いません。
  3. Mapboxのアカウントを作る。
    1. 上のリンクにクリックしたらアカウント作成ページに飛びます。
    2. 開発においてAPIにアクセスするために、アカウントに紐付けられたAccess Tokenが必要になります。
    3. Mapboxは様々なプラットフォームでマップ表示させたいときに使える非常に便利なAPIです。Android以外にもiOS, Javascript(Webなど), Unity, QtでこのAPIを使うことができます。
    4. 作成されるデフォルトのマップはGoogle Mapsと同様の操作ができます。
    5. 座標を指定してマップに直接画像を貼ったり、線を描いたり、様々な機能があります。
  4. プロジェクトにMapbox Android SDKをインストールする。
    1. こちら の公式マニュアルを基に説明します。
    2. Android Studioの画面左側にある”Grade Scripts”欄にある”build.gradle(Module:app)”を開き、一番外のスコープ(dependenciesの上とか)に
      repositories {
          mavenCentral()
      }
      

      をつけます。また、dependenciesの中に

      implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:5.3.1'
      

      を付け加えます。

    3. ここで画面の上の方にGradleファイルが変更されたので同期するようにと言われるので同期する。
    4. これでインストールは完了。
  5. アプリによる現在位置のアクセスを許可する。
    1. 画面左側の”manifests”の中にある”AndroidManifest.xml”の<manifest>タグの中に
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

      を付け加えて下さい。

  6. オンラインマップを表示してみる
    1. このリンクに飛んでもらって手順通りやればオンラインマップは表示できます。
    2. ちなみにここでさっき取得したアカウントに紐付けられたAccess Tokenが必要になります。先程のリンクで”Sign in to your Mapbox account to display your access token.”と書いてあるところをクリックしてサインインすれば自動的に表示してくれます。(既にログインしている場合はAccess Tokenが表示されています)
    3. USBに接続されたAndroid端末、またはエミュレーターを用意して、Android Studioの上の方にある再生ボタンをクリックすればアプリが実行されます。

 

オフラインに対応させる

(ここからはWeb開発経験があると理解し易いです)

  • 普段マップを使う場合はマップのデータをネット上から引っ張ってくることが多い。
  • 例えば、OpenStreetMapはhttp://a.tile.openstreetmap.org/${z}/${x}/${y}.png のような形式でマップデータを配信している。${z}, ${x}, ${y}に数字を代入すればそれに対応するマップの画像が得られる。
  • こんな感じ(http://a.tile.openstreetmap.org/1/1/0.png)で配信されてる。
  • オフラインに対応させるためにはAndroid内にマップデータ配信サーバー立ててしまえば良い。
  • Androidでサーバーを建てる方法は探せばネットに載ってるので是非探してみてください。
  • やりかたはたくさんありますが、Java標準装備の
    java.net.ServerSocket, java.net.Socket

    とか使えば建てられると思います。

  • 日本全国のマップデータはこのリンクでダウンロードすることができます。
    • OpenStreetMap vector tilesだけ無料です。
    • ファイルの大きさはだいたい1.62GBしかありません。
    • このマップデータをSDカードとかに入れて使うと良いかもです。
    • vector tilesと書かれているマップデータはpng形式のものではなくpbf形式のものをgzipで圧縮してsqliteデータベース化したもの(.mbtiles形式)になっています。
    • ざっくり言うと、クライアントからサーバー側に3つの引数 x, y, z が渡されたとき、データベースをx, y, zに対して
      select tile_data from tiles where tile_column=? and tile_row=? and zoom_level=?

      というクエリーをして、得られたバイト列をクライアントに投げ返せば良いのです。

    • Androidを使ってデータベースのクエリー方法はこのGitHubレポジトリ https://github.com/djcoin/MBTilesDroidSpitter を参考にすると良いかもです。
    • ここで気をつけるべき点は3つあります。
      1. クエリーで得られたバイト列はgzipで圧縮されたものなので返答時のHTTPヘッダーに
        Content-Type: application/x-protobuf
        Content-Encoding: gzip
        Access-Control-Allow-Origin: *
        Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
        Cache-Control: public, max-age=604800
        

        を入れる必要があります。これがないとクライアントは解凍してくれません。

      2. MapboxのAPIが使用する座標系とOpenStreetMapが配信するマップの座標系が異なる(原点の位置が違う)。クライアント(Mapbox)側のyをサーバー側で
        y = (1 << z) - 1 - y; // y = 2^z - 1 - y;

        のように変換してからデータベースをクエリーすれば問題は解消されます。

      3. Androidのセキュリティ上、データベース内にandroid_metadataテーブルがないと読取りが行えないため、sqlite3で以下のコマンドを実行する必要がある。<your_database>にはデータベースのファイル名(“???.mbtiles”)が入る。
        sqlite3 <your_database> "CREATE TABLE IF NOT EXISTS android_metadata (locale TEXT DEFAULT 'en_US'); DELETE FROM android_metadata; INSERT INTO android_metadata VALUES ('en_US');"
        
  • クライアント側(Mapbox)のプログラムについて
    • サーバーを建てたあとはそのサーバーからマップデータを引っ張るクライアントを作る必要があります。
    • 先程のオンラインマップで使ったMainActivityクラスのonCreate()メソッドを
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          createServer(); // サーバーを建てるメソッド
          Mapbox.getInstance(this, "MY-ACCESS-TOKEN");
          setContentView(R.layout.activity_main);
          mapView = (MapView) findViewById(R.id.mapView);
          mapView.onCreate(savedInstanceState);
          mapView.getMapAsync(new OnMapReadyCallback() {
              @Override
              public void onMapReady(MapboxMap mapboxMap) {
                  mapView.setStyleUrl("asset://mapStyle.json");
              }
          });
      }

      のような感じにしてあげて、アプリのメインディレクトリの”assets”というディレクトリ(作る必要あり)の中に”mapStyle.json”というファイルを作って、中身にこれ(6行目のtilesに(サーバーのURL/z/x/y.pbf)を入れる)を入れれば(たぶん)オフラインで使えるようになる。

 

オフラインマップを作成し、それに回転数ゲージとかつけたら以下のようなものが出来上がりました。(機内モードで地図が表示されています)
IMG_1235

(ちなみに画面上の青い点は桶川・ホンダエアポートです)
今後はこれに機速・高度計・機体の現在位置などの表示をつけていきます。

 

2018年度執行代電装班長 藤田一輝

 

電装班ってなにつくってるの?

はじめまして、こんにちは!

2018年度執行代電装班長藤田一輝です

大学入学からは学科でもサークルでもバイト先でもマイケルと呼ばれていますが…

そんなマイケルですが、今回のブログでは今年度のWASA電装のシステムについて軽く説明します。ブログを書くこと自体これが人生で(たぶん)初めてなので雑な感じになってたらごめんなさい

WASAの電装班は主に操舵系統計測系統の製作を担当しているのでこの2つの系統を分けて説明します!

まずは操舵系統について
今年度の操舵系統のシステム構成は以下のような感じです

denso2017121601

WiFiモジュールが導入されたことにより大幅アップグレードすることができました。

これでTFなどの現場において操舵に必要なパラメータを遠隔でいじれるようになり、スムーズな運営が可能になります。

こちらのシステム、長時間電源をつけて放置したり、長時間サーボを動かしたり、WiFiモジュール(ESP-WROOM-02)にDoS攻撃を仕掛けたりしても操縦をし続けられるのでとりあえず一安心です。

ちなみにWiFiに接続する側の端末のインターフェースは以下のような使いやすそうな構成(伝われ)になっています。

denso2017121602

  • REBOOT=サーボの再起動(自動再起動機能はついているので基本的には使わない)
  • OFF/ON/BREAK=トルクモード(BREAKモードでは手で動かせる程にトルクが落ちる)
  • SLOW=サーボを遅く(最大角→最小角→ニュートラル)の順で回転させる(テスト用)
  • FAST=サーボを速く(最大角→最小角→ニュートラル)の順で回転させる(テスト用)

次に計測系統について

今年度の計測系統のシステム構成は以下のような感じです
denso20171203

物理的なシステム構成には大きな進化はありませんが、表示端末のソフトウェアが新しくなりました!

PC用表示ソフトのインターフェースは以下のような感じになっています。
denso2017121604

(ピッチとか回転数がヤバイことになっていますがデータをランダムでジェネレートしているものなので大丈夫です。時計は実際の時間を示しています。眠い。)

こちらのソフトは引き継ぎの容易さを考慮し、Node.jsElectronモジュールを使ってhtml/javascript/cssで開発しています。

極稀に動作が重くなることはありますが、最適化してしまえばいいし、XBeeとの通信にに使うモジュールや、マップを表示するためのモジュールが無料で配布されているのですごい便利なんです。

SlackとかSkypeのアプリもElectronで開発されいるんですよ!

運用時にデータをうまく取得することを可能にしてくれるので、これで効率的な運用ができるんじゃないかと思っています。

 

今年度の電装はスムーズな運用を追求した結果、ソフト面での開発が著しく進みました。

試験飛行の時期まで時間はたっぷりある(と思いたい)のでそれまでは電装班員と共にどんどん性能をあげていく予定です。

また、1年生のみんなにしっかり引き継げるよう、指導をしっかりして行きたいと思います。(ちなみにこの前ははんだ付け練習の一貫としてこんな感じのクリスマスツリーを作ってもらいました)
denso2017121605

これで今回のブログの方は終わりにします。ここまで読んでいただいきまして誠にありがとうございました。今後とも応援の程よろしくお願いします。

 

電装班 班長 藤田一輝

kazukifu@gmail.com