組み込み開発の進め方を初心者向けに解説!電子部品の選定から基板設計まで

組み込み基礎

「組み込み開発を始めたいけれど、何から勉強すればいいのかわからない」

「ArduinoやESP32でLEDを光らせてみたけれど、これが実際の製品開発とどうつながるのかわからない」

そんな疑問を持っている方も多いのではないでしょうか。

組み込み開発というと、複雑な電子回路や難しいプログラムを作るイメージがあるかもしれません。

しかし、組み込み開発の基本は、シンプルな電子部品や技術を組み合わせて、実現したい機能を作り上げることです。

今回は、組み込み開発を行っている合同会社タテプロに実際に寄せられた開発相談を参考に、どのような流れで組み込み機器を開発するのかを解説します。

また、初心者がいきなり製品を開発するのは難しいため、なぜ開発キットを使った基礎学習が重要なのかについても紹介します。

※紹介する事例は、守秘の観点から内容を一部一般化しています。

1. 組み込み開発はシンプルな要素の組み合わせ

まず最初に伝えたいのは、

組み込み開発は一つひとつのシンプルな技術を組み合わせて成り立っている

ということです。

例えば、組み込み機器には次のような電子部品が使われます。

  • マイコン:プログラムに従って装置全体を制御する
  • センサー:温度、湿度、距離、明るさなどを測定する
  • スイッチ・ボタン:人からの操作を受け付ける
  • LED・ディスプレイ:装置の状態や測定結果を表示する
  • モーター:物理的な動きを実現する
  • 電源回路:各部品に必要な電圧と電流を供給する

そして、これらを組み合わせるためには、マイコンと周辺部品との間で信号やデータをやり取りする必要があります。

例えば、LEDを点灯させる場合にはGPIOから電気信号を出力します。

温湿度センサーから測定値を取得する場合には、I2Cなどの通信方式を使います。

アナログ信号を出力するセンサーであれば、ADC(A/Dコンバーター)を使って電圧を数値に変換することもあります。

ほかにも、SPIやUARTといった通信方式、PWMによる制御、割り込み処理など、組み込み開発でよく使われる技術があります。

これらの基本的な仕組みを理解しておけば、さまざまな電子部品をマイコンと組み合わせられるようになります。

つまり、複雑に見える製品も、基本的な技術の組み合わせによって作られているのです。

2. 実際の組み込み開発はどのように進むのか?

ここからは具体的な例を使って説明します。

タテプロには、企業から組み込み機器の開発についてご相談をいただくことがあります。

その一例として、ペットケージの臭いを測定し、インターネットを通じて測定データを確認できるIoT装置を考えてみましょう。

想定する装置の機能は次のとおりです。

  1. ペットケージ内の臭いをセンサーで測定する
  2. 測定値をWi-Fi経由でクラウドに送信する
  3. クラウド上にデータを保存する
  4. 臭いの強さが時間とともにどのように変化したかをグラフで表示する
  5. ケージを清掃するタイミングの判断材料として活用する

このような装置を開発する場合、どこから手を付ければよいのでしょうか。

いきなり回路図を書いたり、プログラムを作り始めたりするわけではありません。

まずは、実現したい機能を分解して、それぞれに適した部品や技術を選んでいきます。

① まずは臭いセンサーを選定する

今回の装置で最も重要なのは、臭いを測定することです。

そこで、最初に臭いセンサーを選定します。

ただし、臭いを測定できれば何でもよいわけではありません。

  • どのような臭いを検出したいのか
  • どの程度の測定精度が必要なのか
  • どのくらいの応答速度が必要なのか
  • センサーの大きさは装置に収まるのか
  • どのような電源が必要なのか
  • どのような信号形式で測定値を出力するのか
  • 価格や入手性に問題はないか

こうした条件を確認しながら、適切なセンサーを探します。

その際に重要になるのが、データシートを読むことです。

データシートとは、電子部品メーカーが公開している技術資料で、その部品の仕様や使用条件が記載されています。

組み込み開発では、データシートを確認しながら、目的に合った部品を選定していくことが基本になります。

なお、臭いセンサーの測定値は必ずしも人間が感じる臭いの強さと一致するものではありません。
実際の開発では、何を測定指標にするのかも検討する必要があります。

