FreeIMUの中の人が亡くなった話

FreeIMU

FreeIMUというオープンハードウェアの9/10軸の慣性計測装置を開発している Fabio Varesanoさんが先日心臓発作で亡くなったそうです.30歳手前の博士取ってすぐぐらいの年齢のようでとても若いです。
FreeIMUはそのセンサボードが置かれた姿勢や高度が計測できるボードです。オープンハードウェアというのは設計図から使い方までがオープンになっていて自分で追っかけて製作が出来るようになっているハードウェアです。
加速度ジャイロはMPU6050,地磁気センサはHMC5883L,気圧計はMS5611が使われています.まさに自分が使っているセンサと同じものです。非常に参考にさせてもらっていただけにとても残念です。
センサを使うときに知らないセンサを使うのは使い方がわからなかったり,使えるものなのか心配で既に使われているものがあると信頼性がとても上がるので、
FreeIMUという先駆者がいたのは非常にありがたいことでした。ライブラリを見てプログラムの参考にもさせてもらっていました。
新しく出てホビー用で購入可能で新しいセンサをドンドン使う方針なので、新しいもの好きとしては参考になっていました。
センサの校正のためのソフトウェアも開発中のようでこれからが楽しみでした.スマホやタブレット用にセンサの進化が急速に進んでいる昨今においては大変期待のプロジェクトでした。応用としてクワッドローターもたくさん作られていたようで,オープンハードウェアの更なる広がりが期待できるプロジェクトでした。
これから
オープンソースのソフトウェアやらハードウェアは開発するインセンティブが働かないために人材の代替性も薄く,志ある開発者の善意に強く依存するのでFreeIMUの開発を進めていた氏の訃報は進歩の停止そのものだと思います.
海外通販サイトにはFreeIMUと同じようなセンサ使った中華系のセンサボードありますが,オープンハードウェアの開発が止まれば,こっちの進化も止まるんだろうなぁと思っています。
とにかく残念です。ご冥福をお祈りします。
FreeIMU関連の動画

オープンソースロガーOpenLogの互換品作ってみた その3 使い方

OpenLogの互換品を作った目的である、SDカードに書き込んだ情報をUARTで吐き出す方法です。

ArduinoのSDカードのサンプルプログラムの中にある[SD]→[DumpFile]とほぼ同じ内容を前述の方法で書き込みます。

これでInaLogからSDカードに書き込まれたdatalog.txtファイル(変更可能)から1byteづつデータを読み出すことができます。

この吐き出されたデータをマイコンで受け取ってやることで色々使えるところがあるかなぁと思います。(まだ何も使ってないけど笑)

/*
  OpenLog互換品(InaLog)でSDカード内のdatalog.txtからUARTでデータ吐き出し
*/

#include <SD.h>
const int chipSelect = 10;

void setup()
{
 // シリアルポートオープン:
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  pinMode(chipSelect, OUTPUT);

  // SDカードが存在しない場合、エラー吐く:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    return;
  }
  Serial.println("card initialized.");

  // ファイルは一度に一つ開ける。次のファイル開く場合は一旦閉じてから
  File dataFile = SD.open("datalog.txt");

  // ファイルから1byte読み出しシリアルポートから吐き出し:
  if (dataFile) {
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    dataFile.close();
  }  
  // ファイルが開けない場合はエラー:
  else {
    Serial.println("error opening datalog.txt");
  } 
}

void loop()
{
}

オープンソースロガーOpenLogの互換品作ってみた その2 作り方

OpenLogの互換品を使って遊んでいるわけですが,自分で使おうと思っていたので名前をInaLogってつけています.

今回はその使い方と作り方の公開をしておきます.使い方は基本的にはOpenLogと同じです.
データシートとArduinoによるサンプルスケッチを見れば全てわかると思います.
OpenLogのwikiを見るとUAV(無人飛行機)のデータロガーに使われているのがトップページに出てきて心躍ります. 続きを読む

オープンソースロガーOpenLogの互換品作ってみた その1

大学生がプロジェクト方式でものつくりするような場面をたくさん見てきましたし、自分でも実践してきました。

この中でたまに問題になるのはセンサーからのデータ取得(AD変換)やLEDやLCDでの表示はできるけど、SDカードへの記録が出来なかったということです。ちゃんとやってる人からするとショボイところで躓くようだけど、初心者の集まりだと実際大変に思ってる人は多そうです。ArduinoとかmbedだったらSDカードも簡単に取り扱えるけど、それでも悩む人は悩むみたいです。少し前の自分もそうでしたし。

