Avis aux utilisateurs d'ESP

Bonjour à tous.
J'aimerais ajouter une fonctionnalité wifi à mon pcb perso afin d'interagir avec un atmega328PB (master).

Ayant fait pas mal de recherches, l'un des moyens les plus simples et moins cher que j'ai trouvé est l'utilisation de shield à base d'ESP8266 ou ESP32-S2.
Mais il y'a tellement de modèles sur le marché que j'aimerais avoir vos avis pour savoir quoi choisir (ESP-01; ESP-07; ESP-12; ... ou à base d'esp32-s2) :

1- Pour une utilisation d'ESP en tant serveur web, avec de beaux graphismes, quelle taille de mémoire flash minimum faut-il pour pouvoir y stocker un site web bien élaboré ? Site web avec design pas plus compliqué que celui de zestedesavoir par exemple.

J'ai l'impression par exemple, qu'un ESP-07 de 1MB de mémoire flash est insufisant...
à ce propos, super site que j'ai trouvé qui résume les variantes à base d'esp8266
https://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

2- Faut-il préférer les modèles avec antenne "pistes" ou antenne filaire ?
ESP qui devrait être enfermé dans un coffret hermetique et dont on souhaite pouvoir s'y connecter à une distance de moins de 200m (devant traverser quelques murs)

3- J'ai vu sur certains post du net, que l'ESP32 était peu recommandé dans certains cas, comme par exemple les projets qui requièrent la gestion d'interruptions périphériques couplé à la gestion d'interfaces web.
Est-il raisonnable de penser que l'association d'un atmega328PB avec un ESP8266 est idéale en terme de fiabilité de fonctionnement, de robustesse ? Ou alors, c'est certain, l'ESP32 à déjà fait toutes ses preuves et pourrait donc remplacer sans hésitation un 328PB+ESP8266 ? (ou remplacer par exemple le uno R4 wifi)

4- Pourquoi avez-vous choisi d'utiliser (en dehors des fonctionnalités sans fil et des mémoires plus grandes) un esp32 à la place d'un arduino uno R4 wifi par exemple ?

Merci pour vos retours d'expériences précieuses la dessus.

ma recommandation première serait de refaire un PCB juste avec un ESP32 et d'oublier le 328P. les "machins à deux étages" c'est toujours compliqué...

si vous voulez absolument aller vers cela il faudra définir le mode de discussion entre l'ESP et le 328P (Serial, I2C, SPI) et coder un protocole de commandes

'élaboré' ce n'est pas assez précis... en gros il vous faut en mémoire flash au moins la taille de tous vos fichiers html, css, javascript, images etc

le plus simple c'est de partir sur un ESP32 "classique", pas vraiment de raison de prendre un 8266

200m c'est ambitieux et ça dépend aussi de votre environnement (ligne de vue directe, sans perturbation? )

si vous prenez la bibliothèque AsyncWebServer, le serveur web tourne sur un core et votre code sur l'autre . Il faut cependant définir ce que vous entendez par "gestion d'interruptions"... quelle fréquence etc...

parce qu'il n'y avait pas de uno R4 wifi quand l'ESP32 est sorti et que c'est encore un produit "en devenir"... et le facteur de forme de la carte UNO n'est pas forcément le plus adapté à mettre des projets en boîte, c'est plus fait pour bidouiller

Je suppose que la bonne réponse est « ça dépend ». Ça dépend de tes graphismes mais en codant le HTML proprement, de façon optimisée, en utilisant au maximum les CSS on peut faire des pages à la fois élégantes et légères. Ce qui peut, peut-être, poser un problème c'est l'aspect « dynamique » des pages. N'espère pas embarquer un apache et PHP sur ton ESP (raspberry fait par contre tout à fait l'affaire dans ce cas), tu devra concevoir tout le code dynamique à la main.

Je passe !

Par contre, là si tu as une ref. je suis preneur et je vais suivre la discussion ;-)

Ensuite c'est un réseau wifi qui peut se traiter comme tel : répéteur wifi tout à fait classique et ça ne dépends plus du µC.

Effet collatéral : ça permet d'avoir le wifi au fond du jardin pour les tutos jardinage.

