Giftduino: ホビイストと教育者向け究極のArduinoギフトボックス
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | メインボード |
| ホール効果センサー (A1302) | 1 | 磁界検出用 |
| 小型ピエゾスピーカー (12mm, 2.048kHz) | 1 | 効果音再生用 |
| グラフィックLCD (84×48, Nokia 5110タイプ) | 1 | PCD8544コントローラー |
| ブレッドボード/ユニバーサル基板 | 1 | |
| ジャンパーワイヤー | 多数 | |
| 磁石 (ネオジム磁石推奨) | 1 | 蓋に取り付け |
| 9V電池/アダプター | 1 | 電源用 |
| 3Dプリント用フィラメント / MDF板など | 適量 | ケース製作用 |
使用するソフトウェアとサービス
- Arduino IDE
- circuito.io (自動配線・コード生成ツール)
プロジェクト概要
蓋を開けると自動的にメッセージとメロディー、ピクセルアートが表示される、サプライズギフトボックス「Giftduino」を作ります。ホール効果センサーが蓋の開閉を検知し、Nokia 5110 LCDとピエゾスピーカーで演出します。circuito.ioを使えば配線図と基本コードが自動生成されるため、初心者でも取り組みやすいプロジェクトです。

ステップ1: 部品の収集
circuito.ioのマジックリンク を開き、「Generate」をクリックすると、必要な部品リスト(抵抗やコンデンサなどの周辺部品も含む)と配線ガイドが自動生成されます。手持ちの部品に合わせて構成を変更することも可能です。
アレンジ例
- ピエゾスピーカー → LED に変更
- ホール効果センサー → 超音波距離センサー に変更
- ACアダプター → 9V電池 に変更
- Nokia LCD → 16×2キャラクタLCD に変更
ステップ2: 配線
circuito.ioが生成したステップバイステップの配線ガイドに従って組み立てます。一見複雑に見えますが、一つずつ進めれば簡単です。
ステップ3: プログラム
- circuito.ioの返答からコードをダウンロードし、解凍
- Arduino IDEで開き、Arduinoにアップロード (この時点で配線確認用のサンプルコードが動作)
- 本チュートリアル末尾のカスタムコードを
firmware.inoタブにコピペ - 再度アップロード
コード内のコメントを参照すれば、メロディーやピクセルアートの変更も容易です。
メインコード (抜粋)
#include "Arduino.h"
#include "HallA1302.h"
#include "AnalogReader.h"
#include "Adafruit_GFX.h"
#include "Adafruit_PCD8544.h"
#include "TimerFreeTone.h"
#include "Speaker.h"
#define HALLA_PIN_VOUT A3
#define NOKIALCD_PIN_DC 4
#define NOKIALCD_PIN_CS 2
#define NOKIALCD_PIN_RST 3
#define PIEZOSPEAKER_PIN_SIG 5
#define LCD_CONTRAST 70
#define LCD_SIZE_COL 84
#define LCD_SIZE_ROW 48
// 「ホラーメロディー」の定義
unsigned int piezoSpeakerHoorayLength = 6;
unsigned int piezoSpeakerHoorayMelody[] = {NOTE_C4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
unsigned int piezoSpeakerHoorayNoteDurations[] = {8, 8, 8, 4, 8, 4};
HallA1302 hallA(HALLA_PIN_VOUT);
Adafruit_PCD8544 nokiaLcd(NOKIALCD_PIN_DC, NOKIALCD_PIN_CS, NOKIALCD_PIN_RST);
Speaker piezoSpeaker(PIEZOSPEAKER_PIN_SIG);
void setup() {
Serial.begin(9600);
nokiaLcd.begin(LCD_SIZE_COL, LCD_SIZE_ROW);
nokiaLcd.setContrast(LCD_CONTRAST);
}
void loop() {
int hallAVal = hallA.read();
Serial.println(hallAVal);
// 磁石が離れると値が512から変化 (閾値50で判定)
if (abs(hallAVal - 512) < 50) {
delay(500);
nokiaLcd.clearDisplay();
nokiaLcd.setRotation(2);
nokiaLcd.setTextColor(BLACK);
nokiaLcd.setTextSize(2);
nokiaLcd.print(" Surprise !");
nokiaLcd.setTextSize(1);
// ピクセルアート: 笑顔
nokiaLcd.drawCircle(37, 15, 3, BLACK); // 左目
nokiaLcd.drawCircle(41, 15, 3, BLACK); // 右目
nokiaLcd.drawRect(25, 22, 30, 20, BLACK); // 口
nokiaLcd.display();
piezoSpeaker.playMelody(piezoSpeakerHoorayLength, piezoSpeakerHoorayMelody, piezoSpeakerHoorayNoteDurations);
delay(10000); // 10秒待機
}
}
ステップ4: ボックスの製作

本プロジェクトでは3DプリントパーツとPVC段ボールを組み合わせましたが、木材、アクリル、厚紙など自由な素材で製作可能です。STLファイルはGitHubからダウンロードできます。
ステップ5: 組み立て
- Arduinoとシールドをボックス内部に固定
- 磁石を蓋の内側に接着 (ホールセンサーと対向する位置)
- 蓋と本体を柔軟なワイヤーで連結 (開閉時の負荷軽減)


完成!
蓋を開けると「Surprise!」の文字と笑顔アイコンが表示され、ファンファーレが鳴ります。誕生日プレゼントやプロポーズ、教育教材としても最適です。作成した方は「I made this」ボタンやSNSでシェアしてください!
製造プロセス
- Satellite CCRMAキットでセンサー駆動オーディオエフェクトを構築
- Arduino Nanoで水滴を高速撮影 – DIYハイスピードフォトグラフィ
- コンパクト気象ステーション:Arduino Nano & ESP8266 + BMP280 + OLED/Nokia LCD
- Arduinoで地球の質量を測定:ステップバイステップDIYガイド
- MAX30100脈波センサーをArduinoで活用:ステップバイステップガイド
- NextionディスプレイでFridgeyeアプリを構築:ステップバイステップガイド
- YL-39/YL-69土壌湿度センサーをArduino UNOに接続するステップバイステップガイド
- 最適なヒートポンプ給湯器:省エネ給湯ソリューション
- ボックスウェイCNC旋盤が精度と性能で最適な選択である理由
- ホール効果センサー完全ガイド:原理・用途・設計のすべて
- スキン効果の理解:AC導体とRF応用への影響