4.1 Projet : Système d’éclairage
Commençons notre premier projet, le système d’éclairage.
Allumer une LED est l’une des pratiques KidsBlock les plus fondamentales.
Cette leçon de démarrage est conçue pour les débutants afin de comprendre le matériel et la programmation logicielle sur la carte de développement ESP32 et de maîtriser les connaissances de base en matière de circuit et de programmation.

Par conséquent, nos instructions de tutoriel sont simples. Et ce projet intrigant peut être appliqué dans des scénarios réels à la maison ou au bureau.
Dans ce projet, vous aurez appris les connexions et les réglages de base de la carte de développement ESP32 dans la programmation graphique KidsBlock. De plus, certaines fonctions vous seront également présentées, comme l’allumage/extinction d’une LED via le niveau de sortie d’une broche numérique ou par un bouton.
En somme, il s’agit d’un tutoriel d’entrée de gamme pour jeter les bases des pratiques de programmation KidsBlock ultérieures.
4.1.1 Diagramme de flux

4.1.2 Allumer une LED
Description :
La LED, abréviation de Light Emitting Diode (diode électroluminescente), est un semi-conducteur à l’état solide qui convertit l’énergie électrique en lumière visible, c’est pourquoi elle est également appelée éclairage à l’état solide.
Lorsque le courant traverse une LED, elle s’allume.
Diverses LED :

Le module LED est un dispositif de sortie dont la luminosité et les clignotements peuvent être contrôlés. Pour l’utiliser, il suffit de le brancher directement sur les broches de sortie numériques de la carte de développement.

Principe de fonctionnement :
Lorsque S est à un niveau haut, le triode Q1 est en conduction, et la tension VCC passe à travers la LED pour l’allumer.

Paramètres :
Tension : 3~5V
Courant : ≤1.5mA
Puissance : 0.07W
Schéma de câblage :
Connectez le module LED à io27.
Attention : Connectez le jaune à S (Signal), le rouge à V (Alimentation) et le noir à GND. Ne les inversez pas !

Code de test :
Ouvrez Kidsblock et choisissez le bon appareil et le bon port.

Faites glisser
de
vers la zone d’édition de code. Les blocs de code ne s’exécutent que lorsqu’ils se trouvent dans cette zone.

Avec ce bloc, au démarrage de la carte de développement, le code s’exécutera.

Dans
, faites glisser « pour toujours » et collez-le sous le bloc précédent. Le bloc « pour toujours » indique une boucle.

Faites glisser un bloc « sortie broche LED » de
et collez-le dans « pour toujours ». Réglez la broche sur IO27 et le niveau de sortie sur HIGH, de sorte que la broche LED continue à émettre un niveau haut.


Ajoutez un délai de 1s. Dupliquez le bloc « sortie broche LED » mais réglez la sortie sur LOW, et ajoutez également un délai. Ensuite, la LED s’allumera et s’éteindra en circulation.

Résultat du test :
La LED clignote toutes les secondes, car io27 sur la carte ESP32 émet alternativement un niveau haut et un niveau bas toutes les secondes. De plus, diverses applications interactives peuvent également être réalisées via une LED, comme une LED respirante, des lumières à flux d’eau et une lumière de police clignotante.
Niveau de puissance |
Résultat |
|---|---|
HIGH |
LED allumée |
LOW |
LED éteinte |
Extension : LED respirante
Description :
Les interfaces IO du MCU (comme l’ESP32) n’émettent que des signaux numériques (niveau haut ou bas). Par exemple, dans l’expérience précédente (allumer une LED), les sorties numériques sont uniquement HIGH (3.3V) et LOW (0V).
Si le MCU émet un niveau haut de 3.3V ou un niveau bas de 0V, la tension d’entrée doit être de 0~3.3V. Ainsi, le PWM (Modulation de Largeur d’Impulsion) est nécessaire pour émettre différentes valeurs de tension, ce qui est appelé “sortie analogique”.

