- Arduino Pro Miniを使って目覚ましリモコンを作る
- 暇つぶしの工作にいかがですか?
目覚まし時計を改造して、時間になったらテレビと照明を自動で付ける時計を作ります。
楽しくモノづくりをしていきましょう。
- 使用した物品一覧
- システムの流れ
- 目覚まし時計の分解
- 基盤の改造
- 配線図
- 目覚まし時計の筐体の加工
- 組立&完成
❶ 使用した物品一覧
・使用した部品
No | 品名 | 備考 |
1 | 目覚まし時計 | ダイソーで購入した300円のデジタル時計 |
2 | Arduino Pro Mini | 互換品 ATmega328P 3.3V / 8MHz動作 |
3 | 赤外線LED | |
4 | 赤外線LED用の抵抗 | 51Ω×2 (約20Ωを再現したいため) |
5 | インジケーターLED | 抵抗付LEDを使用 |
6 | スピーカーの代わりの抵抗 | 10KΩ |
7 | MicroUSBタイプBメスコネクタ | |
8 | 3端子レギュレータ | S-812C50AY-B-G(秋月電子で購入) |
9 | タクトスイッチ |
・使用する道具
No | 品名 | 備考 |
1 | オシロスコープ | |
2 | ブレットボード&ジャンパー線 | |
3 | はんだ&半田こて | |
4 | グルーガン | |
5 | 電線 | |
6 | 両面テープ | |
7 | USBシリアル変換モジュール | MMーFT232 |
8 | ドライバー | 目覚まし時計分解に使用 |
➋ システムの流れ
目覚まし時計のアラームをスイッチにしてテレビ及び照明をONにする赤外線通信を送信します。赤外線送信後に時計についているスヌーズ機能をOFFにします。
また消費電力を少なくするためArduinoが動く必要のないときにはスリープモードにします。
インジケータLEDの有無(光り方)は
- 赤外線送信前:10回点滅
- 赤外線送信後:10分点灯
としました。また、リセット機能を使って赤外線送信後のインジケータLED10分点灯を解除してスリープモードにできるようにしました。
プログラムは下記の通りになります。Arduino Pro Miniへの書込みは別記事「Arduino Pro Miniのプログラム書込み方法」を確認ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
#define frequency 38000 #include <avr/sleep.h> int infrared=2; int snooze_reset=8; int indicate=4; int input_pin=A1; int a=5; //ON1の長さ int b=155; //ON2の長さ int c=500; //OFF1の長さ int d=1600; //OFF2の長さ int e=220; //OFF3の長さ int f=4200; //OFF4の長さ int g=16383; //OFF5の長さ int TV_OnTime[] = {b,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,b,a}; int TV_OffTime[] = {f,c,c,c,c,c,c,c,d,c,d,c,d,c,d,d,d,c,d,c,c,d,c,c,c,d,c,d,d,c,d,d,d,g,e,g}; int h=7; //ON1の長さ int k=23; //ON2の長さ int l=91; //ON4の長さ int m=420; //OFF1の長さ int n=850 ; //OFF2の長さ int o=16383; //OFF3の長さ int light_OnTime_on[] = {l,k,k,h,h,h,h,h,h,k,h,h,h,h,h,h,k,h,h,k,h,h,h,h,h,h,h,h,h,h,h,h,h,h,h,k,k,k,h,k,k,h}; int light_OffTime_on[] = {n,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,o}; void setup() { set_sleep_mode(SLEEP_MODE_PWR_DOWN); //Serial.begin(9600);//シリアルモニターを使うための設定 pinMode(infrared,OUTPUT); pinMode(indicate,OUTPUT); pinMode(snooze_reset,OUTPUT); pinMode(input_pin, INPUT); } void loop(){ interrupt(); //Serial.println(analogRead(input_pin)); if(analogRead(input_pin)<500){ for(int i=0; i<10; i++) { digitalWrite(indicate,HIGH); delay(200); digitalWrite(indicate,LOW); delay(200); } for(int i=0; i<3; i++) { for(int i=0; i<36; i++) { tone(infrared,frequency); delayMicroseconds(TV_OnTime[i]); noTone(infrared); delayMicroseconds(TV_OffTime[i]); } } delay(500); tone(infrared,frequency); delayMicroseconds(33); noTone(infrared); delayMicroseconds(n); for(int j = 0; j < 3; j++){ for(int p=0; p<42; p++) { tone(infrared,frequency); delayMicroseconds(light_OnTime_on[p]); noTone(infrared); delayMicroseconds(light_OffTime_on[p]); } } for(int p = 0; p < 3; p++){ digitalWrite(snooze_reset,HIGH); delay(500); digitalWrite(snooze_reset,LOW); delay(500); } digitalWrite(indicate,HIGH); delay(600000UL); digitalWrite(indicate,LOW); } } void interrupt(){ attachInterrupt(0,WakeUp, LOW); sleep_mode(); detachInterrupt(0); } void WakeUp(){ } |
❸ 目覚まし時計の分解
ダイソーで購入した300円のデジタル時計を使用します。この時計は部品点数が少ないく、筐体内にも程よい空間があるため改造するには良い製品だと思います。
裏にある電池ボックスの蓋を開けると2か所ねじ止めされています。それを外すと筐体を開けることができます。基盤のねじを全部外すとディスプレイ含めて全バラすることができます。
❹ 基盤の改造
基盤の改造をしていきます。改造箇所は3か所にになります。
1.タクトスイッチに電線を追加
スヌーズ解除に使用します。写真では白線を使用しました。
この線に信号を送ってスイッチを押したことにし、スヌーズを解除します。
2.スピーカー部の改造
スピーカーを外して抵抗10KΩを付け、マイナス側に電線を追加します。プラス‐マイナスは基盤に印字してあります。写真では紫線を使用しました。通常はHIGHになっていますがアラームがなりだすと音を出すためにHIGH-LOWを繰り返す動きをします。その信号を紫線でArduinoに入力します。
3.電池取付部の改造
今回は電池を使用しないため、電池用の端子を外して電線に付け替えます。こちらもプラス‐マイナスは基盤に印字してあります。
❺ 配線図
Arduino Pro Miniは3.3V / 8MHz動作のものを使用しました。電源はUSB5Vを使用し、それを3端子レギュレーター(S-812C)で3.3Vに降圧して時計及びArduino Pro Miniに供給します。
上の回路図をもとに配線したのが下の写真になります。この状態で動作確認をして、問題ないか確認してみましょう。(インジケーターLEDは抵抗付きのものを使用しました。)
❻ 目覚まし時計の筐体の加工
筐体の加工をしていきます。加工箇所は4か所になります。
1.LED用の穴2か所
LEDの大きさに合わせた穴を空けます。
2.電池ボックスの除去
内部空間拡大のため、不要な部分を除去します。
3.スピーカー穴の拡張
スピーカー穴を流用してリセットスイッチを付けます。リセットスイッチにはタクトスイッチを使いますが取り付けられるように穴を拡大します。
4.電池ボックスの蓋の穴あけ
電源供給用のUSB線が通ればOK 今回は取り回しを良くするためMicroUSBタイプBのメスコネクタを付けることにしました。
❼ 組立&完成
リセット用のタクトスイッチと電池ボックス蓋のMicroUSBタイプBメスコネクタは電線を付けてからグルーガンで固定しました。
追加する基盤やArduino Pro Miniは両面テープで固定します。電線の長さが長すぎると筐体の中に入らなくなるので調整しながら半田付けしていきます。
最後に筐体をもとに戻せば完成となります。