ホーム > BeagleBone, Physical Computing > BeagleBone Black のハードウェアハック(2)Hacking BeagleBone Black, part 2

BeagleBone Black のハードウェアハック(2)Hacking BeagleBone Black, part 2

2014 年 1 月 3 日

BeagleBone Blackにリアルタイムクロック(RTC)を付けます。

BB-RTC-PICT1

BB-RTC-PICT1

1. リアルタイムクロック

BeagleBone Blackにはリアルタイムクロック(時計)がありません。電源を切ってしまうと、時刻が分からずに、同じ時刻からスタートしてしまいます。普通のパソコンでは電池でバックアップされた時計を内部に持っており、起動時にも時刻が分かるようになっています。BBBはコストダウンのためか、この仕組みを持っていません。

Unix(Linux)では時刻でファイルの古い新しいを判断したりしているため、絶対時刻を設定しないと何かと不便です。

そこで、BBBではネットワークがつながっている場合には、ntp(Network Time Protocol)を使って他のホストから時刻を聞いて、自分の内部の時計を設定します。


 BBB# /usr/bin/ntpupdate pool.ntp.org

ネットワークをつながない場合には時刻を知る術がありません。そこで今回はハードウェアハック第一弾としてBBBにRTCを接続してみました。

元ネタは、AdafruitのチュートリアルAdding a Real Time Clock to BeagleBone Blackです。

2. 回路

回路図を示します。I2CインタフェースをI2Cバスに、時計用の水晶を対応する端子につなぐだけです。

電源としては本体の5Vラインから引きます。また、バッテリーバックアップ用にボタン電池を繋ぎます。

また、回路図に入っていませんが、電源とグランドの間にパスコンを入れた方が良いでしょう。

Schematic of RTC

Schematic of RTC

パーツリストを示します。全てのパーツが秋月で揃います。

名称 規格 数量 備考
リアルタイムクロック DS1307+ 1個 通販コード I-06949
水晶発振子 32.768KHz 1個
ボタン電池 CR2032 1個
ボタン電池基板取付用ホルダー CR2032用 1個 通販コード P-00706
基板 BeagleBone・ユニバーサルプロトケープ 1個
ピンヘッダ 2列46ピン 2個
コンデンサ 積層セラミック 0.1uF 1個 パスコン用

今回はケースに入れる都合で、基板の裏側にパーツがを配置しました。本体基板のパーツ、特にUSBコネクタと干渉しない位置にICと電池ホルダーを取り付けます。

実装高さの都合でICソケットは使いませんでした。

普通は基板の表にパーツを配置すると思いますが、この場合には、本体基板との部品の干渉について気にする必要はありません。

3. 動作確認

チュートリアルに従ってi2cdetectで動作の確認をします。


BBB# i2cdetect -y -r 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

ID=68番としてI2Cバス上でICが検出できれば成功です。

バックアップ用の電池を入れておかないとRTCチップは動作しない様です。必ず、基板を差し込む前に電池を入れておいて下さい。

4. ソフトウェア設定

ソフトウエアの設定方法は、チュートリアルの通りです。

(1) I2Cデバイスとして認識させる。


BBB# mkdir /usr/share/rtc_ds1307

(2) 起動用シェルスクリプトを作成 /usr/share/rtc_ds1307/clock_init.sh

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -s -f /dev/rtc1
hwclock -w

(3) サービス登録用ファイルを作成 /lib/systemd/system/rtc-ds1307.service

[Unit]
Description=DS1307 RTC Service
[Service]
Type=simple
WorkingDirectory=/usr/share/rtc_ds1307
ExecStart=/bin/bash clock_init.sh
SyslogIdentifier=rtc_ds1307
[Install]
WantedBy=multi-user.target

(4) サービスを有効にする


BBB# systemctl enable rtc-ds1307.service

リブートして動作の確認をします。時刻が設定されていれば成功です。

BB-RTC-PICT2

BB-RTC-PICT2

(続く)

カテゴリー: BeagleBone, Physical Computing タグ:
コメントは受け付けていません。