Halloween Citrouille 2.0 - AZ-Delivery


Introduction

Dans cet article, je vais vous montrer comment utiliser un ESP32 ou un ESP8266, un multiplexeur I2C TCA9548A, deux écrans OLED de 1,3 pouce, trois capteurs ToF VL53L0X et un peu de bricolage pour donner un peu de vie à une citrouille pour Halloween. Allons-y.

Ce qu'il nous faut

Montant Composante Note
1 ESP32 NodeMCU ou ESP-32 Dev Kit C V4 ou ESP8266 D1 Mini
Affichage OLED I2C 128x64 1.3
1 VL53L0X Capteur de distance laser de temps de vol (ToF)
1 Multiplexeur TCA9548A I²C
Câble de connexion
1 Source de tension externe 5V (recommandée)
1 Condensateur de 100 µF (recommandé)
PC avec Arduino IDE et connexion Internet
Fer à souder (pour les pinheaders)
Citrouille (pas tout à fait aussi grosse, environ 15 à 20 cm de diamètre)
Outil de sculpture (de la cuisine)



Pour le fonctionnement de la batterie :

Montant Composante Note
1 Batterie LiPo 3,7 V
1 MT3608 Module de renforcement
1 TP4056 Module contrôleur de charge
Interrupteur
Voltmètre


Schéma du circuit

Installez le circuit selon le schéma suivant:

TCA9548A I²C Multiplexer

ESP8266 Pins

Spannungsquelle

VIN

5V

5V

GND

GND

GND

SDA

SDA (D1, GPIO5)

 

SCL

SCL (D2, GPIO4)

 

TCA9548A I²C Multiplexer

OLED Display 1 (Links)

 

SD0

SDA

 

SC0

SCK

 

 

GND

GND

 

VDD

5V

TCA9548A I²C Multiplexer

OLED Display 2 (Rechts)

 

SD1

SDA

 

SC1

SCK

 

 

GND

GND

 

VDD

5V

TCA9548A I²C Multiplexer

ToF Sensor 1 (Mitte)

 

SD2

SDA

 

SC2

SCK

 

 

GND

GND

 

VIN

5V

TCA9548A I²C Multiplexer

ToF Sensor 2 (Links)

 

SD3

SDA

 

SC3

SCK

 

 

GND

GND

 

VIN

5V

TCA9548A I²C Multiplexer

ToF Sensor 3 (Rechts)

 

SD4

SDA

 

SC4

SCK

 

 

GND

GND

 

VIN

5V


J'ai ajouté un condensateur de 100 µF_ en parallèle à la source de tension, car les ESP sont très sensibles aux fluctuations de tension. C'était un conseil d'un forum.

La D1 Mini et certaines ESP32 n'ont pas de code VIN. Dans ce cas, utilisez une tension constante de 5V sur la broche 5V du microcontrôleur. Faites attention à la fiche technique.

