Bluetooth-slimme thermostaat en verlichtingsbesturing met Arduino Nano
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino Nano R3 | 1 |
| HC-05 Bluetooth-module | 1 |
| Maxim Integrated DS18B20 1-Wire digitale temperatuursensor | 1 |
| OLED 1306 I2C bicolor display (128x64) | 1 |
| 4-kanaals relaiscontroller voor I2C | 1 |
Apps en online services
- Morich Serial Bluetooth Terminal (Android)
- Arduino Bluetooth Control Device (Android)
Over dit project
Inleiding
Een eenvoudig maar nuttig DIY Arduino-thermostaatproject met Bluetooth. Een intelligente thermostatroutine regelt de cv-ketel, en het systeem schakelt keukenverlichting en badkamer-ventilator via relais – bedienbaar via knoppen en Android-apparaat of computer via Bluetooth. Zowel Celsius als Fahrenheit versies beschikbaar! Alle onderdelen zijn handgemaakt.
Ontwikkeld op Arduino Nano (of hoger), gebruikt Dallas DS18B20 temperatuursensor, HC-05/06 Bluetooth-adapter, I2C 128x64 bicolor OLED-display – je kunt verschillende LCD/OLED-displays kiezen, de u8glib-bibliotheek ondersteunt veel typen.
Video
De video toont alle belangrijke werkwijzes en geeft ideeën hoe het project van het begin af aan te bouwen.
Verwarmingsmodi
- Eenmalige verwarming (15 min) tijdmodus, handig voor lente/herfstavonden
- Thermostaatmodus (hogere prioriteit), de ingestelde doeltemperatuur wordt opgeslagen in EEPROM-geheugen
Ketelbespaaralgoritme
Frequency, kortdurend schakelen zou de levensduur van de cv-ketel verkorten. Om dit te voorkomen gebruikt het programma correctiewaarden die de mate van oververhitting en afkoeling bepalen. Lagere temperatuur vraagt grotere correctiewaarden, omdat de muren kouder zijn en de warmte van de net verwarmte lucht beter absorberen, waardoor het effect sterker is.
Open-raamdetectie
Het programma detecteert of een raam openstaat: als de temperatuur minimaal -0,2°C (-0,36°F) per minuut daalt, stopt de verwarming of start niet, en de ventilator gaat aan om de lucht te verfrissen. Wanneer de lucht door de warmtecapaciteit van de omgeving minstens +0,12°C (+0,216°F) stijgt, schakelt het systeem terug naar normale modus en wordt de 'Raam-waarschuwing' genegeerd.
Foutdetectie
Gemeten temperatuur onder 0°C (32°F) of boven 40°C (104°F) wordt geëvalueerd als defect of ander probleem (fout, gebroken raam, brand, etc.), en alle apparaten worden uitgeschakeld.
Bluetooth-communicatie
De Android GUI-app heeft 8 knoppen en stuurt hoofd- en kleine letters om de tijdsverwarming ('A' aan, 'a' uit), ventilatie ('B'/'b'), verlichting ('C'/'c') te besturen.
Een sterke kant is de gebruiksvriendelijke Bluetooth-seriële terminal. Je kunt gewoon 'chatten' met het systeem via Bluetooth met een seriële terminal – een Android-app, maar ook een normale PC (bijv. Seriële Monitor van Arduino IDE).
De controller stuurt elke minuut automatisch temperatuurrapporten en direct rapporten over alle gebeurtenissen, zoals een apparaat in/uitgeschakeld, thermostatroutine geactiveerd, etc.
Besturingscodes
Het systeem accepteert besturingscodes en stuurt bevestigingsberichten. De commando-structuur is gebaseerd op twee-cijferige nummers 'XY' – waar 'X' de apparaatcode is en 'Y' de operatorcode:
- 30, 31, 32: Verlichting Uit / Aan / logische status omkeren
- 40, 41, 42: Ventilatie Uit / Aan / logische status omkeren
- 50, 51, 52: Eenmalige verwarming (15 min) Uit / Aan / logische status omkeren
- 10 – 24: Doeltemperatuur voor thermostaatfunctie (Celsius)
- 'r' – Rapport over werkstatus van bestuurde apparaten
- 'w' – Handmatig 'raam-waarschuwing' uitschakelen
- 'A, a… H, h' – Letters zoals de GUI-app zou sturen
Fahrenheit-versie
Alle correctievariabelen, referentie- en verhoudingswaarden zijn omgerekend naar Fahrenheit, zodat de berekeningen en werking behouden blijven.
Nieuwe apparaatcodes voor Fahrenheit-versie:
- 1 - Verlichting (10: uit, 11: aan, 12: omkeren)
- 2 - Ventilatie
- 3 - Verwarming
- 50 - 76: Doeltemperatuurwaarden
Het vervolg
UPDATE: Een compleet Home Automation-systeem met interne Bluetooth-link en spraakbesturing!
Bibliotheken & Links
- DallasTemperature, elapsedMillis, OneWire, SoftwareSerial, olikraus/u8glib
- Voor verschillende knopweerstanden of A0-uitlezing controleren: Tutorial: Multiple Buttons on 1 Analog Pin
Code
Twee versies beschikbaar:
- Thermostat v11 - Celsius version.ino
- Thermostat v11 - Fahrenheit version.ino
De code is goed gecommentarieerd, beschrijft elke belangrijke stap (wat, waarom, hoe) en is ingedeeld in modules per functie, waardoor het overzichtelijk is. De volledige code is te lang om hier volledig weer te geven, maar bevat alle logica voor temperatuurmeting, ketelbesturing, raamdetectie, foutafhandeling, Bluetooth-communicatie, display-updates en EEPROM-opslag.
Schema's
Voor testen met draadjes... (foto's van breadboard-opstelling en gesoldeerde versie)
Productieproces
- Geïntegreerde QR, RFID en Temperatuurverificatie Toegangscontrolesysteem
- Universele Android-afstandsbediening bouwen met Arduino, 1Sheeld en IR-besturing
- Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
- Arduino-gestuurd automatische plantenwateringssysteem
- Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
- Slimme Zelfzittende Schoenen met Ingebouwde Energie-opwekking
- Twee Stappenmotors Sturen met Arduino Nano & Joystick – Simpele Tutorial
- Arduino & MPU6050: Precieze Servomotor Besturing met SG90 & MG996R
- Spraakgestuurde huishoudapparaten: Bluetooth-besturing met Google Assistant
- Arduino Uno & Bluetooth voor afstandsbediening van auto: stap-voor-stap handleiding
- Geavanceerde slimme batterijlader met multiplexing en digitaal display