Arduino UNOで作る『イカゲーム』テーマのインタラクティブ人形 - DIYプロジェクト
部品と材料
| 部品 | 数量 | 用途 |
|---|---|---|
| RGB拡散型コモンカソードLED | 2 | 目 |
| SparkFun 7セグメントシリアルディスプレイ (赤) | 1 | タイマー |
| Texas Instruments シフトレジスタ (並列-シリアル変換) | 1 | 4桁7セグメント表示用 |
| 英数字LCD 16×2 (I2Cアダプター付き推奨) | 1 | メニュー表示 |
| IR受信機 (汎用) | 1 | リモコン操作用 |
| Arduino UNO | 1 | メイン制御 |
| SG90 マイクロサーボモーター | 1 | 頭部回転用 |
| PIR人感センサー (汎用) | 1 | 動作検知 |
| 超音波距離センサー HC-SR04 | 1 | 勝敗判定用距離検知 |
| DFRobot DFPlayer Mini MP3プレーヤー | 1 | 音声再生 |
| タクトスイッチ (モーメンタリ) | 複数 | メニューボタン、スタートボタン等 |
必要なツールと機器
- 3Dプリンター (汎用)
アプリとオンラインサービス
- Arduino IDE
プロジェクト概要
『イカゲーム』に登場する「だるまさんがころんだ」の人形を完全再現したインタラクティブな作品です。頭部回転、カラーLEDの目、音声再生機能を備え、超音波センサーと人感センサーでプレイヤーの勝敗を判定します。負けても「もう一度遊ぶ?」と尋ねるだけなので安心です。
制作期間は約3週間:3Dプリントに6日、組み立てに1週間、動画編集に1週間。Arduino UNOの全ピンを使用する初めての挑戦でもありました。ELEGOOからUNOキット提供を受け、このプロジェクトか脱出ゲームのどちらかを作ることになっていましたが、こちらを選んで正解でした。見た目も不気味で、何よりちゃんと動きます。

製作手順
1. 3Dプリント開始
全身プリントに6日間要しました。フィラメント色を使い分け、塗装工数を削減。Thingiverseのモデルをリミックスし、中空化・電子部品用アクセス穴を追加、胸部プレートをサーボと超音波センサー用に改修しました。

2. 塗装
汎用スプレー塗料を使用。頭部内側を塗装 (目部分はマスキング) し、LED光が顔全体に漏れないよう対策。目だけが光るようにしました。
3. 磁石 vs 接着剤
四肢の固定には磁石溶着を採用 (分解可能にするため)。ただし頭部はこの段階では固定しません。再製作なら接着剤で全固定するでしょう。磁石の利点は収納時のコンパクト化程度です。
4. 目 (RGB LED) の取り付け
3色LEDを使用。最長ピンがGND (ピン2)。各リードに220Ω抵抗を介して接続。ホットグルーで目奥に固定し、首経由で胴体へ配線を通します。

5. LCDメニュー (I2Cアダプター推奨)
I2Cアダプター付きLCDならI/Oが6本から2本に削減可能。起動時「Welcome to the squid games!」表示を確認。取り付けには1mm厚の円形プレートを熱成形し、背面の曲面にフィットさせました。ネジインサートで固定。
6. サーボによる頭部回転 (180°)
サーボライブラリ不使用 (Timer1を4桁表示更新に使用中)。0°と180°のみなので、Timer1 (2000Hz, 0.5ms間隔) で直接制御。0°=2カウントHigh、180°=4カウントHigh。胸部プレートに専用マウントあり、エポキシで固定し強度も確保。
7. 超音波センサー (距離検知)
250ms間隔で更新。胸部プレートにエポキシ固定。配線は2本のみ。
8. IR受信機 (リモコン操作用)
髪留めクリップ内に隠蔽配置。頭部回転時、反対側にあると受信できない課題あり。オートプレイでも十分楽しめます。
9. 4桁7セグメントタイマー表示
74HC595シフトレジスタ必須。2msリフレッシュでフリッカーフリー実現。ベルト部分に組み込み (オリジナルにはベルトなし)。Dremelで切り抜き、エポキシパテで段差調整。シフトレジスタはプロトシールド実装で配線整理。
10. PIR人感センサー (動作検知)
起動後1分のウォームアップ必須。最速検知間隔約5秒。感度最低でも誤検知多発。「馬のブリンカー」型ボックス (7mm穴) で視野制限し、誤検知を低減。内部にネジインサートで固定。
11. ボタン入力 (アナログ入力で多重化)
I/O不足のため、抵抗値 (1k/2k/5kΩ) でボタン判別。220Ωでプルダウンしフローティング防止。LCDマウントプレートに同居。配線通しに苦労。
12. DFPlayer Mini (音声)
UNOのハードウェアシリアル使用のため、Tx/Rxに1kΩ抵抗必須 (未対策だと書き込み不能に)。Busyピンで再生中検知し、連続再生対応。プロトシールド実装。3W出力、8Ωスピーカー使用。底面に音抜き穴。
13. UNO搭載と最終組み立て
プロトシールドをUNOに装着、全配線ラベル確認後、ネジインサートでプラットフォームごと人形底部に固定。
14. テストとデバッグ
ソフトウェアはGitHubで動作確認済み。ハードウェア側の調整を実施。
15. ゲームルールと動作フロー
- 起動時:頭部正面向き、人感センサー1分ウォームアップ (30秒で笑い声+後ろ向き、0秒で準備完了アナウンス)
- オートモード:プレイボタン押下待ち。リモートモード:リモコン電源ボタン→プレイボタンで赤/緒切替
- ゲーム開始:10秒猶予後、グリーンライト開始
- グリーンライト (3秒) :超音波50cm以内で勝ち、100cm以内で「近づいてる」音声。距離センサーのみ使用
- レッドライト (5秒) :人感センサー作動、または前方10cm以上移動で負け。タイムアウトでも負け。残り5秒で「急げ」音声
- 韓国語音声対応 (メニューで切替可能)
- 勝敗後:「もう一度遊ぶ?」でWAIT状態へ戻る
16. デモ動画
編集に約30時間。YouTubeで公開中
コード
Squid Game Doll Sketch (C/C++)
全センサーとゲームロジックを制御。GitHubリポジトリ で全ファイル公開中。
回路図
全コンポーネントのUNO接続図:

製造プロセス
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
- Arduino Unoベースの人間検知レスキューロボット:センサー統合ステップバイステップ
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- Arduino UNO WiFi Webサーバー:ブラウザからLEDをON/OFF制御
- Arduino UNOで作るシンプル電卓 - シリアルモニターで四則演算
- Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
- Arduino UNOとATtiny85で作る携帯型POV(残像)ディスプレイ
- Arduino Mega 2560搭載 総合トレーニングキット – センサー、モーター、カスタムPCB完備
- NextionディスプレイでFridgeyeアプリを構築:ステップバイステップガイド