### 3.3.7 Temperatuur- en vochtigheidsregeling
#### 3.3.7.1 Overzicht

In dit project laten we zien hoe je een systeem voor temperatuur- en luchtvochtigheidsregeling bouwt met een micro:bit-board, XHT11 temperatuur- en vochtigheidssensor, 130 motor, vernevelingsmodule en OLED-display.
Het systeem meet de omgevingstemperatuur en -vochtigheid met de XHT11-sensor en stelt deze bij door de rotatie van de ventilator en het sproeien van watermist door de vernevelingsmodule naar behoefte te regelen. Wanneer de temperatuur of luchtvochtigheid de ingestelde drempel overschrijdt, schakelt het de ventilator in en sproeit de vernevelingsmodule watermist. Tegelijkertijd toont het OLED-display de huidige temperatuur en luchtvochtigheid in realtime.
Omdat het temperatuur en luchtvochtigheid kan regelen, wordt het veel toegepast in projecten die deze grootheden moeten beheersen.

#### 3.3.7.2 Componentkennis

**XHT11 Temperatuur- en Vochtigheidssensor**

De XHT11 temperatuur- en vochtigheidssensor geeft digitale signalen uit. Hij neemt analoge signalen op en zet deze om, en meet temperatuur en luchtvochtigheid met uitstekende langetermijnstabiliteit en hoge betrouwbaarheid. Daarnaast bevat hij een hoog-precisie resistieve vochtigheidssensor en een resistieve thermogevoelige temperatuursensor, en is verbonden met een 8-bit hoogpresterende single-chip microcontroller.
**XHT11 communicatiemodus:**
De XHT11 maakt gebruik van een vereenvoudigde één-draads buscommunicatie. Eén-draads bus betekent dat er slechts één datalijn is, dus data-uitwisseling en besturing in het systeem verlopen allemaal via deze lijn.
- Definitie van eendraadse gegevensbitoverdracht:
- Eendraadse dataformaat: 40 bits worden tegelijk verzonden, waarbij de hogere bits eerst komen.
- 8-bit vochtigheidsinteger + 8-bit vochtigheidsdecimaal + 8-bit temperatuurinteger + 8-bit temperatuurdecimaal + 8-bit pariteitsbit. **Let op: het decimale deel van de vochtigheid is 0.**
- Definitie van het pariteitsbit:
- 8-bit vochtigheidsinteger + 8-bit vochtigheidsdecimaal + 8-bit temperatuurinteger + 8-bit temperatuurdecimaal. De 8-bit pariteitsbit is de laatste 8 bits van het resultaat.

Tijdreeksdiagram van de gegevens:
Nadat de host (MCU) eenmaal een startsignaal heeft verzonden, schakelt de XHT11 van laagverbruikmodus naar hoogsnelheidsmodus. Zodra het startsignaal van de host eindigt, stuurt de XHT11 een responssignaal, geeft 40-bit data uit en voert signaalsampling uit. De signaaloverdracht is hieronder weergegeven.

⚠️ **Opmerking:** De temperatuur- en vochtigheidsgegevens die de host van de XHT11 leest, zijn altijd de vorige meetwaarde. Als het interval tussen twee metingen lang is, lees dan twee keer achter elkaar en neem de tweede verkregen waarde als de actuele waarde.
**Schema:**

**Specificaties:**
- Bedrijfsspanning: DC 3.3V~5V
- Bedrijfstroom: (Max)2.5mA@5V
- Maximale voeding: 0.0125W
- Temperatuurbereik: -25 ~ +60°C (±2℃)
- Vochtigheidsbereik: 5 ~ 95%R (nauwkeurigheid ±5%RH rond 25 °C)
- Outputsignaal: Digitaal bidirectionele één-draads bus
**Vernevelingsmodule**