これを解決するのにいいものが売っています。SparkfunのOpenLogというものです。日本だとスイッチサイセンスで販売されています。実際使っていましたが、すごく簡単にログが取れて良い商品でした。

UARTでデータを送るとSDカードにそのデータが保存されます。SPIやSDIOという通信バスで繋ぐより速度は遅くなりますが、プログラムは非常に簡単になります。

概要

  • OpenLogはオープンソースハードウェアなので回路図も配線図もコードもオープン
  • 部品は全て秋月電子通商で買えるように部品変更
  • MPUはArduino Unoなどで使われるATmega328Pの表面実装部品
  • Eagle設計→FusinPCB発注
  • FusionPCBに送ったファイルも公開するので基板をFusionPCBに発注して自分でハンダ付けすれば使える
  • 2個以上作るならOpenLog買うより安い(かも)
  • AVRライターで中身を書き換え易い(本家はSDカードスロットと書き込みピンが近すぎて書き込みにくい)

例えばロガーではなく、SDカードに貯めたデータをシリアル通信で吐き出すモジュールにすることも出来ます。これは次の記事とかに書こうと思います。この互換品の細かい仕様についても次の記事に書きます。

本家のOpenLogと比較するとこのぐらいのサイズの違いです。部品縛りがあったのでちょっと大きくなりました。写真はRev.Aのもので(上の写真も)、現在はRev.Bを作っています。というかRev.Aの基板は移動中に無くしてしまいました(涙

スゴイロガー進捗(1)STM32F4の(仮)開発環境

前回に電源周りだけ確認したスゴイロガーことNinjaScanですが,STM32F4でLチカできるまで進みました.

これが出来るとハードウェア的には大部分の確認が取れたことになります.基板設計とアートワークの確認が取れることに意義が大きいです.好きにプログラムすることによって取り付けるセンサとのやり取りやコネクタから出ている信号線を使って通信できます.このあとはSuper Sylphideシリーズの設計資産を使ってソフトウェアの開発を行います.(これは自分には重すぎるのでお師匠様であるFenrirさん任せの予定)

(仮)開発環境まとめ

今回はSTM32F4の動作確認が目標だったので,簡単にマイコンに書き込める環境にしました.

  • ARM用 IAR Embedded Workbench(32KBコード制限の無料評価版)
  • ST-Link/V2(秋月で購入)
  • ファームウェアやサンプルプログラムは公式から
  • SWD(シリアル ワイヤ デバッグ)でデバッグ

ファームウェアはSTMicroの公式から落としたが,公式からだとすごく見つけにくいのでhttp://www.emcu.it/STM32.html#STM_Firmware_Librariesを参考にしました.

Lチカの書き方は当初「STM32徹底入門」のサンプルを参考にしていたが,STM32F1とSTM32F4とで微妙に異なるようなので

http://www.emcu.it/STM32F4xx/STM32F4-Library/STM32F4-Library.html

などを参考にした.全体的にはSTM32徹底入門のGPIOのサンプルそのまま.初期化の辺りを直すことと,F1からF4に変わることで,GPIOのクロックがAPB2からAHB1に変わっていること,GPIOの構造体変数が変わっていることを注意します.

EWARMをインストールした後,STM32F4 DSP and standard peripherals libraly… と書いてあるstm32f4_dsp_stdperiph_lib.zipを解凍してその中の[STM32F4xx_DSP_StdPeriph_Lib_V1.0.1] → [Project] → [STM32F4xx_StdPeriph_Templates] → [EWARM] → [Project.eww]からプロジェクトを作り,[User]の中身のmain.cやstm32f4xx_it.c辺りを書き換えました.

ST-Linkで書き込んだので,EWARMの[プロジェクト] → [オプション]のデバッガがJ-LinkになっているのをST-Linkにしておきます.

ST-LinkのJTAGの20ピンあるところからSWDに相当するピンの4本繋いで書き込みとデバッグが出来ました.

あくまで仮の開発環境で,コード制限などを考えると,新たに開発環境整えないといけないと考えているところです.STM32はググるとそれなりに情報が出てくるのでありがたい限りです.