Connaissances :
Qu’est-ce que le PWM ?
Le PWM contient trois éléments : Fréquence (Hz), Période, Cycle de service (%).
Fréquence PWM (f) : le nombre de fois où le signal passe de haut à bas et revient à haut en une seconde. Généralement, la Fréquence est le nombre de Périodes PWM en une seconde.
Période PWM (T) : Période = 1 / Fréquence (T=1/f, et 1 signifie 1 seconde). Par exemple : f = 50Hz, donc T = 20ms, ce qui implique qu’il y a 50 Périodes par seconde.
Cycle de service PWM : le rapport de temps entre le niveau HIGH et la Période entière. Si Période = 10ms et que 8ms est le temps de largeur d’impulsion, le niveau bas occupe 2ms, donc le Cycle de service = 8/(8+2) = 80%.

Conclusion : À une fréquence de signal appropriée, le PWM modifie la tension de sortie effective en changeant le cycle de service dans une période. En termes simples, dans un temps spécifié, plus le port IO émet un niveau haut, plus la valeur PWM est grande, et plus la LED sera lumineuse.

Code de test :

Définissez une variable item et attribuez-lui la valeur 0.

Faites glisser un bloc « pour toujours » et collez-y un bloc « répéter ». Réglez le nombre de répétitions sur 255.

Faites glisser un bloc « mode variable » dans « répéter » et réglez le mode sur « ++ », ce qui signifie que item augmentera de 1 après chaque exécution.

Trouvez le bloc pour définir le PWM qui est contenu dans
comme indiqué ci-dessous, il vous suffit donc de définir la broche correspondante et la valeur analogique pour émettre le PWM.

Définir la broche LED :

Définir le canal : (16 canaux au total : y compris 0~15)

Définir la valeur de sortie PWM sur item, qui ajoutera automatiquement 1 de 0 à 255. La sortie PWM est de 0~255, nous définissons donc le nombre de répétitions à 255.

Ajouter un délai de 0,01s, afin que la LED s’allume progressivement plutôt que tout d’un coup.

Dupliquer le bloc “repeat” comme suit, mais définir le mode sur “--”, ce qui diminue la variable item à chaque fois. Et la LED s’estompera progressivement.

Résultat du test
La LED s’allume et s’éteint progressivement ; elle respire uniformément.

4.1.4 Un bouton
Description
Le module bouton est un dispositif d’entrée. Le microcontrôleur lit son niveau de puissance pour détecter si le bouton est pressé.

Schéma de principe :

Paramètres :
Tension : 3~5V
Courant : ≤1.1mA
Puissance : ≤5.5mW
Le principe du module bouton est un circuit contrôlé par ce bouton.
Lorsque le bouton est pressé, le circuit est en état fermé de sorte que le courant passe à travers le bouton vers la masse (GND), ce qui fait que la broche d’entrée numérique détecte un niveau bas.
Lorsque le bouton est relâché, le circuit est coupé et le niveau de la broche augmente en raison d’une résistance de rappel, ce qui fait que la broche numérique détecte un niveau haut.
Schéma de câblage :
Connecter le module bouton à io5
Attention : Connecter le jaune à S (Signal), le rouge à V (Alimentation) et le noir à GND. Ne pas les inverser !

Code de test
Initialiser d’abord le port série et définir le débit en bauds à 115200.

Définir la broche sur IO5 et le mode sur entrée. Ce qui suit est un bloc “forever”.

Lire le niveau de puissance de la broche numérique 5. Si c’est 1, afficher 1. Sinon, afficher 0.

Code complet :

Résultat du test
Ouvrez le moniteur série et définissez le débit en bauds correspondant.
Lorsque le bouton est relâché, la valeur est 1 ; si vous appuyez sur le bouton, elle devient 0.

Dans KidsBlock, nous pouvons lire l’état de la broche d’entrée numérique en programmant pour détecter si le bouton est pressé. Ainsi, de nombreuses applications interactives peuvent être réalisées via un module bouton, telles que l’allumage/extinction de LED et le réglage de la luminosité de l’affichage.
Extension : Bouton à verrouillage automatique
Un bouton à verrouillage automatique ne se relève pas lorsque vous le pressez sans le maintenir, et il ne se relève jamais à moins que vous ne le pressiez à nouveau. Il fonctionne comme un interrupteur. Pour les boutons ordinaires, une telle fonction peut être réalisée via un microcontrôleur et un logiciel.
Code de test
Définir deux variables : item comme la valeur lue du bouton et button comme la valeur décalée par le bouton.

