ESP32 et Arduino

image

Ce qui s'est passé, c'est ce que tout le monde attendait depuis si longtemps et ce dont ils ont tant parlé - les nouveaux modules ESP32 ont commencé à être largement vendus et sont allés au public. Aujourd'hui, nous parlerons de ces modules du point de vue d'un utilisateur non professionnel habitué à travailler avec Arduino et à créer de petits projets pour la domotique ou tout simplement pour le plaisir et l'auto-apprentissage.

Ça marche du tout? Qu'y a-t-il avec le support de ces modules dans l'IDE Arduino? Vaut-il la peine de payer plus ou vaut-il mieux se limiter à l'ESP8266 déjà familier? Nous allons essayer de répondre à toutes ces questions ensemble, et à la fin de l'article, je donnerai un lien vers la véritable incarnation du travail d'ESP32 avec Arduino - une distribution de la version gratuite d' Arduino Mega Server pour la plate-forme ESP32.

Spécifications techniques


Je ne m'attarderai pas ici sur les spécifications ESP32 en détail, vous pouvez facilement les trouver sur Internet: chaque critique considère qu'il est de son devoir d'apporter une fiche technique au début de la revue ESP32. Je peux seulement dire qu'ils sont impressionnants et si vous abordez la question avec sérieux et réflexion, vous pouvez passer plus d'un an à étudier toutes les capacités du module et à l'expérimenter.

Laissons cela aux professionnels (ou à ceux qui se considèrent comme tels) et concentrons-nous sur le côté pratique de la question, compréhensible et accessible au simple mortel.

Prix ​​d'émission


Commençons par le prix. À l'heure actuelle, le module ESP32 dans les magasins en ligne chinois coûte 350 roubles et 500 dans la version de la carte avec un harnais et une interface USB. C'est contre 100 et 160 roubles pour le module ESP8266, respectivement. Comme vous pouvez le voir, la différence est plus de trois fois, bien que les valeurs absolues soient petites, chacune, si vous le souhaitez, peut vous permettre de dépenser 350 à 500 roubles sur un microcontrôleur. À titre de comparaison, l'Arduino Mega 2560 dans la même Chine coûte 600 roubles et en Russie environ 1000 (plus le coût du bouclier Ethernet).

