#freeze TITLE:RS232Cロガー兼リピーター RIGHT:初出 2006-8-18 RIGHT:最終更新 2006-9-21 RIGHT:製作時期 2006-5~2006-6 LEFT: [[&ref(232logger_1_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=232logger_1_b.jpg&refer=232logger]] RS232Cの出力経路の中間に挟んで、 データをそのまま記録していきます。 #br 普通、ロガーといえば、大量のメモリを積んでデータの取りこぼしがないように備えるのが常套手段ですが、 本機の場合は低速デバイスであるシリアルEEPROMに直接データを記録します。じゃ、データを取りこぼしちゃうぞ・・・ 本機ではシリアル受信ポートのRTS制御をおこなうことにより、データの取りこぼしを防ぎます。 部品代は合計2000円くらい #contents ** 機能 [#a0c35ef6] ||CENTER:操作|CENTER:機能|CENTER:説明|CENTER:備考|h |1|赤ボタンを1秒以上押す|順方向出力|出力開始位置・以降のデータを送信ソケット側から出力|DCEとはストレートケーブル、DTEとはクロスケーブルで接続(出力ピンはジャンパで切替)| |2|緑ボタンを1秒以上押す|逆方向出力|出力開始位置・以降のデータを受信ソケット側から出力|PCとストレートケーブルで接続することを想定、ソフトウェアTX| |3|両ボタンを押した後3秒以内に赤ボタンを1秒以上押す|出力開始位置を設定|次の記録位置を出力開始位置に設定|設定可能な出力開始位置は1箇所| |4|両ボタンを押した後3秒以内に緑ボタンを1秒以上押す|出力開始位置を消去|出力開始位置を初期化し、記録装置の先頭に設定|| |5|両ボタンを3秒以上押しつづける|データ全消去||| -通信速度は9600bpsで固定 -記録容量は32Kバイト(Microchip 24LC256を使用) -起動時、前回最後に記録した次の位置に出力開始位置が設定される -受信したデータは同時に送信ソケット側から出力される -受信すると緑LEDが1秒間素早く点滅 -書込み領域が満杯の状態で受信すると赤LEDが1秒間素早く点滅 -順方向出力中は赤LEDが点滅 -逆方向出力中は緑LEDが点滅 -出力開始位置・設定時は緑LEDが点滅 -出力開始位置・消去時は赤LEDが点滅 -全消去中は両LEDが交互に点滅 -いずれかのソケットでCTSオンを検出、もしくはボタン操作をするとsleepから復帰 -CTSオンを検出している間はsleepしない -CTSオフを検出すると3分後にsleep ** I2C通信 [#m6a7c9b2] 今回はハードウェアでI2C通信をおこなう為に、MSSP(The Master Synchronous Serial Port)モジュールを持つ、PIC16F877Aを選びました。 でも、ソフトウェアでおこなっても大差ないのではないかとも思います。 [[PCから操作できる赤外線学習リモコン>ir-remocon]]ではRUUさんが開発されたソフトウェアI2Cルーチンを使用しています。 #br 実はByteRead、ByteWriteしか使用していません。 PageWriteを使えば書き込みが大幅に高速化できると思いますが、制御が複雑になるのは避けたいので(趣味の電子工作ですから)、PageWriteは使用していません。 ** メーカーによるシリアルEEPROMの違い [#ua6412ec] 当初、Atmel製の24C256を使用していました。しかしAtmel製では、MicrochipのAppNotesから入手した書き込みサブルーチンを使用する限りは、1命令毎のwaitを10mS程度余計に取らねば正常に作動しませんでした。Microchip製の24LC256に変更したところ、余計なwaitなしで正常に動作するようになりました。 ** RTS制御 [#ibdc2685] 本機はRTS制御がうまく働く環境以外では使用できません。 出力側がWindowsPCの場合は多分問題ないと思いますが、その他の環境の場合は検証が必要です。 Linuxでは使用できないようです。[[こちら>picterm#rts-ctl]]を参考にして下さい。 ** 基板 [#le86c89c] [[&ref(232logger_2_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=232logger_2_b.jpg&refer=232logger]] 当初はADM3202は使わず、C1815を4個使用していましたが、対応電圧範囲が低いかも?と思いADM3202を導入しました。 でも特に対応電圧範囲に違いはないようです。 [[&ref(232logger_3_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=232logger_3_b.jpg&refer=232logger]] 変遷の為、大分汚くなっています。 ** 電源 [#s9103f0a] [[&ref(232logger_4_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=232logger_4_b.jpg&refer=232logger]] 電源ジャックはスイッチ付きではありませんが、プラグの抜き差しにより、電池、ACアダプタの2系統電源対応です。 クラムシェル式のケースは時計の化粧ケースの流用です。 ** スペーサー [#y67f3171] [[&ref(232logger_5_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=232logger_5_b.jpg&refer=232logger]] 小さなことですが、スペーサーを接着しておくと、素早く、基板の取り外し、再取り付けができます。 ** 回路図 [#m2d4b43b] [[&ref(232logger_circt_s.png);:http://192.168.0.5/disklessfun/index.php?plugin=attach&pcmd=open&file=232logger_circt_b.png&refer=testpage]] #br BSch3V形式(zip圧縮) #ref(232logger_circt.zip,nolink); &br; |主要部品表| |CENTER:部品名|CENTER:値段|h |PIC16F877A|400| |Microchip 24LC256|160| |ADM3202AN|200| ** ソース [#gbb66dc7] MPASM形式 #ref(232logger.asm,nolink); ※ieの場合、直接開けないことがあるようです。 #br ソフトウェアTXルーチンは[[ELECTRONICS SHELVES:http://www4.zero.ad.jp/electronics/index.html]]から入手しました。 入手先で著作権の掲示はありませんでした。 #br I2C関係ルーチンはMicrochipのAppNotesから入手しました。 個人使用用途でのみ使用が許されています。 #br 上記個所以外についてはBSDライセンスとします。 #br #br * ご要望、ご意見、質問を下のフォームにどうぞ&br;(でもここより、[[掲示板>board]]や[[書き込みフォーム>form]]のページに書いて頂いた方が気づき易いと思います。) [#j5a78285] #areaedit(nofreeze,noauth,btn:[修正(書き間違った場合にご利用下さい)]) #comment #areaedit(end)