工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ArduinoでDS3231 RTCをマスターする - ステップバイステップチュートリアル

概要

このArduinoチュートリアルでは、DS3231リアルタイムクロック(RTC)モジュールの使い方を学びます。Arduino自体にも時間管理機能がありますが、RTCモジュールは電池で動作するため、マイコンを再プログラミングしたりメイン電源を切っても時刻を保持し続けられるという利点があります。詳細については、以下のビデオまたは文章チュートリアルをご覧ください。

ArduinoでDS3231 RTCをマスターする - ステップバイステップチュートリアル

DS3231 リアルタイムクロック

DS3231は低コストで高精度なRTCです。時・分・秒のほか、曜日・月・年情報を保持し、うるう年や31日未満の月の自動補正機能も備えています。

ArduinoでDS3231 RTCをマスターする - ステップバイステップチュートリアル

動作電圧は3.3Vまたは5Vで、多くの開発プラットフォームに対応。バックアップ電池には3VのCR2032コイン電池を使用し、通常1年以上データを保持可能です。通信プロトコルはI2Cで、Arduinoとの接続が非常に簡単です。

回路図

ArduinoでDS3231 RTCをマスターする - ステップバイステップチュートリアル

必要な配線は4本のみ:VCC, GND, SDA, SCL。

必要なコンポーネント

  • DS3231 リアルタイムクロック
  • Arduinoボード
  • ブレッドボードとジャンパワイヤ

プログラミング

ArduinoとI2Cモジュール間の通信コードをゼロから書くのは煩雑ですが、幸いDS3231用のライブラリがいくつか公開されています。このチュートリアルではHenning Karlsen氏作のライブラリ(www.rinkydinkelectronics.com)を使用します。

ライブラリをダウンロード・インストール後、付属のデモ例を使ってRTCの時計を初期設定します。デモ例のsetup()内に以下の3行があり、初回のみアンコメントしてアップロードします。

// DS3231ライブラリのデモ例より
void setup() {
  Serial.begin(115200);
  // Arduino Leonardo使用時は以下をアンコメント
  // while (!Serial) {}
  rtc.begin();

  // 初回のみ以下3行をアンコメントして日時設定
  // rtc.setDOW(WEDNESDAY);     // 曜日設定
  // rtc.setTime(12, 0, 0);     // 時刻設定 12:00:00 (24時間制)
  // rtc.setDate(1, 1, 2014);   // 日付設定 2014年1月1日
}

1行目で曜日、2行目で時刻(時・分・秒)、3行目で日付(日・月・年)を設定します。アップロード後、これら3行を再度コメントアウトして再アップロードします。

ループ部では以下の3関数で情報を取得・表示します。

void loop() {
  Serial.print(rtc.getDOWStr()); Serial.print(" ");  // 曜日
  Serial.print(rtc.getDateStr()); Serial.print(" -- "); // 日付
  Serial.println(rtc.getTimeStr());                   // 時刻
  delay(1000);
}

シリアルモニタには以下のように表示されます。

ArduinoでDS3231 RTCをマスターする - ステップバイステップチュートリアル

Arduinoの電源を切って再接続しても、時刻はリセットされずに継続されます。

LCD表示例

2つ目の例として、LCDに時刻と日付を表示します。

ArduinoでDS3231 RTCをマスターする - ステップバイステップチュートリアル
/*
 * Arduino DS3231 Real Time Clock Module Tutorial
 * Created by Dejan Nedelkovski, www.HowToMechatronics.com
 * DS3231 Library by Henning Karlsen (www.rinkydinkelectronics.com)
 */
#include <DS3231.h>
#include <LiquidCrystal.h>

DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // (rs, enable, d4, d5, d6, d7)

void setup() {
  rtc.begin();
  lcd.begin(16, 2);
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("Time: ");
  lcd.print(rtc.getTimeStr());
  lcd.setCursor(0, 1);
  lcd.print("Date: ");
  lcd.print(rtc.getDateStr());
  delay(1000);
}

以上でこのArduinoチュートリアルは終了です。ご質問はコメント欄でお気軽にどうぞ。

製造プロセス

  1. Arduino POVクロック:残像効果で浮かび上がるLED時計を自作する
  2. Arduinoで作るセキュアなRFIDロック – ステップバイステップガイド
  3. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
  4. Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
  5. Arduino UNOで作るベルリンクロック – DIY LEDマトリクス時計
  6. TM1637デジタル時計:時刻設定・アラーム機能付き Arduino Nano試作版
  7. eDOT:高精度Arduino時計・気象ステーション(IRリモコン・自動輝度調整内蔵)
  8. Arduinoリアルタイム気象時計 - OLEDに時刻/日付/温度を表示
  9. Arduino Nanoと指紋センサーで作るバイオメトリクス認証システム – 完全チュートリアル
  10. Raspberry Pi 3とArduinoで作る自作ノートPC:ステップバイステップガイド
  11. ロボットが3D環境変化をリアルタイム検知しARグラスで兵士に警告、ヒューマン・ロボットチームで状況認識強化