Par Jeremy Cook
Découvrez les capacités de l'Espressif ESP32 avec un projet d'horloge Dali
Le système ESP32—Espressif, qui succède au module Wi-Fi ESP8266 incroyablement populaire et puissant, est encore plus performant que son prédécesseur. Il comporte en particulier une unité de traitement 32 bits à deux cœurs capable de fonctionner à 240 MHz et des fonctions de communication sans fil qui utilisent à la fois le Wi-Fi et le Bluetooth.
Il offre également une fonction tactile capacitive, des capacités de transfert de données I2S, de boucles audio à verrouillage de phase (PLL) et deux sorties de convertisseur numérique/analogique (DAC). On notera que ces fonctionnalités varient quelque peu entre les différents modèles d'ESP32.
Adafruit Huzzah23 (en haut) avec DFRobot Firebeetle (en bas)
Utilisation de l'ESP32 avec une horloge vidéo composite
Pour voir un exemple concret montrant comment utiliser l'ESP32 (à la fois facile à mettre en place et impressionnant), essayez l'horloge Dali Clock créée par Marcio L. Teixeira. Cette configuration utilise un vieux téléviseur avec une entrée composite et une carte de développement ESP pour afficher une horloge déformante à l'écran.
Comme tous les projets novateurs, celui-ci se juche, métaphoriquement parlant, sur les épaules de géants en combinant le concept d'horloge Dali (créé pour le Xerox Alto en 1979) et un décor de coucher de soleil déroulant dans le style pop art des années 1980. Au niveau technique, il reconnaît beaucoup devoir à un grand nombre de hacks et de hackers. Et, bien sûr, rien ne serait possible sans l'ESP32. Enfin, n'oublions surtout pas Salvador Dali lui-même, l'artiste original qui a inspiré cette réalisation.
Aussi impressionnants que soient ces hommages, vous n'aurez besoin que des composants suivants pour configurer cette horloge :
Le projet d'origine utilise une carte Adafruit Huzzah32 ESP32 Feather. En théorie, il serait possible de l'utiliser avec d'autres appareils compatibles ESP32 et j'ai d'ailleurs tenté de réaliser ce projet avec un module DFRobot FireBeetle ESP32. Tous deux présentent des caractéristiques similaires et fonctionnent normalement pour afficher la vidéo. Il existe cependant entre eux une légère différence sur laquelle je reviendrai plus loin.
Affichage de la vidéo
Configuration : chargement du code et connexion
Pour la configuration, téléchargez le code sur GitHub et transférez-le à l'ESP32 à l'aide de l'IDE d'Arduino. Vous trouverez des instructions plus explicites pour cette procédure ici
Vous devrez ajouter la capacité de fonctionner avec les cartes ESP32 sur l'Arduino IDE en affichant les préférences et en saisissant « https://dl.espressif.com/dl/package_esp32_index.json » dans la section Additional Boards Manager URL.
Sélectionnez ensuite votre carte de développement (dans notre cas, l'Adafruit ESP32 Feather ou la FireBeetle-ESP32), ainsi que le port série approprié, et chargez le code sur votre ESP.
Affichage de la vidéo
Connectez la broche de terre de la carte Adafruit Huzzah32 au cylindre extérieur de la prise RCA.
Connectez ensuite un autre fil depuis la broche A1 DAC1 à l'âme centrale de la prise à brancher dans l'entrée vidéo composite du téléviseur. Vous pouvez utiliser des pinces crocodiles pour vous connecter à une prise standard mâle/mâle. Des broches à vis sont également disponibles pour solidifier la connexion. Vous pouvez aussi ouvrir un câble RCA pour dénuder les fils.
Insérez la prise RCA dans le téléviseur ou le moniteur, connectez l'alimentation de la carte de développement et réglez le téléviseur sur la source d'entrée correcte.
Voilà, vous avez à l'écran une horloge Dali molle qui, à ce stade, affiche presque certainement une heure incorrecte. Pour rectifier la situation, connectez-vous au réseau Wi-Fi « ESP32 Dali Clock » généré par l'ESP32 avec un téléphone ou un ordinateur pour configurer les paramètres sur une interface de navigateur. Une fois correctement configuré, il devient accessible depuis votre réseau domestique. L'heure peut être réglée automatiquement par NTP/fuseau horaire, mais vous pouvez aussi le faire manuellement si vous préférez.
Branchement du dispositif
L'horloge peut également se transformer pour afficher la date plutôt que l'heure. Connectez les fils à A5 4 et A4 36 sur la carte Huzzah et touchez-les tous les deux avec le doigt pour activer cette fonction (je n'ai pas essayé sur la FireBeetle, mais ça doit être possible). On peut également la régler de façon à changer de couleur au cours de la journée, ce qui a l'air très amusant.
Fonctionnalités utilisées sur l'ESP32
Outre une vitesse de traitement élevée (qui aurait été impressionnante sur des ordinateurs fixes il n'y a pas si longtemps), ce projet met en valeur quelques caractéristiques de l'ESP32 :
Repousser les limites
Selon cette vidéo distincte, qui montre comment réaliser une configuration comparable à celle-ci, l'ESP32 ne comporte en réalité pas de capacités de vidéo composite dans ses spécifications. Toutefois, le fait qu'elle soit capable de réaliser une conversion numérique/analogique (DAC) et qu'elle utilise le protocole I2S la rend très performante et en fait un outil généraliste qui peut servir à réaliser des projets vidéo rétro-futuristes.
On trouvera davantage d'informations sur la façon dont Marcio a réussi à la transformer en sortie vidéo en profitant des capacités PLL de l'ESP32 sur cette page GitHub.
Dans mon exemple extrêmement limité avec une seule carte, chaque affichage sur un unique téléviseur avec l'Adafruit Huzzah32 a très bien fonctionné. La FireBeetle, une fois trouvées les broches de sortie équivalentes, a également fonctionné, mais présente quelques problèmes de synchronisation intermittents.
Un peu plus d'informations sur les deux cartes : la Huzzah32 utilise un module Wi-Fi ESP32-WROOM-32E, tandis que la carte DFRobot utilise un ESP32-WROOM-32D. Bien que les deux cartes se valent largement, la -32E intègre quelques améliorations, notamment sa façon d'interagir avec l'oscillateur cristal pour dicter l'horodatage processeur.
Il se peut que quelques différences de conception mineures soient à l'origine des différences d'affichage entre la -32D et la -32E sur mon téléviseur. Cela étant, dans l'immense majorité des cas où l'ESP n'est pas poussée dans ses retranchements de façon créative, l'un comme l'autre des deux modules devrait pouvoir exécuter sans problème la tâche qu'on lui confie. En revanche, si vous possédez une application de production qui doit exploiter toute la puissance de l'ESP-32, il n'est pas inutile de vous demander quelle version de l'ESP-32 utiliser.