🐶

組込みソフトの所感【ハードウェア】

2 min read

はじめに

自分は組込みソフト開発が専門ではないことを留意してください。小並感なものが多い。

一覧

今回は以下のことについて記します。

  • 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系サービスでも、ライブラリがESP32に対応されており、可能であればESP32が採用されているボード(M5stackなど)を利用すると時間がかからなくて良いと思います。

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の方は需要としては確実に上がっていく方向だとは思うので、関われるなら関わった方がいい部類のものだと思います。PLCはなんだかんだFA系で生き残り続けると思うので、そっち方向にいきたい場合は良いのかもしれない。

個人的選定基準

最低限プロトタイプ時も以下は意識しているように思います。

  • 使用環境は屋外か
  • 最大同時稼働台数
  • 機能実装容易性
  • センサーはどの程度つくか。その中にカメラは含んでいるか(加えて、解像度はどの程度か)
  • 時間精度はどの程度必要か
  • 消費電力はどの程度か。
  • 商用電源を使用できるか
  • 瞬停時は考慮するか
  • システムの寿命はどの程度を想定するか
  • メンテナンスはどの程度実施するか

おわりに

内容については、逐次更新するつもりでいます。

Discussion

ログインするとコメントできます