Go Down

Topic: Les Bases d'un Serveur Web sur ESP-01 en commande AT (Read 20731 times) previous topic - next topic

lgabed420


68HC11

Bonjour,

Voici un projet utilisant l'ESP-01 connecté sur un Arduino :

Serveur WEB commande bouton WEB en CSS --> Arduino LED ON / OFF
(index HTML en variables PROGMEM avec loader de page WEB)

Serveur WEB avec autentification (Login et mot de passe)

Configuration IP et SSID et mot de passe par Serial commande Line (CmdLine)

Code: [Select]

/*********************************************************************************************************************
* WEB Serveur Secureise Login mot de passe pour Commande Bouton WEB --> LED Arduino
* Page WEB avec Bouton CSS
* Configuration IP par Serial Commande Lind CmdLine
/*********************************************************************************************************************
* Fonction : Commande de Relais (LED) par page WEB
* Commande une LED avec des boutons WEB dessine en CSS       : ok
* Autentification Login Mot de passe                         : ok
* Configuartion IP par Page WEB                              : pas ok
* Configuration IP pare Serial Commande Line (cmd)           : ok
*
* Demmarage du serveur WEB automatiquement (avec la confoguration en EEPROM) au bout de 10s
* Tapez stop pour acceder au Menu Serial commande Line (cmd)
*
* LED_BUILTIN (LED de l'Arduino) ON : Serveur WEB demarrer OK (avec la confoguration en EEPROM)
*
*
* Utiliastion des fonction String
* Utilisation de la fonction sscanf (Attention Bug compilation si sscanf est utilise en sous programme et
* Configuration IP par fonction STRUCT
* Site WEB en variable PROGMEM
* Login et Mot de passe : Autentification Code Exemple :
* https://microcontrollerslab.com/esp32-password-protected-web-server-in-arduino-ide/
* ********************************************************************************************************************
* Ouver le Moniteur série ou PUTTY, KUTTY, COM - Termite.exe ....   
* Commande disponible :
help

- General commands :
    help           aide commande cmd Serial (man)
    ram            RAM Disponible

- Configuration commands :
    print          print configuration courrante (info ipconfig ifconfig)
    defaults       set default configuration values
    mac <MAC>      set local MAC address (default: DE:AD:BE:EF:FE:ED
    dhcp-on        enable DHCP
    dhcp-off       disable DHCP
    ip <IP>        set local IP address Exemple : ip 192.168.0.66
    subnet <IP>    set Masque de sous réseau
    gateway <IP>   set Passerelle
    SSID           set nom du reseau WIFI (Max  20 caracteres)
    password       set mot de passe du reseau WIFI (Max  20 caracteres)
    wifi-on        Start ESP01 WIFI Module

- EEPROM access commands:
    reload         load EEPROM avec la configuration sauvegarde
    save           save configuration en EEPROM
    reset          Restart Arduino et load la configuration enregistre en EEPROM

 Exemple : Pour changer l'IP de l'Arduino :
 Commande ip xxx.xxx.xxx.xxx puis save et enfin reset
 pour redemarrer l'arduino dans la nouvelle configuration

>
*
* * ********************************************************************************************************************
* -------------------------------------------->    Sortie :
* Module LED sur PORT Digital D2
* http://wiki.seeedstudio.com/Grove-Red_LED/
* http://wiki.seeedstudio.com/Grove-LED_Socket_Kit/
*
* -------------------------------------------->    Entree / Sortie --> Transfert
* WIFI ESP01 - Module sur PORT D2 (Utilisation des commandes AT)
* Module WIFI : ESP8266 ESP-01 : sur Adaptateur Module 3.3V 5V (Compatible pour Arduino) et sur PORT D2          Attention : cable GROVE inverse !!
* https://www.amazon.fr/gp/product/B06XP74C81/ref=ppx_yo_dt_b_asin_title_o01__o00_s00?ie=UTF8&psc=1
* https://www.amazon.fr/gp/product/B079129RF1/ref=ppx_yo_dt_b_asin_title_o01__o00_s00?ie=UTF8&psc=1
* Branchement
* Rx sur D2
* Tx sur D3
* Branchement compatible avec le port UART pour les commandes AT
* Librairie WifFiEsp.h : https://github.com/bportaluri/WiFiEsp
/*********************************************************************************************************************
* Librairie :
* Arduino Serial Commande Line (CmdLine)
* https://github.com/IndustrialShields/arduino-CmdLine
/*********************************************************************************************************************
* Auteur   : Saint-Jean Colmar             * Arduino UNO et Shield Base Grove               * Date  : 1/9/2019
* Compilateur teste sur version : 1.65 - arduino-1.8.5-windows.exe
/*********************************************************************************************************************

Maxvi33

Bonjour,

Tout d'abord merci J-M-L, tes explications sont parfaites !
Je voudrais savoir s'il est possible, en commande AT de:
1)-Démarrer en mode AP
2)- Se connecter et charger depuis mon téléphone, le SSID et mdp del'endroit ou je me trouve
3)- Basculer en mode client avec ce que je viens de renseigner depuis mon téléphone ?

Cela existe déjà mais pas en commande AT..

Merci d'avance,
Max


J-M-L

si vous avez un Arduino accroché à votre ESP-01 avec un moyen d'indiquer le type de boot que vous voulez avoir (un bouton par exemple) je ne vois pas pourquoi ce ne serait pas possible.. ce ne sont que des commandes de paramètrage

cela dit je ne recommande pas de continuer à utiliser des ESP-01, autant prendre un ESP8286 ou ESP32 qui feront aussi office d'arduino, c'est plus simple, plus puissant, plus à jour... pour un prix similaire a ESP-01 + Arduino + câbles et bazar d'adaptation de tension...

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Virgilec

Merci beaucoup pour ce tuto détaillé.

Je dois être bête, mais je n'arrive pas à trouver l'adaptateur que vous avez utilisé pour l'ESP. Auriez-vous un lien ?

J'ai acheté celui en pièce jointe, pensant que ça irait... Mais il n'a que 4 pins et impossible à le faire fonctionner, aucune doc.   :smiley-confuse:

J-M-L

Je dois être bête, mais je n'arrive pas à trouver l'adaptateur que vous avez utilisé pour l'ESP. Auriez-vous un lien ?
J'ai acheté celui en pièce jointe, pensant que ça irait... Mais il n'a que 4 pins et impossible à le faire fonctionner, aucune doc.   :smiley-confuse:
Votre image:


Oui celui que j'avais ne se trouve quasiment plus... j'en ai pas vu sur eBay ou AliExpress en regardant rapidement (parce qu'on n'utilise plus bcp les ESP-01)

je pense qu'il est prévu plus pour des ESP-01-S qui sont toujours sous 3.3V mais qui ont plus de mémoire et son plus performants et donc qu'on peut flasher directement avec l'IDE Arduino (generic ESP8286) et se passer donc d'un arduino supplémentaire.

Si vous avez qu'un ESP-01 (pas 'S'), il faut pouvoir le piloter et dans mon tuto je dis
Quote
Pin - (masse) de l'adaptateur ESP-01 connectée au rail bleu de la breadboard (GND)  (fil noir)
Pin + (alimentation) de l'adaptateur ESP-01 connectée au rail rouge de la breadboard (5V) (fil rouge)

Pin Enable (EN)  de l'adaptateur ESP-01 connectée à 5V de la breadboard (fil rouge)
Pin RESET (RST) de l'adaptateur ESP-01 connectée à la pin 7 de l'arduino Mega (fil jaune)


Pin Rx (réception) de l'adaptateur ESP-01 connectée à la pin Tx1 (18) de l'arduino Mega (fil blanc)
Pin Tx (émission) de l'adaptateur ESP-01 connectée à la pin Rx1 (19) de l'arduino Mega (fil bleu)

les 2 GPIO de l'adaptateur ESP-01 restent "en l'air".
donc votre soucis c'est que l'adaptateur que vous avez d'une part n'offre pas les pins Enable ni Reset et d'autre part sans doute pas la conversion 5V

- pour les 2 pins manquantes, vous pouvez re-piquer directement sur l'ESP, sinon il existe  d'autres adaptateurs qui exposent toutes les pins (un ou deux pour 1€ ou 5 pour 2€) et qui ont généralement le bon goût d'intégrer un petit condensateur pour l'alimentation, mais ça ne règle pas le soucis d'adaptation de tension.

-> il faudra donc insérer un petit composant qui adapte les tension de commandes à 3.3V (certains ESP peuvent résister mais rien de garanti) -> cherchez un "Channel I2C Bi-Directional Logic Level Converter Arduino 5V To 3.3V Module" - vous pouvez en trouver 5 pour moins d'1.5€)

Dans la pratique, vu le coût de tous ces composants, les ennuis que ça représente de tout câbler etc, achetez un ESP-01-S que vous programmez en Arduino directement et alimentez le tout par 3.3V. Vous pourrez alors utiliser les librairies un peu plus avancée que ce qui est décrit ici... (il vous faudra juste une carte USB -> Série FTDI de préférence)

Si vous ne voulez pas vous ennuyer du tout, vous pouvez acheter pour un peu plus cher un Lolin D1 Mini - ils vendent sur AliExpress - et ça vous ouvre la porte à plein de petits composants d'extension prévus pour...

à voir en fonction de ce que vous voulez réaliser
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Virgilec

Merci beaucoup pour votre réponse.

Je me bataille depuis des semaines pour faire fonctionner mon arduino en wifi, je commence à désespérer. (en commençant par le wifi intégré de ma Mega2560).

Je vais avoir un certain nombre de capteurs / éléments (ventilos, pompes, etc) connectés à mon arduino, c'est pour cela que j'ai besoin d'une Mega.
Ce que je souhaite faire est plutôt simple normalement : Lire et mettre à jour une base de données sur un serveur internet. (La base est déjà créée)

Je possède un ESP-01 et un ESP-01S (pour éviter de perdre du temps et ne connaissant pas vraiment les différences entre les deux, j'ai acheté les deux. Mais à part perdre du temps et un peu d'argent, je n'arrive à rien. Il n'y a que votre tuto qui est bien clair, cependant l'adaptateur est introuvable.

Quelle est la solution la plus simple pour seulement lire et mettre à jour une base de données via wifi, le tout connecté à la Mega et ses capteurs ?


J-M-L

Quote
Je me bataille depuis des semaines pour faire fonctionner mon arduino en wifi, je commence à désespérer. (en commençant par le wifi intégré de ma Mega2560).
il n'y a pas de WiFi intégré dans une Mega2560... pas sûr de ce que vous voulez dire

pour que ça fonctionne - sans griller vos ESP - il vous faut une adaptation de tension à 3.3V
Si vous avez branché vos ESP sur 5V il y a des chances qu'ils soient morts...

il vous faut 2 alimentations, une en 3.3V et une en 5V

Idéalement il vous faut passer par un convertisseur / adaptateur de tension pour les pins (que pour les pins, pas pour l'alimentation)
par exemple vous sortez de la pin Rx3 de votre Mega, vous rentrez dans le convertisseur de tension, vous ressortez en face et allez vers la pin Tx de votre ESP-01



vous faites la même chose pour les pin Tx3 et la pin 7  (si vous suivez mon tuto) que vous reliez à la pin Reset de l'ESP. --> 3 pins dont vous convertissez le signal.

La pin Enable de l'ESP est connectée soit de la même façon si vous voulez piloter l'activation de l'ESP, soit vous la mettez directement sur 3.3V et le module sera "enabled" en permanence.

vous reliez les grounds de 3.3V et 5V pour avoir une masse commune et vous mettez une petite capa près du module ESP pour qu'il ait un peu de reserve d'énergie en cas de besoin pressant.

On peut bidouiller pour faire tomber la tension de 5v à 3.3 avec 2 résistance formant un pont diviseur de tension aussi et vous n'êtes pas obligé de le faire entre le Tx de l'ESP vers le Rx du MEGA car l'ESP va émettre du 3.3V donc ne grillera pas votre Arduino.

Une fois que c'est câblé comme cela, le tuto devrait fonctionner.

Mais si vous avez balancé du 5V, il se peut que les modules soient morts...



Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Virgilec

Merci énormément d'avoir pris le temps de me fournir toutes ces informations !
J'ai bien une Mega R3 avec ESP8266 intégré, mais jamais réussi à le faire fonctionner...

Je vais me procurer le convertisseur 5>3.3V puis essayer de mettre au point tout cela :-)
Encore merci pour votre aide.

J-M-L

Ah OK - donc c'est pas une MEGA, c'est la Wemos ou similaire

je n'en ai pas... de mémoire faut jouer avec les cavaliers pour définir comment la carte est configurée. Attention donc il se peut qu'une des ports Series (1 2 ou 3) soit occupé par la carte 8286 qui est sur votre Mega
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Maxvi33

Bonjour J-M-L,

J'utilise un esp-01 déja implanté sur un PCB avec un module radio !

En ce qui concerne ma problématique j'ai pu palier ce problème grâce au SMARTCONFIG (voir instruction set AT+CWSTARTSMART).

Mais je me lance dans une autre approche, j'utilise votre tuto pour me connecter en SoftAP, me connecter avec mon téléphone sur l'esp et configurer le SSID et MDP. Le hello world fonctionne parfaitement.
Seulement voilà, quand je veux y insérer du HTML, notamment <!"DOCTYPE" HTML> mon moniteur série me retourne l'erreur suivante (voir image).



Auriez vous une idée d'ou ça viens ?

Merci encore de votre aide !

J-M-L

Le hello world fonctionne parfaitement.
Seulement voilà, quand je veux y insérer du HTML, notamment <!"DOCTYPE" HTML> mon moniteur série me retourne l'erreur suivante ...

postez votre code (expliquez notamment où vous mettez des guillemets pour envoyer cela)

(et en HTML5 c'est <!DOCTYPE html> sans guillemets qu'on met dans le fichier)

dans le post 5 je balance du HTML et ensuite vous pouvez voir comment on met cela dans du code
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Virgilec

#57
Dec 29, 2019, 02:55 pm Last Edit: Dec 29, 2019, 02:58 pm by Virgilec
Bonjour,
Grâce à vos explications, j'ai enfin pu connecter mon arduino en Wifi !
(Votre tuto donne les mêmes résultats chez moi, je n'y croyais plus...)
J'ai suivi vos indications pour la connexion de l'esp-01, avec un adaptateur de tension pour les broches de données.

J'ai une dernière petite question, connaissez-vous une solution simple et efficace pour :

- Récupérer une valeur dans une base de données
- Modifier une valeur dans une base de données

La base est déjà créée, je sais manier le php aussi (serveur internet 000webhost). Ce qu'il me manque, c'est juste "comment ouvrir une page php avec l'esp en lui envoyant une donnée" (type temp=12.23&hygro=54.34 dans l'url)

Auriez-vous une idée ? Je n'arrive pas à trouver le tuto adéquat...

Encore merci et bonne journée !


J-M-L

J'ai une dernière petite question, connaissez-vous une solution simple et efficace pour :
- Récupérer une valeur dans une base de données
- Modifier une valeur dans une base de données
La base est déjà créée, je sais manier le php aussi (serveur internet 000webhost). Ce qu'il me manque, c'est juste "comment ouvrir une page php avec l'esp en lui envoyant une donnée" (type temp=12.23&hygro=54.34 dans l'url)

Auriez-vous une idée ? Je n'arrive pas à trouver le tuto adéquat...
tout dépend de ce qui est prévu pour l'accès à la base de données.

Sauriez vous rajouter ou récupérer une donnée par une requête web? à quoi ressemblerait l'URL ?
contrôlez vous le serveur et pourriez vous écrire un script PHP sur le serveur ayant accès à la base?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Virgilec

Merci pour votre réponse :)

Oui, j'ai bien accès au serveur et à la base, je peux créer, et éditer les deux sans problème (j'ai déjà créé des scripts php qui récupèrent ou modifient une valeur dans la base, et que j'utilise pour une appli conçue avec App Inventor (MIT)

(ces scripts sont simples et fonctionnels)

L'url envoyée par arduino pour envoyer une donnée serait par exemple :

monprojet.000webhost.com/monfichierphp.php?temperature=23.32&hygrometrie=45.32

où monfichierphp.php traiterait les deux données reçues (et pourquoi pas une autre avec une key pour que je sois le seul à pouvoir le faire)

Pour récupérer une donnée, je pense utiliser "echo" dans un script php (ce que j'ai fais pour l'appli)

PS : mon projet global comprendra l'arduino d'un côté, l'appli de l'autre, et la BDD entre les deux comme interface.

Arduino <-> BDD
appli <-> BDD

L'arduino comme l'appli pourront lire / modifier la BDD

Go Up