フォト
2025年2月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  
無料ブログはココログ

« DigisparkでUSB経由のシリアル通信が出来ない | トップページ | IchigoJamでRTCモジュールを使った時刻表示 その2 »

2016年9月 4日 (日)

IchigoJamでRTCモジュールを使った時刻表示

IchigoJamで安価なRTCモジュールを使って見ました。

Dscn5697

取りあえず、必要最低限の機能を実装しました。

20160904092832

購入はいつものAliexpressを利用しました。
DS3231 Real Time Clock Module 3.3V/5V with battery For Raspberry Pi Free shipping
100円以下で買えます。

  03

利用したのはRaspberry Pi用のRTCモジュールです。
Maxim製のDS3231がのっており、3.3VでI2Cにて利用出来ます。

Dscn5690

裏面にボタン電池(もしかしたら二次電池かもしれません)が乗っており、
一度時刻設定すれば、単体で時刻を刻みます。
IchigoJamの電源を切っても、時刻がリセットされることはありません。

Dscn5691


ピン割り付け

02

IchigoJamにはGND、VCC(3.3V)、SCL、SDAの4線を接続します。
プルアップ抵抗はモジュール上に乗っているので不要です。
このIC自体はアラーム機能あるのですが、ピンレイアウト的にその機能が利用出来ません。
ICのINT/SQWをNCにつなげれば、利用出来るかもしれません。
IchigoJamのスリープ状態からの復帰なんかに使いたいですね。

プログラムこんな感じです。IchigoJam 1.2.1で作成しています。
  ※GitHubにも掲載しています
     GitHub:Tamakichi/IchigoJam RTC DS3231利用サンプルソース

1 'RTC DS3231
10 CLS:M=#700:A=#68:POKE M,0:D="//  :  "
20 'T="16090407085800":GSB @SET
30 @LP:LC 0,0:GSB @PRN:WAIT 30:GOTO @LP
40 @SET
50 N=M+7
60 FOR I=T TO T+13 STEP 2
70 POKE N,(PEEK(I)-48)<<4+PEEK(I+1)-48:N=N-1
80 NEXT
90 R=I2CW(A,M,1,M+1,7)
100 RTN
110 @PRN
120 R=I2CR(A,M,1,M+1,7): ?"20";
130 FORI=0 TO 6
140 IF I<>3 ?HEX$(PEEK(M+7-I),2);STR$(D+I,1);
150 NEXT
160 RTN

20行をコメントアウト(コメントにして実行しないようにする)しています。
時刻設定時はこのコメント(')を取って実行します。
   
T="16090407085800" 
にて設定時刻を指定しています。この数字文字列の意味は左から
  西暦下2桁、月2桁、日2桁、曜日2桁(01が日、02が月・・・07が土)、時2桁、分2桁、秒2桁
です。
この指定により 2016/09/04 08:58:00 が設定されます(曜日は表示していません)。

プログラムとしては、
  10~30行 が初期化等の設定、
  30行 が時刻表示の繰り返しループ(メイン処理)、
  40~100行 が時刻設定用のサブルーチン、
  110~160行が時刻取得と表示用のサブルーチン
です。

時刻設定部は毎回利用するわけでもないので、別プログラムに分けた方が
よいかもしれません。表示のみなら、20行、40~100行は不要です。

I2Cを使ったデータ通信を含めこのモジュールの利用自体はそう難しくはありません。
ただし、データがBCD形式なので注意が必要ですね。

« DigisparkでUSB経由のシリアル通信が出来ない | トップページ | IchigoJamでRTCモジュールを使った時刻表示 その2 »

IchigoJam」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: IchigoJamでRTCモジュールを使った時刻表示:

« DigisparkでUSB経由のシリアル通信が出来ない | トップページ | IchigoJamでRTCモジュールを使った時刻表示 その2 »