Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino en DS3231 Real Time Clock-zelfstudie

In deze Arduino-zelfstudie leren we hoe we de DS3231 Real Time Clock-module kunnen gebruiken. Je kunt de volgende video bekijken of de schriftelijke tutorial hieronder lezen.

Overzicht

De eerste vraag die hier komt, is waarom we eigenlijk een aparte RTC nodig hebben voor ons Arduino-project als de Arduino zelf een ingebouwde tijdwaarnemer heeft. Het punt is dat de RTC-module op een batterij werkt en de tijd kan bijhouden, zelfs als we de microcontroller herprogrammeren of de hoofdstroom loskoppelen.

DS3231 Realtime-klok

De DS3231 is een goedkope, zeer nauwkeurige realtimeklok die uren, minuten en seconden kan bijhouden, evenals dag-, maand- en jaarinformatie. Het heeft ook automatische compensatie voor schrikkeljaren en voor maanden met minder dan 31 dagen.

De module kan werken op 3,3 of 5 V, wat hem geschikt maakt voor veel ontwikkelplatforms of microcontrollers. De batterij-ingang is 3V en een typische CR2032 3V-batterij kan de module van stroom voorzien en de informatie langer dan een jaar behouden.

De module maakt gebruik van het I2C-communicatieprotocol wat de verbinding met het Arduino-bord zeer eenvoudig maakt.

Hier zijn de circuitschema's:

Dus alles wat we nodig hebben zijn 4 draden, de VCC en de GND-pinnen voor het voeden van de module, en de twee I2C-communicatiepinnen, SDA en SCL.

U kunt de benodigde componenten voor deze Arduino-zelfstudie verkrijgen via de onderstaande links:

  • DS3231 Realtimeklok…………..
  • Arduino-bord …………………………
  • Broodplank en springdraden ……… 

Programmeren

Zodra we de module hebben aangesloten, moeten we het Arduino-bord programmeren om met de realtimeklok te werken. Als het echter gaat om het programmeren van communicatie tussen Arduino en een I2C-module, is de code niet zo klein en eenvoudig. Gelukkig zijn er al verschillende bibliotheken voor de DS3231 RTC die op internet te vinden zijn.

Voor deze tutorial heb ik ervoor gekozen om de bibliotheek van Henning Karlsen te gebruiken die kan worden gevonden en gedownload van zijn website, www.rinkydinkelectronics.com.

Dus zodra we de bibliotheek hebben gedownload en geïnstalleerd, kunnen we het eerste demo-voorbeeld gebruiken om in eerste instantie de klok van de RTC-module te activeren. In het setup-gedeelte van de demo-voorbeeldcode kunnen we zien dat er drie regels zijn die we moeten verwijderen om in eerste instantie de dag van de week, de tijd en de gegevens in te stellen.

// 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
}Code language: Arduino (arduino)

De eerste regel is voor het instellen van de dag van de week, de tweede regel is voor het instellen van de tijd in uren, minuten en seconden en de derde regel is voor het instellen van de datum in dagen, maanden en jaren.

Zodra we deze code hebben geüpload, moeten we commentaar geven op de drie regels en de code opnieuw uploaden.

// 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);
}Code language: Arduino (arduino)

Als we naar het lusgedeelte van de code kijken, kunnen we zien dat we nu met behulp van de drie aangepaste functies de informatie van de RTC krijgen en deze afdrukken in de seriële monitor. Zo verschijnen ze in de seriële monitor.

Zelfs als we de Arduino-voeding loskoppelen en vervolgens opnieuw aansluiten en de seriële monitor opnieuw uitvoeren, kunnen we merken dat de tijd doorgaat zonder te worden gereset.

Dus nu hebben we onze Real Time Clock in gebruik en kunnen we deze in elk Arduino-project gebruiken. Als tweede voorbeeld heb ik een LCD op de Arduino aangesloten en de tijd en de datum erop afgedrukt.

Dit is de broncode van dit voorbeeld:

/*
* 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); 
}Code language: Arduino (arduino)

Dat is alles voor deze Arduino-zelfstudie. Stel gerust een vraag in de opmerkingen hieronder.


Productieproces

  1. Arduino pov vision-klok
  2. Arduino RFID Lock-zelfstudie
  3. Hoofdklok
  4. Arduino Temp. Monitor en realtimeklok met 3.2-weergave
  5. Berlijnse klok
  6. TM1637 digitale klok met tijdinstelling en alarmfunctie
  7. eDOT - op Arduino gebaseerde precisieklok en weerstation
  8. Arduino OLED-temperatuurweergave met realtime klok
  9. Tutorial Arduino-vingerafdruksensor
  10. Raspberry Pi en Arduino-laptop
  11. Robot detecteert en deelt veranderingen in 3D in realtime