まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

RTC

MSP430 / Energia によるRTCの利用

 MSP430版のLaunchPadを購入するとRTC用と思われる32KHzの発振子が付いてくるのだけど、Energiaから直接使う手段がない。探したらライブラリが公開されていた。

Real-Time Clock (RTC) Library for the MSP430/LaunchPad[43oh]
Bibliothèque RTC pour le MSP430[Archives blog XV4Y]

ここのディスカッションではEnergia 0006では動作がおかしいとの報告があったが、最新の0101E0017では問題なかった。
※追記:発振子外付けでは問題ないが、M430G2553の内蔵32KHzOSCを使うと上記問題が発生。

 まずは発振子をハンダ付けしておく。マイコンはM430G2553を使用。
2016msp430xtal

 シリアルポートが使えるよう準備をしておく。→LaunchPad V1.4のシリアル設定

 修正したソースは以下。といっても余計な}の後のセミコロンを削ったりサンプルにゼロサプレス表示を追加しただけ。
https://gist.github.com/houmei/a149f4715e44e99ccc68fe97105c9c04

EnergiaのライブラリはArduino IDEの考え方に似ている(というか同じ)。次を参考にした。
Writing a Library for Energia

 MacOSXの場合、Energia実行ファイルを右クリックして"パッケージの内容を表示"を選択する。
Energia→Contents→Resources→Java→hardware→msp430→librariesの下に sRTCsec というフォルダを作り、その中に sRTCsec.h と sRTCsec.cpp を置く。

 LaunchPadだけど何年か前は500円くらいで売ってた。今は直販で$9.99。日本国内の情報は少ない。ずっと積んでたのでまあちょっとは役に立てたかな。

↓ Arduinoをはじめようと同じくらいの内容の入門書です。

MSP430 LaunchPad Programming (English Edition)MSP430 LaunchPad Programming (English Edition)
Agus Kurniawan

PE Press 2014-01-03
売り上げランキング :

Amazonで詳しく見る
by G-Tools


RTC DS1307 その1

 しばらくRTC(Real Time Clock)のRTC1307をArduino上でいじってみる。

DS1307 64 x 8、シリアル、I²Cリアルタイムクロック
https://www.sparkfun.com/datasheets/Components/DS1307.pdf

 I2C接続でバッテリバックアップ可、水晶をつなぐだけ、NVRAMあり、アラーム機能あり。

以下のモジュールを購入した。AT24C32(EEPROM)も載っている。トランジスタ?の空きパターンもある。
SainSmart Arduino I2C RTC DS1307 AT24C32 Real Time Clock Module For AVR ARM PIC

使い方はこちらを参考にした。
Sleep Cycle Alarm Clock with Motion Sensor

使用したのはArduino Leonardo。モジュールのVcc、GND、SCL、SDAをそのまま対応するピンに接続する。簡単。
2014ds1307

 ライブラリは以下にあるDS1307RTC.zipをダウンロードして使用する。
DS1307RTC Library(PJRC)

 サンプルスケッチのSetTimeでホストPCの時刻をRTCに設定する。
2014ds1307set


 サンプルスケッチのReadTestでシリアルコンソールに時刻を表示する。Arduinoの電源を外してまた接続しても正しい時刻を表示する。
 2014ds1307disp
 さて、この辺を調べているのはDS1307がGroveでも使われていたり86Duinoにも互換ライブラリがあったりしたため。同じように使えるかもしれない。

メモ:Time Library(PJRC)

 
サインスマート(SainSmart)I2C RTC DS1307 AT24C32 時計 モジュール for AVR ARM PICサインスマート(SainSmart)I2C RTC DS1307 AT24C32 時計 モジュール for AVR ARM PIC

サインスマート(SainSmart)
売り上げランキング : 51261

Amazonで詳しく見る
by G-Tools
サインスマート Tiny RTC I2C DS1307 AT24C32 24C32 メモリ リアルタイムクロックモジュール for Arduinoサインスマート Tiny RTC I2C DS1307 AT24C32 24C32 メモリ リアルタイムクロックモジュール for Arduino

サインスマート(SainSmart)
売り上げランキング : 63365

Amazonで詳しく見る
by G-Tools

Galileo シリアルポート用ケーブルの工作とRTC設定

 GalileoのLinux側にログインしてなんかしようとするにはスケッチ経由でやる方法もあるがシリアルケーブルがあると便利。が、Galileoは3.5mmのステレオプラグをシリアルポートとして使っているので手持ちのもので工作してみた。

 たまたま、Dsub9ピン→RJ45のコンソールケーブルとサンハヤトのRJ45変換基板CK-18があったのでこれとステレオプラグを使って組み立てた。コンソールケーブルはCiscoのネットワーク機器以外の一部のサーバ機でも使われているのでたまたま持ってた。

