ESP32 connecté par Ethernet

Architecture

ESP32-ETH01

L’ESP32 est un micro-calculateur très performant avec son processeur double cœur, des interfaces numériques et analogiques, ses capacités de communication en Bluetooth et Wifi. Il existe également des cartes incluant, en complément, un connecteur RJ45 pour une connexion directe par Ethernet.

Configurations

Il existe 2 versions de cartes sur le marché :

  • ESP32-ETH01 :
    • version du chip : ESP32-DOWB-V3
    • revision : 301
    • Accès WiFi
    • Accès Ethernet
  • WT32-ETH01 :
    • version du chip : ESP32-DOWB
    • revision : 101
    • Accès WiFi crash
    • Accès Ethernet

J’ai une préférence pour la carte ESP32-ETH01, elle fonctionne en Ethernet et Wifi. La carte WT32-ETH01 , fonctionne en Ethernet mais je n’ai pas réussi à communiquer en WiFi.

La carte WT32-ETH01, à gauche, a un boitier ESP32 légèrement plus petit que celui de la carte ESP32-ETH01

Câblage

Le câblage du système avec carte Ethernet est similaire aux nombreux montages avec la carte ESP32 38 pins WiFi.

Pour l’affectation des GPIOs, il faut respecter quelques contraintes. :

  • Gpio 0 : à ne pas utiliser, à mettre à 0 avant la mise sous tension pour passer en mode programmation de la carte. Sinon laisser en l’air à 1 en fonctionnement normal de la carte
  • Gpio 1 ou TX0 : broche TX du port série 0 de communication
  • Gpio 2 : E/S (Entrée / Sortie) numérique er E/S analogique mais doit être à 0 lors de la programmation de la carte. A utiliser de préférence qu’en sortie.
  • Gpio 3 ou RX0 : broche RX du port série 0 de communication
  • Gpio 4 : E/S numérique et E/S analogique
  • Gpio 5 : E/S numérique, mais envoi un signal PWM lors du boot
  • Gpio 12 : E/S numérique Doit être à zéro pendant le Boot
  • Gpio 14 : E/S numérique et E/S analogique , mais envoi un signal PWM lors du boot
  • Gpio 15 : E/S numérique et E/S analogique, mais envoi les log du boot sur TX0 si à 1
  • Gpio 17 : E/S numérique
  • Gpio 32 : E/S numérique et E/S analogique
  • Gpio 33 : E/S numérique et E/S analogique
  • Gpio 36 : E numérique et E analogique
  • Gpio 39 : E numérique et E analogique
  • EN : mis à 0 brièvement puis relâché, il permet le reset de la carte
  • 3V3 : permet d’alimenter la carte en 3.3 volt ou peut fournir du 3.3V si la carte est alimentée en 5V
  • 5V : entrée + 5V d’alimentation
  • GND : Ground ou masse et moins de l’alimentation
  • LINK : permet de savoir si un câble Ethernet est branché ou pas

Attention, les GPIO fournissent en sortie des signaux entre 0 et +3.3V. En entrée, ils n’acceptent que des signaux entre 0 et +3.3V. NE JAMAIS appliquer du 5V sur une entrée de GPIO. Ce n’est pas comme des cartes Arduino.

Installation du logiciel

L’outil de développement Arduino IDE permet l’écriture et la compilation du logiciel. Il faut, dans les préférences de l’IDE, faire appel au gestionnaire de carte de « Espressif » qui développe l’ESP32. Allez dans Fichier / Préférences et mettez l’adresse : https://dl.espressif.com/dl/package_esp32_index.json

Les cartes avec le connecteur RJ45, ne dispose pas de connecteur USB pour la programmation. Il faut connecter une carte FTDI232. Le TX côté FTDI va sur le RX de l’ESP32 et le RX côté FTDI va sur le TX de l’ESP32. Mettre le jumper du FTDI sur 3.3V. Connecter les masses (Gnd). Connecter le 3.3V si votre carte ESP32 n’est pas alimenté directement.