Il ne reste plus qu'à savoir si cela vaut la peine de payer trois fois plus que pour l'ESP8266 et ce que nous en retirerons. (Pour l'avenir, je dirai que, à mon avis, cela en vaut vraiment la peine.)

Prise en charge dans Arduino IDE


Pour faire quelque chose avec le module, vous devez d'abord avoir son support dans l'IDE Arduino. Pour le moment, la prise en charge de ESP32 dans l'IDE Arduino est au niveau initial, mais assez décent et réalisable. Ceux qui ont peur de rencontrer des difficultés insurmontables ici ne peuvent pas s'inquiéter - les fonctions de base fonctionnent bien et vous ne remarquerez probablement aucune différence par rapport au travail sur d'autres contrôleurs.

Les choses sont légèrement pires avec les pilotes de périphérique, mais c'est certainement un phénomène temporaire. Le module est si populaire que la prise en charge de tout périphérique apparaîtra inévitablement dans un avenir proche.

Ajout de la prise en charge ESP32 à l'IDE Arduino


Maintenant, quelques informations pratiques sur l'installation du support ESP32 dans l'IDE Arduino. Internet regorge d'instructions à ce sujet, vous pouvez également les trouver en abondance. Je note seulement que toutes les instructions sont divisées en "anciennes", où Python est mentionné et "nouvelles", où GIT est mentionné. Naturellement, vous devez être guidé par de nouveaux.

Parmi les nombreuses instructions, la meilleure peut être appelée (curieusement) l'instruction officielle du fabricant du module.

github.com/espressif/arduino-esp32

Que je recommande d'utiliser. La seule mise en garde: GIT est facultatif, vous pouvez simplement télécharger le package de distribution et le décompresser dans le répertoire souhaité.

Remarque Tout ce qui suit s'applique à l'installation sous Windows 7 64 bits, puisque j'ai effectué toutes les expériences dessus, dans d'autres systèmes d'exploitation, les chemins peuvent différer de ceux indiqués.

Les fichiers de distribution doivent être dans le dossier

C:\Users\User\Documents\Arduino\hardware\espressif\esp32 

où C: est le nom de votre lecteur Windows et User est le nom de l'utilisateur dans le système d'exploitation (qui peuvent tous deux différer de ceux spécifiés).

Points d'installation non évidents pour ESP32


De nombreux utilisateurs se plaignent que rien ne fonctionne pour eux et que la prise en charge ESP32 dans l'IDE Arduino n'apparaît pas. Voici la chose: puisque les pilotes ESP32 sont en cours de développement, l'ordre de l'emplacement des répertoires système a été légèrement modifié. Le dossier de l'emplacement des esquisses dans les paramètres Arduino IDE doit être spécifié

 C:\Users\User\Documents\Arduino 

(avec les mêmes modifications apportées au lecteur et au nom d'utilisateur), et les fichiers de distribution doivent se trouver dans ce dossier, comme recommandé par le fabricant. Si ce point n'est pas pris en compte, la prise en charge de ESP32 dans l'IDE Arduino n'apparaîtra pas et rien ne fonctionnera.

Versions IDE Arduino


Vous entendez souvent dire que la prise en charge ESP32 n'est disponible que dans les dernières versions de l'IDE Arduino, ce n'est pas le cas - ESP32 fonctionne bien dans les versions antérieures, par exemple, la distribution Arduino Mega Server pour ESP32 a été développée dans la version 1.6.5 r2.

Avantages de l'ESP32


Parlons maintenant des avantages de l'ESP32 par rapport à son prédécesseur, l'ESP8266. Je ne m'attarderai pas sur des choses aussi évidentes que la puissance du processeur et la RAM, je peux seulement dire que vous devez vous efforcer de charger complètement ESP32 sur les tâches de bricolage et de domotique.

Épingles


Le talon d'Achille de son prédécesseur, le module ESP8266, était (et est) un très petit nombre de conclusions. Après avoir travaillé avec des contrôleurs tels que Arduino Mega et Arduino Due avec leurs dizaines de broches numériques et analogiques, travailler avec ESP8266 est déroutant: le nombre de GPIO est littéralement un et cela limite considérablement l'utilisation de ce module dans des projets réels.

image

L'ESP32, sinon complètement, est largement dépourvu de cet inconvénient. Le nombre de broches disponibles a été considérablement augmenté et de nombreuses entrées analogiques sont également apparues. 13 conclusions peuvent être qualifiées de totalement gratuites et accessibles à l'usage.

 GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33 

Si nécessaire, ils peuvent être ajoutés avec des fonctionnalités limitées et ne fonctionnant que sur l'entrée

 GPIO 34, 35, 36, 39 

Si vous sacrifiez certaines fonctionnalités et n'utilisez pas Serial, SPI ou I2C dans des projets spécifiques, vous pouvez ajouter 8 broches supplémentaires à ce nombre

 GPIO 1, 3, 5, 18, 19, 21, 22, 23 

Eh bien, il est possible d'utiliser 6 broches supplémentaires conçues pour fonctionner avec la mémoire flash interne (par exemple, si vous connectez une carte SD externe)

 GPIO 6, 7, 8, 9, 10, 11 

Comme vous pouvez le voir, il n'y a aucune comparaison avec l'ESP8266 - le nouveau module semble très bien dans le nombre de connexions possibles et il est très précieux dans les projets réels dans lesquels chaque broche est chère.

Vitesse de travail


J'ai déjà mentionné un processeur puissant, il faut maintenant dire quelques mots sur la vitesse de fonctionnement du réseau. Je trouve difficile de dire à quoi cela est lié, peut-être avec un processeur puissant, peut-être avec l'optimisation de la pile réseau, mais le module ESP32 sous le contrôle de l'Arduino Mega Server a montré des performances réseau record.

image

Le chargement d'une page avec un code CSS et JavaScript volumineux et une abondance de graphiques ne prend qu'une petite seconde - plus rapidement que sur n'importe quel autre contrôleur testé, y compris les contrôleurs câblés avec interface Ethernet W5100 et W5500.

En ce qui concerne le serveur Arduino Mega, cela supprime toutes les restrictions sur l'utilisation des graphiques et des bibliothèques JavaScript, à la fois en taille et en nombre.

Autres avantages


L'ESP32 est un appareil extrêmement high-tech, juste une liste sèche des fonctionnalités disponibles peut prendre plus d'une page, et la liste des avantages et des fonctionnalités avec des commentaires prendra un volume entier. Par conséquent, je me limiterai à cela, afin de ne pas encombrer l'article et de donner quelques exemples de travail avec le code ESP32 dans l'environnement Arduino.

Exemples de code


Mémoire non volatile


C'est ce que nous appelions l'EEPROM pour l'Arduino Mega. L'ESP32 n'a pas cette mémoire en tant que telle, mais ce module a son analogique et la bibliothèque correspondante pour travailler avec. Cette mémoire est appelée "NVS" (stockage non volatile).

Mais pour nous, il n'y a pas de différence - vous pouvez enregistrer les valeurs de la même manière et les lire après avoir éteint puis rallumé le contrôleur.

Exemple d'utilisation. Nous connectons la bibliothèque:

 #include <Preferences.h> 

Créer un objet prefs

 Preferences prefs; 

Nous initialisons le référentiel avec l'identifiant, par exemple, «nvs»:

 prefs.begin("nvs", false); 

false fait référence au choix du mode de lecture / écriture, dans ce cas, à la fois en lecture et en écriture. Nous enregistrons l'octet sous le nom "addr":

 prefs.putUChar("addr", 65); 

Nous lisons l'octet enregistré:

 byte b = prefs.getUChar("addr", 0); 

De la même manière, vous pouvez enregistrer et lire les valeurs de tout autre type de données. Maintenant, supprimez le stockage.

 prefs.remove("nvs"); 

Si vous regardez, c'est encore plus facile que de travailler avec une mémoire EEPROM non volatile standard sur des contrôleurs Arduino.

AnalogWrite ()


Une autre innovation qui peut dérouter un utilisateur novice est que la fonction familière AnalogWrite () manque dans ESP32. Au début, c'est très inhabituel, mais en fait, cette fonction est juste remplacée par son homologue plus fonctionnelle.

Prenons un exemple. Commençons par connecter la bibliothèque correspondante, bien que cela ne puisse pas être appelé une bibliothèque au sens plein du terme, il s'agit plutôt d'un fichier spécialisé avec une description des fonctions nécessaires. Le fait est que toutes les fonctions ne sont pas présentes directement dans l'IDE Arduino, certaines fonctions sont disponibles dans des fichiers situés dans le répertoire

 ...\Documents\Arduino\hardware\espressif\esp32\cores\esp32 

Dans ce cas, nous sommes intéressés par le fichier pour travailler avec PWM et LED, que nous connectons avec l'instruction suivante:

 #include "esp32-hal-ledc.h" 

Ensuite, nous devons définir le numéro de canal (0), la fréquence PWM (par exemple, 50 Hz) et la résolution (8 bits).

 ledcSetup(0, 50, 8); 

Les numéros de canaux peuvent être définis dans une plage de 0 à 15 et la résolution de 1 à 16 bits. Si vous sélectionnez une résolution de 8 bits, la plage de données qui contrôle le PWM sera comprise entre 0 et 255.

Ensuite, nous devons lier notre canal (0) à une broche GPIO, dans ce cas, la broche 22:

 ledcAttachPin(22, 0); 

Et vous ne devez pas oublier de configurer la 22ème broche à la sortie de la manière habituelle.

 pinMode(22, OUTPUT); 

Voilà, maintenant nous pouvons contrôler, par exemple, la luminosité de la LED, en indiquant simplement le numéro de canal et la valeur PWM (luminosité) dans la plage de 0 à 255.

 ledcWrite(0, 50); 

Autres exemples de code ESP32


La distribution Arduino Mega Server, le lien auquel je donnerai à la fin de l'article, à l'exception d'un système entièrement fonctionnel, est une vaste collection de code structuré qui a été testé et vérifié pour fonctionner sur le module ESP32. Vous pouvez l'utiliser comme un tutoriel pour entrer dans le sujet de la programmation sous ESP32.

Stabilité au travail


Arduino Mega Server pour ESP8266 a confirmé une disponibilité de plusieurs mois et démontre un fonctionnement absolument stable et je n'ai aucune raison de penser que le module ESP32 peut avoir des problèmes de stabilité. Au moins pendant tout le temps où j'ai créé la distribution AMS pour ESP32, je n'ai observé aucune défaillance ou redémarrage non autorisé du module. Tout fonctionne de façon très claire et prévisible.

Arduino Mega Server pour ESP32


Ceci est un autre représentant de l'écosystème AMS, qui comprend des contrôleurs et des cartes Arduino Mega, Due, 101, M0, AMS Home, ESP8266, Sonoff, ESP32, OLIMEX ESP32-EVB, etc. Grâce au processeur puissant et au fonctionnement rapide du réseau du module ESP32, l'interface Arduino Mega Server contient une abondance de graphiques et de scripts et cela n'affecte pas du tout sa vitesse - la page se charge presque instantanément.

image

Tout fonctionne de manière stable et prévisible, aucune panne ou comportement inadéquat du système ou du module n'a été détecté. Vous trouverez ci-dessous le journal de téléchargement AMS, à partir duquel vous pouvez trouver des détails sur le système.

image

La température du module, mesurée par le capteur de température intégré, varie de 50 degrés Celsius au démarrage à 55 degrés pendant le fonctionnement. Pendant le fonctionnement, la consommation de courant du module est d'environ 130 mA.

Perspectives


Vous n'avez pas besoin d'être un expert spécial pour prédire que maintenant, comme les champignons après la pluie, des planches sur ESP32 de différents formats et avec diverses fonctions commenceront à apparaître. Voici l'un des premiers signes de OLIMEX ESP32-EVB , une carte très intéressante pour laquelle dans un avenir proche un kit de distribution spécialisé Arduino Mega Server sera publié.

image

Conclusion


En fait, c'est tout ce que je peux dire sur le nouveau module ESP32 et son travail avec Arduino. Il laisse des impressions extrêmement positives, au moins c'était très agréable et intéressant pour moi de travailler avec lui. Le manque de bibliothèques pour prendre en charge les capteurs et les périphériques gâche un peu l'image, mais c'est un phénomène temporaire et bientôt tout ira bien.

Vous pouvez télécharger le kit de distribution Arduino Mega Server pour ESP32 sur la page de téléchargement du site officiel, bientôt la documentation correspondante y apparaîtra, et pour l'instant vous pouvez utiliser les brèves instructions du fichier readme.txt situé dans le kit de distribution.

Source: https://habr.com/ru/post/fr404685/


All Articles