鍵の締め忘れをすることが、たまにある。 最近はインバウンドと称した不法民泊が跋扈しているので、鍵の締め忘れで犯罪に巻き込まれる可能性がどんどん上がっている。
で、サムターンの位置を検出して、一定秒数鍵を開けっ放しにすると警報音を出す装置を製作した。
サムターンが「鍵解放」の位置に来たら、マイクロスイッチを押しこむように、スイッチの位置の微調整をしたうえでホットボンドで鍵ボックスの表面に固定する。
サムターン位置で押し込まれるようにマイクロスイッチを取り付け
ちゃんと作動することを確認した後に、ボックスを(100均のラッカーで)金色に塗装予定。
PIC12F629のプログラム
// CONFIG (MPLAX Xで自動生成 - Window menu - PIC Memory Views menu - Configuration Bits menu) #pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-Up Timer Enable bit (PWRT enabled) #pragma config MCLRE = OFF // GP3/MCLR pin function select (GP3/MCLR pin function is MCLR) #pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled) #pragma config CP = OFF // Code Protection bit (Program Memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) #include#ifndef _XTAL_FREQ /* 例:4MHzの場合、4000000 をセットする */ #define _XTAL_FREQ 4000000 #endif void main(void) { TRISIO = 0b00011000; // GP3,GP4をINPUT, その他 GP0, GP1, GP2, GP5はOUTPUT CMCON = 0x7; // コンパレーターOFF // ANSEL = 0; // AN0-AN3全てA/D変換無効 (12F629にはA/Dは実装されていない) INTCON = 0; // 割り込み全てOFF GPIObits.GP0 = 0; GPIObits.GP1 = 0; GPIObits.GP2 = 0; GPIObits.GP5 = 0; // 1秒 待つ __delay_ms(1000); // 0.5秒 外部リレー(GP2出力) ON GPIObits.GP2 = 1; __delay_ms(500); GPIObits.GP2 = 0; // 最初の2分は 20秒に1回 ブザー鳴動(GP1) for(int j=0; j<120; j+=20){ // 0.05秒ブザー鳴動 GPIObits.GP1 = 1; __delay_ms(50); GPIObits.GP1 = 0; // 20秒待つ __delay_ms(20*1000); } // 以降、2分毎に外部リレー(GP2出力)ONと、10秒毎のブザー鳴動 for(;;){ // 0.5秒 外部リレー(GP2出力) ON GPIObits.GP2 = 1; __delay_ms(500); GPIObits.GP2 = 0; for(int j=0; j<120; j+=5){ // 0.05秒ブザー鳴動 GPIObits.GP1 = 1; __delay_ms(150); GPIObits.GP1 = 0; // 10秒待つ __delay_ms(5*1000); } } }