Joy Robot: ArduinoとESP8266で作るスマートロボット
必要な部品と材料
| 部品 | 数量 |
|---|---|
| Arduino UNO | 1 |
| Espressif ESP8266 ESP-01 | 1 |
| SG90 マイクロサーボモーター | 6 |
| DCモーター(減速ギア・ゴムホイール付き) | 2 |
| L298N Hブリッジドライバー | 1 |
| Adafruit 16チャネル 12-bit PWM/サーボドライバー (PCA9685, I2C) | 1 |
| MAX7219 8x8 LEDマトリックスディスプレイ | 4 |
| SparkFun デュアルHブリッジモータードライバー L298 | 1 |
| 18650リチウムイオン電池 | 2 |
| 18650電池ホルダー | 2 |
| Arduino Proto Shield | 1 |
| 1N4001 ダイオード | 1 |
| 10kΩ 抵抗 | 3 |
必要な工具と機械
- 3Dプリンター
使用するアプリとオンラインサービス
- Autodesk Fusion 360 (3Dモデリング)
- Arduino IDE
- Android SDK
プロジェクト概要
Instructablesホイールコンテスト1位、Arduinoコンテスト2位、Design for Kidsチャレンジ準優勝受賞!投票してくれた皆様に感謝!
ロボットは産業用から宇宙探査まで幅広く活用されていますが、私が最も好きなのは「楽しみとエンターテインメント」のためのロボットです。このプロジェクトでは、小児病院の子どもたちに楽しみを届けるためのDIYロボットを設計しました。オープンソースハードウェア・ソフトウェアを活用し、NGOの慈善活動を技術で支援することを目的としています。
このチュートリアルでは、Arduino UnoとESP8266 Wi-Fiモジュールを接続し、ブラウザベースのHTMLインターフェースで遠隔操作できる人型ロボットの作り方を解説します。主な機能:
- サーボモーター6個で頭部と両腕を制御
- DCモーター2個で短距離移動
- 4枚の8x8 LEDマトリックスで表情豊かな「顔」を表示
- スマートフォンを胸部に搭載し、ビデオ・音声を操作者と双方向伝送
- 全身を3Dプリント(Fusion 360で設計)し、ボルトと接着剤で組み立て
関連チュートリアル(先行技術):
Step 1: プロジェクトの歴史
「Robô da Alegria(ジョイロボット)」プロジェクトは2016年、ブラジルのバイシャダ・サンチスタ地域で始まりました。メイカームーブメントを通じてコミュニティを技術開発に巻き込み、小児病院でのボランティア活動を支援するロボットを開発するのが目的です。
初期は機械式の目と眉を持つ頭部のみでしたが、アクリル・MDFレーザーカット試作を経て、3Dプリント製の人型ボディへ進化。Bluetoothで2サーボ制御だったインターフェースも、Wi-Fi経由のブラウザ操作(6サーボ+2DCモーター)へ拡張されました。
全パーツはFusion 360で設計し、メイカースペースのプリンター利用時間制限(最大3時間/パーツ)に対応できるよう、36個の小パーツに分割。白・黒PLA、10%インフィル、サポートなしで出力します。
STLファイルは以下からダウンロード可能:
Step 2: 工具と材料の詳細
工具: 3Dプリンター、白黒PLAフィラメント、ドライバー、瞬間接着剤、ペンチ・ニッパー、ハンダゴテ・ハンダ線
電子部品: 上記部品表参照。電源は2つのUSBモバイルバッテリー(モーター用とArduino用を分離)を使用。ESP8266がDCモーターのスパイクで接続断するためです。
機械部品: ボールキャスター×2、M2×6mmボルト(約70本)、M2×10mmボルト(約20本)、M2ナット(10個)、M3×40mmボルト(4本)、M3ナット(4個)
Step 3: 3Dプリント
全36パーツ、合計約50時間のプリント時間。主なパーツ:ヘッド上下・側面、フェイス前後プレート、ネック軸×3、アーム・ショルダー各部品、バスト、チェスト、ホイール、ベース、スマホホルダー、バックカバー、ノブ、ロック等。
既知の課題:サーボ配線とショルダーの干渉、ヘッドとバストの摩擦、ホイールとフレームの摩擦、ネジ穴がきつい等。改良版は今後公開予定。
Step 4: 回路概要
Arduino Unoが中核。ESP8266-01でWi-Fi通信、PCA9685(I2C)で6サーボ制御、MAX7219×4でLEDマトリックス制御、L298Nで2DCモーター駆動。電源は2系統のモバイルバッテリー。スマホはビデオ/音声伝送と画面ミラーリング用。
※NodeMCUやRaspberry Piを使えばよりコンパクトになりますが、プロジェクト開始当時はArduinoが最も安価で入手しやすかったため採用。
Step 5: 顔(LEDマトリックス)の組み立て
4枚の8x8 LEDマトリックスを黒PLA製の前後プレートに固定。スペース節約のためコネクタを裏面にハンダ付けし直しています。ジャンパーワイヤーでデイジーチェーン接続し、前面プレートで覆って配線を隠蔽。
Step 6: ヘッドの組み立て
白PLA製8パーツ(上下左右、キャップ、ネック軸×2)を接着・ボルト固定。サーボ#5, #6をネック軸に取り付け、フェイスモジュールを内蔵。
Step 7: バストとショルダーの組み立て
バスト左右を接着、ショルダーをボルト固定しサーボ#2, #4を内蔵。ネックセンターとネック軸3を連結し、サーボ#6で頭部の上下動を実現。
Step 8: アームの組み立て
各アーム:ショルダーカップ、キャップ、アーム軸、アーム本体の4パーツ。サーボ#1, #3をカップ内に収納し、アーム軸と連結。配線用穴を設け、キャップで蓋をする。
Step 9: チェストの組み立て
バストと下半身(ホイール・ベース)を接続する2パーツ構成。ショルダー嵌合部にボルト穴、下部にホイール接続用6穴。ここでサーボに番号シールを貼っておくと配線が楽。
Step 10: ホイールの組み立て
左右ホイールとフロントパネルの3パーツ。DCモーターをM3×40mmボルトで固定、フロントパネルを接着、チェストと6本のM2ボルトで連結。
Step 11: スマホホルダー
Motorola Moto E (4.3インチ) 想定の単一パーツ。スマホを挟み込むように4本のM2ボルトで固定。USBケーブルは事前に接続しておくこと(後からは困難)。
Step 12: ベースの組み立て
単一パーツ。16chサーボコントローラー、L298N、Arduino Uno、Proto Shieldをボルト固定し配線。ボールキャスター2個を取り付け、ホイール部と合体。
Step 13: バックカバーと電源パック
左右バックパネル、ノブ×2、ロック×2の6パーツ。接着後、18650×2本を直列接続し、ダイオード2個で電圧降下(約6V)してサーボとDCモーターに供給。スイッチでON/OFF。ノブを回してロックする開閉式。
Step 14: 配線詳細
Arduinoピン割り当て:
- D2→L298N IN4, D3→IN3, D6→IN2, D7→IN1
- D9→MAX7219 DIN, D10→CS, D11→CLK
- D4→ESP8266 RXD, D5→TXD
- A4→SDA, A5→SCL (PCA9685)
- Vin→バッテリー+ (ダイオード前), GND→バッテリー-
ESP8266-01: RXD←D4, TXD←D5, GND←GND, VCC←3.3V, CH_PD←3.3V
L298N: IN1←D7, IN2←D6, IN3←D3, IN4←D2, +12V←バッテリー+ (ダイオード後), GND←GND, OUT1/2→モーター
MAX7219 (1枚目): DIN←D9, CS←D10, CLK←D11, VCC←5V, GND←GND
MAX7219 (2枚目以降): DIN←前のDOUT, CS/CLK/VCC/GND←前と共通
PCA9685: SCL←A5, SDA←A4, VCC←5V, GND←GND, V+←バッテリー+ (ダイオード後)
Step 15: Arduinoコード構成
以下のライブラリが必要:
LedControl.h(LEDマトリックス制御)Adafruit_PWMServoDriver.h(サーボ制御)
コードは9モジュールに分割:
RobodaAlegria.ino- メイン、ライブラリ読み込み、グローバル変数_05_Def_Olhos.ino- 目(8x8)のパターン定義(9種類×左右)_06_Def_Boca.ino- 口(16x8)のパターン定義(9種類)_10_Bracos.ino- 腕・首の定型動作 mov1()~mov9()_12_Rosto.ino- 顔表情合成関数_13_Motores_DC.ino- DCモーター制御_20_Comunicacao.ino- ESP8266送信関数_80_Setup.ino- 起動時初期化、Wi-Fi接続設定(SSID/パスワード書き換え必要)_90_Loop.ino- メインループ、コマンド受信・実行
ダウンロード: RoboAlegria.rar (GitHub: LedControl, Adafruit PWM Servo Driver)
Step 16: Androidアプリ
- IP Webcam (Google Play) - ビデオ/音声配信
- Screen Mirror (Google Play) - 画面ミラーリング
- ロボット連携ゲームアプリ (開発中、未公開)
Step 17: コントロールインターフェース (HTML/JS)
ブラウザで開くHTMLインターフェース。左側にカメラ/画面ミラー表示、右側に操作ボタン。プリセット動作9種・表情13種、カスタムサーボ角度・目口パターン個別指定可能。キーボード矢印キーで移動操作。マイク感度で口パクアニメーション連動機能付き。
ダウンロード: interface.rar
Step 18: 完成・楽しもう!
電源を入れて楽しんでください!気に入ったらシェアと投票をお願いします。
製造プロセス
- Raspoulette:太陽光発電自律コープドアシステムのプロトタイプ
- DIY Wall-E 風 Raspberry Pi CD ボックスロボット
- ローリングアラームロボット:Raspberry Pi と Google カレンダーで動くスマートモバイル目覚ましシステム
- Arduinoで作るモーター駆動のマインクラフト クリーパー ロボット
- アーキメデス:感情センシングAIロボットフクロウ
- Windows 10 IoT Coreで音声制御コンピュータビジョンロボットを構築
- ROSロボット:Raspberry Piでターミナル操作ナビゲーション
- シンプルPiロボット - Raspberry Piで2WD自律ローバーを構築
- Arduino向けスマート屋内ナビゲーションロボットキット
- リニアモーター理解:電気エネルギーから精密直線運動へ
- 飲料ロボットの技術・自動化・業界役割:バブルティー・コーヒー自動化の最前線