参考:
Ciscoコンソール用 DB9-RJ45変換コネクタの自作
RS-232(Wikipedia)
「Intel Galileo Development Board」を起動して動作確認
【CK-18】コネクタ変換基板・モジュラー88タイプ


※追記 秋月電子のUSB-シリアル変換ケーブルでも動作確認
USB-シリアル変換ケーブル グレー色 延長ケーブル付

 プラグ加工。ケーブルの赤が先端、緑が中央、黒が根元。
2014galiseri1

 これをCK-18基板の端子に接続。赤=3,緑=6,黒=4または5。
 RJ45端子における信号は
1 CTS (in)
2 DTR (out)
3 TxD (out)
4 GND
5 GND
6 RxD (in)
7 DSR (in)
8 RTS (out)
 となる。フロー制御をなしにするのでTxDとRxDだけの接続でよい。
ハードフロー制御をONにしてしまった場合は端末側が送受信できなくなるのを防ぐため、CTS/DSRをGNDに落とせばよい。または、CTS-DTRをショートなど。
2014galiseri2

 TeraTermによる画面表示。 通信速度は115200bps。起動時はGRUBのブートメニューが出る。10秒ほほど待つと起動し、login:プロンプトが出たらrootでログイン。
2014galiseri3


 さて、ついでにRTCのバッテリバックアップも作ったので動作確認する。CR2032の電池ボックスから2本線出してくっつけただけ。

2014galirtc

 時刻の設定は以下のようにする。

# date -s "2014-01-31 01:45:00"

 時刻設定が終わったら、RTCに転送しておく。

# hwclock --systohc

 電源をいったん切って、起動後にdateコマンドで確認。

参考:
システムの時計を設定する方法
 

 
エムサーブ コンソールケーブル(RJ45-DB9)エムサーブ コンソールケーブル(RJ45-DB9)

エムサーブ
売り上げランキング : 22506

Amazonで詳しく見る
by G-Tools

メモ:秋月電子で買えるRTC(RealTimeClock)

データロガーを作ろうとしてるけど、タイムスタンプも欲しいよねということで調べた。秋月電子ではDIP基板に載せてモジュール化したものが2種類ある。

リアルタイムクロック(RTC)モジュール RTC-8564NB 
RTC-4543SA使用32kHz出力シリアルRTC基板モジュール RTC-4543SA

大きな違いは、RTC-8564NBがI2C、RTC-4543SAは独自シリアルI/Fでマイコンと通信する点。

RTC-4543SAはまだ実験してないのでメモ:
■[電子工作][プログラミング]RTC-4543(RTC-4543SA/SB)を使う(後編) (99円のへたれ日記!) 
シリアル出力リアルタイムクロック(RTC-4543SA)を使ってみた (明日から本気だす(´・ω・`))

RTC-8564NBはArduinoで実験してみた。
2012RTC

RTCモジュール上の端子にハンダを盛ってSDA,SCL信号はモジュール内でプルアップする。
スケッチについてはエレキジャックの記事を参照した。
リアルタイムクロックの最近のブログ記事 (エレキジャック・フィジカルコンピューティング)
RTC-8564NBモジュール(1)
RTC-8564NBモジュール(2)

Arduino1.0.2では以下のソースを一部修正。
ardsens090010.txt

Wire.send()はWire.write()に、Wire.receive()はWire.read()に書き換えが必要。
実行するとシリアルに時刻が出力される。そのままでは値がおかしいので
t213000[enter]
d121113[enter]
と入力すれば 2012年11月13日 21時30分00秒と設定される。

ところで、Arduino UNOではSCL,SDA端子がAnalog A5,A4の端子と一緒なので同時には使えない(@maris_HYさんありがとうございました)。
[SCL=A5,SDA=A4]
Arduino LeonardoではAREF端子の上のほうにSDA,SCL端子が増えている。Arduino UNO R3では互換のためにSDA,SCL端子はあるけどA4,A5の端子がそのまま引き出してあるだけ。ということでアナログ6ポートと同時に使うためにはLeonardoが必要。
が、手持ちのバニラシールドはこの増設部分が半分ずれてるのよね。ということでR3対応のものを取り寄せ中。
Arduino用バニラシールド基板ver.2(白) (スイッチサイエンス) 

記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