Arduinoボードや同様の マイクロプロセッサ は、さまざまなタスクを実行できます。たとえば、LEDを1秒に1回オンにしたい場合は、 delay() コマンドまたはmillis() コマンド を使用します。残念ながら、システムの小さな変化は 共振器または水晶発振器 ボードの時間が不均一になる可能性があります。
Arduinoシリアルについて 時間変化 実際の時間からの偏差はわずか0.05% (0.0005倍) ですが、その遅れは最終的に蓄積されていきます。たとえば、目覚まし時計を作ろうとしている場合、0.05% の変動は、システムが現実と1日あたり43.2秒異なることを意味します。最初の1週間は何も変わりませんが、1か月後に20分遅れで仕事に着くようになれば、イライラし始めるかもしれません。
それで、何をすればいいのでしょうか?答えは、もちろんつまり、RTCの形で提供されるか、 リアルタイムクロックモジュール。オプションには PCF8523 そして DS1307、および以下で説明するDS3231チップ。
リアルタイムクロック (RTC) モジュールをArduinoに接続する
RTCモジュールとArduinoを使い始める場合は、次の機能を備えたブレークアウト ボードを使用することをお勧めします。
- Arduinoに接続する接続
- コイン型電池(CR2032)用のホルダーと接続部
バッテリーは外部電源がなくても動き続けるので、メインシステムをシャットダウンする必要がある場合でも、電源を入れ直すと正しい時刻が表示されます。リアルタイム クロック モジュールを使用して、設定された間隔でプロセッサを起動し、電力を節約することもできます。
このセットアップでは、 Arduino Unoボードでここに示すように接続し、5Vとグランドを適切な接続に接続し、SDAおよびSCLラインを対応するArduino接続に接続します。Unoでは、A4はSDA、A5はSCLですが、上の図ではリセット ボタンの横で接続されており、ここでも便利なように線が分割されています。チップを「動かし続ける」ために、CR2032バッテリーを接続します。
RTC Arduinoデバイスをプログラムする
プロセスは次のとおりです。
1.Arduino IDEの検索機能または このGitHubページからAdafruit RTCライブラリをインストールします。
2.[ファイル] - [例 - RTClib] に移動し、 ds3131 を開きます。
3.フィードバックを得るために シリアル モニター を開き、プログラムをArduinoボードにアップロードします。
これを初めて実行すると、シリアル モニターに「RTCの電源が切れました。時間を設定しましょう!」と表示されます。これにより、スケッチがコンパイルされた時間に基づいて、リアルタイム クロック モジュールに時間がロードされます。その後、現在の時刻/日付、1970年1月1日の午前0時からの経過時間、温度が表示されます。
プログラムのコンパイル時にコンピュータから時間を取得するため、通常は数秒の誤差が生じます。rtc.adjust 行を特定の日付で調整して、時間を手動で設定することもできます。
再度時刻を入力する場合は、モジュールを外してバッテリーを取り外してください。すべてを再度接続し、上記の説明に従ってArduinoを再プログラムします。
バッテリー バックアップにより、主電源が切断された場合でもRTCモジュールはオンの状態を維持します。
プロジェクトの記録
これで、より正確なArduino RTCタイムキーピングの実験を始める準備が整いました。独自の計時デバイスを作成したり、自宅や職場でのプロセスを自動化したりしてみてください。さらに開発を進めれば、無限の製品の可能性を自由に探求できるようになります。