Assigner la valeur lue du bouton à item.

Déterminer si le bouton est pressé. Si c’est le cas, décaler la valeur de button et l’afficher.

Délai de 0,01s pour éliminer le rebond du bouton.
Si un état fermé est détecté au niveau du bouton, un délai sera exécuté pour éliminer le Front Porch Jitter. Généralement, le délai est de 5ms à 10ms (les propriétés mécaniques décident). Une fois le rebond disparu, vérifiez à nouveau l’état du bouton. Si l’état fermé est toujours maintenu, il est confirmé qu’un bouton est pressé.
Lorsqu’un bouton relâché est détecté, un délai de 5ms à 10ms doit également se produire pour supprimer le Back Porch Jitter, afin que le programme du bouton puisse être exécuté.
Lorsque le bouton est pressé (la broche physique lit 0), la variable
buttonbascule à 1 (état du système : ON). Appuyez à nouveau,buttonbascule à 0 (état du système : OFF), alternativement.
Remarque : La broche physique du bouton lit 0 lorsqu’il est pressé et 1 lorsqu’il est relâché (en raison de la résistance de rappel interne). La variable
buttonest un interrupteur logiciel distinct qui bascule entre 0 et 1 chaque fois qu’une pression est détectée. Ne confondez pas la valeur brute de la broche avec la variable d’étatbutton.
Code complet :

Résultat du test
Téléchargez le code et ouvrez le moniteur série.
Lorsque vous appuyez une fois sur le bouton, 1 s’affiche. Si vous appuyez une deuxième fois sur le bouton, la valeur devient 0. Désormais, un bouton commun possède la fonction d’un bouton à verrouillage automatique.

4.1.3 Contrôle de l’éclairage
Description
Dans les expériences de base ci-dessus, nous avons modifié un bouton à verrouillage automatique pour contrôler la LED. Un bouton à verrouillage automatique convient à toutes les situations où un certain état doit être maintenu, par exemple, lorsque la LED doit rester allumée pendant une longue période, la carte de développement ESP32 est requise pour certaines opérations.
Dans cette expérience, nous allons utiliser la carte ESP32 PLUS pour vous guider dans la mise en œuvre d’un système d’éclairage et simuler des scènes réelles pour contrôler la lumière via le bouton.
Schéma de câblage :
Connecter le bouton à io5 et la LED à io27
Attention : Connecter le jaune à S (Signal), le rouge à V (Alimentation) et le noir à GND. Ne pas les inverser !

Code de test :
Flux de code :

Code complet :
Basé sur le code du bouton à verrouillage automatique, nous ajoutons des blocs “LED pin output”.

Résultat du test :
Lorsque vous appuyez une fois sur le bouton, la LED s’allume ; si vous appuyez à nouveau, la LED s’éteint. Cette opération est une boucle, ce qui est cohérent avec le principe d’éclairage dans la réalité.
Dans ce chapitre, nous avons démontré comment programmer et contrôler via KidsBlock, et nous avons appris les bases ainsi que certains concepts logiciels et matériels dans des expériences telles que le bouton à verrouillage automatique et le système de contrôle d’éclairage.
Ceux-ci sont essentiels pour un bon développeur KidsBlock. Ensuite, nous vous guiderons pour continuer à explorer plus d’applications et de compétences, que vous soyez débutant ou vétéran. Nous espérons que vous apprécierez le plaisir et les défis lors de l’apprentissage de KidsBlock. Passons à la suite !
4.1.5 FAQ
Q : La LED ne s’allume pas après le téléchargement du code.
R : Veuillez vérifier si la broche définie dans le code est cohérente avec celle de votre câblage. Si elles sont incompatibles, veuillez l’ajuster en vous référant au code.
Q : Le bouton fonctionne parfois et parfois non.
R : Veuillez modifier le délai d’élimination de la gigue à une valeur appropriée.