Skip to content
Published on

開発者のための電子制御入門 — ArduinoからAIロボットまで

Authors
  • Name
    Twitter
Arduino Electronics

はじめに

私たちは毎日コードを書いていますが、そのコードが物理的な世界と出会う瞬間を体験したことはありますか?自分のコードに反応してLEDが点灯するその瞬間、ソフトウェア開発の新しい次元が開かれます。

このシリーズはソフトウェア開発者のための電子制御入門です。C/C++やPythonができるなら、電子制御は思ったよりずっと簡単です。

なぜ開発者が電子制御を学ぶべきか

  1. フルスタックの本当の意味 — ソフトウェア + ハードウェア = 完全なシステム
  2. ロボティクス時代 — 2026年ヒューマノイドロボット時代に突入
  3. IoT/Edge AI — クラウドを超えてデバイスへ
  4. 趣味がそのままスキルに — 組み込み開発者の市場価値は上昇し続けている

ロードマップ

[ステージ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 または 1ON/OFFLED制御、ボタン読み取り
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ライブラリを使用||