組み込みエンジニアはIoT社会実現のために需要が高い職種

組み込みエンジニア

こんにちは、ENGかぴです。

組み込みエンジニアはIoT社会実現のために需要が高い職種です。具体的にイメージが持ちにくく難しそうに感じる部分もあると思いますが、簡単な例で言うとWiFiやBluetoothなどの通信機能を持つ製品を作ることできるエンジニアです。

私は組み込みエンジニアとして10年以上の経験を持つエンジニアです。プログラミングの経験がほとんどない状態からなんとか経験を積み現在も産業用の機器を開発しています。

組み込みエンジニアのスキルで実現できることのイメージについてあなたの参考になればと思います。

組み込みエンジニアはIoT社会実現のために需要が高い職種

IoT社会実現のためにLPWAによる長距離通信や中距離通信であるBluetoothまたはZigBeeなど各種無線機能を備えたIoTモジュールやデータ取得のためのセンサーが必要になります。

組み込みエンジニアはIoTモジュールとセンサーを組み合わせるためにIoTモジュールのソフトを開発したり外部のマイコンと組み合わせたりと全体のシステム構成からソフト開発までのスキルが要求されます。

IoTモジュールにセンサーを組み込むことで多種多様なシステムに対応した製品開発できることが組み込みエンジニアの強みです。

組み込みエンジニアのスキルで実現できること

無線通信ができるモジュールを組み合わせることで各種通信を搭載した機器を開発することができます。 現在主流となっているWiFiだけでなくBluetoothやZigBeeやLoRaなど通信距離の用途に応じて使い分けることで開発の幅が広がります。

無線通信ができるモジュールを組み合わせることで各種通信を搭載した機器を開発することができます。

現在主流となっているWiFiだけでなくBluetoothやZigBeeやLoRaなど通信距離の用途に応じて使い分けることで開発の幅が広がります。

最近ではZigBee通信ができるトワイライトを使用してIoTの需要に応えた製品を開発しています。トワイライトについてはエナジーハーベスト(環境発電)で動作させられることからハマってしまい各種機能を実現しています。

トワイライト(TWELITE)のソフト開発と無線通信でできること

トワイライトをArduino UNOと組わ合わせて温度情報を表示したりしていますが、これらの例は組み込みエンジニアのスキルがあれば実現可能です。

Arduino環境ではライブラリが提供されており各種センサーが簡単に動作確認できるように工夫されています。Arduino UNOやseeeduino XIAOを使って動作確認をしています。

Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方

マイコンを動作させる基礎であるレジスタ設定についてはPICマイコンを使って説明しています。マイコンを動作させるレジスタ設定を理解することでArduinoライブラリを提供する側にもなれます。

PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ

難しそうに感じるかもしれませんが、一度でも経験しているとマイコンやモジュールが変わっても考え方が同じであるため応用が利くようになります。トワイライトとArduinoを組み合わせて動作させる際も苦労なくソフト開発ができるようになります。

他の例としてはモジュール内に通信機能を組み込んでおくことで装置を遠隔操作したり装置の動作履歴を確認したり設定したりとメンテナンスすることができるようになります。

例1:タブレット(スマホ)から製品を動作させる
IoTモジュールにHTMLで記述したプログラムを組み込んでおくことでスマホで開発品と通信を行い、開発製品にアクセスすることが可能になります。

スマホに表示される画面は、組み込んだHTMLに従ったものになります。HTMLを組み込んだ製品を最近開発しました。自分のスマホから製品の操作ができて面白かったです。

例2:自作のアプリから製品を動作させる
IoTモジュールの通信機能を使って開発した製品とデータのやりとりができます。通信には、イーサネット・無線・RS232C・RS485など製品の仕様によって使い分けることもできます。

vb.netでアプリを開発して製品にアクセスしてメンテナンスができるようにしています。製品と通信ができればアプリはC++やRubyなど何であってもよいのです。

選定したパーツによってできることの制限を受けますが、制限内において、ソフト設計によって基本的に自分が望む動きを作ることができますここが、面白いところであり難しいことでもあります。

組み込みエンジニアの今後の需要は?

IoT社会実現のために今後も各種通信モジュールが進歩していくことが予想される中センサーの特徴を把握しモジュールに組み込んでいくスキルをもつ組み込みエンジニアの需要は増えていくと思います。

WiFiモジュールに代わる5G対応のモジュールが出回るようになれば5G通信による開発案件も増えることになりますし、LPWAのように通信データが少なくても長距離に対応した開発案件の需要は増えてきていると感じています。

