4.3.1 Smart Temperature Control Fan

4.3.1.1 Overzicht

Img

Wanneer de binnentemperatuur de vooraf ingestelde standaardwaarde overschrijdt, schakelt de slimme ventilator in om de kamer af te koelen tot een comfortabele temperatuur. Daarnaast toont het OLED-scherm in real-time de huidige binnentemperatuur en de bedrijfsstatus van de ventilator, waardoor gebruikers intuïtieve feedback krijgen over de temperatuurregeling.

Img

4.3.1.2 Componentkennis

Img

Microbit Temperatuursensor

Img

De micro:bit hoofdprint is eigenlijk niet uitgerust met een speciale temperatuursensor, maar gebruikt de nRF52833 chip voor temperatuurmeting. Daardoor is de gemeten waarde veel dichter bij de temperatuur van de processor, waardoor er enige afwijking ten opzichte van de omgevingstemperatuur kan optreden.

Het detectiebereik is -40 ~ 105℃.

OLED Display

Img

OLED-technologie heeft aanzienlijke voordelen zoals rijke kleurweergave, hoog contrast en brede kijkhoek, wat zorgt voor duidelijke en levendige beelden, vooral zeer goed in zwarttinten.

Elke pixel van het OLED-scherm zendt zelf licht uit zonder achtergrondverlichting, waardoor het relatief weinig stroom verbruikt. Met zijn kleine formaat (0,96 inch), hoge resolutie (128×64 pixels) en laag stroomverbruik is het zeer geschikt voor draagbare apparaten.

⚠️ Opmerking: In dit project is de OLED-module aangesloten met SDA op pin P20 en SCL op pin P19.

Parameters:

  • Bedrijfsspanning: DC 3.3V-5V

  • Werkstroom: 30mA

  • Interface: pin headers afstand 2.54mm

  • Communicatiemodus: I2C-communicatie

  • Interne driverchip: SSD1306

  • Resolutie: 128×64

  • Kijkhoek: groter dan 150°

130 Motor

Img

Op de 130-motormodule bevindt zich een DC-motor die werkt op basis van elektromagnetische inductie en Lorentzkracht. Hij bestaat voornamelijk uit een stator, een rotor en een commutator. De stator genereert een vast magnetisch veld, terwijl de rotor (anker), samengesteld uit spoelen, een magnetisch veld genereert wanneer deze wordt bekrachtigd. Wanneer stroom via de koolborstels en commutator de rotorspoel bereikt, wisselt het magnetische veld van de rotor met dat van de stator en ontstaat er een Lorentzkracht die de rotor doet draaien. Tijdens deze draaiing schakelt de commutator de stroomrichting, waardoor de rotor continu onder invloed van een kracht in dezelfde richting blijft en de rotatie behouden blijft. Door elektromagnetische inductie en Lorentzkracht zet de DC-motor elektrische energie om in mechanische energie.

Door de uitstekende snelheidsregeling en het hoge aanloopkoppel worden DC-motoren veel gebruikt in elektrisch gereedschap, voertuigen en huishoudelijke apparaten.

j124

De 130-motor kan in snelheid geregeld worden met PWM. Bij gebruik moeten twee pinnen worden aangesloten voor aansturing. Hij is geschikt voor toepassingen waar de ventilatorsnelheid moet worden aangepast, zoals computerkoeling en industriële productie. Hij is klein, licht en gemakkelijk te installeren, waardoor hij zeer praktisch is.

Schematische weergave:

Img

De HR1124S-chip helpt bij het aansturen van de motor. Echter, de motor vraagt een grote stroom en kan niet door een transistor aangestuurd worden, laat staan rechtstreeks door een IO-poort. Zodra er spanning op beide uiteinden van de motor wordt gezet, kan deze gaan draaien. De draairichting van de motor varieert met de spanningsrichting. Binnen het nominale spanningsbereik geldt: hoe hoger de spanning, hoe sneller de motor draait. Omgekeerd: hoe lager de spanning, hoe langzamer de motor draait, of in sommige gevallen kan hij helemaal niet draaien.

Er zijn twee bedieningsmodi: door hoge en lage niveaus (aan/uit besturing), en door PWM (snelheidsregeling).

Parameters:

  • Werkspanning: DC 5V

  • Bedrijfstroom: (Max)400mA@5V

  • Maximale vermogen: 2W

  • Rotatiesnelheid: (16000+10%) tpm@5V

Img

4.3.1.3 Vereiste componenten

Img

Img

Img

micro:bit V2 hoofdboard ×1

micro:bit uitbreidingsbord ×1

OLED display ×1

Img

Img

Img

130-motor ×1

micro USB-kabel ×1

4-pins draad ×2

Img

Img

Img

ventilator ×1

batterijhouder ×1

AA-batterijen(zelf mee te nemen) ×6

4.3.1.4 Bedradingsdiagram

⚠️ Let bij het bedraden op de kleur van de draden.

130 motor

draadkleur

micro:bit shield pin

micro:bit board pin

G

black

G

G

V

red

V2

V

IN+

blue

