ワクワク、楽しみながら、電子工作しましょう!工作です!
注) 難しいなぁ、と自己暗示をかけないでください!💦
なぜなら、あなたは既にIoTを日常で使っています。
スマホはIoTの一部です。
スマホのアプリから、Wi-Fi経由で「エアコン」や「照明」「ロボット掃除機」を遠隔操作したり、センサー情報(室温や動作状況)をリアルタイムで確認できます。
このとき、スマホは**人とIoT機器をつなぐ操作端末(UI)**であり、IoTシステムの一部として機能しています。
他にも、スマホに内蔵されたGPS・加速度センサー・カメラなども「IoTセンサー」として活用され、アプリやクラウドと連携することで、IoTデバイスとしての役割を果たしています。
注) 難しく思わないでください💦
優日堂Labでご紹介する内容について
IoTは異種総合格闘技
IoTは、単一技術では成り立たず、「ハードウェア(センサー・回路設計)」「ファームウェア・組込みソフト」「ネットワーク通信」「クラウド連携」「アプリ・UI」「セキュリティ」「データ処理・AI」など、複数の技術分野を横断的に扱う必要があります。
これらを一人または一つのチームで組み合わせて動かすには、電気・情報・機械・デザイン・運用の総合的なスキルと知識が求められます。
そのため、**IoT開発は「技術の異種総合格闘技」**とも呼ばれ、深い専門性と広い対応力の両立が重要視されます。
(筆者は、IoT検定 Power User 試験 グレードA 合格)
範囲を限定してご紹介
実現する方法は、何通りものやり方、組合せ、言語、電子部品があります。
予め、技術範囲をある程度絞ってご紹介していきます。
言語
Python、Micropythonを中心にその他必要な言語で補完していきます。
パソコンはWindowsで開発を進めていきます。Macには触れません。
理由 わかりやすい言語であり、AIへの応用もやり易いため
マイコン/コンピューターボード
Raspberry Piシリーズに限定しています。
主に、以下についてご紹介していきます。
✅Pico W マイクロコントローラー(マイコン)ボード
✅Zero 2 W シングルボードコンピューター
理由 用途に応じてラインナップが豊富、Pythonで開発しやすく、量産化も可能なため
PoC開発 IoT x AI ~Raspberry Pi~ | 優日堂 Lab | 優日堂
通信
有線 : 部品間仕様 (I2C,IIS,SPI,UART,1-Wireなど)
無線 : WiFi / Bluetooth (技適取得品に限定)
LPWAは上級編で必要に応じて対応予定。
※Python、microPython、Raspberry Piシリーズ以外での開発については触れませんのご注意ください。
PoC(Proof of Concept : 概念実証)
PoC(Proof of Concept)とは、概念実証と訳されます。
新しいアイデアや技術、仕組みが「実際に実現可能かどうか」を短期間・小規模で検証する取り組みです。
製品化や本格導入の前に、技術的な課題や効果、リスクを見極める目的で行われ、成功すれば次の開発段階へ進む判断材料となります。
ほぼ製品に近い状態まで仕上げる場合もあります。
複数の電子工作を積み上げて、仕様・機能・(性能)が実現可能かどうか、試作することです。
PoCの後にプロトタイピングに進み、製品同等の試作を制作する段階へ移行します。
ここでは、あらゆる業界の数あるPoCの種類の中から、「 IoT x AI x? = 有益 」の分野に絞りご紹介していきます。
IoT(Internet of Things:モノのインターネット)
IoTとは、センサーや機器などの「モノ」をインターネットに接続し、データの収集・制御・共有を行う技術です。
従来は独立していた装置をネットワーク化することで、遠隔監視や自動制御、省力化、効率化を実現し、さまざまな業界で活用が進んでいます。
AI(Artificial Intelligence:人工知能)
AIとは、人間の知的な判断や学習を模倣する技術で、膨大なデータを基に「識別・予測・最適化」などを行います。
ルールベースから機械学習・深層学習まで進化し、画像認識や自然言語処理、予兆保全など幅広い分野で実用化が進んでいます。
IoT × AI
「IoT × AI」の組み合わせによる応用例として、スマート農業、予兆保全、見守りシステムなどがあげられます。
アイデア次第では、もっと身近な、「あったらいいな」「こうなるといいな」を実現していけます。
みなさんは、何を実現したいですか?
要素技術をひとつひとつ、繋いでいけば、実現したいものができます!
要素技術をブロック単位でご紹介していきますので、繋いで試してみてください。
PoC開発
技術の範囲について、概要をご紹介します。
ハードウェア (Hardware)
電子回路やセンサー、基板、配線、筐体など、物理的な構造や機器そのものを指します。
IoTでは、温度センサーやモーター、無線モジュールなどが含まれ、「信号を測る・動かす・送る」ための土台となる重要な要素です。
マイコン / コンピューター
Raspberry Pi シリーズ
各種モジュール
目的に合わせたセンサーモジュールや制御用モジュール
電子部品
受動部品
抵抗、コンデンサー、コイル、モーターなど
能動部品
LED、ダイオード、トランジスタ、FET、半導体、IC、LSI、SoC
その他
基板、ボード、線材、コネクターなど
ファームウェア (Firmware)
ハードウェアを動かすために内蔵された制御用プログラムです。
マイコンやセンサー内部に書き込まれ、ボタンが押されたらLEDを点灯させる、温度を読み取って送信するなどの動作ロジックを司ります。
ハードとソフトをつなぐ橋渡しとも言えます。
Pico Wはファームウェアをインストールする必要があります。
パソコンとPico WのBOOTSELボタンを押しながらUSBケーブルで接続すると、パソコンはPico-WをRPI-RP2(D:)として認識します。
Micro Python
その他
ソフトウェア(Software)
パソコンやスマホ、クラウドなどで動作するアプリケーションや制御プログラムです。データの表示、遠隔操作、記録・分析などを行い、ユーザーとIoT機器のやり取りを可能にします。Webアプリやスマホアプリなどが代表例です。
Python
Micro Python
その他システムに適合する言語
ライブラリ(Library)
多くの関数やクラスをまとめた「部品箱」
ライブラリ(複数のモジュール)
└ モジュール(1ファイル)
├ 関数(単機能)
└ クラス(複合機能)
└ メソッド(関数)
よく使う処理をひとまとめにして再利用できるようにした部品集です。
温度センサーの読み取り処理やWi-Fi通信の設定など、複雑な機能を簡単な命令で使えるようにしてくれます。
PythonやC言語など多くの言語で利用されており、開発効率を大きく高めてくれる存在です。
例:machine
, network
, time
, paho-mqtt
モジュール(Module)
関数やクラスが入った「Pythonファイル」そのもの
ライブラリの中でも、ファイル単位で機能をまとめた構成要素を「モジュール」と呼びます。たとえば、wifi.py
やtemperature.py
のように、ある特定の処理だけを切り分けたファイルをモジュールとして呼び出し、コードの整理や分割がしやすくなります。
例:import math
, import sensor_utils
関数(Function)
最小単位の処理をまとめたもの。どこでも使える便利な道具
特定の処理をひとまとめにした命令のかたまりです。何度も使う処理を1回だけ定義して、名前をつけて呼び出せるようにしたものです。
たとえば、「温度を読み取って摂氏に変換する」処理を毎回書かずに済むように、read_temperature()
のような関数にまとめておくと便利です。
def read_temperature():
raw = sensor.read()
return raw * 0.1
IoT開発でも、センサーの読み取り、制御命令、データ送信などはすべて関数で行われます。
クラス(Class)
内部に関数(=メソッド)を持つ「オブジェクトの設計図」
一連のデータとその操作方法(関数)をひとまとまりに定義した設計図です。クラスを使うことで、例えば「温度センサー」という機能をread_temperature()
やcalibrate()
といった関数つきで使えるようになり、オブジェクト指向の考え方で複雑な処理も整理しやすくなります。
class TemperatureSensor:
def init(self, pin):
self.pin = pin
def read(self):
# 温度読み取り処理
概念
概念名 | 説明 |
---|---|
インスタンス(Instance) | クラスから実体化された「実物のオブジェクト」のこと。クラスが設計図、インスタンスは家。センサー1つ1つが個別のインスタンスになる。 |
メソッド(Method) | クラスの中に定義された関数。インスタンスの持つデータを処理するための関数で、.read() や .start() などが該当。 |
変数(Variable) | 値やデータを一時的に格納しておく箱のようなもの。センサー値や状態などを保持するのに使う。 |
引数 / 戻り値(Arguments / Return value) | 関数やメソッドに渡すデータ(引数)と、処理後に返す結果(戻り値)。関数を柔軟に使うための鍵。 |
インポート(Import) | 他のモジュールやライブラリの機能を使うための宣言。import しないと関数やクラスは使えない。 |
スコープ(Scope) | 変数や関数が有効な範囲のこと。意図しない上書きやエラーを防ぐために重要。ローカルスコープとグローバルスコープがある。 |
例外処理(Exception Handling) | エラーが起きたときにプログラムが止まらないようにする仕組み。IoTではセンサーの接続不良や通信エラーに対応するため必須。 |
まとめ、その他
基礎以外は、今後、都度ご紹介していきます。
【基礎】
- ハードウェア
- ファームウェア
- ソフトウェア
- ライブラリ / モジュール / クラス / 関数 / メソッド
- インスタンス / 変数 / 引数・戻り値 / スコープ
【開発上の要】
- インポート
- 例外処理
- デバッグ・ログ
【応用】
- 継承 / ポリモーフィズム
- 非同期処理(async)
概念名 | 説明(応用・発展) |
---|---|
継承(Inheritance) | クラスの再利用性を高める仕組み。親クラスの機能を子クラスが引き継ぎ、IoT機器の種類ごとの共通処理と差分を整理できる。 |
ポリモーフィズム(Polymorphism) | 同じインターフェース(関数名など)で異なるクラスを扱える仕組み。センサーごとに違う動作を共通の関数名で実装できる。 |
非同期処理(Async) | IoTではセンサー読み取りや通信の待ち時間が発生する。async / await により効率よく複数の処理を並行実行できる。 |
デバッグ / ロギング | IoT開発では、センサーが正しく動作しているか確認するために出力を記録する仕組みが重要。print() だけでなくlogging モジュールの活用も推奨。 |