「組み込みエンジニアは、実際にどのような仕事をしているのだろう?」
組み込み開発というと、基板を作ったりプログラムを書いたりする仕事を想像するかもしれません。
しかし実務では、依頼内容の確認、試作、回路設計、通信機能の実装、電源トラブルの調査、仕様変更への対応など、
さまざまな作業を組み合わせて一つの製品を完成させます。
この記事では、私が担当しているESP32を使ったIoT機器の受託開発を例に、組み込みエンジニアの仕事内容を紹介します。
動画でも実物の基板を見せながら解説しています。
今回開発しているIoT機器
今回の仕事は、企業から依頼を受けて進めている組み込み機器の開発です。
ESP32を中心とした基板に複数のセンサーを接続し、測定したデータをクラウドサーバーへ送信します。
クラウド側では、そのデータをAI処理にかけ、得られた結果を画面へ表示します。
私が担当している主な範囲は、基板設計とESP32上で動くプログラムの開発です。ただし、最初から完成版の基板を設計したわけではありません。
最初に既製品を組み合わせて試作する
組み込み開発では、いきなり専用基板を作ると手戻りが大きくなります。
そこで最初に、依頼元から「何を実現したいのか」を聞き、既製品の開発ボードやモジュールを組み合わせて試作品を作りました。
電源の取り方や通信方法を確認し、センサーからデータを取得できるか、クラウドへ送信できるかを検証します。
この段階で実現の見通しが立ってから、試作回路をもとに専用基板を設計しました。
試作は、技術的に実現できるかを確かめるだけではありません。
早い段階で問題点を見つけ、完成版での作り直しを減らすためにも重要です。
基板設計とプログラム開発
回路の見通しが立ったら、専用基板を設計します。
完成した基板へ部品を実装し、はんだ付けを行い、プログラムを書き込んで動作を確認します。
基板が完成しても、それだけで仕事は終わりません。
電源が正しく供給されているか、通信信号が想定どおりか、センサーの値を取得できるかなどを一つずつ確認します。
今回の基板は、当初のWi-Fi通信では問題なく動作しました。
しかし、その後の仕様変更によって新しい課題が発生しました。
Wi-FiからSIM通信への仕様変更
開発途中で、Wi-FiだけでなくSIMカードを使って通信したいという要望が出ました。
一度はWi-Fiのみで進める方針に戻ったものの、基板開発後に再びSIM通信が必要となりました。
そのため、元のESP32基板とは別にSIM通信基板を用意し、両者を接続して機能を追加しています。
受託開発では、このような仕様変更が発生することがあります。
完成に近づいた段階で機能が追加されると、回路やプログラムだけでなく、電源構成や基板そのものを見直さなければならない場合もあります。
3.3Vと5Vの違いをレベルシフトで解決
ESP32側の信号電圧は3.3Vですが、今回使用したSIM通信基板は5Vで動作します。
電圧の異なる信号線をそのまま接続すると、通信できないだけでなく、部品を破損させるおそれがあります。
そこで、FETを使ったレベルシフト回路を間に入れ、3.3Vと5Vの信号を安全に変換しました。
組み込み開発では、「端子同士をつなげば通信できる」とは限りません。
通信方式が同じでも、信号電圧や論理レベルを確認する必要があります。
SIM通信で発生した電源容量不足
もう一つの問題は電源です。
SIM通信基板は、通信を開始するときに大きな電流を必要とします。
当初はESP32基板から電源を供給する予定でしたが、元の基板では必要な電流を確保できず、SIM通信を開始した瞬間に電源が落ちてしまいました。
そこで、SIM通信基板には別の直流安定化電源から5Vを供給し、ESP32基板はUSB経由でパソコンから給電する構成に変更しました。
回路図上の電圧が合っていても、必要な電流を供給できなければ機器は正常に動きません。
特に無線通信モジュールでは、平均消費電流だけでなく、通信開始時などの瞬間的な電流も考慮する必要があります。
不具合調査ではオシロスコープが役立つ
現在は安定して動いていますが、最初から通信がうまくいったわけではありません。
プログラムだけを見ても、信号が出ているのか、電圧が不足しているのか、タイミングがずれているのかは分かりません。
そこで、要所ごとにオシロスコープで波形を確認し、現在の状態を切り分けました。
組み込み開発では、ソフトウェアとハードウェアの両方を確認する必要があります。
目に見えない電気信号を観測できるオシロスコープは、不具合調査において非常に有用です。
Wi-Fi設定とOTA機能も実装
画面には見えない部分にも、製品として使うための機能があります。
キャプティブポータルによるWi-Fi設定
利用者がWi-Fiへ接続するには、SSIDとパスワードを機器へ設定しなければなりません。
そのため、カフェなどのWi-Fi接続時に表示されるものと同様の「キャプティブポータル」を実装しました。
利用者は専用の設定画面からSSIDとパスワードを入力できるため、プログラムを書き換えなくても接続先を変更できます。
OTAによるファームウェア更新
サーバーに新しいESP32用ファームウェアが公開されている場合、機器がプログラムを取得し、自身を書き換えられるOTA機能も実装しました。
OTAは「Over The Air」の略です。
機器を回収したり、USBケーブルで接続したりしなくても、通信経由でプログラムを更新できます。
設置後も機能追加や不具合修正を行うIoT機器では、重要な機能です。
受託の組み込み開発で難しいのは仕様変更
この案件は約5か月にわたり進めています。技術的な問題を一つずつ解決し、全体としては順調に進んでいますが、受託開発ならではの難しさも感じました。
特に大きいのが仕様変更です。
今回のSIM通信のように、当初予定されていなかった機能が後から必要になると、すでに作った基板を設計し直すこともあります。
組み込み機器は、プログラムだけで完結しません。
仕様変更が電源、通信、回路、部品配置、筐体などへ連鎖するため、影響範囲を確認しながら対応する必要があります。
組み込み開発は技術の組み合わせ
今回の仕事には、次のような技術が含まれています。
・ESP32による制御
・センサーからのデータ取得
・Wi-Fi通信
・SIM通信
・3.3Vと5Vのレベルシフト
・電源容量の検討
・キャプティブポータル
・OTAによるファームウェア更新
・オシロスコープを使った不具合調査
一つひとつは独立した技術ですが、実際の製品はそれらを組み合わせて作られます。
経験を積むと、依頼を聞いた時点で「この機能とこの回路を組み合わせれば実現できそうだ」と考えられるようになります。
最初は分からないことばかりでも、小さな技術を積み重ねることで、対応できる仕事の幅が広がります。
まとめ
組み込みエンジニアの仕事は、基板設計やプログラミングだけではありません。
依頼内容の整理、試作、実現性の確認、回路設計、通信、電源、不具合調査、仕様変更への対応まで、製品を動かすための幅広い作業が含まれます。
今回紹介したESP32のIoT開発でも、Wi-Fi、SIM通信、レベルシフト、電源対策、キャプティブポータル、OTAといった技術を組み合わせ、一つのシステムを作り上げています。
組み込み開発に興味がある方は、まず一つのセンサーを動かす、Wi-Fiでデータを送るといった小さな課題から始めてみてください。
その経験の積み重ねが、実際の製品開発につながります。
組み込み開発について体系的に学びたい方は、組み込みオンラインスクール「クミタテ」もご覧ください。


コメント