フォトシンス エンジニアブログ

株式会社Photosynth のテックブログです

腰に優しいIoT製品開発 〜 Akerunつくったエンジニアのそこそこ大規模なIoTプログラミング 〜

こんばんは。Photosynth の 組み込みエンジニアの石井です。

昨日に引き続きAkerun Adventカレンダー 8日目 の記事の担当です!

今回は、Akerun Pro のファームウェア 開発とデバッグ環境について、実際の開発のタイムラインに沿ってご紹介します。

開発開始!基板むき出し期

開発初期は筐体はありません。試作基板で開発します。ネイキッドAkerunです。

f:id:photosynth-inc:20161207194939j:plain

※画像はイメージです

有線接続で、

をしています。

実装→動作確認→修正 をゴリゴリ繰り返します。

作業台の上で開発を進めました。すべて手元で完結します。

こいつ・・・動くぞ!開発黎明期

試作筐体で評価します。メカ・エレキ・ファームウェア・アプリ・クラウドなど通しで結合していきます。

f:id:photosynth-inc:20161208112945j:plain

※画像はイメージです

開発・デモ用の錠つきのドアを用意し、実ユースケースで、

有線接続で、

  • FWの書き込み
  • シリアルログの監視

をして開発・デバッグしています。

これも大きめの作業台や、デモのために移動することもあるのでワゴンに乗せて開発を進めました。 通信的にはクラウドまで達していますが、物理(ファームウェア)的には、すべて手元で完結します。

品質評価期

実際のオフィスのドアに貼り付けて評価します。

はじめのうちは、

  • エラー報告を受ける → PCをターゲットに接続 → 再現させる → 修正

というやり方をしていました。これだとフェイズが進むにつれて

  • 再現しない
  • 報告者の情報のエントロピーが高い
  • ドアの横で作業するので 腰が痛い

などの問題がありました。なんとかならないものか。

社内に落ちてたラズパイ2との出会い

とある日のPhotosynthの日常


I 「ラズパイ3ってなかなかリッチで良さげだね」

H 「いまウチにあるラズパイ2だとドングル必要だもんね〜」

I 「あ、ラズパイ2はあるんだっけ」

ん、ラズパイ2がある?


※一部フィクションです。

ラズパイつないで自動化もしてみた。

こうなりました。

f:id:photosynth-inc:20161208113326j:plain

f:id:photosynth-inc:20161208134953p:plain

ラズパイとターゲット(Akerun Pro)は有線で接続しています。 ラズパイはターゲットのログをストレージに吐き出しています。 出入りの映像は日時付きでWebcamで映像を記録します。(時計を壁に貼り付けるという原始的な方法で)

不具合が発生したとき

クライアントPC (MacBook)からsshで入って、ログを監視することができます。 その時の映像と照合できて調査が加速しますね。 しかも本体に近づかなくて良いので 腰に優しい

ファームウェア更新するとき

修正したソースをビルドし、ファームウェアを作成、ターゲットに書き込みます。

  • GitHubにpushするとJenkinsおじさんに通知
  • Jenkinsおじさんがビルドして結果をSlackで教えてくれます
  • sshでラズパイに入り、Jenkinsおじさんから成果物をダウンロードします
  • ターゲットに書き込みます

実際に手を動かすのは、クライアントからコマンドを数回たたくだけです。 本体に近づかなくて良いので 腰に優しい です。

また、リポジトリに適用する前に試す場合は手元でビルドして scp でファイル転送→書き込み もよくやっていました。

導入してから超絶快適になりました。

※製品版は当然ですが、外部から接続できないようになっている、かつ暗号化されているので安心してご利用になれます。

それでも腰が痛くなりそうな場合はこれを足元に忍ばせておきましょう。

鉄人倶楽部(IRONMAN・CLUB) 健康 足踏み  KW-887

鉄人倶楽部(IRONMAN・CLUB) 健康 足踏み KW-887

以上、ファームウェアの開発とデバッグのお話でした。

Akerun Developersやってます!開発者の方Welcome!

photosynth-inc.github.io