組込みソフトの所感【ハードウェア】
はじめに
自分は組込みソフト開発が専門ではないことを留意してください。小並感なものが多い。
一覧
今回は以下のことについて記します。
- STマイクロ / ルネサス / etc.
- Arduino / ESP32 / etc.
- Obniz
- Raspberry Pi / Jetson / etc.
- PLC / FPGA / etc.
STマイクロ / ルネサス / etc.
いわゆる組込みソフトの環境だとこの辺りのCPUを想像すると思う。言語もC/C++になり、基本的にメーカーごとにIDEが分かれます。ただ、この辺りの開発をしている人はIDEをビルドするときぐらいに使ってる印象。エディターはそれぞれ好みのものを使用している(観測圏内だとサクラエディターや秀丸が多いイメージ)。OSも使用していたりしていなかったりする(自分が関わってた基板だとiTron系を採用していた)。結構ハードウェアの知識を要求され、新規でCPUを採用すると100pを超えるハードウェア仕様書を読みます。最近はIDEが優秀になってきてるので、その辺りのハードウェア設定はプロジェクトファイル生成時に自動で設定を出してくれたりするので、それもまちまち。
この辺りのCPUを採用している業界は結構古い環境を抱えている場合もあるので、本当に案件によって状況が変わると思います。このとき、採用する周辺機器の知識も必要になるため、非常にハードルが高い。一度覚えると何年でも使える知識なので、結構年のいった人も現役で働いているイメージがあります。
Arduino / ESP32 / etc.
センサー制御系のプロトタイプに使用されているイメージ。最近は実運用でも採用されてる印象があります。ハードウェアもIDEもOSS化しているので、上記よりもトラブルシューティングしやすいが、できることは限られます。しかし、拡張ボード、Groveやseeedなど、Arduinoに接続しやすいデバイスが多く出ているので、いろんな機能が実装しやすくなっています。
最近は機能の多さからESP32の注目度が高いです。標準ライブラリがfreeRTOS上で実装されているらしく、そこそこ踏み入ったソフトウェアも作成できる印象がある。GCPなどにあるIoT系サービスでもAWSなどにあるIoT系サービスでも(GCPのIoTサービスはなくなりました)、ライブラリがESP32に対応されており、可能であればESP32が採用されているボード(M5stackなど)を利用すると時間がかからなくて良いと思います。特にAWSは、確か以前にfreeRTOSの団体を買収したので、相性は他よりも良いと思います。
Obniz
こちらは少し特殊なタイプな組込み用マイコンボードです。プログラム開発、デプロイ、閲覧画面等すべてweb上で行います。言語も確かjavascriptで、webエンジニアもハードル低く開発できます。ただ、プログラムの動作は閲覧画面をブラウザで表示している間だけのよう(間違ってたらごめんなさい)なので、逐次処理するには、別マシンでcronする必要がありそうです。
Raspberry Pi / Jetson
エッジ側で採用されるという点でRaspberry PiやJetsonについても触れます。こちらはLinuxが搭載されており、パッケージが多いので、機能実装で悩むことが少ないと思います。GPIOについてもPythonを使用していればライブラリ経由で簡単に設定できる。ただ電力は比較的多く消費するため、低電力で運用することには向かないです。電源を引っ張ってこられるのなら問題ないですが、エッジ側では基本的にできることを制限しておいた方がメンテナンス上良いため、避けられるのなら採用を避けておいた方が良いというのが個人的な印象。
PLC / FPGA / etc.
ここで、PLCとFPGAをまとめていますが、厳密には使用ケースが変わります。ただ、どちらも確かHDLといった区分の言語を使用しています(この辺は曖昧)。機能実装上、STマイクロなどのCPUを採用したときより電気系の知識が必要になる印象があります。また、C言語などの言語は基本的にシリアルに動作することを前提とするのに対し、FPGAはパラレルな動作するため、処理が速いです。シリアル通信等はできるが、イーサなどの通信などは実装が面倒そうといった印象です。開発環境からすでに結構お金がかかるため、コスト面や知識面でも非常にハードルが高いです。ただ、産業用途という面ではもし設計ミスをしても書き換え可能なので、開発や運用保守期間が長い場合はトータルで価格を押さえることができると思います。
ただ、FPGAの方は需要としては確実に上がっていく方向だとは思うので、関われるなら関わった方がいい部類のものだと思います。FPGAはエッジ側のAI動作用環境としても注目されていますし、PLCはなんだかんだFA系で生き残り続けると思うので、そっち方向にいきたい場合は良いのかもしれないです。何にしろ、この辺りは需要がずっと衰えないと思います。基本的には電機分野の知識がベースとなるので、電機エンジニアとして、いわゆるソフトウェアエンジニアに機能実装面で殴りかかる感じはおもしろいと私は思います。元々機能実装は機電系の専売特許だったはずなので。
個人的選定基準
最低限プロトタイプ時も以下は意識しているように思います。
- 使用環境は屋外か
- 最大同時稼働台数
- 機能実装容易性
- センサーはどの程度搭載するか。その中にカメラは含んでいるか(加えて、解像度はどの程度か)
- 時間精度はどの程度必要か
- 消費電力はどの程度か。
- 商用電源を使用できるか
- 瞬停時は考慮するか
- システムの寿命はどの程度を想定するか
- メンテナンスはどの程度実施するか
おわりに
内容については、逐次更新するつもりでいます。
Discussion