Ce n'est pas tout à fait exact, tu peux avoir des pages dynamique ou réactive sans PHP ou apache ou n'importe quel autre "backend".
Dans son cas l'ESP8266 peut très bien donner les données en continue à la page HTML.
Puisque le serveur HTTP du ESP8266 peut répondre à des URI différentes.

Oui, je me suis mal exprimé. C'est ce qui est fait dans l’exemple : ESP32 DHT11/DHT22 Web Server using Arduino IDE | Random Nerd Tutorials
La partie dynamique est codée par la fonction processor() et des %BIDULES% insérés dans le HTML

Le combo apache-PHP offre une abstraction plus grande qui permet plus facilement de faire des choses plus complexes.

Non, je pensais plus à l'utilisation de l'AJAX pour rafraichir uniquement les données et pas toutes la page HTML.
Mais effectivement il est aussi tout a fait possible de remplacer certaines données avant de renvoyer des données à une requête HTTP, mais les possibilité est forcement plus restreinte qu'avec un backend tournant sur un PC.

Les deux sont possible et finalement l'AJAX permet de déplacer la puissance de calcul nécessaire du µC vers le navigateur. Par exemple pour le projet évoqué ailleurs, j'envisage de tracer des graphiques mais d'utiliser pour ça des librairies javascripts côté client.
Si j'avais à faire la même chose en web plus traditionnel, je ferais construire le graphique par le serveur avant de pousser l'image toute faite vers le client.

Mais on digresse sur la discussion de @tonynyny et cela ne correspond peut-être pas à son projet et ses besoins à lui.

ben moi je l'ai lu sur mon analyseur logique (à 10€) : la latence d'une interruption (temps écoulé entre le phénomène déclencheur et le début de l'exécution de l'ISR) varie entre 5 et 9us , voire + si affinité) ; à savoir si ça va te gêner
les ISR doivent être brèves , il faut faire le + urgent et traiter la suite dans la loop , comme pour un vulgaire avr ou pic ...
je soupçonne aussi le système de bouziller de temps à autres des ISR , parce qu'il estime avoir + important à faire ... mais je n'ai pas pu le mettre en évidence ...
l'esp32 est une ferrari avec quelques pièces de 2cv

200m, c'est beaucoup.
Prends la version avec antenne filaire cela peut éventuellement te permettre de mettre une antenne directionnelle si tu as des problèmes de portée.

j'ai ajoutés les quelques éléments manquants à mon 1er post, merci pour vos réponses :
@J-M-L

A la base, je comptais programmer separement l'esp et le 328PB et envoyer uniquement des variables via Serial qui seront recupéré par l'esp pour actualiser la page web. Mais d'après vos propos, j'ai comme l'impression que je compliquerai les choses ainsi.
Si je devais partir sur un pcb avec uniquement esp32, sur lequel partiriez vous ?
que pensez-vous du ESP32S2-WROOM-I-32 ? carte esp32
Avec 4MB de mémoire flash devant heberger un site web de moins de 5 pages au design pas plus complexe que celle de zestedesavoir et pour utiliser autant d'entrée/sortie digitales et ana qu'un arduino uno ?

J'ai vu des vidéos où des personnes reussissaient, sur terrain plat en pleine campagne, communiquer à plus de 400m, j'ai donc pensé que l'esp, situé dans le jardin, allait être facilement accesible (en mode AP), depuis un bureau à l'intérieur de la maison.

Merci pour cette info, mais est-ce une bibliotheque facile à utiliser, qui ne ne recquiert pas trop d'expertise en programmation afin de bien scinder la partie web de la partie utilisation périphérique de l'esp ?

@ProfesseurMephisto
pour la partie dynamique du site, je souhaite des choses pas plus compliqué d'un bargraph qui evolue en même temps qu'un capteur de température, une bouton clignotant par exemple lorsqu'un moteur est en marche et si possible, un graphique qui montre l'evolution d'une variable en fonction du temps.

J'essaierai de retrouver dans mon historique, c'était sur des sites web anglais, mais en recherchant sur le net, tu devrais facilement en trouver.

