Yasushi TAUCHI / Mbed 2 deprecated jjy

Dependencies:   mbed-rtos mbed

You are viewing an older revision! See the latest version

Homepage

Information

これはJJYの信号や処理の参考になりますが、正確な時間や手軽に扱いたい人には不向きです。

概要

Aitendoの電波時計モジュール[MAS6181-DB]からの信号を受信して処理を行う方法の一つの例を示します。
JJYの信号はhttp://jjy.nict.go.jp/QandA/reference/Lfsymposium1.pdfの10ページを参考にしました。
1秒で一つの信号を送り60秒かけて時間情報を送信します。
信号は、マーカ、1、0の三種類です。
マーカは0.2s ON 0.8s OFF
1は0.5s ON 0.5s OFF
0は0.8s ON 0.2s OFF
です。

ハードウエアの設定

電波時計モジュールは、1.1-3.6Vで動作します。mbedの出力電圧3.3Vで動作するので、そのまま接続することもできます。

出力は、信号を受信していない場合はLow
信号を受信している場合はLow
信号を受信していない場合はHigh
になります。

なお、出力インピーダンスが高いので、mbedとは直接接続できませんでした。
オペアンプやトランジスタなどのバッファを仲介する必要があります。
今回は下記の回路で実行しています。この回路だと、信号が反転するので、ちょうど信号を受信しているときは1、していないときは0になりました。
/media/uploads/yueee_yt/jjy_---.jpg 信号が受信できると以下のような信号を得られます。
/media/uploads/yueee_yt/jjy-osc.jpg

Warning

受信モジュールはノイズに弱いみたいなので、信号の弱い場所では電池での駆動がよいです。PCからmbed経由での電源供給でも、PCにACアダプタを挿すと受信できなくなることがありました。

プログラムの説明

RTOSを利用してデータの受信は別スレッドで10ms毎に動くようにしています。つまり、1信号(1秒)あたり100回の信号を取っています。
リングバッファrcvにデータを保存します。
この辺りは、電波の強弱やMPUの能力で最適値に変更すると良いと思います、

プログラムは2段階で動作するようにしています。
1.同期ポイントを探る
2.信号から時間を得る

同期ポイントは20秒受信します。受信しながらバッファの総和を求めます。
データは10回に1回以上がマーカなので、
0.0-0.2sがONになるのは100%(マーカ+0+1)
0.2-0.5sがOnになるのは 90%以下(0+1)
0.5-0.8sがOnになるのは ?%(0)
0.8-1.0sは100%でOFFになるはずです。


All wikipages