- Authors
- Name
- はじめに
- なぜ開発者が電子制御を学ぶべきか
- ロードマップ
- 準備するもの(5,000円あれば十分!)
- 基礎概念: 3つだけ覚えれば大丈夫
- 実習1: LED点滅(Hello World)
- 実習2: ボタンでLED制御
- 実習3: 温湿度センサー(DHT11)
- 実習4: サーボモーター制御(卓球ロボットの第一歩!)
- 実習5: PWMでLEDの明るさ調整
- 開発者向けプロジェクトアイデア
- AI + 電子制御融合(Ultimate Goal)
- シリーズロードマップ

はじめに
私たちは毎日コードを書いていますが、そのコードが物理的な世界と出会う瞬間を体験したことはありますか?自分のコードに反応してLEDが点灯するその瞬間、ソフトウェア開発の新しい次元が開かれます。
このシリーズはソフトウェア開発者のための電子制御入門です。C/C++やPythonができるなら、電子制御は思ったよりずっと簡単です。
なぜ開発者が電子制御を学ぶべきか
- フルスタックの本当の意味 — ソフトウェア + ハードウェア = 完全なシステム
- ロボティクス時代 — 2026年ヒューマノイドロボット時代に突入
- IoT/Edge AI — クラウドを超えてデバイスへ
- 趣味がそのままスキルに — 組み込み開発者の市場価値は上昇し続けている
ロードマップ
[ステージ1] Arduino基礎(この記事)
└── LED、ボタン、センサー、サーボモーター
[ステージ2] ESP32 IoT
└── WiFi、MQTT、Webダッシュボード
[ステージ3] Raspberry Pi + カメラ
└── コンピュータビジョン、エッジAI
[ステージ4] ROS 2 ロボット
└── 自律走行、マニピュレーター
[ステージ5] AI + ハードウェア融合
└── 音声認識ロボット、スマートホーム
準備するもの(5,000円あれば十分!)
| 部品 | 価格 | 用途 |
|---|---|---|
| Arduino Uno R4 WiFi | ~¥3,000 | メインボード |
| ブレッドボード + ジャンパー線 | ~¥600 | 回路接続 |
| センサー37種キット | ~¥1,800 | 各種実習 |
| SG90 サーボモーター x2 | ~¥360 | モーター制御 |
基礎概念: 3つだけ覚えれば大丈夫
1. デジタル vs アナログ
デジタル: 0 または 1(ON/OFF)
→ LED制御、ボタン読み取り
→ Arduino: digitalRead(), digitalWrite()
アナログ: 0~1023の連続値
→ 温度センサー、照度センサー
→ Arduino: analogRead(), analogWrite()(PWM)
2. 電圧、電流、抵抗(オームの法則)
V = I × R
V(電圧)= 5V(Arduinoのデフォルト)
R(抵抗)= 220Ω(LED保護用)
I(電流)= 5V / 220Ω = 22.7mA ✅(LEDの安全範囲)
開発者向けたとえ: 電圧 = APIリクエスト、電流 = データフロー、抵抗 = Rate Limiter
3. GPIO(General Purpose Input/Output)
Arduino Uno R4:
デジタルピン: D0~D13(入力/出力)
アナログピン: A0~A5(入力)
PWMピン: D3, D5, D6, D9, D10, D11(疑似アナログ出力)
電源: 5V, 3.3V, GND
実習1: LED点滅(Hello World)
回路
Arduino D13 ──[220Ω]──[LED(+)]──[LED(-)]── GND
コード
// Blink — 電子制御のHello World
void setup() {
pinMode(13, OUTPUT); // D13を出力モードに
}
void loop() {
digitalWrite(13, HIGH); // LED ON
delay(1000); // 1秒待機
digitalWrite(13, LOW); // LED OFF
delay(1000); // 1秒待機
}
Python開発者なら: Arduino IDEの代わりにMicroPythonが使えます!
# MicroPython(ESP32で実行)
from machine import Pin
import time
led = Pin(13, Pin.OUT)
while True:
led.value(1) # ON
time.sleep(1)
led.value(0) # OFF
time.sleep(1)
実習2: ボタンでLED制御
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // 内部プルアップ抵抗を使用
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) { // ボタン押下(PULLUPなのでLOW)
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
実習3: 温湿度センサー(DHT11)
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
Serial.print("温度: ");
Serial.print(temperature);
Serial.print("°C / 湿度: ");
Serial.print(humidity);
Serial.println("%");
delay(2000);
}
実習4: サーボモーター制御(卓球ロボットの第一歩!)
#include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9); // D9ピンにサーボを接続
}
void loop() {
// 0度 → 180度スイープ
for (int angle = 0; angle <= 180; angle += 10) {
myServo.write(angle);
delay(50);
}
// 180度 → 0度スイープ
for (int angle = 180; angle >= 0; angle -= 10) {
myServo.write(angle);
delay(50);
}
}
実習5: PWMでLEDの明るさ調整
const int ledPin = 9; // PWMピン
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
// Fade in
for (int brightness = 0; brightness <= 255; brightness += 5) {
analogWrite(ledPin, brightness);
delay(30);
}
// Fade out
for (int brightness = 255; brightness >= 0; brightness -= 5) {
analogWrite(ledPin, brightness);
delay(30);
}
}
開発者向けプロジェクトアイデア
| プロジェクト | 難易度 | 連携可能なソフトウェア |
|---|---|---|
| 卓球スコアボード | ⭐⭐ | fingerscore連携 |
| サーバールーム温度モニター | ⭐⭐ | Grafanaダッシュボード |
| 侵入検知アラート | ⭐⭐⭐ | Telegram Bot通知 |
| 2軸カメラパンチルト | ⭐⭐⭐ | OpenCV顔追跡 |
| カスタムマクロキーボード | ⭐⭐⭐ | 開発生産性ツール |
| AIスマートホーム | ⭐⭐⭐⭐ | K8s + MQTT + LLM |
AI + 電子制御融合(Ultimate Goal)
[Arduinoセンサー] → [ESP32 WiFi] → [K8s MQTT Broker]
↓
[AI推論(GPUサーバー)]
↓
[制御コマンド → モーター/LED]
自宅のGPUサーバーとArduinoを接続すれば:
- 音声コマンド → Qwen3-TTS → スピーカー(omen)
- カメラ映像 → LTX-2分析 → サーボモーター制御(spark01)
- センサーデータ → 異常検知AI → アラート(spark02)
シリーズロードマップ
| 編 | テーマ | 状態 |
|---|---|---|
| 1編 | Arduino基礎(この記事) | ✅ |
| 2編 | ESP32 WiFi + MQTT IoT | 🔜 |
| 3編 | Raspberry Pi + カメラビジョン | 🔜 |
| 4編 | ROS 2 ロボット制御基礎 | 🔜 |
| 5編 | AI + ハードウェア統合プロジェクト | 🔜 |
クイズ — 電子制御基礎(クリックして確認!)
Q1. オームの法則 V = I x R で、5V電源に1kΩの抵抗を接続した場合の電流は? ||5V / 1000Ω = 5mA(0.005A)||
Q2. Arduinoのデジタルピンとアナログピンの違いは? ||デジタル: 0/1(HIGH/LOW)の2状態のみ。アナログ: 0~1023の範囲で連続値の読み取りが可能(ADC 10bit)||
Q3. PWM(Pulse Width Modulation)とは何で、どこに使われるか? ||デジタル信号のON/OFF比率(デューティサイクル)を調整して疑似アナログ出力を作る技法。LEDの明るさ調整、モーターの速度制御に使用||
Q4. INPUT_PULLUPモードでボタンを押すと読み取れる値は? ||LOW(0)— 内部プルアップ抵抗が通常時HIGHを維持し、ボタンを押すとGNDに接続されてLOWになる||
Q5. DHT11センサーの測定範囲と精度は? ||温度: 050°C(±2°C)、湿度: 2080%(±5%)。低価格で精度は低いが入門用には十分||
Q6. サーボモーターSG90の制御信号と動作範囲は? ||PWM信号(50Hz、12msパルス幅)、0180度回転。analogWriteではなくServoライブラリを使用||