ソフト開発の経験を積みモジュールが扱えるようにできるようになっておくことはIoT社会実現の波に乗り遅れないためにも必要だと思います。短期集中型のプログラミングスクールが増えてきているのもIoT社会実現のためにプログラマーが必要であることの証明になっていると思います。

最近では無料体験できるプログラミングスクールも増えてきており短期集中してプログラミングに親しめる環境があります。無料体験してプログラミングの感覚を掴んでおくことができれば理解が深まると思います。

Code Camp完全オンラインのプログラミング個人レッスン【無料体験】

私は組み込みエンジニアができることの例をあげるまでに10年かかってしまいました。短期集中して学んでスキルを取得できれば10年はおろか数年でモジュールが扱えるほどの知識がつくと思います。早いうちにプログラミングの教養をつけておくことは有利になることは間違いありません。

組み込みエンジニアに必要なスキル

組み込みエンジニアとは、ハード設計とソフト設計の双方の知識を必要とする総合職で主に電子回路設計を行うエンジニアです。

組み込みエンジニアとは、ハード設計ソフト設計の双方の知識を必要とする総合職で主に電子回路設計を行うエンジニアです。

身近な例でいうと家電製品に内蔵されている機能を実現するための頭脳を造っているエンジニアといえます。

家電製品などの電子製品は、分解していくと内部にイラストのような基板(緑のもの)が出てきます。この基板の開発を行うエンジニアです。

この基板は人間の体で例えると頭脳と神経です。頭脳(CPU)だけがあっても、体の中に廻っている神経がなければ手や足(部品)を動かすことはできません。

神経と部品が繋がっていたとしても頭脳が空っぽだと部品を動かすことはできません。 組み込みエンジニアは、

  • ハード設計・・部品と神経とつなげる作業
  • ソフト設計・・部品に指令を出す頭脳を作る作業

に分けれて作業することになります。

※頭脳と表現しておりますが、人間のように思考することはありません。あくまで、プログラムした範囲でのみの指令を出します。

開発チームが大きくなるとハード設計とソフト設計に分かれて開発することもあります。私は、少数精鋭でやらざるを得ず与えられた担当物件に対してハード設計とソフト設計のどちらも担当しています。

組み込みエンジニアとして仕事をしていると得意なところと苦手なところが分かれてくるものです。得意な分野に特化してハード設計・ソフト設計どちらに進んでも困ることはないと思います。

ハード設計・ソフト設計の技術者はどちらも不足しており需要が多い

ハード設計:部品とCPU(頭脳)をつなげる回路図を作成

ハード設計は、CPUが出す命令をうけて各パーツが動けるように電気信号を伝える配線を書いていきます。 各パーツとCPUを結んだ配線の全体を回路図と言います。

ハード設計は、CPUが出す命令をうけて各パーツが動けるように電気信号を伝える配線を書いていきます。

各パーツとCPUを結んだ配線の全体を回路図と言います。

この例では、CPUにスイッチ情報を取り込んで判断して条件分岐させて各種のLEDを点灯/消灯させるイメージの回路図になります。

CPUに判断させるためにはソフト設計が必要になります。ハード設計は

  1. CPUの選定・・使用できる機能を確認
  2. 部品の選定・・動かすために必要な信号を確認
  3. 回路図を作成する・・CPUとパーツを配線する

の手順で設計していきます。1.2は同時に考えていく作業になります。

部品の能力が最大限に利用できるようにメーカーのデータシートを確認してCPUの機能を割り当てる作業が必要になります。

CPUのと部品を組み合わせたときにそれぞれの能力を最大限に引き出せるように配線を効率よく行うことや部品との相性を考えながら最適化して設計を行う技術が必要になります。

CPUのマニュアル(1000ページ以上になるCPUもあります)を見て必要な機能を選択できるだけの知識が必要になります。

ページ数が多くて大変そうに感じますが、必要な部分だけ確認したらよいので慣れれば難しくありません。また、過去の製品のプログラムを流用しながらマニュアルを確認することで理解が進みます。

この作業は、ソフト設計のスキルがあったほうがスムーズに進めることができます。ハード設計者においてもソフト設計のための知識が要求されます

最近の傾向は、ソフト開発者(特にWEB開発系のエンジニア)の不足ばかりが言われているように感じますが、ハード設計の技術者のほうが不足しているように感じています。

OSを開発したとしてもOSを搭載する本体がなければファームのデータが残るだけで使い物になりません。ハード設計者がもう少し増えてほしいと思います。

ソフト設計:CPUにソフトを組み込む

