赤外線コントロールの受信部
送信部を作って、やはり受信が出来ないと動いているのかわかりませんので、とりあえず動くことの確認が出来れば良しと実験しました。
基本的に「LEDのオンオフが出来ればOK」としました、プログラムは少ないので必要ならコントロール・プログラムを入れれば何かをコントロール出来ます。簡単な物で確実に動作出来る物を作っておけば、後は移植して利用するのに便利です。赤外線近距離コントロールは何かにつけて使えそうです。ただボタンのオン・オフだけでは利用は制限されますがフォマットの変更で大きなDATAの送受信も出来るし興味は広がります。
それから、作ってみて今後の展開はかなり広い物があり使い道もたくさんありそうです。身近な物でオンオフ出来れば便利な物がたくさんあります。
最近では車のドアロックが何かのリモコンでさせる物が出て来ましたが、これって赤外線でも出来そうだし応用は広がりそうです。まだ完全ではない!
現在はまだ実験中で動作は不安定で誤動作します、受信で信号が不安定になるとロックしてしまい何故か動かなくなりました。無限ループに入ってしまうのかも知れません、今後の改善が必要です。SOFTは改善の余地がたくさんあります。
構造はとても簡単です!
部品はIC化されているので本体は極めて簡単です。信号を捕らえ後はSOFTでどう処理するかです。ICもそれほど高価なものではありません。
何しろTVやビデオ・エアコンなどたくさんの所で利用されています。中をばらしてみればリモコンもそうですが受信部も簡単です。写真のように赤外線の受光素子(数100円)をPICで直接受け取ることが出来ます。入って来た信号はフォマットの通り送られてくるので、これを解読して処理をすれば良いのです。
動作
とりあえず、送信で送られた信号(ボタン)を1-7としてLEDでオンオフさせました。動作は同じなので全てのボタンを付けず、代表としてLEDは4つ付け動作の確認としました。オン・オフやトグル式のオンオフまたひっくり返すなど、幾つかの処置をしてみました。
ICは16F819を使ってみました、当初16F84Aを使ったのですが動作はおなじなので使っています。それとまだ動作には満足してないのでしばらくはSOFTの改良に時間が掛かるかも知れません。
それと、送信部・受信部どちらが悪いのが分からない所もあって何時になるかはなんともいえません。(仕事ではないのでマイペースで進めます)。
実験中10MHzでどうも不安定なので机の中でゴロゴロしていたセラロック6MHzの物に交換しました。幾らか良い程度でしょうか(プログラムが悪いのかも知れません)。2007/FEB/3
----- プログラム -----
WARKにDATAを取り入れて 戻る。ディバイスコード3Bit+スイッチコード5Bitが入る。
;--------------------------------------------- ; 16ビットデータ受信 ; PORTA,4 L=アクテイブ ; WAIT300/WAIT600(μSec) ;--------------------------------------------- R_BIT movlw 0x03 movwf BITCNT S_LP CALL WAIT300 ;"0"を待つ btfss PORTA,4 goto R_BIT decfsz BITCNT,f goto S_LP ;--------------------------------------------- SB2 BTFSC PORTA,4 ;RA4="1"? GOTO SB2 ; CALL WAIT300 ;タイミングを取る BTFSC PORTA,4 ;RA4 again GOTO R_BIT ; CLRF WORK ;バッファクリア ;--------------------------------------------- MOVLW 3 ;Counter MOVWF BITCNT CDLP CALL WAIT600 ;600μsec BTFSC PORTA,4 ;"1"? BCF STATUS,C ;Carry reset BTFSS PORTA,4 ;"0"? BSF STATUS,C ;Carry set RLF WORK,F ;Carry to WORK DECFSZ BITCNT,F ;End ? GOTO CDLP ;No ;----- セパレータ ----- CALL WAIT600B ;1Bit BTFSS PORTA,4 ;"0"? GOTO R_BIT ;No CALL WAIT600B BTFSC PORTA,4 ;"1"? GOTO R_BIT ;No ;---- スイッチ・コード ----- MOVLW 5 ;Counter MOVWF BITCNT DTLP CALL WAIT600 ;1Bit BTFSC PORTA,4 ;"1"? BCF STATUS,C ;Carry reset BTFSS PORTA,4 ;"0"? BSF STATUS,C ;Carry set RLF WORK,F ;Carry to WORk DECFSZ BITCNT,F ;End ? GOTO DTLP ;No ;--------------------------------------------- CALL WAIT600B BTFSC PORTA,4 ;"1"? GOTO R_BIT ;No CALL WAIT600B ; BTFSS PORTA,4 ;"0"? GOTO R_BIT ;No CALL WAIT600B ; BTFSS PORTA,4 ;"0"? GOTO R_BIT ;No RETURN
もどる [MAIN MENU]