Table des matières:
- Fournitures
- Étape 1: Comment ça marche ?
- Étape 2: Quelles sont les fonctions principales ?
- Étape 3: Construction du matériel
- Étape 4: Téléchargez le code de la passerelle
- Étape 5: Faisons la configuration de la passerelle
- Étape 6: Téléchargez l'exemple de code Arduino
- Étape 7: Passons au côté serveur
- Étape 8: Pour aller plus loin
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
J'ai déjà publié en 2016 cette instructable "Comment créer votre propre passerelle Wifi pour connecter votre Arduino au réseau IP". Depuis que j'ai fait quelques améliorations de code et j'utilise toujours cette solution.
Néanmoins il existe maintenant des shields ESP8266 qui permettent de faire tout à fait la même chose sans soudure tant que vous n'utilisez pas de cartes Micro ou Nano.
Cette instructable vous expliquera comment utiliser ces boucliers ESP82 comme passerelle série UDP/IP.
Cela fait partie d'une infrastructure domotique globale que vous pouvez consulter ici
Plus d'informations sur le bouclier avec cette instructable
Fournitures
1 Arduino Mega (le mieux est d'avoir au moins 1 Mega pour le développement et 1 Uno pour la phase d'exécution)
1 Convertisseur WIFI Rokoo ESP8266 ESP-12E UART
1 FTDI 3.3v
2 fils de planche à pain
Étape 1: Comment ça marche ?
La passerelle est basée sur un module ESP8266
Ce module est connecté d'un côté avec la liaison série de l'autre côté au réseau IP avec le Wifi.
Il agit comme une boîte noire. Les paquets de données provenant de la liaison série sont envoyés sur un port IP/Udp et vis et versa.
Il vous suffit de paramétrer votre propre configuration (IP, WIFI…) une fois la première mise sous tension de la Gateway.
Il peut transférer soit des données brutes ASCII et binaires (pas de HTTP, JSON…)
Il est conçu pour connecter des objets avec des logiciels de serveur faits maison qui nécessitent des transferts rapides et fréquents de courts paquets de données.
Étape 2: Quelles sont les fonctions principales ?
Il s'agit principalement d'une boîte noire qui convertit les données série en paquet UDP dans les deux sens.
Mais la passerelle peut aussi agir par elle-même en envoyant des informations internes au serveur et en recevant certaines commandes du serveur.
Arduino peut envoyer et recevoir des messages vers / depuis un serveur connecté via Internet simplement en imprimant / lisant une liaison série. Le développeur Arduino n'a pas besoin de se soucier du protocole IP.
En plus de cela, il fournit un GPIO qui peut être utilisé par Arduino pour vérifier que la passerelle est correctement connectée au WIFI et que la passerelle peut automatiquement basculer entre 2 SSID différents en cas de panne
La passerelle a 2 modes de fonctionnement différents qui sont sélectionnés en définissant un GPIO
Mettre GPIO à la terre et la passerelle entre en mode de configuration.
La configuration GPIO libre et la passerelle entre en mode d'exécution de passerelle.
De plus, la configuration de la passerelle UDP/IP peut être modifiée à distance
Étape 3: Construction du matériel
Très peu de choses sont nécessaires
1 ESP8266 Shield - J'ai trouvé ce module de carte d'extension UNO R3 ESP8266 Serial WiFi Shield à moins de 9€
1 UNO qui est la cible Arduino cible
1 Mega c'est l'outil de développement arduino (on peut s'en passer mais c'est assez difficile à déboguer)
1 FTDI 3.3/5v pour le développement
Quelques fils
Étape 4: Téléchargez le code de la passerelle
Au cours de cette étape, l'Arduino est uniquement utilisé pour alimenter (avec USB ou une autre source d'alimentation) sur le blindage ESP8266
Connectez l'ESP8266 GPIO4 à la masse (pour entrer en mode configuration)
Prenez soin de régler le FTDI sur 3.3v comme requis par le shield
Connectez le FTDI au blindage (RX à TX)
Réglez le commutateur de blindage sur 1:off 2:off 3:on 4:on
Connectez le côté USB du FTDI à votre ordinateur
Réinitialiser le blindage avec le bouton poussoir ESP-RST
Téléchargez le code de la passerelle sur GitHub
Ouvrir l'IDE Arduino
- Sélectionnez le port du moniteur FTDI
- Ouvrez le moniteur série IDE - Réglez la vitesse sur 38400
- Sélectionnez la carte de module générique ES8266
- Mettre à niveau le firmware du shield avec le code de la passerelle
Réglez l'interrupteur 3:off 4:off
Ouvrez le moniteur série IDE
Réinitialiser le blindage avec le bouton poussoir ESP-RST
Vous devez voir des messages sur le moniteur commençant par « initialisation EEPROM » « Initialisation terminée »….
Il est temps de faire la configuration
Étape 5: Faisons la configuration de la passerelle
Lors du premier téléchargement du code de la passerelle, l'Eeprom ESP8266 sera initialisé avec les valeurs par défaut. Vous verrez ce genre de messages "set parameter: x size: yy"
Vous pouvez trouver ces valeurs dans la définition de code de paramValue. Vous pouvez bien entendu modifier ces valeurs par défaut avant de télécharger le code mais vous pouvez également définir votre configuration par commande ultérieurement. C'est mieux si vous prévoyez d'avoir plusieurs passerelles et de ne garder qu'une seule version de code.
Utilisez le port série du moniteur pour envoyer la commande (défini sur NL et CR).
Comme le SSID n'est pas défini actuellement, attendez « Impossible de se connecter à votre seconde tentative d'identification: 5 »
Ensuite, une analyse du WIFI démarrera automatiquement
Il est temps de définir vos SSID avec les commandes suivantes:
- SSID1=votrechoix1
- PSW1=votre mot de passe1
- SSID2=votrechoix2
- PSW2=yourpsw2
- SSID=1 (pour choisir par quel SSID commencer)
- RedémarrerWifi
Après quelques secondes, vous pouvez vérifier la connexion avec la commande "ShowWifi". Vous devez voir l'adresse IP que la passerelle a obtenue de votre serveur DNS. Si c'est le cas il est temps d'aller plus loin
Il est temps de définir l'adresse de votre serveur IP en saisissant les 4 sous-adresses (serveur qui exécutera le code de test Java). Par exemple:
- "IP1=192"
- "IP2=168"
- "IP3=1"
- "IP4=10"
En envoyant une commande vide, vous verrez toutes les commandes prises en charge que vous pourrez utiliser plus tard pour répondre à vos besoins. Toutes les valeurs des paramètres sont stockées dans l'Eeprom et nécessitent un redémarrage pour être prises en compte.
Retirer le fil de configuration
Le bouclier fonctionne maintenant comme une passerelle
Étape 6: Téléchargez l'exemple de code Arduino
Téléchargez d'abord le code principal Arduino sur GitHub
Téléchargez ensuite le code Arduino, cette définition de commandes et ce code de liaison série dans vos librairies
Ensuite, ouvrez le code principal avec un nouvel IDE Arduino
Désactivez les commutateurs de blindage 1 et 2 pour libérer la liaison série Arduino 0 pour la connexion USB
Réinitialiser le bouclier
Connectez les fils FTDI au Mega Serial 2 (TX FTDI à RX Mega et ainsi de suite)
Démarrez un nouvel IDE Arduino (ou un outil TTY), connectez l'Usb FTDI et commencez à surveiller la liaison série
Téléchargez le code Arduino à l'intérieur du Mega
Mettez le shield Switch 1 et 2 sur on pour connecter la liaison série Arduino 0
Réinitialiser le bouclier
Vous devez voir ce message "start usb print" sur le moniteur
Étape 7: Passons au côté serveur
L'exemple de serveur est un programme Java que vous pouvez télécharger ici sur GitHub
Il suffit de l'exécuter et de regarder la console Java et de regarder le moniteur FTDI
Vous verrez des échanges de données entre le serveur et Arduino
Étape 8: Pour aller plus loin
Cet exemple de code Arduino est basé sur un framework faisant partie de mon infrastructure domotique.
Si cette infrastructure vous intéresse, faites le moi savoir. Je publierai des sources.
Si vous souhaitez simplement utiliser la passerelle, vous pouvez simplifier le code Arduino.
Après avoir développé et testé votre code sur un Arduino Mega, vous pouvez facilement le remplacer par un Uno !
En plus de cela, vous pouvez connecter un fil entre Arduino GPIO 7 et ESP8266 GPIO 5 si vous voulez que votre Arduino vérifie la connexion Wifi