Pour télécharger le code du programme, il faut mettre le GPIO0 à la masse (Gnd), puis mettre sous tension. On peut ensuite retirer la masse sur le GPIO0. Ensuite, demander à l’IDE Arduino de compiler le code source et télécharger le code objet.

Exemple application domotique

Pour vous familiariser avec cette carte, je vous propose une petite application avec différentes fonctions utiles à la domotique.

Mesure de température et humidité

On utilise un capteur DHT22 branché au GPIO17, la masse et le +3.3V. Il n’y a pas de résistance de pullup entre le +3.3V et la sortie Data comme sur certains schémas. Cela fonctionne ainsi avec la pullup de l’ESP32.
Dans la partie logicielle, il faut la bibliothèque « DHT.h ».

Mesure de pression atmosphérique

Un capteur BMP180 fourni la pression atmosphérique ainsi que la température autour de la carte. On se connecte à l’aide du bus I2C. On ne peut utiliser les GPIO par défaut, 21 et 22. Mais on prend 4 et 14. Pour le logiciel, on utilise la bibliothèque « Adafruit_BMP085.h » compatible du BMP180.

Mesure de luminosité

Un capteur de luminosité LM393, fourni une tension analogique entre 0 et 3.3V suivant la lumière captée par la cellule. La valeur est directement lue en analogique sur l’entrée GPIO32.

Détecteur de mouvement

Un capteur SR505 travaillant dans l’infra rouge (GPIO39), détecte les mouvements des humains ou animaux. Attention, pour bien fonctionner, il doit travailler en 5V. Le signal en sortie, monte seulement à 3.3V pendant quelques secondes en cas de détection.

Diode LED de bon fonctionnement

Une diode LED sur le GPIO2 derrière une résistance de 330 ohm à 1000 ohm, clignote toutes les 2s pour montrer que l’ESP32 fonctionne.

Watchdog

Pour la partie logicielle, un watchdog surveille en permanence la connexion Ethernet en testant l’accès à un serveur distant (le votre ou Google ou …). Après 3mn de non-réponse, l’ESP32 se reset.

Veille

Bien que la consommation de l’ESP32 soit faible, vu que son travail pour suivre les différents capteurs est minime, toutes les secondes, on l’endort seulement1s pour ne pas retarder la liaison Ethernet.

Serveur Web

Un serveur web est implanté pour accéder aux différentes mesures depuis un PC ou un smartphone.

Toutes les 10mn on fait un report vers un serveur distant avec une simple requête GET comme celle-ci : http://distant_server.com/My_report.php?server=Exemple2025&temp_piece=22.2&humidite=55….

Le programme de l’ESP32, date les mesures en allant chercher l’heure sur internet.

Mise à jour par OTA (On The Air)

Après une première installation du logiciel par la carte FTDI, il est possible de mettre à jour le logiciel par Ethernet en utilisant la bibliothèque ArduinoOTA.

Logiciel Source

Dans le fichier zip, ci dessous, vous trouverez tout le source. Si un des capteurs n’est pas présent (DHT22 ou BMP180) masquez le code correspondant pour ne pas faire crasher le logiciel.

Réalisation d’un routeur Photovoltaïque

Un autre exemple de réalisation : un routeur photovoltaïque .

Choix de l’alimentation

En général une alimentation 5V 1A suffit. Si votre ESP32 ne démarre pas correctement, il se peut que l’alimentation n’arrive pas à fournir l’impulsion de courant qui permet un « Reset » franc pour lancer la procédure de boot. Dans ce cas changer d’alimentation.

Alimentation POE

Pour l’alimentation du module, on peut fournir du 5V ou du 3.3V sur la pin adequate. Une alternative est d’alimenter via le câble Ethernet par la méthode POE (Power Over Ethernet).

Du 48 V est envoyé sur le câble Ethernet, via une alimentation 230V / 48V. Un séparateur ou splitter sépare le signal Ethernet et l’alimentation en fournissant du 5V.

Les principaux Achats

Option POE (Power Over Ethernet)

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...