デリボーイのセキュリティーにイタズラ。

とりあえず取り付け完了。

センサーはデュアルショックセンサーをテキトーに取り付けただけなので変に反応しても困るので感度はかなり弱め。

まぁセキュリティーとしての機能よりもキーレスとして使いたいのがメインだし自宅でちょっとした事で鳴られても困るしね…

 

夜中にロック解除でピコピコ鳴ってもうるさいので通常のロック&アンロックはOFF。

ハザードアンサーバックだけ付いてれば十分。

ドアセンサーをちゃんとつないだら半ドアでドアロックかけると警告鳴らしてくれるからコレは便利w

そして、リモコンにはロック、アンロックの他にオプションが2つあるんだけど・・・

ボタンの1つはデフォルトだとパニックモードでボタンを押すといつでもアラームが働くんだけど・・・コレって必要なのだろうかw

ポケットに入れておいて座った時に押したりしたら嫌だなぁ~w

とりあえず外部制御が何も繋がって無いのでパニックモードは有効のままにしてみてる。

 

それでも1個ボタンが余るから・・・

いったいどんな機能を割り当てればいいのやら・・・

一般的にはトランクオープナーとかだと思うけれど、生憎観音開きw

フューエルリットオープナーもアリかな?とも思うけれど車から鍵を抜いて無ければリモコンも運転席にあるわけだから本末転倒w

 

そして、ふと思いついたのが前に乗っていたプジョーに付いていたカーサーチ(?) ボタンを押すと高速でハザードが点滅してめちゃくちゃ目立つw

立体駐車場なんかで自分の車を見失った時に便利だったからとりあえずつけてみようと思う。

その前にこんな目立つ車を見失うかという気がするけど・・・(前のプジョーは車高が低かったからけっこうミニバンに隠れて見失ったw)

 

とりあえず家にあるもので使えそうな物を探す。

電子部品箱をあさってたら8ピンPICが出てきたのでこれで行こうと思う。

 

PIC12F1822

前にお遊び用に買ってそのまま使ったこともないPIC。

とりあえずデーターシートを探したら日本語データーシートが出てきたのでPIC初心者には大助かりw

サクサクっとプログラムを書いてブレッドボードで動作確認して・・・

03

本当なら立体配線にして極小レイアウトにするのが好きなんだけど

コンパクトにしたところでリレーが嵩張るし車で使ってて立体配線は振動が心配。

と、いうわけでユニバーサル基板にテキトーに並べてそこそこ小さくしてみた。

01

こんな感じになりました~

部品が載ってるスペースは15mm×25mmくらい。

これならリレーに抱き合わせてちょうどいいくらいのサイズ。

PICは3端子レギュレータで3.3V動作。

外部コントロール信号は念のためフォトカプラ挟んで入力。

出力は2SC1815でスイッチングしてリレー動かすだけ。

いざハンダ付けしようと思ったらハンダ使いきったんだったorz

と、言うわけでココで終了。

忘れないように裏紙にパターンをメモ。

02

そこで、ふと、思い出して回路をブレッドボードに戻して12V鉛バッテリーで動作確認。

待機電流が約1mA・・・

許容っちゃ許容だけど回路の割に食い過ぎだな~

まぁ・・・犯人はレギュレーターなんだろうけど・・・

使ったレギュレーターのデーターシートを見てみると待機で800μA食っちゃうもんだから待機電流のほぼすべてがレギュだろうな~  

 

試しにレギュを使わずにPicKitで3.5V供給して待機電流を測定してみると120μA これにレギュの800μAが入ればいい感じに1mA近くになる。  

 

やっぱりレギュだけは新しく用意するべきかな~

動作中でもPICとフォトカプラの消費電力は150μA程。

動作確認のLEDやらリレー可動用のトランジスタを含めても50mAあればお釣りが来る。(現在のは500mA)  

 

50mAクラスのレギュなら待機消費が10μAだから・・・

待機で130μA やっぱりここまで下げたいなw

それに何より電源周りがコンパクトになるし。  

しかし・・・たった100円のパーツの為に秋葉原行くのもなぁorz

次に関東進出するとしたらいつだろうか・・・  

 

あ、プログラムはこんな感じ。 興味ある人はどうぞw

#include 
#pragma	jis
#define _XTAL_FREQ 31000	//Clock 31KHz
__CONFIG(	
	FOSC_INTOSC & WDTE_ON & PWRTE_ON & MCLRE_OFF & CP_OFF 
	& CPD_OFF & BOREN_NSLEEP & CLKOUTEN_ON & IESO_OFF & FCMEN_OFF
);
__CONFIG(
	WRT_OFF & PLLEN_OFF & STVREN_ON & BORV_LO &  LVP_OFF
);
//------------------main
void main(void){

	OSCCON = 0b00000010;	//31KHz動作
 	ANSELA = 0;				//アナログポート無し。
	WDTCON = 0b00011111; 	//WDT 30秒
	GIE  = 1;				//割り込み有効
	INTF = 0;
	INTE = 1;				//INTピン割り込み有効
	TMR0IE = 0;				//Timer0割り込み無効
	OPTION_REG = 0b11000100; 
    TRISA 	=     0b00000100;
    PORTA	=     0b00000000;
//---------------------------------------------------------
	SLEEP();				//初期設定が完了したらそのままスリープ
	NOP();
	while(1){
	}
}

void interrupt warikomi(void) { //割込み関数
	if(INTF){
		RA5 = ~RA5;
		if(TMR0IE){				//点滅中の場合リセットしてスリープへ
			RESET();
		}else{					//スリープから復帰時はTimer0を有効にして点滅開始
			TMR0 = -15;
			TMR0IF = 0;
			TMR0IE = 1;
		}
		INTF = 0;
	}else if(TMR0IF){
		RA5 = ~RA5;
		TMR0IF = 0;
		TMR0 = -15;
	}
}

動作は単純。

初期設定後スリープに入って待機。

INTピンから入力があったら復帰してTIMER0をセットして永久ループに入る

TIMER0が割り込みをかける度にRA5の出力を反転

WDTによって30秒たつとリセットされて初期設定後スリープに戻る

TIMER0が動作中に再度INTピンに入力があった場合はそのままリセットかけて初期設定後スリープ