4.3.1 Ventilateur à contrôle de température intelligent

4.3.1.1 Aperçu

Img

Lorsque la température ambiante dépasse la valeur standard préréglée, le ventilateur intelligent s’allume pour refroidir la pièce jusqu’à une température confortable. De plus, l’affichage OLED montre en temps réel la température intérieure actuelle et l’état de fonctionnement du ventilateur, fournissant à l’utilisateur un retour de contrôle de la température intuitif.

Img

4.3.1.2 Connaissances des composants

Img

Capteur de température micro:bit

Img

La carte principale micro:bit n’est en réalité pas équipée d’un capteur de température dédié, mais utilise la puce nRF52833 pour la détection de température. Par conséquent, la valeur détectée est beaucoup plus proche de la température du processeur, et peut donc présenter un certain écart par rapport à la valeur ambiante.

Sa plage de détection est de -40 ~ 105℃.

Affichage OLED

Img

La technologie OLED présente des avantages importants comme une riche restitution des couleurs, un fort contraste et un large angle de vision, offrant des images nettes et vives, particulièrement remarquables pour le noir.

Chaque pixel de l’écran OLED émet sa propre lumière sans rétroéclairage, ce qui entraîne une consommation d’énergie relativement faible. Avec sa petite taille (0,96 pouces), sa haute résolution (128×64 pixels) et sa faible consommation, il est très adapté aux appareils portables.

⚠️ Note : Dans ce projet, le module d’affichage OLED connecte l’interface SDA à la broche P20 et SCL à la broche P19.

Paramètres :

  • Tension de fonctionnement : DC 3.3V-5V

  • Courant de fonctionnement : 30mA

  • Interface : broches en header espacement 2.54mm

  • Mode de communication : I2C communication

  • Puce de pilotage interne : SSD1306

  • Résolution : 128×64

  • Angle de vue : supérieur à 150°

Moteur 130

Img

Sur le module moteur 130 se trouve un moteur DC qui fonctionne sur la base de l’induction électromagnétique et de la force de Lorentz. Il est principalement composé d’un stator, d’un rotor et d’un collecteur. Le stator génère un champ magnétique fixe, tandis que le rotor (armature), composé d’enroulements de bobines, génère un champ magnétique lorsqu’il est alimenté. Lorsque le courant passe par les charbons et le collecteur puis entre dans la bobine du rotor, le champ magnétique du rotor interagit avec le champ magnétique du stator, générant une force de Lorentz qui entraîne la rotation du rotor. Pendant cette rotation, le collecteur inverse la direction du courant, garantissant que le rotor soit continuellement soumis à une force dans la même direction, maintenant ainsi la rotation. Grâce à l’induction électromagnétique et à la force de Lorentz, le moteur DC convertit l’énergie électrique en énergie mécanique.

En raison de ses excellentes performances de régulation de vitesse et de son couple de démarrage élevé, les moteurs DC sont largement utilisés dans les outils électriques, les véhicules et les appareils ménagers.

j124

Le moteur 130 peut être régulé par PWM. Lors de son utilisation, deux broches doivent être connectées pour le contrôle. Il convient aux scénarios d’application où la vitesse du ventilateur doit être ajustée, tels que le refroidissement d’ordinateur et la production industrielle. Il est petit, léger et facile à installer, ce qui le rend très pratique.

Schéma :

Img

La puce HR1124S aide à piloter le moteur. Cependant, le moteur nécessite un courant important et ne peut pas être piloté par un transistor seul, encore moins directement par un port IO. Tant que la tension est appliquée aux deux bornes du moteur, il peut tourner. Le sens de rotation du moteur varie selon le sens de la tension. Dans la plage de tension nominale, plus la tension est élevée, plus le moteur tournera rapidement. À l’inverse, plus la tension est faible, plus le moteur tournera lentement, ou dans certains cas, il peut ne pas tourner du tout.

Il existe deux modes de contrôle : par niveau haut/bas (contrôle marche/arrêt) et par PWM (contrôle de la vitesse de rotation).

Paramètres :

  • Tension de fonctionnement : DC 5V

  • Courant de fonctionnement : (Max)400mA@5V

  • Puissance maximale : 2W

  • Vitesse de rotation : (16000+10%) tours/min@5V

Img

4.3.1.3 Composants requis

Img

Img

Img

micro:bit V2 carte principale ×1

micro:bit shield ×1

écran OLED ×1

Img

Img

Img

moteur 130 ×1

câble micro USB ×1

fils 4 broches ×2

Img

Img

Img

ventilateur ×1

porte-piles ×1

piles AA(à préparer par l’utilisateur) ×6

4.3.1.4 Schéma de câblage

⚠️ Lors du câblage, veuillez faire attention à la couleur des fils.

