Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino- und DS3231-Echtzeituhr-Tutorial

In diesem Arduino-Tutorial lernen wir, wie man das DS3231-Echtzeituhrmodul verwendet. Sie können sich das folgende Video ansehen oder das schriftliche Tutorial unten lesen.

Übersicht

Die erste Frage, die sich hier stellt, ist, warum wir eigentlich eine separate RTC für unser Arduino-Projekt benötigen, wenn das Arduino selbst über einen eingebauten Zeitmesser verfügt. Nun, der Punkt ist, dass das RTC-Modul mit einer Batterie betrieben wird und die Zeit verfolgen kann, selbst wenn wir den Mikrocontroller neu programmieren oder die Hauptstromversorgung trennen.

DS3231-Echtzeituhr

Die DS3231 ist eine kostengünstige, hochpräzise Echtzeituhr, die Stunden, Minuten und Sekunden sowie Tages-, Monats- und Jahresinformationen speichern kann. Außerdem gibt es eine automatische Kompensation für Schaltjahre und für Monate mit weniger als 31 Tagen.

Das Modul kann entweder mit 3,3 oder 5 V betrieben werden, wodurch es für viele Entwicklungsplattformen oder Mikrocontroller geeignet ist. Der Batterieeingang beträgt 3 V und eine typische CR2032 3 V-Batterie kann das Modul mit Strom versorgen und die Informationen für mehr als ein Jahr erhalten.

Das Modul verwendet das I2C-Kommunikationsprotokoll, das die Verbindung zum Arduino-Board sehr einfach macht.

Hier ist der Schaltplan:

Alles, was wir also brauchen, sind 4 Drähte, die VCC- und die GND-Pins für die Stromversorgung des Moduls und die beiden I2C-Kommunikationspins, SDA und SCL.

Die für dieses Arduino-Tutorial benötigten Komponenten erhalten Sie über die folgenden Links:

  • DS3231 Echtzeituhr ……………..
  • Arduino-Board ……………………………
  • Steckbrett und Schaltdrähte ……… 

Programmieren

Sobald wir das Modul anschließen, müssen wir das Arduino Board programmieren, um mit der Echtzeituhr zu arbeiten. Wenn es jedoch darum geht, eine Kommunikation zwischen Arduino und einem I2C-Modul zu programmieren, ist der Code nicht so klein und einfach. Glücklicherweise gibt es bereits mehrere Bibliotheken für die DS3231 RTC, die im Internet zu finden sind.

Für dieses Tutorial habe ich mich entschieden, die von Henning Karlsen erstellte Bibliothek zu verwenden, die auf seiner Website www.rinkydinkelectronics.com gefunden und heruntergeladen werden kann.

Sobald wir also die Bibliothek heruntergeladen und installiert haben, können wir ihr erstes Demo-Beispiel verwenden, um die Uhr des RTC-Moduls anfänglich zu aktivieren. Im Setup-Abschnitt des Demo-Beispielcodes können wir feststellen, dass es drei Zeilen gibt, die wir auskommentieren müssen, um anfänglich den Wochentag, die Uhrzeit und die Daten einzustellen.

// Code from the Demo Example of the DS3231 Library void setup() { // Setup Serial connection Serial.begin(115200); // Uncomment the next line if you are using an Arduino Leonardo //while (!Serial) {} // Initialize the rtc object rtc.begin(); // The following lines can be uncommented to set the date and time //rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014 } Codesprache:Arduino (arduino)

Die erste Zeile dient zum Einstellen des Wochentages, die zweite Zeile zum Einstellen der Uhrzeit in Stunden, Minuten und Sekunden und die dritte Zeile zum Einstellen des Datums in Tagen, Monaten und Jahren.

Sobald wir diesen Code hochgeladen haben, müssen wir die drei Zeilen zurückkommentieren und den Code erneut hochladen.

// Code from the Demo Example of the DS3231 Library

void loop()
{
  // Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
  // Wait one second before repeating
  delay (1000);
} Codesprache:Arduino (arduino) 

Wenn wir uns den Schleifenabschnitt des Codes ansehen, können wir sehen, dass wir jetzt mit den drei benutzerdefinierten Funktionen die Informationen von der RTC erhalten und sie im Serial Monitor drucken. So erscheinen sie im Serial Monitor.

Selbst wenn wir jetzt die Arduino-Stromversorgung trennen und dann wieder anschließen und den Serial Monitor erneut ausführen, können wir feststellen, dass die Zeit weiterläuft, ohne zurückgesetzt zu werden.

Jetzt haben wir also unsere Echtzeituhr am Laufen und können sie in jedem Arduino-Projekt verwenden. Als zweites Beispiel habe ich ein LCD an den Arduino angeschlossen und die Uhrzeit und das Datum darauf gedruckt.

Hier ist der Quellcode dieses Beispiels:

/*
* Arduino DS3231 Real Time Clock Module Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
* DS3231 Library made by Henning Karlsen which can be found and downloaded from his website, www.rinkydinkelectronics.com.
*
*/
#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library 

DS3231  rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 

void setup() { 
 rtc.begin(); // Initialize the rtc object
 lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } 
}

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); 
} Codesprache:Arduino (arduino) 

Das ist alles für dieses Arduino-Tutorial. Sie können gerne Ihre Fragen im Kommentarbereich unten stellen.


Herstellungsprozess

  1. Arduino-Pov-Vision-Uhr
  2. Anleitung zum Arduino-RFID-Schloss
  3. Hauptuhr
  4. Arduino-Temp. Monitor und Echtzeituhr mit 3.2 Display
  5. Berliner Uhr
  6. TM1637 Digitaluhr mit Zeiteinstellung und Alarmfunktion
  7. eDOT - Arduino-basierte Präzisionsuhr und Wetterstation
  8. Arduino OLED-Temperaturanzeige mit Echtzeituhr
  9. Anleitung zum Arduino-Fingerabdrucksensor
  10. Roboter erkennt und teilt Änderungen in 3D in Echtzeit