Arduino Nanoで作る「食べさせロボット」:超音波センサーで食べ物検知し口を開閉
プロジェクト概要
娘さんの「食べさせられるロボットが欲しい」というリクエストから生まれた、段ボール製の可愛らしいロボットです。超音波センサー(HC-SR04)で口元5cm以内に食べ物(または手)が来るとサーボモーター(SG90)で口を開け、離れると閉じるシンプルな動作ながら、工作の楽しさと電子工作の基礎が詰まった入門プロジェクトとして最適です。
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Nano R3 | 1 | 小型でブレッドボード直挿し可能 |
| 超音波距離センサー HC-SR04 | 1 | 検知距離 2cm〜400cm |
| SG90 マイクロサーボ | 1 | 口開閉駆動用 |
| ハーフサイズ ブレッドボード | 1 | 配線用 |
| ジャンパーワイヤー | 1式 | |
| 段ボール・工作用紙 | 適量 | ボディ製作用 |
| ホットグルーガン | 1 | 接着用 |
必要な工具
- ホットグルーガン
- ハサミ・カッター(段ボール加工用)
使用ソフトウェア
- Arduino IDE / Arduino Web Editor
ボディ製作手順
- 段ボールでロボットの胴体・頭部を切り出し、ホットグルーで組み立て
- 目・口の穴を開け、口部分にサーボホーンを取り付ける可動パーツを設置
- 超音波センサーを「目」の位置に、サーボを「口」のヒンジ部分に固定
- ブレッドボードとArduino Nanoを胴体内部に収納
- USBケーブルで給電(モバイルバッテリーでも可)
配線図
| 信号 | Arduinoピン | 備考 |
|---|---|---|
| HC-SR04 Trig | D3 | 出力 |
| HC-SR04 Echo | D2 | 入力 |
| SG90 信号 | D9 | PWM出力 |
| HC-SR04 VCC/GND | 5V/GND | |
| SG90 VCC/GND | 5V/GND | ※サーボ電流注意 |
スケッチ
/* Cardboard Eating Robot
* Author: GoldScrew
* Email: goldscrewdiy@gmail.com
* HC-SR04で距離≤5cm検知時、サーボで口を開く
*/
#include <Servo.h>
#define SERVO_PIN 9
const int trig = 3;
const int echo = 2;
Servo mouthServo;
void setup() {
Serial.begin(9600);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
mouthServo.attach(SERVO_PIN);
mouthServo.write(90); // 閉じ位置
}
void loop() {
// 超音波測定
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
unsigned long duration = pulseIn(echo, HIGH);
int distance = int(duration / 2 / 29.412); // cm換算
if (distance <= 5) {
Serial.println("Distance <= 5cm: Opening mouth");
mouthServo.write(0); // 開く (0度)
delay(1200); // 開いたまま待機
} else {
Serial.println("Distance > 5cm: Closing mouth");
mouthServo.write(90); // 閉じる (90度)
}
delay(200);
}
動作のポイント
- 距離閾値 5cm: 近すぎると誤検知、遠すぎると反応しない。環境に合わせて調整
- サーボ角度: `write(0)`〜`write(90)` で開閉。機構に合わせて角度調整
- delay(1200): 口を開けたままの時間。食べ物を入れる猶予
- 電源: サーボ駆動時の電圧降下対策に、電解コンデンサ(100μF以上)を5V-GND間に追加推奨
発展アイデア
- サーボを2つ使って「あご」+「舌」でよりリアルな咀嚼動作
- カラーセンサーで「好きな食べ物/嫌いな食べ物」を判別して反応変更
- 音声合成モジュール (DFPlayer Mini等) で「おいしい!」「もっと!」と発話
- Bluetoothモジュール追加でスマホから遠隔操作・プログラミング学習教材化
- 3Dプリントパーツで耐久性・見た目向上
教育的価値
超音波センサーの原理(音波の反射時間→距離)、サーボのPWM制御、条件分岐による制御ロジック、そして「入力→処理→出力」のフィジカルコンピューティング基礎を、子供でも理解しやすい「食べさせロボット」という親しみやすいテーマで体験できます。親子での夏休み工作・プログラミング入門に最適です。
製造プロセス
- Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
- Unopad: Ableton Live連携シームレスなArduino MIDIコントローラー
- ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- Arduino Nanoとジョイスティックで2軸ステッピングモーターを制御:Visuinoで簡単プログラミング
- PiBot:Arduino駆動の精密ピアノ演奏ロボット
- Arduino Nanoで作る携帯型ガイガーカウンター
- Arduinoで楽器演奏:音階生成のステップバイステップガイド
- Arduinoと超音波センサーで自動ドアを制御:LCD・ブザー付き完全ガイド
- Arduinoロボットアーム「LittleArm」をAndroidアプリでBluetooth制御
- 4輪ArduinoロボットをDabbleアプリでBluetooth制御しよう