techno_memo

個人用の技術メモ。python・ROS・AI系のソフトウェア・ツールなどの情報を記載

電子工作プロトタイピングのソフトウェアアーキテクチャについて

この記事の目的

 電子工作のプロトタイピング時のソフトウェアアーキテクチャについて、どのように作るべきかを整理する

電子工作プロトタイピング時の参考書

電子工作でRaspberry piやArduinoを用いたプロトタイピングを行う場合、下記の参考書が便利である。

Raspberry Piで学ぶ電子工作

Raspberry Piの環境構築や各種電子部品を用いた実装まで手を動かして学ぶことができる本

LED点灯からラジコンの操作用ソフトまで多種のセンサ・アクチュエータを取り扱っておりとてもわかりやすい。

Arduinoをはじめよう

Arduinoをはじめよう 第3版 (Make:PROJECTS)

Arduinoをはじめよう 第3版 (Make:PROJECTS)

Arduinoの開発環境構築・使い方や各種電子部品のソフトの基本的なサンプルを取り揃えている。入門書としてとっつきやすい。

実用的なプロトタイプのためのアーキテクチャ

一方で上記の解説書では記載されているサンプルコードをそのまま実行させることで満足してしまい、実用的な機能を作るのが難しいのではないかと感じた。

ユーザーがPCからGUIで処理要求・センサデータの確認をしつつ、アクチュエータを動作させるプロトタイプを実現するためには、下記のような構成が適している。

f:id:sd08419ttic:20190425225053p:plain

上記の構成において、個々のセンサ・アクチュエータは参考書やWebのサンプルページを流用することで動作させることができる。

しかし、一連の機能として連携させて1つのソフトとして動作させるためは下記の要素を理解する必要がある。

項目 説明
プロジェクト構築(Python) 機能ごとにモジュール化/クラス化して整理した複数のPythonScriptから成り立つプロジェクトを構築する
スケジューリング(Python) 機能ごとに適切な周期で処理を呼び出す(GUI/通信などを含む。プロセス処理)
プロジェクト構築(Arduino) 機能ごとにモジュール化/クラス化して整理した複数のCファイルから成り立つプロジェクトを構築する
スケジューリング(Arduino) Arduinoプロジェクトで機能ごとに適切な周期で処理を呼び出す

プロトタイピングの参考書では上記のような点にページを割かず単一機能・mainループの処理のみに記載しているものが多い。

しかし、組込みソフト開発で開発をする場合などには上記概念を理解しておくことが重要であると感じている。

今後の記事で上記について実例を挙げながら説明する。