2

P2

IN-

green

16

P16

OLED display

draadkleur

micro:bit shield pin

micro:bit board pin

GND

black

G

G

VCC

red

V2

V

SDA

blue

20

P20

SCL

green

19

P19

Img

4.3.1.5 Code Flow

Img

4.3.1.6 Testcode

⚠️ Tip 1: Voordat je de code naar de Microbit-board downloadt, importeer je het bibliotheekbestand “oled_ssd1306.py” verwijzend naar Import Library on MU” .

Img

⚠️ Tip 2: De drempelwaarde 28 in de if()-voorwaarde kan worden aangepast aan de daadwerkelijke situatie.

Complete code:

"""
Theme: smart temperature control fan
Function: OLED displays the temperature value and the microbit temperature sensor controls the on and off of the fan
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
"""
# importeer gerelateerde bibliotheken
from microbit import *
from oled_ssd1306 import *

display.show(Image.HAPPY)  # LED-matrix toont een vrolijk patroon

# initialiseer en maak OLED leeg
initialize()
clear_oled()

while True:
    clear_oled()  # maak OLED leeg
    Temperature = temperature()  # Lees microbit temperatuursensor
    add_text(0, 0, "Temperature:")  # Geef de tekenreeks weer op de overeenkomstige positie van OLED
    add_text(13, 0, str(Temperature) + " C")  # Geef de temperatuur weer op de overeenkomstige positie van OLED
    if Temperature >= 28:  # wanneer Temperatuur >= 28℃, draait de ventilator
       add_text(0, 2, "Fan on")  # Geef de tekenreeks weer op de overeenkomstige positie van OLED
       pin2.write_analog(500)  # zet P2-pin naar analoog 500
       pin16.write_analog(0)  # zet P16-pin naar analoog 0
    else:  # anders: ventilator werkt niet
       add_text(0, 2, "Fan off")  # Geef de tekenreeks weer op de overeenkomstige positie van OLED
       pin2.write_analog(0)  # zet P2-pin naar analoog 0
       pin16.write_analog(0)  # zet P16-pin naar analoog 0
    sleep(1000)

⚠️ Tip 3: De code gebruikt C in plaats van ℃, omdat ℃ vervormd weergegeven wordt op het OLED.

Img

Korte uitleg:

① Importeer de libraries van microbit en oled_ssd1306.

from microbit import *
from oled_ssd1306 import *

② De Microbit 5×5 LED-matrix toont Img.

display.show(Image.HAPPY)  # LED-matrix toont een vrolijk patroon 

③ Initialiseer de OLED-pixels en maak het OLED-scherm leeg.

initialize()  # initialiseer oled
clear_oled()  # maak oled leeg

④ Lees de temperatuurwaarde en toon deze op het OLED.

Temperature = temperature()  # Lees microbit temperatuursensor 
add_text(0, 0, "Temperature:")  # Geef de tekenreeks weer op de overeenkomstige positie van OLED
add_text(13, 0, str(Temperature) + " C")  # Geef de temperatuur weer op de overeenkomstige positie van OLED

⑤ Voorwaardelijke instructie: if()…else…

Wanneer de door de sensor gedetecteerde temperatuur groter dan of gelijk aan 28℃ is, toont het OLED “Fan on” en draait de ventilator. Anders toont het OLED “Fan off” en werkt de ventilator niet.

if Temperature >= 28:  # wanneer Temperatuur >= 28℃, draait de ventilator
   add_text(0, 2, "Fan on")  # Geef de tekenreeks weer op de overeenkomstige positie van OLED
   pin2.write_analog(500)  # zet P2-pin naar analoog 500
   pin16.write_analog(0)  # zet P16-pin naar analoog 0
else:  # anders: ventilator werkt niet
   add_text(0, 2, "Fan off")  # Geef de tekenreeks weer op de overeenkomstige positie van OLED
   pin2.write_analog(0)  # zet P2-pin naar analoog 0
   pin16.write_analog(0)  # zet P16-pin naar analoog 0

⑥ Pauzeer 1000ms (1s).

sleep(1000)

4.3.1.7 Testresultaat

Img

Na het aansluiten en inschakelen via de micro USB-kabel, verbind je de externe voeding (6 AA-batterijen) om voldoende stroomvoorziening te garanderen, en klik op “Flash” om de code naar de micro:bit te downloaden.

Img

Na het uploaden van de testcode, druk op de resetknop aan de achterkant van de micro:bit.

Img

De on-board 5×5 LED-matrix toont Img, en het OLED-scherm toont in real-time de temperatuur en de ventilatorstatus. Wanneer de temperatuur boven 28℃ komt, draait de ventilator. Anders werkt de ventilator niet.

Img

⚠️ Opmerking: De code gebruikt C in plaats van ℃, omdat ℃ vervormd wordt weergegeven op het OLED.

⚠️ Opmerking: De blokken (building blocks) in het experiment zijn niet inbegrepen in deze kit.

(Tip: Als er geen resultaat zichtbaar is, druk dan op de resetknop van de micro:bit.)

Img