Inhoudsopgave:
- Stap 1: Vereiste componenten
- Stap 2: Aansluiting van Arduino Clock
- Stap 3: Code voor Arduino-klok met RTC
Video: Realtime klok met Arduino - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
In dit project gaan we een klok maken met behulp van de Arduino- en RTC-module. Zoals we weten, kan de Arduino de werkelijke tijd niet weergeven, dus we zullen de RTC-module gebruiken om de juiste tijd op het LCD-scherm weer te geven. Lees alle stappen aandachtig door, het zal u veel helpen om het uurwerk te maken.
De DS3231 Arduino-code is als de DS1307-code en werkt met beide RTC-chips.
De Arduino-code eronder maakt geen gebruik van een bibliotheek voor de DS3231 RTC, de Wire-bibliotheek is voor de correspondentie tussen de Arduino en de DS3231 met behulp van de I2C-conventie.
Ja! Veel elektronica-ingenieurs zijn ervan afhankelijk voor hun op tijd gebaseerde projecten, maar RTC is niet helemaal betrouwbaar. Het werkt op batterijen en moet binnenkort of later worden vervangen. Bij IoT-projecten neemt het waardevolle SPI-pinnen (Serial Peripheral Interface) in beslag en wordt het rommelig met verwarde draden. Oplossing … Hier komt onze held NTP (Network Time Protocol). NTP is zo nauwkeurig omdat het tijd krijgt van internet. We gaan dit protocol gebruiken in een client-servermodus. het proces is zo eenvoudig dat onze Nodemcu als client fungeert en een NTP-pakket van de server aanvraagt met behulp van UDP. In ruil daarvoor stuurt de server een pakket naar de client die de gegevens ontleedt. NTP is het universele tijdsynchronisatieprotocol. Laten we nu onze labs-werkplek verlichten
Stap 1: Vereiste componenten
- Arduino-bord
- DS3231 RTC-kaart
- 16x2 LCD-scherm
- 2 x drukknop
- 10K ohm variabele weerstand (of potentiometer)
- 330 ohm weerstand
- 3V knoopcelbatterij
- Breadboard
- Doorverbindingsdraden
RTC-molecuul DS3231
Tijd is een essentieel zintuig dat nodig is in deze snelle mensenwereld. In realtime project
We gebruiken RTC (A. K. A Real-time klok)
RTC Real-time-clock (RTC) is een geïntegreerde schakeling (IC) die de huidige tijd bijhoudt. RTC zorgt voor de tijd in real-modus. De RTC wordt meestal aangetroffen op moederborden van computers en embedded systemen om tijdige toegang te vereisen.
Stap 2: Aansluiting van Arduino Clock
- Sluit de SCL-pin aan op de RTC-module op de Arduino A5
- Verbind de SDA-pin met de RTC-module met de Arduino A4
- Verbind VCC TO 5v en GND TO GND
- Sluit een drukknop aan op pin 8
- Sluit nog een drukknop aan op pin 9
- Verbind RS van LCD met pin 2 van Arduino
- Sluit E van LCD aan op pin 3 van Arduino
- Sluit D7 van LCD aan op pin 7 van Arduino
- Sluit D6 van LCD aan op pin 6 van Arduino
- Sluit D5 van LCD aan op pin 5 van Arduino
- Sluit D4 van LCD aan op pin 4 van Arduino
- Verbind VSS & K met de GND
- Sluit VDD & A aan op de 5v
- Sluit vo aan op de uitgangspin van de potentiometer
Stap 3: Code voor Arduino-klok met RTC
De DS3231 werkt alleen met BCD-indeling en om de BCD naar decimaal te converteren en vice versa heb ik de 2 onderstaande regels gebruikt (voorbeeld voor minuut):// Converteer BCD naar decimalminuten = (minuut >> 4) * 10 + (minuut & 0x0F);
// Converteer decimaal naar BCDminuut = ((minuut/10) << 4) + (minuut % 10); void DS3231_display(): geeft tijd en kalender weer, voordat tijd en kalendergegevens worden geconverteerd van BCD naar decimaal formaat.void blink_parameter():
// Realtime klok en kalender met instelknoppen met behulp van DS3231 en Arduino // inclusief LCD-bibliotheekcode #inclusief // inclusief draadbibliotheekcode (nodig voor I2C-protocolapparaten) #inclusief // LCD-moduleverbindingen (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () { pinMode (8, INPUT_PULLUP); // button1 is verbonden met pin 8 pinMode (9, INPUT_PULLUP); // button2 is verbonden met pin 9 // stel het aantal kolommen en rijen van het LCD-scherm in lcd.begin (16, 2); Draad.begin(); // Join i2c bus} char Time = "TIME::: "; char Kalender = "DATUM: / /20 "; byte i, seconde, minuut, uur, datum, maand, jaar; void DS3231_display () {// Converteer BCD naar decimale seconde = (tweede >> 4) * 10 + (tweede & 0x0F); minuut = (minuut >> 4) * 10 + (minuut & 0x0F); uur = (uur >> 4) * 10 + (uur & 0x0F); datum = (datum >> 4) * 10 + (datum & 0x0F); maand = (maand >> 4) * 10 + (maand & 0x0F); jaar = (jaar >> 4) * 10 + (jaar & 0x0F); // Einde conversie Tijd [12] = seconde % 10 + 48; Tijd [11] = seconde / 10 + 48; Tijd[9] = minuut % 10 + 48; Tijd [8] = minuut / 10 + 48; Tijd[6] = uur % 10 + 48; Tijd [5] = uur / 10 + 48; Kalender[14] = jaar % 10 + 48; Kalender[13] = jaar / 10 + 48; Kalender[9] = maand % 10 + 48; Kalender[8] = maand / 10 + 48; Kalender[6] = datum % 10 + 48; Kalender[5] = datum / 10 + 48; lcd.setCursor(0, 0); lcd.print (Tijd); // Weergavetijd lcd.setCursor (0, 1); lcd.print (Kalender); // Kalender weergeven } void blink_parameter () {byte j = 0; while(j 23) // Als uren > 23 ==> uren = 0 parameter = 0; if(i == 1 && parameter > 59) // If minuten > 59 ==> minuten = 0 parameter = 0; if(i == 2 && parameter > 31) // If date > 31 ==> datum = 1 parameter = 1; if(i == 3 && parameter > 12) // If maand > 12 ==> maand = 1 parameter = 1; if(i == 4 && parameter > 99) // Als jaar > 99 ==> jaar = 0 parameter = 0; sprintf(tekst, "%02u", parameter); lcd.setCursor(x, y); lcd.print(tekst); vertraging (200); // Wacht 200 ms } lcd.setCursor (x, y); lcd.print(" "); // Toon twee spaties blink_parameter (); sprintf(tekst, "%02u", parameter); lcd.setCursor(x, y); lcd.print(tekst); blink_parameter(); if(!digitalRead(8)){ // Als knop (pin #8) is ingedrukt i++; // Verhoging 'i' voor de volgende parameterretourparameter; // Return parameterwaarde en exit } } } void loop() { if(!digitalRead(8)){ // Als knop (pin #8) wordt ingedrukt i = 0; uur = bewerken (5, 0, uur); minuut = bewerken (8, 0, minuut); datum = bewerken (5, 1, datum); maand = bewerken (8, 1, maand); jaar = bewerken(13, 1, jaar); // Converteer decimaal naar BCD minuut = ((minuut/10) << 4) + (minuut % 10); uur = ((uur / 10) << 4) + (uur % 10); datum = ((datum / 10) << 4) + (datum % 10); maand = ((maand/10) << 4) + (maand % 10); jaar = ((jaar / 10) << 4) + (jaar % 10); // Eindconversie // Schrijf gegevens naar DS3231 RTC Wire.beginTransmission (0x68); // Start I2C-protocol met DS3231-adres Wire.write (0); // Stuur registeradres Wire.write(0); // Reset seconden en start oscillator Wire.write (minuut); // Schrijf minuut Wire.write (uur); // Schrijfuur Wire.write(1); // Schrijfdag (niet gebruikt) Wire.write (datum); // Schrijfdatum Wire.write (maand); // Schrijf maand Wire.write (jaar); // Schrijf jaar Wire.endTransmission(); // Stop de verzending en laat de I2C-busvertraging (200) los; // Wacht 200 ms } Wire.beginTransmission (0x68); // Start I2C-protocol met DS3231-adres Wire.write (0); // Stuur registeradres Wire.endTransmission (false); // I2C herstart Wire.requestFrom (0x68, 7); // Vraag 7 bytes aan van DS3231 en laat de I2C-bus vrij aan het einde van de leesseconde = Wire.read(); // Lees seconden van register 0 minuut = Wire.read (); // Lees minuten van register 1 uur = Wire.read(); // Lees uur uit register 2 Wire.read(); // Lees dag uit register 3 (niet gebruikt) datum = Wire.read(); // Lees datum uit register 4 maand = Wire.read(); // Lees maand uit register 5 jaar = Wire.read(); // Lees jaar uit register 6 DS3231_display(); // Diaplay-tijd en kalendervertraging (50); // Wacht 50ms}
Aanbevolen:
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Realtime apparaatherkenning met behulp van EM Footprints: 6 stappen
Realtime apparaatherkenning met behulp van EM-voetafdrukken: dit apparaat is bedoeld om verschillende elektronische apparaten te classificeren op basis van hun EM-signalen. Voor verschillende apparaten hebben ze verschillende EM-signalen die erdoor worden uitgezonden. We hebben een IoT-oplossing ontwikkeld om de elektronische apparaten te identificeren met behulp van Particle
SCARA-robot: leren over voorwaartse en inverse kinematica!!! (Plot Twist Leer hoe u een realtime-interface maakt in ARDUINO met PROCESSING !!!!): 5 stappen (met afbeeldingen)
SCARA-robot: leren over voorwaartse en inverse kinematica!!! (Plot Twist Leer hoe u een realtime interface maakt in ARDUINO met PROCESSING !!!!): Een SCARA-robot is een zeer populaire machine in de industriewereld. De naam staat voor zowel Selective Compliant Assembly Robot Arm als Selective Compliant Articulated Robot Arm. Het is in feite een robot met drie vrijheidsgraden, de eerste twee displ
Een klok maken van een klok: 11 stappen (met afbeeldingen)
Een klok maken van een klok: in deze Instructable neem ik een bestaande klok en creëer ik een betere klok. We gaan van de afbeelding links naar de afbeelding rechts. Voordat u op uw eigen klok begint, moet u weten dat het opnieuw in elkaar zetten een uitdaging kan zijn, aangezien de piv
Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel: 4 stappen (met afbeeldingen)
Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel: heb je ooit een melding willen ontvangen wanneer er een actie op je website wordt uitgevoerd, maar e-mail is niet de juiste keuze? Wil je bij elke verkoop een geluid of een belletje horen? Of er is direct uw aandacht nodig vanwege een calamiteit