De vernevelingsmodule bestaat uit een driver en een vernevelingsplaat, die water vernevelt. Hij kan worden aangestuurd door een microcontroller of door handmatige knoppen.
**Werking:** De vernevelingsmodule maakt doorgaans gebruik van ultrasone technologie om watermist te genereren. Hij bevat een piëzo-elektrische keramische plaat die begint te trillen wanneer er een hoogfrequente spanning op wordt aangelegd. De trillingen brengen kleine waterdeeltjes aan het oppervlak van het water bij elkaar, die vervolgens worden verspreid en fijne watermist vormen.
**Kwaliteit van de watermist:** Deze module kan water effectief omzetten in zeer kleine waterdeeltjes, doorgaans tussen 1 en 5 micron. Deze fijne mist verdampt en verspreidt zich makkelijker in de lucht en werkt daardoor als een effectieve bevochtiger.
⚠️ **Let op:**
**1. Nadat hij is ingeschakeld, moet de vernevelingsplaat in water geplaatst worden. Als hij langere tijd in de lucht blijft, wordt de plaat heet en kan hij doorbranden.**
**2. Plaats de vernevelingsplaat voorzichtig op het wateroppervlak. Als hij ondergedompeld is, genereert hij geen watermist.**
**Specificaties:**
- Bedrijfsspanning: DC 5V
- Installatiegat: diameter 4.8mm, afstand 16mm
- Afmetingen: 31mm lengte, 23mm breedte, 8mm hoogte
- Gewicht: 4.5g
- Bedrijfstemperatuur: -25°C tot +60°C
- Module-interface: 3-pins gebogen pennen, afstand 2.54
- Vernevelingsplaat-interface: PH2.0 vrouwelijke aansluiting
- Functie: gebruikt om water om te zetten in fijne watermist en in de lucht vrij te geven
**Afmetingen van de vernevelingsplaat:**

⚠️ **Opmerking: Trek zo veel mogelijk niet aan de draad op de plaat, anders kan het soldeer contact losschieten.**
**Gebruiksinstructies voor de vernevelingsmodule:**
Er zijn twee bedieningsmodi: via knoppen en via MCU-programmering.
**Knopbediening:** Druk op de knop om de vernevelingsmodule in te schakelen. Druk nogmaals op de knop om uit te schakelen.
**MCU-programmering:** Simuleer het indrukken van een knop. Under normale omstandigheden geeft hij high uit en low wanneer ingedrukt. Laat de knop los en hij geeft weer een hoog niveau uit.
Daarom hoeven we bij gebruik met een MCU slechts een korte laagspanningspuls (low) naar de module te sturen, net als het indrukken van de knop. We kunnen de start- of pauzetijd van de vernevelingsmodule regelen door de duur van het hoge niveau aan te passen.
**Installeer de wattenstaaf:**
1\. Doop de wattenstaaf volledig in water (zoek een container met voldoende inhoud om de gehele staaf met water te bedekken en laat deze meer dan 5 minuten weken zodat hij het water volledig opneemt).

2\. Plaats de vernevelingsplaat in de plastic beugel. Let op de richting van de plaat. Leg de draad in de groef van de beugel.


3\. Sluit de andere kant van de plastic beugel.

4\. Steek de wattenstaaf in het midden van de beugel. Zorg dat hij volledig naar beneden wordt geschoven tot hij de vernevelingsplaat raakt.

5\. Verbind de vernevelingsplaat met de PH2.0 vrouwelijke aansluiting van de module, zoals hieronder weergegeven.

6\. Sluit de vernevelingsmodule aan op het micro:bit shield en sluit een externe voeding aan.

7\. Dompel de wattenstaaf opnieuw minstens 3 minuten in water. Het water moet de staaf zoveel mogelijk bedekken, maar er mag geen water overlopen.

8\. Druk op de zwarte knop op de module en je ziet dat hij begint te sproeien. De watermist wordt ongeveer 3 seconden gesproeid. Druk nogmaals op de knop om uit te schakelen.
⚠️ **Let op: de vernevelingsplaat mag niet langdurig werken; elke inschakeling mag niet langer dan 5 seconden duren. Het is het beste om 1 tot 2 minuten te wachten totdat de wattenstaaf weer vol water is voordat je verdergaat. Anders kan hij doorbranden.**



