Inhoudsopgave:
Video: De DS3231 RTC (Real Time Clock) nauwkeurig, snel en geautomatiseerd instellen met Java (+-1s): 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Deze Instructable laat je zien hoe je de tijd instelt op een DS3231 Real Time Clock met behulp van een Arduino en een kleine Java-applicatie die de seriële verbinding van de Arduino gebruikt.
De basislogica van dit programma:
1. De Arduino stuurt een serieel verzoek.
2. Het Java-programma kijkt welke dag/maand/… de arduino heeft aangevraagd en stuurt de relevante gegevens terug.
3. Nadat alle benodigde informatie is verzameld, slaat de arduino de gegevens op in de DS3231.
De DS3231 RTC-module
De DS3231 RTC-module is een relatief goedkope RTC-module met een hoge nauwkeurigheid. (een paar minuten per jaar)
Er zijn verschillende varianten waarvan de basisfunctionaliteit hetzelfde is met slechts kleine verschillen.
Gedetailleerde vergelijking vindt u hier: DS323x Vergelijking | maximintegrated.com
Koop DS3231:DS3231 | ebay.com
Gegevensblad:DS3231 Gegevensblad | maximintegrated.com
Gegevensblad:DS1307 Gegevensblad | maximintegrated.com
Onderdelen nodig
1x Arduino (Nano, Uno, MEGA, enz.)
4x jumperdraden
1x DS3231-module (DS1307-module)
Stap 1: Bedrading
Bedraad de DS3231 zoals weergegeven in de afbeelding hierboven. Je kunt het natuurlijk ook zonder breadboard doen, maar het zal wel wat rommeliger zijn. Ik heb een Arduino Nano gebruikt voor demonstratie, maar een Uno of een MEGA zou ook moeten werken. (Anderen werken misschien ook, maar ik ben te lui om te bevestigen)
- Arduino -> DS3231
- A4 -> SCL
- A5 ->SDA
- 5V -> VCC
- GND -> GND
Stap 2: De Arduino-code
Download het.ino-bestand van hieronder en upload het naar je Arduino (in mijn geval een Nano).
De schets heeft de volgende bibliotheken nodig om correct te werken:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
Een tutorial over het uploaden van code naar je arduino vind je hier (arduino.cc).
Controleer in de Arduino IDE of de code correct is ingediend. (Klaar met uploaden)
Uw Arduino is nu klaar om tijdinformatie te ontvangen
Download de code hier: DS3231TimeSync.zip (mediafire.com)
Download hier de bron: DS3231TimeSyncSRC.zip (mediafire.com)
GitHub-repository: DS3213 RTC Time Sync (github.com)
Bitbucket-opslagplaats: DS3231 RTC-tijdsynchronisatie (bitbucket.com)
Stap 3: De Java-toepassing
1. Voer de eerder gedownloade "DS3231Sync.jar" uit door erop te dubbelklikken
2. Er wordt een klein dialoogvenster geopend waarin u wordt gevraagd naar de poort van uw arduino
Mocht je niet zeker zijn over de poort die door je arduino wordt gebruikt, kijk dan eens in de Arduino IDE rechtsonder.
(Zie afbeeldingen hierboven)
3. Er wordt een ander dialoogvenster geopend waarin u wordt gevraagd om een tijdzone-offset
De offset is relatief ten opzichte van de lokale tijd van uw computer. Om de RTC op uw lokale tijd in te stellen, voert u gewoon +00:00 in.
Het is van cruciaal belang dat u de tijdzone-offset in een specifiek formaat invoert!
Het algemene formaat is +uu:mm of -uu:mm. Voeg altijd voorloopnullen toe!
(Bijvoorbeeld: -03:00; -06:00; +09:00; +02:30)
4. De Java-toepassing start een klein venster met console-uitvoer
Houd bevestigingsberichten in de gaten zoals: "Tijdset voltooid"
Wanneer het tijdinstellingsproces is voltooid, zal de code elke 5 seconden de huidige tijd op de DS3231 afdrukken. U kunt controleren of de tijd correct is ingesteld.
Mocht je na ~20s geen output krijgen, druk dan op de reset-knop op je arduino en wacht opnieuw.
Als het nog steeds niet werkt, controleer dan de schets op de Arduino en/of upload deze opnieuw. (Belangrijk: sluit de poort in de Java-toepassing voordat u deze naar de Arduino uploadt; anders blokkeert hij de seriële poort!) Stel vervolgens de verbinding opnieuw in het Java-programma in.
(Het Java-programma gebruikt LocalDateTime om de huidige datum te krijgen.)
De tijd is nu ingesteld. Veel plezier
Mocht je onoplosbare problemen hebben met het instellen van de tijd, reageer dan hieronder en deel je log.txt (in dezelfde map als de pot) met mij. Heel erg bedankt!