② 温湿度センサーも必要になる

次に考えたいのが、温度と湿度です。

臭いセンサーは、周囲の温度や湿度によって測定値が影響を受けることがあります。

そのため、今回の装置では、臭いだけではなく温湿度も測定する構成を考えます。

温湿度センサーについても、臭いセンサーと同じように部品の選定が必要です。

必要な測定精度や測定範囲、サイズ、消費電力などを確認します。

例えば、I2C通信に対応した温湿度センサーを選ぶとします。

I2Cは、マイコンとセンサーなどの周辺機器を接続するための通信方式の一つです。

基本的にはSDAとSCLという2本の信号線を使ってデータをやり取りします。

つまり、マイコン側にもI2C通信の機能が必要になるわけです。

③ センサーの出力信号を確認する

ここで、今回選定した2種類のセンサーの出力方式を考えてみましょう。

仮に、臭いセンサーがアナログ信号を出力し、温湿度センサーがI2C通信に対応しているとします。

この場合、マイコンへの接続方法は異なります。

臭いセンサー:アナログ信号

センサーから出力される電圧を、マイコンのADCによってデジタル値に変換します。

ただし、センサーの出力電圧がマイコンのADC入力範囲を超えている場合は、そのまま接続できません。

必要に応じて、抵抗による分圧や信号調整回路などを設けて、マイコンが読み取れる電圧範囲に調整します。

また、センサーの種類によっては増幅回路やフィルタ回路などが必要になることもあります。

温湿度センサー:I2C通信

こちらは、I2CのSDAとSCLを使ってマイコンと通信します。

センサーから測定結果をデジタルデータとして取得できるため、ADCによる変換は基本的に不要です。

このように、センサーごとに出力方式が異なるため、それぞれに合った回路やマイコンの機能が必要になります。

ここでGPIOやADC、I2Cといった知識が役立つわけです。

④ 必要な機能からマイコンを選定する

ここまでで、装置に必要なセンサーと、その接続方法が見えてきました。

続いて、マイコンを選びます。

今回の装置では、少なくとも次の機能が必要です。

必要な機能目的
ADC臭いセンサーのアナログ信号を読み取る
I2C温湿度センサーからデータを取得する
Wi-Fiクラウドへ測定データを送信する
GPIO必要に応じて周辺回路を制御する
CPU・メモリ測定、データ処理、通信プログラムを実行する

また、測定間隔や通信頻度も考慮します。

例えば、1秒ごとに測定するのか、1分ごとに測定するのかによって、要求される仕様は変わります。

センサーの測定周期、通信処理に必要な時間、消費電力なども考えなければなりません。

こうした条件を満たすマイコンとして、例えばESP32-S3が候補になります。

ESP32-S3は、Wi-Fi通信に対応しており、ADCやI2Cなどの周辺機能も備えています。

もちろん、実際にはピン数、ADCの性能、消費電力、価格、開発環境なども確認し、最終的に採用するマイコンを決めます。

重要なのは、マイコンを先に決めるのではなく、実現したい機能に必要な条件を洗い出してから選定するという考え方です。

※既にマイコンが指定されている案件などでは、選定の順序が異なることもあります。

⑤ 必要な電源を設計する

センサーとマイコンが決まれば、次に電源を検討します。

電子部品には、それぞれ動作に必要な電圧と消費電流があります。

例えば、ある部品は3.3Vで動作し、別の部品は5Vを必要とするかもしれません。

その場合、各部品に適切な電圧を供給するための電源回路が必要です。

また、消費電流についても確認しなければなりません。

特にWi-Fi通信を行うマイコンでは、送信時に瞬間的な電流が増えるため、十分な電流供給能力を確保する必要があります。

電源に余裕がないと、動作が不安定になったり、マイコンが再起動したりする原因にもなります。

そこで、各部品のデータシートから必要な電圧と消費電流を調べ、装置全体の電源構成を決めます。

⑥ ここまで決まれば装置の構成が見えてくる

今回の装置では、最終的に次のような構成が考えられます。

臭いセンサー → 必要に応じて信号調整回路 → マイコン(ADC)

温湿度センサー → I2C通信 → マイコン

マイコン → Wi-Fi → クラウド → ブラウザでグラフ表示

さらに、これらを動作させるための電源回路が加わります。

これで、装置を構成する主要な部品と、それらをどう接続するのかという大枠が決まりました。

あとは、詳細な回路設計や基板設計、プログラム開発へと進んでいきます。

3. 回路図を作成して基板を製造する

使用する電子部品と接続方法が決まったら、回路図を作成します。

部品データシートに推奨回路が記載されており、これを基本として設計を進めます

回路図には、マイコン、各種センサー、電源回路、抵抗やコンデンサなどを記載していきます。

次に、回路図をもとに基板のレイアウトを設計します。

電子部品を基板のどこに配置するのか、どのように配線するのかを決める作業です。

基板設計では、部品の配置だけではなく、電源配線、信号品質、ノイズ、製造性なども考慮する必要があります。

設計が完了したら、基板製造業者にデータを送って基板を製造し、電子部品を実装します。

なお、実際の開発では、基板製造の前に開発ボードなどを使って、センサーが正常に動くかどうかを検証することもよくあります。

特に初めて使用する電子部品は、事前に動作を確認しておくことで、基板製造後の手戻りを減らせます。

4. プログラムを作成して装置を動かす

基板が完成したら、マイコンを動作させるプログラムを作成します。

今回の例では、次のような処理が必要です。

  1. マイコンやセンサーを初期化する
  2. 臭いセンサーの値をADCで取得する
  3. 温湿度センサーの値をI2C通信で取得する
  4. 取得した測定値を必要に応じて補正・加工する
  5. Wi-Fiでネットワークに接続する
  6. 測定値をクラウドに送信する
  7. 指定した周期で測定を繰り返す

クラウド側では、受信したデータを保存し、時間とともに測定値がどのように変化したかを表示する仕組みを用意します。

こうして、ペットケージの状態を可視化するIoT装置が完成していくわけです。

ただし、プログラムが動いたら開発終了というわけではありません。

測定値が正常か、通信が切断されたときに復旧できるか、長時間安定して動作するかなど、さまざまな試験と修正を繰り返します。

これも組み込み開発における重要な仕事の一つです。

5. 初心者がいきなり組み込み機器を開発するのは難しい

ここまで、組み込み開発がどのように進むのかを紹介してきました。

流れとしては、それほど複雑ではないと思います。

やりたいことを決めて、必要な部品を選び、それらを接続してプログラムで動かす。

基本的には、この繰り返しです。

しかし、組み込み開発を経験したことがない方が、いきなりこの一連の作業を進めるのは難しいでしょう。

例えば、I2C通信とは何かを知らなければ、温湿度センサーのデータシートを読んでも、どのようにマイコンと接続すればよいのかわかりません。

ADCの仕組みを知らなければ、アナログ信号をどのように読み取ればよいのかもわかりません。

そもそも、どのような電子部品や通信方式が存在するのかを知らなければ、適切な部品を探すことすら難しいのです。

そこで重要になるのが、開発キットを使った基礎学習です。

6. なぜ開発キットで基礎を学ぶ必要があるのか?

ArduinoやESP32などを使った開発キットでは、LEDを点滅させたり、ボタンを押してLEDを光らせたり、センサーの値を読み取ったりする学習がよく行われます。

正直に言えば、こうした基礎的な学習は、人によっては退屈に感じるかもしれません。

「LEDを点滅させるだけで何が面白いの?」
「もっと実用的なものを作りたい」

そう思う気持ちもわかります。

しかし、開発キットを使う目的は、LEDを点滅できるようになること自体ではありません。

LEDを点滅させる学習では、マイコンのGPIOがどのように動作するのかを理解します。

ボタンを使った学習では、マイコンが外部からの入力をどのように受け取るのかを理解します。

センサーの値を取得する学習では、I2CやSPI、ADCといった仕組みを理解します。

つまり、開発キットを通じて、組み込み開発に必要な基本技術を一つずつ身につけているわけです。

こうした知識が身につくと、実際に何かを開発したいと思ったときに応用できるようになります。

例えば、今回紹介した臭いの測定装置でも、温湿度センサーをI2C通信で扱った経験があれば、その知識を使えます。

ADCを学んでいれば、アナログ出力のセンサーを接続する方法を考えられます。

Wi-Fi通信を学んでいれば、クラウドへのデータ送信にも取り組みやすくなります。

開発キットで学習するのは、開発キットを動かせるようになるためではありません。
開発キットがなくても、自分で開発できるようになるためです。

これが、基礎学習をおすすめする理由です。

7. サンプルプログラムを動かすだけで終わらせない

開発キットを使った学習でも、気をつけてほしいことがあります。

それは、サンプルプログラムをコピーして動かしただけで、理解したつもりにならないことです。

例えば、温湿度センサーのサンプルプログラムを実行して、画面に温度と湿度が表示されたとします。

もちろん、実際に動かしてみることは大切です。

しかし、そこで終わってしまうと、別のセンサーを使うときに応用できないかもしれません。

そこで、次のようなことを考えてみてください。

  • なぜ、そのピンにセンサーを接続するのか
  • マイコンとセンサーはどのように通信しているのか
  • センサーから取得したデータはどのように数値へ変換されるのか
  • 別のセンサーに変更する場合、何を確認すればよいのか

こうした仕組みまで理解することが大切です。

そして、わからないことがあれば、データシートを調べてみましょう。

最初からデータシートをすべて理解する必要はありません。

必要な箇所を少しずつ読めるようになれば十分です。

知らない部品を使う場合でも、基本的な知識があれば、データシートを調べながら開発を進められるようになります。

8. KUMITATE-C3でも組み込み開発の基礎を学べます

当社では、組み込み開発を学ぶための教材として、ESP32-C3を搭載した「KUMITATE-C3」を開発しています。

KUMITATE-C3では、マイコンや電子回路を一から設計しなくても、プログラムを作成して周辺機能を動かす学習に取り組めます。

例えば、LEDの制御、ボタン入力、センサーとの通信など、組み込み開発で使う基本的な技術を学習できます。

また、学習した技術を組み合わせることで、簡単な電子工作から、より実用的な装置の開発へと発展させることもできます。

大切なのは、単にサンプルプログラムを動かすのではなく、その裏側でマイコンが何をしているのかを理解することです。

KUMITATE-C3に限らず、Arduinoなどの開発ボードでも同じように基礎学習はできます。

まずは身近な開発キットを使って、実際に動かしながら基本を身につけてみてください。

KUMITATE-C3の学習講座はこちら

まとめ:組み込み開発の基礎を身につければ、作れるものが広がる

今回は、実際の開発相談を参考に、組み込み開発がどのような流れで進むのかを紹介しました。

基本的な開発の流れは、次のとおりです。

  1. 実現したい機能を明確にする
  2. 必要なセンサーや電子部品を選定する
  3. 各部品の信号や通信方式を確認する
  4. 必要な機能を備えたマイコンを選定する
  5. 電源回路を検討する
  6. 回路図と基板データを作成する
  7. 基板を製造して電子部品を実装する
  8. プログラムを作成する
  9. 動作確認やデバッグを行う

実際の開発では、これらの工程を行き来しながら設計を進めることもあります。

組み込み開発は、最初から複雑なものを作る必要はありません。

GPIO、ADC、I2C、SPI、UART、PWMといった基本的な技術を一つずつ理解し、それらを組み合わせる方法を身につけることが大切です。

最初はLEDを点滅させるだけの学習でも構いません。

そこで学んだ知識が、将来自分の作りたいものを実現するための力になります。

大切なのは、何かを作りたいと思ったときに、自分で必要な部品を選び、組み合わせて、動かせるようになることです。

そのための第一歩として、ぜひ開発キットを使った基礎学習から始めてみてください。

KUMITATE

読むだけでなく、
実際に動かして学びませんか?

クミタテは、組み込み開発や電子工作を 実践しながら学べる学習プラットフォームです。 ESP32を使ったプログラミングから、電子回路、センサー、 通信、基板設計まで、自分のペースで学習できます。

  • 無料で学べる実践的な教材を掲載
  • すぐに試せるサンプルプログラム付き
  • Googleアカウントですぐに登録可能
クミタテに無料登録する
組み込み基礎
スポンサーリンク