Arduino Temperatuurbewaking & Realtime Klok met 3.2" TFT-display
Onderdelen en benodigdheden
| Arduino Due | × | 1 |
Apps en online services
- Arduino IDE
Over dit project
Inleiding
Beste vrienden, welkom bij een nieuwe tutorial! Dit is Nick van educ8s.tv en vandaag bouwen we een realtime klok en temperatuurbewaking! Laten we beginnen.
Enkele weken geleden testte ik dit 3.2" kleuren TFT-display voor Arduino met zowel de Arduino Mega als de Due. Het display werkt prima, en ik bouwde een simpel project ermee: een temperatuurbewaking en realtime klok. Bovenin zie je de huidige datum en tijd, de huidige temperatuur, en onderaan de minimum en maximum temperatuur die gemeten zijn. Ik ontwierp ook een basisgebruikersinterface met simpele vormen. Alles werkt prima en het is een heel makkelijk en nuttig project om te bouwen. Laten we kijken hoe!
Stap 1: Alle onderdelen verzamelen
Benodigde onderdelen:
- Arduino Due
- 3.2" Kleuren TFT-display
- DS3231 RTC-module
- Male headers
- Draden
Kosten: ~$24. Arduino Due ~$14, display ~$8, RTC-module ~$2.
Stap 2: De DS3231 Realtime Klok Module
De DS3231 is een realtime klok (RTC) die met zijn batterij jarenlang tijd kan bijhouden door minimalistisch stroomverbruik.
De DS3231 is een goedkope, extreem nauwkeurige I2C realtime klok met een geïntegreerde temperatuurgecompenseerde kristaloscillator (TCXO) en kristal. Het apparaat heeft een batterijinvoer en behoudt nauwkeurige tijdmeting wanneer de hoofdboeding wordt onderbroken. De integratie van de kristalresonator verbetert de lange-termijnnauwkeurigheid en vermindert het aantal onderdelen in productie.
De RTC houdt seconden, minuten, uren, dag, datum, maand en jaar bij. De datum aan het einde van de maand wordt automatisch aangepast voor maanden met minder dan 31 dagen, inclusief schrikkeljaarcorrectie. De klok werkt in 24-uurs of 12-uurs formaat met AM/PM-indicator. Twee programmeerbare alarmtijden en een programmeerbare blokgolfuitgang zijn beschikbaar. Adres en data worden serieel over een bidirectionele I2C-bus overgedragen.
De module kost ~$2 inclusief batterij! We gebruiken hem voor tijd en temperatuurmettingen.
Stap 3: Het 3.2" Kleuren TFT-display (HX8357C of HX8357B)
Ik wilde al lang een groot display voor mijn Arduino-projecten. Toen ik zag dat deze 3.2-inch kleuren TFT voor Arduino Mega en Due te koop was voor minder dan $10, kon ik niet weerstaan. Met die prijs kun je niets mis doen.
Het display heeft een resolutie van 480x320 pixels en een SD-kaartadapter aan de achterkant (nog niet gebruikt). Let op: het display heeft een 3.3V-regulator, dus het werkt met zowel 5V als 3.3V logica.
Er zijn twee varianten: één met HX8357C-controller, één met HX8357B. Gelukkig werkt dezelfde bibliotheek voor beide.
Display-bibliotheek: Na downloaden, open User_Setup.h, comment regel 13 uit en uncomment regel 14 als je de HX8357C-driver hebt (zoals ik).
Stap 4: Onderdelen aansluiten
Ik gebruik de Arduino Due voor dit project, hoewel de langzamere Arduino Mega iets goedkoper is. De Due is veel sneller en heeft veel meer geheugen – ideaal voor dit project.
Eerst alles verbinden. Ik gebruik male headers om de RTC-module aan de Due te koppelen. We hebben 4 headerpinnen nodig: 2 voor voeding (3.3V en GND) en 2 voor I2C (SDA en SCL). Buig ze, Verbind 3.3V, GND, SDA, SCL. Met female draden de module aan het bord koppelen. Dat is het.
Nu het display op het bord monteren. Twee pinnen hoef je niet aan te sluiten, die laat ik los. Klaar om op te starten! Werkt direct. Laten we naar de code kijken.
Stap 5: De projectcode
We gebruiken twee bibliotheken:
- Display-bibliotheek
- DS3231-bibliotheek
Installeer beide en de project compileert zonder fouten.
Eerst de tijd instellen op de RTC-module als nog niet gebeurd. In de functie setRTCTime vul je de huidige datum en tijd in:
void setRTCTime(){
DateTime dt(2016, 4, 4, 13, 56, 30, 1); // Jaar, Maand, Dag, Uur, Min, Sec, Dag vd Week
rtc.setDateTime(dt);
}
Uncomment de aanroep in setup() en upload naar Arduino. Nu is de tijd ingesteld. Daarna comment je de aanroep weer uit en upload je opnieuw.
void setup(){
rtc.begin();
tft.init();
tft.setRotation(1);
tft.fillScreen(0xC618);
delay(100);
printUI();
// setRTCTime();
}
De code is simpel: we printen de UI en tonen datum, tijd en temperatuur.
void loop(){
float temperature = rtc.getTemperature();
getAndPrintTime();
printTemperature(temperature);
if(temperature > maxTemperature) {
maxTemperature = temperature;
updateMaxTemperature();
}
if(temperature < minTemperature) {
minTemperature = temperature;
updateMinTemperature();
}
delay(1000);
}
Volledige code downloaden: Projectwebsite
Stap 6: Afsluitende gedachten
Met een paar regels code en zeer lage kosten bouwen we een heel nuttig project. Ik ga er verder op werken om het uit te breiden tot een geavanceerde weerstation met meer sensoren, grafieken en WiFi-mogelijkheden. De Arduino Due is door zijn snelheid en geheugen het ideale bord. Wat vind jij van dit project? Hoe wil je dat het evolueert? Laat je reacties en ideeën in de comments achter!
Productieproces
- Sensor-gestuurde Audio-effecten Bouwen met de Satellite CCRMA Kit
- Bouw een Arduino Real-Time Clock voor Islamitische Gebedstijden
- Precisie Woordklok: Minuutnauwkeurige Tijdweergave in Woorden
- Interactief Nextion HMI-weerstation met Arduino Mega en sensoren
- TM1637 Digitale Klok met Tijdinstelling & Alarm – Arduino Nano Prototype
- Bouw een DIY Voltmeter met Arduino en Nokia 5110 Display – Stap-voor-Stap Handleiding
- BME280 Temperatuur, Vochtigheid & Druk Weergeven op Nextion Touchscreen
- Arduino & MPU6050: Precieze Servomotor Besturing met SG90 & MG996R
- u-blox LEA‑6H GPS Module: Arduino & Python Integratie Handleiding
- Spraakherkenning & Synthese Meesteren op Arduino Due
- Bouw een betrouwbare wekker met DS1302 RTC en Arduino UNO