こんにちは、ENGかぴです。
組み込みエンジニアはIoT社会実現のために需要が高い職種です。具体的にイメージが持ちにくく難しそうに感じる部分もあると思いますが、簡単な例で言うとWiFiやBluetoothなどの通信機能を持つ製品を作ることできるエンジニアです。私は組み込みエンジニアとして10年以上の経験を持つエンジニアです。プログラミングの経験がほとんどない状態からなんとか経験を積み現在も産業用の機器を開発しています。
組み込みエンジニアのスキルで実現できることのイメージについてあなたの参考になればと思います。
組み込みエンジニアはIoT社会実現のために需要が高い職種
IoT社会実現のためにLPWAによる長距離通信や中距離通信であるBluetoothまたはZigBeeなど各種無線機能を備えたIoTモジュールやデータ取得のためのセンサーが必要になります。
組み込みエンジニアはIoTモジュールとセンサーを組み合わせるためにIoTモジュールのソフトを開発したり外部のマイコンと組み合わせたりと全体のシステム構成からソフト開発までのスキルが要求されます。
IoTモジュールにセンサーを組み込むことで多種多様なシステムに対応した製品開発できることが組み込みエンジニアの強みです。
広告
PR:わからないを放置せず、あなたにあったスキルを身に着けるコツを教える テックジム 「書けるが先で、理解が後」を体験しよう!
組み込みエンジニアのスキルで実現できること
無線通信ができるモジュールを組み合わせることで各種通信を搭載した機器を開発することができます。
現在主流となっているWiFiだけでなくBluetoothやZigBeeやLoRaなど通信距離の用途に応じて使い分けることで開発の幅が広がります。
最近ではZigBee通信ができるトワイライトを使用してIoTの需要に応えた製品を開発しています。トワイライトについてはエナジーハーベスト(環境発電)で動作させられることからハマってしまい各種機能を実現しています。
トワイライト(TWELITE)のソフト開発と無線通信でできること
トワイライトをArduino UNOと組わ合わせて温度情報を表示したりしていますが、これらの例は組み込みエンジニアのスキルがあれば実現可能です。
Arduino環境ではライブラリが提供されており各種センサーが簡単に動作確認できるように工夫されています。Arduino環境でソフト開発したことについてまとめています。
Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方
Seeeduino XIAOで学べるソフト開発と標準ライブラリの使い方
ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方
マイコンを動作させる基礎であるレジスタ設定についてはPICマイコンを使って説明しています。マイコンを動作させるレジスタ設定を理解することでArduinoライブラリを提供する側にもなれます。
PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ
PICマイコン(PIC16F1827)で実現できる機能と解説リンクまとめ
他の例としてはモジュール内に通信機能を組み込んでおくことで装置を遠隔操作したり装置の動作履歴を確認したり設定したりとメンテナンスすることができるようになります。
例1:タブレット(スマホ)から製品を動作させる
IoTモジュールにHTMLで記述したプログラムを組み込んでおくことでスマホで開発品と通信を行い、開発製品にアクセスすることが可能になります。
スマホに表示される画面は、組み込んだHTMLに従ったものになります。HTMLを組み込んだ製品を最近開発しました。自分のスマホから製品の操作ができて面白かったです。
例2:自作のアプリから製品を動作させる
IoTモジュールの通信機能を使って開発した製品とデータのやりとりができます。通信には、イーサネット・無線・RS232C・RS485など製品の仕様によって使い分けることもできます。
選定したパーツによってできることの制限を受けますが、制限内において、ソフト設計によって基本的に自分が望む動きを作ることができます。ここが、面白いところであり難しいことでもあります。
組み込みエンジニアの今後の需要は?
IoT社会実現のために今後も各種通信モジュールが進歩していくことが予想される中センサーの特徴を把握しモジュールに組み込んでいくスキルをもつ組み込みエンジニアの需要は増えていくと思います。
WiFiモジュールに代わる5G対応のモジュールが出回るようになれば5G通信による開発案件も増えることになりますし、LPWAのように通信データが少なくても長距離に対応した開発案件の需要は増えてきていると感じています。
ソフト開発の経験を積みモジュールが扱えるようにできるようになっておくことはIoT社会実現の波に乗り遅れないためにも必要だと思います。短期集中型のプログラミングスクールが増えてきているのもIoT社会実現のためにプログラマーが必要であることの証明になっていると思います。
最近では無料体験できるプログラミングスクールも増えてきており短期集中してプログラミングに親しめる環境があります。無料体験してプログラミングの感覚を掴んでおくことができれば理解が深まると思います。
PR:アクセンチュアの転職なら【コンサルアクシスコンサルティング】
私は組み込みエンジニアができることの例をあげるまでに10年かかってしまいました。短期集中して学んでスキルを取得できれば10年はおろか数年でモジュールが扱えるほどの知識がつくと思います。早いうちにプログラミングの教養をつけておくことは有利になることは間違いありません。
組み込みエンジニアに必要なスキル
組み込みエンジニアとは、ハード設計とソフト設計の双方の知識を必要とする総合職で主に電子回路設計を行うエンジニアです。
身近な例でいうと家電製品に内蔵されている機能を実現するための頭脳を造っているエンジニアといえます。
この基板は人間の体で例えると頭脳と神経です。頭脳(CPU)だけがあっても、体の中に廻っている神経がなければ手や足(部品)を動かすことはできません。
神経と部品が繋がっていたとしても頭脳が空っぽだと部品を動かすことはできません。 組み込みエンジニアは、
- ハード設計・・部品と神経とつなげる作業
- ソフト設計・・部品に指令を出す頭脳を作る作業
に分けれて作業することになります。
※頭脳と表現しておりますが、人間のように思考することはありません。あくまで、プログラムした範囲でのみの指令を出します。
開発チームが大きくなるとハード設計とソフト設計に分かれて開発することもあります。私は、少数精鋭でやらざるを得ず与えられた担当物件に対してハード設計とソフト設計のどちらも担当しています。
組み込みエンジニアとして仕事をしていると得意なところと苦手なところが分かれてくるものです。得意な分野に特化してハード設計・ソフト設計どちらに進んでも困ることはないと思います。
ハード設計:部品とCPU(頭脳)をつなげる回路図を作成
ハード設計は、CPUが出す命令をうけて各パーツが動けるように電気信号を伝える配線を書いていきます。
各パーツとCPUを結んだ配線の全体を回路図と言います。
この例では、CPUにスイッチ情報を取り込んで判断して条件分岐させて各種のLEDを点灯/消灯させるイメージの回路図になります。
CPUに判断させるためにはソフト設計が必要になります。ハード設計は
- CPUの選定・・使用できる機能を確認
- 部品の選定・・動かすために必要な信号を確認
- 回路図を作成する・・CPUとパーツを配線する
の手順で設計していきます。1.2は同時に考えていく作業になります。
部品の能力が最大限に利用できるようにメーカーのデータシートを確認してCPUの機能を割り当てる作業が必要になります。
CPUのと部品を組み合わせたときにそれぞれの能力を最大限に引き出せるように配線を効率よく行うことや部品との相性を考えながら最適化して設計を行う技術が必要になります。
CPUのマニュアル(1000ページ以上になるCPUもあります)を見て必要な機能を選択できるだけの知識が必要になります。
ページ数が多くて大変そうに感じますが、必要な部分だけ確認したらよいので慣れれば難しくありません。また、過去の製品のプログラムを流用しながらマニュアルを確認することで理解が進みます。
この作業は、ソフト設計のスキルがあったほうがスムーズに進めることができます。ハード設計者においてもソフト設計のための知識が要求されます。
最近の傾向は、ソフト開発者(特にWEB開発系のエンジニア)の不足ばかりが言われているように感じますが、ハード設計の技術者のほうが不足しているように感じています。
ソフト設計:CPUにソフトを組み込む
ソフト設計は、製品のCPUのソフトを開発する作業になります。例えば、スマホの本体だけがあってもファームを書かない限り動きません。
組み込みエンジニアがソフト設計をするCPUは各分野において様々です。
例えばインバーターや自動車の分野ではルネサスエレクトロニクス製のCPUを使用していたりARM(イギリス製)のCPUを使用したりしています。
私が駆け出しのエンジニアだったことはデータシートと睨めっこしながらCPUの設定をしていましたが、現在はCPUメーカのツールの改善によってかなり楽にCPU設計ができるようになっていると感じています。CPUメーカーも自社のCPUが採用されるように必死なのです。
ソフト開発のイメージについてマイクロチップテクノロジー社のPICマイコンを使ってソフト開発したことをまとめています。
PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ
PICマイコン(PIC16F1827)で実現できる機能と解説リンクまとめ
ソフト設計は、以下の作業を行っていきます。
- 手順1マイコンの初期化処理
マニュアルを確認しながら通信機能やタイマなど必要な機能を選択
- 手順2コーディング
製品の仕様に合わせてソフトを実装する
- 手順3デバッグ
バグがないかの確認
ハード設計で選定したマイコンを動かすためにデータシートを確認しながらコーディングしていく作業となります。
ソフト設計は、メーカが提供している開発ツールを使って行います。PICマイコンを使った開発はマイクロチップ社が提供しているMPLAB X IDEを使ってソフト開発を行います。
マイコンの機能の初期化が終わったら製品の仕様の通りに動作するようにコーディング(プログラムを書いていくこと)をします。デバッグと修正を繰り返しながら製品を完成させていきます。
まとめ:組み込みエンジニアのスキルは応用が様々で面白い!
組み込みエンジニアはマイコンに各種センサーを組み込んで動作させることができるエンジニアです。回路図をもとに基板設計を行うハードの技術とマイコンを搭載した基板のソフト開発を行うためのソフト技術の双方の技術が必要になります。
難しそうに感じますが、Arduinoライブラリを使用したり、PICマイコンで練習したりしながら経験を積んでいくと応用が利くようになり各種センサーを動かして試してみることが簡単にできるようになります。
IoT社会実現のために今後も5GモジュールをやLPWAモジュールのように各種通信モジュールが進歩していくことが予想される中センサーの特徴を把握しモジュールに組み込んでいくスキルをもつ組み込みエンジニアの需要は増えていくと思います。
私は組み込みエンジニアができることの例をあげるまでに10年かかってしまいました。早いうちにプログラミングの教養をつけておくことは有利になることは間違いありません。
関連リンク
組み込みエンジニアとして経験からソフト開発についてプログラミングの学習方法と手順やマイコンの動きを勉強するためにPICマイコンを使った記事やArduinoライブラリを使って各種センサーの動作を確認した記事や無線通信モジュールを使って動作確認したことについてまとめています。
組み込みエンジニアの経験から考えたプログラミングの学習方法と手順
PICマイコンを使ってマイコンのレジスタの設定やMPLAB X IDEのプラグインであるMCCを使用して動作確認したことについてまとめています。
PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ
PICマイコン(PIC16F1827)で実現できる機能と解説リンクまとめ
Arduinoのライブラリを使って動作確認を行ったことを下記リンクにまとめています。
Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方
Seeeduino XIAOで学べるソフト開発と標準ライブラリの使い方
ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方
トワイライト(TWELITE)のソフト開発と無線通信でできること
最後まで、読んでいただきありがとうございました。
難しそうに感じるかもしれませんが、一度でも経験しているとマイコンやモジュールが変わっても考え方が同じであるため応用が利くようになります。トワイライトとArduinoを組み合わせて動作させる際も苦労なくソフト開発ができるようになります。