Si vous utilisez une batterie LiPo 3,7V comme moi, je recommande le module Step up MT3608 et le module de contrôle de charge TP4056, car vous devez ajuster la tension. Utilisez un voltmètre et réglez la tension correcte sur le potentiomètre (si la tension ne change pas, vous devrez tourner dans le sens inverse des aiguilles d'une montre pendant très longtemps). Vous pouvez facilement recharger la batterie en utilisant le régulateur de charge. J'ai également ajouté un interrupteur à la sortie de tension du convertisseur pour éviter d'avoir à débrancher la batterie à chaque fois.

NOTES IMPORTANTES :

ASSUREZ-VOUS DE NE PAS CONNECTER L'ALIMENTATION ÉLECTRIQUE EXTERNE ET LE PORT USB EN MÊME TEMPS! - IL N'Y A PAS DE DIODE DE BLOCAGE ENTRE LES DEUX CONNECTEURS.

NE PAS CONNECTER UNE TENSION EXTERNE SUR LA PIN 3,3V - il y a un convertisseur de tension sur la carte, qui fournit la tension appropriée à partir du 5V à la pin 3,3V.

LA TENSION EXTERNE NE DOIT PAS DÉPASSER 5V - contrairement aux Arduinos bien connus, les cartes ESP n'ont pas de convertisseur de tension intégré pour générer une tension constante de 5V au niveau de la broche VIN. Vous ne pouvez donc pas connecter des batteries de 9V directement ici.

NE PAS AFFICHER LES IMAGES PÉRIODIQUEMENT - il est recommandé de changer les pixels, car l'affichage des mêmes images au fil du temps peut provoquer un burn-in (brûlage).

La carte multiplexeur, la ToF-Sensor-Board et la carte d'affichage sont dotées de convertisseurs de tension intégrés, de sorte que 5V ou 3,3V peuvent être connectés.

Veuillez vous référer aux fiches techniques de vos composants. Je n'assume aucune responsabilité pour les dommages dus à une mauvaise manipulation.

Paramètres du Conseil

Voici mes réglages pour les conseils respectifs. Le réglage de la fréquence du CPU est important, car il me permet d'augmenter la vitesse d'horloge du bus I2C. Il est également recommandé de régler Erase Flash to All Contents sur la carte ESP8266.

ESP8266 D1 Mini:


ESP32 NodeMCU Devkit:


Les composantes

Le I2C multiplexer

Comme vous l'avez déjà vu ci-dessus, la carte de multiplexage possède plusieurs connecteurs:


Au VIN et au GND, la carte est alimentée avec un voltage de 3,3V ou 5V. SDA et SCL sont les entrées pour le bus I²C du microcontrôleur. Contrairement aux broches TX/RX, elles ne sont pas interconnectées. SDA à SDA et SCL à SCL (ou aussi SCK). Avec la broche RST sur GND, la carte est réinitialisée. Avec les broches A0 à A2, l'adresse I²C standard (0x70) peut être modifiée par différentes combinaisons en 0x71 à 0x77. A0 est le bit le plus bas. Si la broche est réglée sur HIGH, l'adresse est augmentée de 1. Le réglage de la broche A1 sur HIGH augmente l'adresse de 2, la broche A2 sur HIGH de 4.

Les composants I²C sont connectés aux broches SD0/SC0 à SD7/SC7. Leurs adresses n'ont pas d'importance. Le microcontrôleur ne s'adresse toujours qu'au multiplexeur. Le multiplexeur reçoit un nombre de 0 à 7 écrit dans un registre via l'entrée du bus I²C, qui commute le flux de données vers la sortie correspondante. Semblable à un interrupteur de chemin de fer. Le capteur supporte une fréquence d'horloge maximale de 400 KHz. Il est possible de mettre plusieurs multiplexeurs en cascade. Ainsi, il est possible de contrôler jusqu'à 64 appareils avec 8 multiplexeurs.

VL53L0X Capteur de temps de vol

Pour plus d'informations, voir l'article du blog VL53L0X Time of Flight (ToF) Laser Distance Sensor.

J'utilise ici trois capteurs, dont je n'ai pas changé les adresses I²C.

Affichage 1,3" OLED I2C 128x64

Ce sont des écrans avec la puce SH1106. Les adresses I²C ne peuvent pas être modifiées, c'est pourquoi l'utilisation du multiplexeur est recommandée. Le contrôle n'est pas banal, vous devez donc utiliser des bibliothèques comme U8G2 ou OneBitDisplay, que vous pouvez installer via la gestion des bibliothèques.


Dans le livre électronique gratuit, vous trouverez un guide d'installation. Dans le billet de blog 1.3 inch OLED en fonctionnement M. Albert Vu a déjà montré comment programmer l'affichage.

La séquence du programme des résumés

Lorsque le programme est lancé, une courte animation des yeux doit être montrée pour un premier test fonctionnel. Ceux-ci disparaissent à nouveau et le programme passe en mode veille. Cela permet d'économiser les écrans et l'écran lumineux ne dérange pas toujours dans l'obscurité. L'effet de surprise lorsque quelqu'un s'approche de la citrouille est également important.

Si une personne s'approche et se retrouve en dessous de la limite indiquée, la citrouille se réveille lentement et les yeux sont affichés légèrement ouverts. Selon le capteur qui a frappé, les yeux regardent dans la direction appropriée (centre, gauche, droite). Si la personne s'approche un peu plus, la citrouille est éveillée et les yeux sont ouverts. Si la personne est trop proche de la citrouille, celle-ci aura peur et les yeux s'ouvriront encore plus.

Si la personne s'éloigne de la proximité de la citrouille, elle regardera autour d'elle pendant une minute de plus. À cette fin, différentes images des yeux sont affichées de manière aléatoire. Si après ce délai, personne ne se rapproche, l'animation off est à nouveau diffusée et le programme se remet en veille.

Pour le rendre un peu plus vivant, j'ai mis en place une animation clignotante. Pour cela, le générateur aléatoire sélectionnera des temps entre 4 et 6 secondes après lesquels les yeux fermés seront affichés pendant un temps très court.

Photos pour l'affichage

J'ai créé quelques images pour représenter les yeux. Il doit y avoir trois directions et trois niveaux de distance. Voici à quoi ressemblent mes images:


Les images doivent être créées dans le format d'image approprié (ici 64x128 pixels) et ensuite converties au format XBM. Vous pouvez le faire sur ce site. Le programme graphique GIMP est une autre possibilité. Vous y exportez les images au format XBM.

Ensuite, vous ouvrez les fichiers avec un éditeur de texte, de préférence un éditeur comme Notepad++. Vous pouvez ensuite copier les données et les coller dans le fichier imagedata.cpp à l'endroit approprié. J'ai déjà fait tout cela. Mon programme contient toutes les données.

Travail artisanal

Le carton est idéal pour un prototype qui peut être produit rapidement. Vous pouvez rapidement voir à quoi il ressemblera. De cette façon, l'électronique peut être testée.


Trouver un bon endroit pour les capteurs n'a pas été si facile. J'ai opté pour une sorte de piédestal:


N'oubliez pas que la citrouille est encore mouillée. J'ai protégé les circuits imprimés et les écrans avec du ruban adhésif pour éviter les courts-circuits. Vous pouvez fixer les écrans avec précaution de l'intérieur avec de petites vis.


Le microcontrôleur pourrait ne pas être en mesure de fournir la puissance nécessaire aux LED pour éclairer l'intérieur. On pourrait attacher une résistance LED à la sortie du convertisseur élévateur derrière l'interrupteur. Il s'allume lorsque vous mettez la technologie en marche.

Lorsque tout est en place, vous pouvez placer la citrouille dans un endroit où les gens passent souvent. Les yeux doivent pouvoir suivre le mouvement de façon approximative.

A la fin

Vous pouvez télécharger ici le programme complet.    

Il est possible que le microcontrôleur soit bloqué dans une boucle de démarrage. Vous pouvez le reconnaître par le fait que l'animation de démarrage des yeux n'est pas affichée. Causes ou solutions possibles:

- La source d'énergie n'est pas suffisante

- Mauvais réglages de la carte pendant le téléchargement (ESP8266 : CheckFlashConfig.ino, lancez ESP32 ResetReason)

- Débranchez et rebranchez le courant après le téléchargement

- Les loops donnent aux tâches de fond le temps de calcul avec rendement()


Comme vous pouvez le constater, la composition des images des deux écrans est légèrement retardée l'une par rapport à l'autre. Cela est dû à la fréquence d'horloge du bus I²C des ESP et du multiplexeur, qui ne peut malheureusement pas être accélérée davantage. Un éclairage intérieur devrait être ajouté. Si la puissance est encore suffisante, vous pourriez utiliser le DFPlayer pour générer du bruit.


Amusez-vous bien avec les bricolages.

Andreas Wolter

pour AZ-Delivery Blog

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione