スマートモーションアラームクロック:二度寝を防ぐ動作検知型目覚まし時計
部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Nano Every | 1 | コンパクトで低消費電力。他のArduino互換ボードでも可 |
| DS3231クロックモジュール | 1 | |
| HC-SR501 PIRモーションセンサー | 1 | 前方の動きを検知してトリガー |
| ブザー(5Vピエゾ) | 1 |
アプリとオンラインサービス
- Arduino IDE
プロジェクト概要
ベッドから出るのは至難の業。このモーションアクティブアラームクロックは、スヌーズ後に動きを検知することで、あなたを確実に起こし続けます。ベッドに戻るとアラームがリセットされ、設定時間だけ起き続けることを強制します。
組み立て
以下の部品を用意:
- DS3231リアルタイムクロックモジュール
- HC-SR501 PIRモーションセンサー
- ブザー(5Vピエゾ)
- モメンタリプッシュボタン
- Arduino Nano Every(または互換ボード)

配線
- ブザー負極 → GND
- ブザー正極 → D11
- ボタンGND側 → GND
- ボタン信号 → D9
- HC-SR501 VCC → 5V
- HC-SR501 出力 → D7
- HC-SR501 GND → GND
- DS3231 GND → GND
- DS3231 VCC → 5V
- DS3231 SDA → SDA(NanoのA4)
- DS3231 SCL → SCL(NanoのA5)

コード
CodeセクションからDS3231ライブラリZIPをダウンロードし、Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」で追加。
以下のスケッチをアップロード。初回アップロード後、日時設定行をコメントアウトしてRTCがリセット時も正しい時刻を保持するようにします。
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7;
int pirValue;
int set_hour = 7;
int set_minute = 0;
void setup() {
clock.begin();
pinMode(button, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
// clock.setDateTime(__DATE__, __TIME__); // 初回アップロード後はコメントアウト必須
pinMode(pirPin, INPUT);
}
void alarm(int minute){
bool button_pressed = false;
bool awake = false;
bool movement = false;
while(!button_pressed){
for(int i = 0; i < 4; i++){
tone(11, 523, 100);
delay(100);
tone(11, 784, 50);
for(int i = 0; i < 20; i++){
if(digitalRead(button) == LOW){
button_pressed = true;
awake = true;
dt = clock.getDateTime();
minute = dt.minute;
}
delay(65);
}
}
}
dt = clock.getDateTime();
minute = dt.minute;
while(awake){
movement = false;
dt = clock.getDateTime();
for(int i = 0; i < 30; i++){
if(digitalRead(pirPin)){ movement = true; }
}
digitalWrite(LED_BUILTIN, movement);
if(!pirValue){
delay(5000);
for(int i = 0; i < 40; i++){
if(digitalRead(pirPin)){ movement = true; }
}
if(!movement){
alarm(minute); // 長時間動きがなければアラーム再開
}
}
if(abs(dt.minute - minute) >= 1){
tone(11, 698, 50);
delay(100);
tone(11, 698, 50);
digitalWrite(LED_BUILTIN, 0);
awake = false;
}
delay(100);
}
}
void loop() {
dt = clock.getDateTime();
if(set_minute == dt.minute && set_hour == dt.hour){
alarm(set_minute);
}
delay(10000);
}
センサー調整

HC-SR501をリピータートリガーモードに設定(ジャンパー位置を調整)。


感度を最大、遅延を最小に設定が最適:あなたの動きを確実に検知しつつ、ベッドに戻った際に見逃さないバランスです。
コンパクト化
ブレッドボードで動作確認後、部品をArduino Nano Everyにはんだ付けしてポケットサイズに。

3mmバルサ材(55×35×40mm)で軽量ケースを自作。PIRセンサー用大開口、micro-USBスロット、ブザー用開口を設けています。




完成品:



コード
- アラームクロックArduinoコード
- クロックライブラリ(DS3231)
アラームクロックArduinoコード
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7;
int pirValue;
int set_hour = 7;
int set_minute = 0;
void setup() {
clock.begin();
pinMode(button, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
// clock.setDateTime(__DATE__, __TIME__); // !!初回アップロード後は必ずコメントアウト!!
pinMode(pirPin, INPUT);
}
void alarm(int minute){
bool button_pressed = false;
bool awake = false;
bool movement = false;
while(!button_pressed){
for(int i = 0; i < 4; i++){
tone(11, 523, 100);
delay(100);
tone(11, 784, 50);
for(int i = 0; i < 20; i++){
if(digitalRead(button) == LOW){
button_pressed = true;
awake = true;
dt = clock.getDateTime();
minute = dt.minute;
}
delay(65);
}
}
}
dt = clock.getDateTime();
minute = dt.minute;
while(awake){
movement = false;
dt = clock.getDateTime();
for(int i = 0; i < 30; i++){
if(digitalRead(pirPin)){ movement = true; }
}
digitalWrite(LED_BUILTIN, movement);
if(!pirValue){
delay(5000);
for(int i = 0; i < 40; i++){
if(digitalRead(pirPin)){ movement = true; }
}
if(!movement){
alarm(minute);
}
}
if(abs(dt.minute - minute) >= 1){
tone(11, 698, 50);
delay(100);
tone(11, 698, 50);
digitalWrite(LED_BUILTIN, 0);
awake = false;
}
delay(100);
}
}
void loop() {
dt = clock.getDateTime();
if(set_minute == dt.minute && set_hour == dt.hour){
alarm(set_minute);
}
delay(10000);
}
クロックライブラリ
DS3231ライブラリのZIPファイル。ダウンロードしてArduino → スケッチ → ライブラリをインクルード → .ZIP形式のライブラリをインストールで追加。プレビューなし(ダウンロードのみ)。
回路図
Arduinoの5Vをブレッドボードのプラスレール、GNDをマイナスレールに接続。
製造プロセス
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計
- 成功と安全なパンチング操作のための必須要因
- 平面研削性能に影響する重要因子
- CNC旋盤:オールインワン精密ツール
- 高精度製造に不可欠な横形マシニングセンタ(HMC)
- 旋盤用ショートバーフィーダー選定ガイド:生産効率・材料歩留まり・設置スペースの最適解
- ボーリングマシンの精密加工におけるメリットと仕様を徹底解説
- ダイレクトウォーターポンプが循環システムに与える影響
- インサートエンドミル完全ガイド:効率と性能を最大化
- SICK、IO-Link on PLC実践トレーニングでインダストリー4.0への第一歩を支援
- NEVSのトロルヘッタンでの革命的カーシェアリング構想:モビリティの新時代