ソフト設計は、製品のCPUのソフトを開発する作業になります。例えば、スマホの本体だけがあってもファームを書かない限り動きません。

ソフト設計は、製品のCPUのソフトを開発する作業になります。例えば、スマホの本体だけがあってもファームを書かない限り動きません。

組み込みエンジニアがソフト設計をするCPUは各分野において様々です。インバーターや自動車の分野ではルネサスエレクトロニクス製のCPUを使用していたりARM(イギリス製)のCPUを使用したりしています。

最近の傾向としてはCPUを開発しているメーカーは、ソフト開発者が少しでも楽に開発ができるように工夫してツールやミドルウェアを提供しています。ソフト設計者はメーカーが提供しているライブラリ(機能をパッケージしたもの)を使いながら製品に合わせてアプリを作りこむことが中心になっています。

私が駆け出しのエンジニアだったことはデータシートと睨めっこしながらCPUの設定をしていましたが、現在はCPUメーカのツールの改善によってかなり楽にCPU設計ができるようになっていると感じています。CPUメーカーも自社のCPUが採用されるように必死なのです。

最近では、IOT関連としてラズベリーパイなどによる開発も多くなりつつあります。ソフト開発のイメージについてマイクロチップテクノロジー社のPICマイコンを例にしたいと思います。

PICマイコン(PIC12F675)を使用してマイコンの動きを学べるように下記のリンクにまとめています。興味があればご覧ください。

PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ

ソフト設計は、以下の作業を行っていきます。

  1. マイコンの初期化処理・・マニュアルを確認して必要な機能を選択
  2. コーディング・・製品の仕様に合わせてソフトを開発する
  3. デバッグ・・ソフトにバグがないかの確認

ハード設計で選定したマイコンを動かすためにデータシートを確認しながらコーディングしていく作業となります。

ソフト設計は、メーカが提供している開発ツールを使って行います。マイクロチップ社ではPICマイコンの開発環境としてMPLAB X IDEを提供しています。

CPUのイラストは、1ピンから8ピンの機能を示しています。 赤枠で囲んでいる機能を選択しています。この機能を使用するために、マイコンの初期化処理を行います。

CPUのイラストは、1ピンから8ピンの機能を示しています。

赤枠で囲んでいる機能を選択しています。この機能を使用するために、マイコンの初期化処理を行います。

マイコンの機能の初期化が終わったら製品の仕様の通りに動作するようにコーディング(プログラムを書いていくこと)をします。デバッグと修正を繰り返しながら製品を完成させていきます。

例)動作のイメージ
イラストのボタンを押すことで緑のLEDが点灯し、7ピンのアナログ入力をもとにLED1を点灯させるかを制御します。

組み込みソフトとして使用される言語は、C言語が多くなります。アセンブラ(機械語)についても読み書きできたほうが良いですが、最近ではコンパイラが改善されているので、アセンブラを使った開発は少なくなっております。

まとめ:組み込みエンジニアのスキルは応用が様々で面白い!

組み込みエンジニアはマイコンに各種センサーを組み込んで動作させることができるエンジニアです。回路図をもとに基板設計を行うハードの技術とマイコンを搭載した基板のソフト開発を行うためのソフト技術の双方の技術が必要になります。

難しそうに感じますが、Arduinoライブラリを使用したり、PICマイコンで練習したりしながら経験を積んでいくと応用が利くようになり各種センサーを動かして試してみることが簡単にできるようになります。

IoT社会実現のために今後も5GモジュールをやLPWAモジュールのように各種通信モジュールが進歩していくことが予想される中センサーの特徴を把握しモジュールに組み込んでいくスキルをもつ組み込みエンジニアの需要は増えていくと思います。

私は組み込みエンジニアができることの例をあげるまでに10年かかってしまいました。早いうちにプログラミングの教養をつけておくことは有利になることは間違いありません。

Code Camp完全オンラインのプログラミング個人レッスン【無料体験】

関連リンク

組み込みエンジニアとして経験からソフト開発についてプログラミングの学習方法と手順やマイコンの動きを勉強するためにPICマイコンを使った記事やArduinoライブラリを使って各種センサーの動作を確認した記事や無線通信モジュールを使って動作確認したことについてまとめています。

組み込みエンジニアの経験から考えたプログラミングの学習方法と手順

Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方

PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ

トワイライト(TWELITE)のソフト開発と無線通信でできること

GEEKJOB-未経験からITエンジニアに【オンライン無料体験】

最後まで、読んでいただきありがとうございました。

タイトルとURLをコピーしました