朝、本当にベッドから出る目覚まし時計
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 |
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
朝起きるのが大変な時もあるので、目覚まし時計を作ることにしました。アイデアは、スヌーズボタンを押した後にベッドに戻ったかどうかを目覚まし時計が認識するようにモーションセンサーを使用することです。その場合、アラームは再び鳴ります。そうしないと、十分な時間(たとえば、2分)起きていた場合、目覚まし時計はもう鳴りません。この間、朝のルーチンを開始できるセンサーのほぼ前(数メートル以内)にいる必要があります。
組み立て
このプロジェクトには、時計モジュール、モーションセンサー、ブザー、小さなボタン、Arduinoが必要です。
<図>
今、すべてを配線する必要があります:
- ブザーのマイナスピン-> GND
- 正のブザーピン-> D11
- ボタンピン-> GND
- もう一方のボタンピン-> D9
- モーションセンサーVCC-> 5V
- モーションセンサー出力-> D7
- モーションセンサーGND-> GND
- クロックモジュールGND-> GND
- クロックモジュールVCC-> 5V
- クロックモジュールSDA-> SDA(Mega2560のピン20)
- クロックモジュールSCL-> SCL(Mega2560のピン21)
回路図に示されているように配線した後:
<図>
コード
まず、コードセクションからZIPファイルをダウンロードする必要があります。これは、クロックモジュールのライブラリです。ライブラリにファイルを追加するのが難しい場合は、コードセクションにもある手順に従うことができます。
これで、ソフトウェアセクションからコードをアップロードできます。コードをアップロードした直後に、次の行をコメントアウトする必要があります:
clock.setDateTime(__ DATE __、__ TIME__);
この行はセットアップ機能にあります。
ここで、コードを直接再アップロードする必要があります。
コメントアウトしないと、ボードをリセットするたびに、クロックモジュールの時刻が最後のアップロード時刻にリセットされます。
その後、アラームが鳴る時間を設定できます。時刻と分を設定できます:
// -------------------------------------- int set_hour =6; int set_minute =55; // --------------------------------------
これで、この時間に毎日アラームが鳴ります。コードを編集して、週末やその他の日に別の時間を過ごすこともできます。
目覚まし時計に電源を入れると、設定した時刻まで待ちます。その後、alarm()関数が実行されます。最初は、スヌーズボタンを押すまでビープ音が鳴り始めます。その後、モーションセンサーはその前に人がいるかどうかを確認します。モーションセンサーがトリガーされるように、一定時間センサーの前にいる必要があります。また、少し移動する必要があります。モーションセンサーの視界内に十分長く留まると、その日のアラームが無効になり、翌朝まで待機することを知らせる短いビープ音が鳴ります。
ただし、ボタンを押してからベッドに戻ると、アラームが鳴り、手順全体がやり直します。したがって、この目覚まし時計は、アラームをオンにしてベッドに戻るだけではないことを確認します。うまくいけば、センサーの前に立った後、二度と寝ないように十分に目覚めています。
この行では、センサーの前にいる必要がある時間(分単位)を調整できます:
if(abs(dt.minute-minute)> =1){//あなたが//滞在しなければならない期間を設定する
センサー調整 <図>

この目覚まし時計を正しく機能させるには、モーションセンサーを調整する必要があります。まず、トリガー選択ジャンパーを適切な場所に配置する必要があります。繰り返し可能なトリガーモードである必要があります!
<図>
ここで、時間遅延と感度も調整する必要があります。私にとっては、感度を最大に設定し、時間遅延を最小より少し上に設定すると、最も効果的に機能しました。時間遅延は、人を最後に検出してから出力が高くなるまでの時間を決定します。遅延が短すぎると、センサーが常にあなたを検出するとは限らないため、アラームが再び鳴らないようにすることは非常に困難です。一方、遅延が長すぎる場合は、再びベッドに戻ってもアラームは通知されません。
<図>

今ではコンパクトにしています
いくつかのテストの後、目覚まし時計をよりコンパクトにする準備が整いました。そのために私はArduinoNano Everyを使用していますが、他のほとんどすべてのArduinoボードを使用することもできます。
2番目の回路図に従ってすべてをはんだ付けすることから始めます(ブレッドボードがない場合のみ、基本的に以前と同じです)。
<図>



すべてがまだ機能しているかどうかをテストした後、目覚まし時計のケースを作成できます。とても扱いやすいので、3mmのバルサ材でケースを作ることにしました。ケースを作成するプロセスの写真をいくつか示します。私のケースの寸法は55mmx 35mm x40mmです。
<図>


モーションセンサー用の大きな穴と、マイクロUSBケーブル用のスロットとスピーカー用の開口部を作成しました。
<図>
完成した目覚まし時計:
<図>


コード
- 目覚まし時計Arduinoコード
- 時計ライブラリ
目覚まし時計Arduinoコード Arduino
#include#include DS3231 clock; RTCDateTime dt; int button =9; int pirPin =7; // HC-S501の入力pirValue; //読み取りPIR値を保存する場所// -------------------------------------- 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 minutes){bool button_pressed =false; bool awake =false;ブール移動=false; while(!button_pressed){//ボタンが押されていない限りアラームはオンになります(int i =0; i <4; i ++){tone(11、523、100); delay(100);トーン(11、784、50); for(int i =0; i <20; i ++){if(digitalRead(button)==LOW){button_pressed =true; awake =true; dt =clock.getDateTime();分=dt.minute; } delay(65); }}} dt =clock.getDateTime();分=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){//センサートーンの前にいる必要がある期間を設定します(11、698 、50); delay(100);トーン(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);}
時計ライブラリ Arduino
これは、DS3231ライブラリのzipファイルです。これをダウンロードして、次のようにライブラリに追加する必要があります。Arduinoを開きます-> [スケッチ]-> [ライブラリを含める]-> [。ZIPライブラリを追加]-> zipファイルに移動し、[OK]をクリックします
プレビューなし(ダウンロードのみ)
回路図
ブレッドボードのVCCとGNDへの接続を描画するのを忘れました。したがって、Arduinoの5Vを正のレールに接続し、ArduinoのGNDを負のレールに接続する必要があります。 

製造プロセス