Pour le répéteur wifi, j'aimerai éviter, je me contenterai au pire de beaucoup moins que 200m si pas possible.

@ProfesseurMephisto @terwal vous m'avez perdu avec vos helico apache et autres produit ajax :stuck_out_tongue:

C'est l'utilisation que je veux en faire, avec en bonus si possible, quelques icones dynamiques (icones clignotantes par exemple, mais rien de plus)
Je suppose donc qu'il va falloir qu'en plus de l'HTML+PHP, va falloir que j'apprenne à utliser l'apache et/ou ajax alors.

:-) non, juste un peu d'HTML (et CSS) et un chouilla de javascript devraient suffire pour ça

@trimarco232

merci pour cette super info ! est-ce bien une interruption hardware ?
10us, proche 100kHz, à supposer que cela ne fasse pas planter l'UC, c'est effectivement très large pour l'utilisation que je veux en faire. Les remarques de beugs que j'avais vu sur quelques sites anglais ne detaillaient pas suffisament le type de beug qu'il avait, ils avertissaient juste sur la constatation de dysfonctionnement. Mais peut être meme que cela ne concerne plus les versions reçentes...

Regarde alors du côté de ESP32 Web Server using Server-Sent Events (SSE) | Random Nerd Tutorials il y a des choses qui y ressemblent. Pas forcement sous forme graphique mais plutôt « texte » mais la transformation peut être assez simple.

@fdufnews

Est-ce qu'on peut affirmer que la version avec antenne en forme de parallélépipède
Capture d’écran 2023-11-02 à 23.26.55
ou la version antenne piste, dans les mêmes conditions d'utilisation, sont moins bonne en portée qu'une version filaire ?

J’ai l’impression que vous débutez avec l’ESP. Le plus simple c’est d’acheter un ESP32 de base et de vous faire la main, tester si ça correspond à vos besoins. Il sera temps ensuite de sélectionner un module pour votre PCB si nécessaire

Je crois peu aux 200m avec un bon debit et stabilité. Comment allez vous alimenter le module?

C'est pas vraiment le nombre de page qui importe même si cela influe forcément, ce qui importe c'est le poids de chacune d'elle.
C'est à dire le poids des fichiers HTML, images, javascript et CSS.
J'aurais tendance à dire au pifomètre et à la description de ton projet que 4MB devrait être suffisant.

Pour moi utiliser une autre bibliothéque ou se passer de bibliothéque demandera plus d'expertise en programmation.

Il y a deux écoles soit tu le fais à "l'ancienne" et tu rafraichis ta page toutes les x secondes (de mon point de vue le plus simple).
soit tu utilises du javascript, pour modifier le code HTML pour insérer périodiquement les données que tu sera aller cherché(AJAX) sur ton serveur HTTP(c'est moins simple, mais plus rigolo :slight_smile: ).
Avec la librairie AsyncWebServer cela se fait assez facilement et simplement.
Le gros mot AJAX, ce concrétise uniquement par l'utilisation d'une fonction javascript( XMLHttpRequest)

Si tu veux de jolie bargraphe ou animation et que tu ne veux pas te prendre la tête avec du code javascript et/ou CSS, tu peux utiliser des librairies, mais il faudra alors que tu les embarques dans ta mémoire ou que le browser du client puisse aller les chercher sur internet.

Si le client web a aussi accès à Internet (pas sûr car si j’ai bien compris vous vous connectez sur l’AP de l’ESP32 qui sera un réseau fermé) vous pourriez avoir de jolis graphes en utilisant des packages disponibles sur Internet dans la description de vos pages - ça améliore la présentation sans charger outre mesure le petit ESP.

Une autre approche serait d’avoir 2 ESP, un chez vous (Maitre) et un au fond du jardin (esclave) - en supposant qu’ils se voient par ESP-NOW vous exportez uniquement les données de l’esclave vers le maître qui se charge de faire la mise en forme web. L’avantage c’est que le maître peut aussi avoir accès à Internet ouvrant donc plus de possibilités (accès distant, meilleure gestion de la bande passante - l’esclave envoie que des petits payload,…)