【ダイソー × Arduino】初心者キットで作る「自動で口を開ける貯金箱」|手を近づけるとフタが開く装置

手をかざすと! 自動オープン貯金箱

ダイソー貯金箱を「手をかざすと開く」スマート貯金箱に改造しよう

ダイソーの貯金箱に電子工作で機能つけたいんだ。何かアイデアない?

「自動で口を開ける貯金箱」を作ろう! 手を近づけると超音波センサーが検知して、サーボがフタを動かして3秒間開けてくれる装置だよ (お金を入れたかは検知しないので、タイマーで自動的に閉まる)。

今回は、ダイソーの貯金箱と初心者キットを合わせたい方に向けて、初心者キットだけで作れる「自動で口を開ける貯金箱」を紹介します。

ダイソーのプラ製貯金箱 (税込110円前後)に超音波センサーとサーボを仕込んで、手をかざすと自動でフタが開く装置です。センサー、サーボ、LEDを1つずつ使うので、初心者キットの動きが一通り見える作品です。

この記事で作るもの
  1. 手をかざすと超音波センサーが反応
  2. サーボホーンが回って、投入口をふさいだ板を動かす
  3. 手をかざしてから3秒後に自動で閉まる (お金の検知はしない)
  4. LEDで「開いてる」を表示

用意するもの

分類アイテム入手先
貯金箱透明プラ貯金箱ダイソー
頭脳Arduino UNO R3キット
センサーHC-SR04超音波キット
モータサーボSG90キット
表示LED + 抵抗330Ωキット
配線ブレッドボード、ジャンパーキット

配線図

        a b c d e
       +─────────+
[+]rail| . . . . . | ← 5V
[-]rail| . . . . . | ← GND
       +─────────+
row 3  | X . . . . | ← HC VCC ([+])
row 5  | X . . . . | ← HC Trig (D7)
row 7  | X . . . . | ← HC Echo (D6)
row 9  | X . . . . | ← HC GND ([-])
row 13 | X . . . . | ← 330Ω 上 (D11)
row 14 | X . . . . | ← 330Ω 下+LED+
row 16 | X . . . . | ← LED- ([-])
       +─────────+

サーボ直結:
  茶 → GND
  赤 → 5V
  橙 → D9

プログラム

#include <Servo.h>

#define TRIG 7
#define ECHO 6
#define LED 11
#define SERVO_PIN 9
#define TRIGGER_CM 15

Servo myServo;
bool isOpen = false;
unsigned long openedAt = 0;

void setup() {
  Serial.begin(9600);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(LED, OUTPUT);
  myServo.attach(SERVO_PIN);
  closeLid();
  Serial.println("自動貯金箱 スタート!");
}

void loop() {
  float dist = measureDistance();

  if (!isOpen && dist > 0 && dist < TRIGGER_CM) {
    openLid();
  }

  if (isOpen && millis() - openedAt > 3000) {
    closeLid();
  }
  delay(100);
}

float measureDistance() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long duration = pulseIn(ECHO, HIGH, 30000);
  if (duration == 0) return -1;
  return duration * 0.034 / 2;
}

void openLid() {
  myServo.write(90);
  digitalWrite(LED, HIGH);
  isOpen = true;
  openedAt = millis();
  Serial.println("フタ開きました");
}

void closeLid() {
  myServo.write(0);
  digitalWrite(LED, LOW);
  isOpen = false;
  Serial.println("フタ閉じました");
}

プログラムの動き

stateDiagram-v2 [*] --> 閉 閉 --> 開 : 手が近い (15cm未満) 開 --> 閉 : 3秒経過

貯金箱への組み込み

組み込み手順
  1. ダイソーの貯金箱の天面 (フタ部分) に小さな板を貼って「フタ」を作る
  2. サーボの羽根に板を接続して、90度回転で開く構造に
  3. HC-SR04を上向きに、フタの近くに固定
  4. LEDを正面から見える位置に
  5. Arduinoと配線は貯金箱の側面に両面テープで
フタの作り方むずかしそう。

完璧な構造を目指さなくて大丈夫。サーボの白い羽根 (ホーン) 自体を「フタ」にしちゃうのが一番簡単。羽根に紙を貼って大きくすると、それだけで実用的なフタになるよ。

改造のアイデア

発展アイデア
  1. パッシブブザーで「ありがとう」音を再生
  2. 入金回数をシリアルで記録
  3. LCDに目標金額への達成率表示
  4. 暗証コード (連続入力) で開く防犯モード

まとめ

今回は、ダイソーの貯金箱と初心者キットで作る「自動で口を開ける貯金箱」を紹介しました。超音波センサー、サーボ、状態遷移を全部使う、初心者キット作品の中でも見応えのある作品です。

大切なのは、毎日使うこと。、完成後に毎日使うことです。実用品として家族に見せれば、電子工作の楽しさが伝わります。

他にも初心者キットだけで作れる作例を別の記事で紹介しているので、興味があれば見てみてね。