130 motor

wire color

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

wire color

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 Flux du code

Img

4.3.1.6 Code de test

⚠️ Astuce 1 : Avant de télécharger le code sur la carte micro:bit, veuillez importer le fichier de bibliothèque “oled_ssd1306.py” en vous référant à Import Library on MU” .

Img

⚠️ Astuce 2 : Le seuil 28 dans la condition if() peut être modifié selon la situation réelle.

Code complet :

"""
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
"""
# importer les bibliothèques liées
from microbit import *
from oled_ssd1306 import *

display.show(Image.HAPPY)  # La matrice LED affiche un motif heureux

# initialiser et effacer l'OLED
initialize()
clear_oled()

while True:
    clear_oled()  # effacer l'OLED
    Temperature = temperature()  # lire le capteur de température de micro:bit
    add_text(0, 0, "Temperature:")  # afficher la chaîne de caractères à la position correspondante sur l'OLED
    add_text(13, 0, str(Temperature) + " C")  # afficher la température à la position correspondante sur l'OLED
    if Temperature >= 28:  # lorsque Temperature >= 28℃, le ventilateur tourne
       add_text(0, 2, "Fan on")  # afficher la chaîne de caractères à la position correspondante sur l'OLED
       pin2.write_analog(500)  # régler la broche P2 à analog 500
       pin16.write_analog(0)  # régler la broche P16 à analog 0
    else:  # sinon, le ventilateur ne fonctionne pas
       add_text(0, 2, "Fan off")  # afficher la chaîne de caractères à la position correspondante sur l'OLED
       pin2.write_analog(0)  # régler la broche P2 à analog 0
       pin16.write_analog(0)  # régler la broche P16 à analog 0
    sleep(1000)

⚠️ Astuce 3 : Le code utilise C au lieu de ℃, car ℃ sera corrompu lors de l’affichage sur l’OLED.

Img

Brève explication :

① Importer les bibliothèques microbit et oled_ssd1306.

from microbit import *
from oled_ssd1306 import *

② La matrice LED 5×5 du Microbit affiche Img.

display.show(Image.HAPPY)  # La matrice LED affiche un motif heureux 

③ Initialiser les pixels de l’OLED et effacer l’OLED.

initialize()  # initialiser l'OLED
clear_oled()  # effacer l'OLED

④ Lire la valeur de température et l’afficher sur l’OLED.

Temperature = temperature()  # lire le capteur de température de micro:bit 
add_text(0, 0, "Temperature:")  # afficher la chaîne de caractères à la position correspondante sur l'OLED
add_text(13, 0, str(Temperature) + " C")  # afficher la température à la position correspondante sur l'OLED

⑤ Instruction de décision : if()…else…

Lorsque la température détectée par le capteur est supérieure ou égale à 28℃, l’OLED affiche “Fan on”, et le ventilateur tourne. Sinon, l’OLED affiche “Fan off” et le ventilateur ne fonctionne pas.

if Temperature >= 28:  # lorsque Temperature >= 28℃, le ventilateur tourne
   add_text(0, 2, "Fan on")  # afficher la chaîne de caractères à la position correspondante sur l'OLED
   pin2.write_analog(500)  # régler la broche P2 à analog 500
   pin16.write_analog(0)  # régler la broche P16 à analog 0
else:  # sinon, le ventilateur ne fonctionne pas
   add_text(0, 2, "Fan off")  # afficher la chaîne de caractères à la position correspondante sur l'OLED
   pin2.write_analog(0)  # régler la broche P2 à analog 0
   pin16.write_analog(0)  # régler la broche P16 à analog 0

⑥ Temporisation de 1000ms (1s).

sleep(1000)

4.3.1.7 Résultat du test

Img

Après avoir réalisé le câblage et alimenté via le câble micro USB, connectez une alimentation externe (6 piles AA) pour assurer une alimentation suffisante, puis cliquez sur “Flash” pour télécharger le code sur la carte micro:bit.

Img

Après le téléchargement du code de test, appuyez sur le bouton reset à l’arrière du micro:bit.

Img

La matrice LED 5×5 embarquée affiche Img, et l’écran OLED affiche en temps réel la température et l’état du ventilateur. Lorsque la température dépasse 28℃, le ventilateur tourne. Sinon, le ventilateur ne fonctionne pas.

Img

⚠️ Note : Le code utilise C au lieu de ℃, car ℃ sera corrompu lors de l’affichage sur l’OLED.

⚠️ Note : Les blocs de construction utilisés dans l’expérience ne sont pas inclus dans ce kit.

(Astuce : Si aucun résultat n’est observé, veuillez appuyer sur le bouton reset de la carte micro:bit.)

Img