#### 3.3.7.3 Vereiste componenten
| |  | |
| :--: | :--: | :--: |
| micro:bit V2 main board ×1 | micro:bit shield ×1 |vernevelingsmodule ×1|
||| |
|XHT11 temperatuur- en
vochtigheidssensor ×1|OLED display ×1 |130 motor ×1|
| |||
| micro USB-kabel ×1 |4-pin draad ×2 |3-pin draad ×2 |
| || |
|ventilator ×1|batterijhouder ×1|AA-batterijen(**zelf meebrengen**) ×6|
#### 3.3.7.4 Bedradingsschema
⚠️ **Let bij het bedraden op de draadm kleuren.**
| 130 motor | draadkleur | pin op micro:bit shield | pin op micro:bit-board |
| :--: | :--: | :--: | :--: |
| G | black | G | G |
| V | red | V2 | V |
| IN+ | blue | 2 | P2 |
| IN- | green | 13 | P13 |
| OLED display | draadkleur | pin op micro:bit shield | pin op micro:bit-board |
| :--: | :--: | :--: | :--: |
| GND | black | G | G |
| VCC | red | V2 | V |
| SDA | blue | 20 | P20 |
| SCL | green | 19 | P19 |
| vernevelingsmodule | draadkleur | pin op micro:bit shield | pin op micro:bit-board |
| :--: | :--: | :--: | :--: |
| G | black | G | G |
| V | red | V2 | V |
| S | yellow | 16 | P16 |
| XHT11 temperatuur- en
vochtigheidssensor | draadkleur | pin op micro:bit shield | pin op micro:bit-board |
| :--: | :--: | :--: | :--: |
| G | black | G | G |
| V | red | V1 | V |
| S | yellow | 0 | P0 |

#### 3.3.7.5 Code-flow

#### 3.3.7.6 Testcode
⚠️ **Let op dat de drempels 30 en 70 in de if()-voorwaarde aangepast kunnen worden aan de daadwerkelijke situatie.**
**Volledige code:**


**Korte uitleg:**
① Initialiseer OLED-pixels, maak het OLED schoon. De 5×5 LED-matrix toont . Definieer twee variabelen temperature en humidity en zet hun beginwaarden op 0, en zet de vernevelingsmodule uit.

② Ken de door de XHT11-sensor gelezen temperatuurwaarde toe aan de variabele temperature, en de vochtigheidswaarde aan de variabele humidity.

③ Het OLED toont de door de XHT11-sensor gedetecteerde temperatuur- en vochtigheidswaarden.

④ Voorwaardelijke instructie: if()...else...
Als de gedetecteerde temperatuur boven 30℃ is of de luchtvochtigheid boven 70%RH ligt, stopt de ventilator na 2 seconden draaien. Vervolgens begint de vernevelingsmodule te werken en sproeit watermist om de omgevingstemperatuur en -luchtvochtigheid te regelen. Ondertussen toont het OLED “Cooling/Humidifying”.

Anders werken de ventilator en de vernevelingsmodule niet en toont het OLED “Normal State”.

⑤ Pauzeer 500ms (0,5s)

#### 3.3.7.7 Testresultaat

Nadat alles is aangesloten en van stroom is voorzien met de micro USB-kabel, sluit je externe voeding (6 AA-batterijen) aan om voldoende vermogen te garanderen.
Voor de Windows 10 App klik je simpelweg op Download. Voor de browser stuur je het “.hex” bestand naar het micro:bit-board.
Na het uploaden van de testcode naar het micro:bit-board toont het OLED realtime de door de XHT11-sensor gedetecteerde temperatuur- en vochtigheidswaarden.
Als de gedetecteerde temperatuur boven 30℃ is of de luchtvochtigheid boven 70%RH ligt, stopt de ventilator na 2 seconden draaien. Vervolgens begint de vernevelingsmodule te werken en sproeit watermist om de omgevingstemperatuur en -luchtvochtigheid te regelen. Ondertussen toont het OLED “Cooling/Humidifying”. Anders werken de ventilator en de vernevelingsmodule niet en toont het OLED “Normal State”.

⚠️ **Opmerking: De bouwstenen (building blocks) in het experiment zijn niet inbegrepen in deze kit.**
(**Tip:** Als er geen resultaat wordt waargenomen, druk dan op de resetknop van het micro:bit-board.)
