IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Communication entre ESP8266 et le site stocké dans le SPIFFS


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut Communication entre ESP8266 et le site stocké dans le SPIFFS
    Bonjour,
    Je viens vers vous car je suis sur un projet perso et je suis bloqué dans la partie réception de donnée, je vous explique mon projet :
    Je suis en train de travailler sur un jeu de fléchette, j'ai récupéré un jeu de fléchette Electronique sur lequel j'ai greffé un Arduino Uno chargé de déterminer quelle partie de la cible a été touché(cette partie est fonctionnelle) ensuite une fois déterminé celui-ci transmet l'info à un ESP8266 via la liaison RX/TX, pourquoi un ESP8266 ? car il me sert de serveur web embarqué et contient du coup le site qui permet de saisir les pseudos des participant, définir le nombre de point à atteindre pour gagner, de jouer tout simplement et ça permet de rendre l'affichage portatif via tablette ou smartphone, tout est calculé et affiché sur le site grâce au javascript, la ou ça ce complique c'est que je ne vois pas comment transmettre l'info reçu par l'ESP8266 au site, il y a une seul fonction javascript à utiliser qui gère automatique le changement de joueur etc...qui est "update_score" qui à un paramètre d'entré qui correspond au nombre de point obtenu sur le lancé qui vient d'être fait( l'info transmise par le Uno ),et le souci c'est que rafraîchir la page n'est pas envisageable sinon je perds toutes les config de la partie, si vous avez une idée je suis preneur ! Vous remerciant par avance,

    Cordialement Julien.

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    je ne vois pas comment transmettre l'info reçu par l'ESP8266 au site
    Bonsoir

    Hum, c’est pas très clair: Le site c’est l'ESP8266 Non ?

    Un peu de vocabulaire:
    • L’ESP’est votre serveur web.
    • Les navigateurs web se connectant sont des clients du serveur.
    • Un client reçoit sur sa demande lors d’une requête suivant Le protocole HTTP, un contenu
    • Ce contenu (HTML, CSS, JavaScript,.XML..) est analysé / exécuté par le client pour dessiner la page web
    • Ce dessin est manipulable sur le client en JavaScript grâce à un modèle hiérarchique objet, cf le Document Object Model (DOM)


    Le principe du web est que une fois le téléchargement de la page fait (donc envoyé par l’esp) la connexion est interrompue. Le serveur n’a aucun moyen de contacter le client une fois la requête close.

    Donc si vous voulez que l'affichage change il faut que le client renvoie une nouvelle requête pour redemander du contenu.

    Comme le client exécute ce qu’il a reçu quand c’est exécutable (JavaScript), il est possible de coder dans la page web le fait qu’une fonction soit appelée régulièrement toutes les x millisecondes (regarder setTimeout() et setInterval() et fonctions associées).

    Cette fonction pourrait donc renvoyer une requête Au serveur et Cette requête peut bien sûr ne pas tout recharger mais juste demander un complément d’info dont pour repeindre l’interface. Ça se fait Simplement avec AJAX


    Pour résumer
    1. La navigateur web (client) se connecte à l’ESP (serveur) pour charger la page
    2. Cette page contient du JavaScript interprété par le client qui dit d’appeler une fonction régulièrement
    3. Cette fonction se connecte à l’ESP pour demander des données (un XML ou JSON par exemple) en AJAX
    4. Cette fonction récupére les données et met à jour l’interface si besoin en modifiant le DOM

  3. #3
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour

    Oui, il y a un souci de terminologie, de design et de complexité.

    Tu veux utiliser la mémoire SPIFFS de l'ESP8266 pour stocker des infos qui viennent d'un Arduino via une liaison RX/TX et de client Web d'un serveur que tu devra écrire sur l'ESP8266.
    Je dirais comme cela ... mon dieu!

    L'ESP8266 c'est mignon ... mais ... pas plus!
    Utiliser des technologies comme AJAX ou JSON sur un ESP8266, bien sûr que c'est possible, mais tu vas te casser la tête!

    Tu dis que tu as sur un Arduino Uno une partie qui fonctionnelle.
    Ta liaison RX/TX avec l'ESP8266, c'est simplement parce que tu n'as pas de WiFi sur l'Arduino!
    Donc je regarderais d'abord le sketch Arduino, les broches utilisées, et je mettrais toute cette partie fléchette sur un ESP8266 voire un ESP32, un poil plus couteux qu'un ESP8266.
    Mais ton interface avec le jeu de fléchette Electronique est peut-être compliquée et nécessiterait de rester sur l'Arduino ... donc par exemple un Arduino Uno WiFi Rev2 par exemple.

    Peut-être qu'un Raspberry Pi te donnerait facilement l'interface avec le jeu de fléchette Electronique.

    La partie Web, avec le stockage des infos risque d'être compliquée.
    Le stockage sur un ESP8266 via une base de donnée SQLite avec SPIFFS est possible.
    Mais là on ou je commence à délirer.

    Perso, j'essaierais de mettre tout sur un ESP8266 ou équivalent.
    Je mettrais tout le logiciel d'interface utilisateur sur un PC ou un laptop (Web ou application) et je communiquerais de manière la plus simple possible entre l'ESP et le PC.
    Les utilisateurs, scores ou autres, seraient sur le PC.

    Bonne recherche (brain storming).

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Bonjour, tout d'abord merci d'avoir pris le temps de me répondre,
    J'ai pris un Uno car l'ESP8266 ne possède pas assez de port GPIO, pour récupérer toute les cellules du jeu il m'en faut au total 17, comme vous l'avez dit, je suis partie sur un ESP8266 car il y a un module wifi intégré dessus et je ne voulais pas à avoir un câble ethernet à tirer juste pour ça le but étant qu'il soit portatif, tout comme l'affichage également d'ou la partie web qui peut du coup être affiché sur pc, tablette ou smartphone.

  5. #5
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par hourra Voir le message
    .... pour récupérer toute les cellules du jeu il m'en faut au total 17, comme vous l'avez dit, je suis partie sur un ESP8266 car il y a un module wifi intégré dessus et je ne voulais pas à avoir un câble ethernet ....
    17 ???? Sur un Arduino!
    C'est quoi cette histoire de câble Ethernet? Je ne comprends pas.

    Donc un ESP32, je crois! >17 et WiFi.
    J'en ai deux dans tout mon cheni: https://www.espressif.com/en/product...om-32/overview!
    Cela se programme avec l'IDE de l'Arduino.

    J'ai écrit cet article il y a une année, il n'est pas terminé, comme d'autres, mais donne des idées et des liens utiles:
    Un tutoriel pour débutant pour l'ESP32: un thermomètre digital (en travail continuel) (pas terrible mon serveur Web en fin d'article ... je sais faire mieux!)

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Citation Envoyé par boijea Voir le message
    L'ESP8266 c'est mignon ... mais ... pas plus!
    Utiliser des technologies comme AJAX ou JSON sur un ESP8266, bien sûr que c'est possible, mais tu vas te casser la tête!
    ça reste tout à fait jouable.

    voilà un affichage réalisé avec AJAX sur ce tuto
    Nom : wow.png
Affichages : 989
Taille : 82,2 Ko
    (source J-M-L @arduino forum)

    Une fois bien compris ce qu'il doit se passer, il vaut mieux sans doute ne pas réinventer la roue et c'est très largement simplifié en s'appuyant sur ESPAsyncWebServer qui va gérer toute la partie Web pour vous.

    Mais ce serait plus performant de tout mettre sur un ESP32 et de virer carrément le UNO effectivement

    il ne faut pas trop se laisser guider sur le choix d'un Arduino "non approprié" par le nombre de pins disponibles, il existe des petits composants qui permettent de rajouter des GPIO assez simplement (MCP2307, MCP23517, PCF8574,...). Vaut mieux regarder le gros du besoin pour choisir... Pour vous ici c'est l'interface web sans doute.

  7. #7
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par Jay M Voir le message
    Mais ce serait plus performant de tout mettre sur un ESP32 et de virer carrément le UNO effectivement
    On avance bien!

    Citation Envoyé par hourra Voir le message
    ... car il me sert de serveur web embarqué et contient du coup le site qui permet de saisir les pseudos des participant, définir le nombre de point à atteindre pour gagner, de jouer tout simplement et ça permet de rendre l'affichage portatif via tablette ou smartphone, tout est calculé et affiché sur le site ...
    Et là, , il faudra du courage!
    Ne pas oublier les crash tests, comme couper le jus de l'ESP32 (voire le WiFi) quand on joue, qu'on modifie un pseudo ou le nombre de points pour gagner!

    Bref, très bon sujet de fléchette. Bravo pour l'idée.
    Bon travail, gros travail.

  8. #8
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Citation Envoyé par boijea Voir le message
    Cool ce tuto .. et avec SPIFFS .. merci!
    Ne pas oublier les crash tests, comme couper le jus de l'ESP32 (voire le WiFi) quand on joue, qu'on modifie un pseudo ou le nombre de points pour gagner!
    oui bon, ça reste un petit jeu de fléchette... c'est pas le système de régulation de température d'une centrale nucléaire


  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Bonjour du coup j'ai revu l'architecture globale du projet..
    je vais partir sur un ESP32 comme vous me l'avez conseillé, je vais simplifié toute la partie javascript et gérer tout dans l'esp directement il y aura plus que 3 pages :

    -interface saisi des pseudos
    -interface d'affichage du pseudo et des points restant
    -interface affichage classement final

    toute les données seront transmise en GET, ça fera un peu moins usine à gaz je pense, je gérais tout dans le js tout simplement car c'est ce que je maîtrise le mieux, l'arduino très peu

  10. #10
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Citation Envoyé par hourra Voir le message
    Bonjour du coup j'ai revu l'architecture globale du projet..
    je vais partir sur un ESP32 comme vous me l'avez conseillé, je vais simplifié toute la partie javascript et gérer tout dans l'esp directement il y aura plus que 3 pages :

    -interface saisi des pseudos
    -interface d'affichage du pseudo et des points restant
    -interface affichage classement final

    toute les données seront transmise en GET, ça fera un peu moins usine à gaz je pense, je gérais tout dans le js tout simplement car c'est ce que je maîtrise le mieux, l'arduino très peu
    ça semble la bonne approche. En vous appuyant sur la bibliothèque que je mentionne ci dessous, ESPAsyncWebServer, ça va gérer toute la partie Web pour vous et vous n'aurez en gros qu'à écrire une fonction pour chaque GET.

    Si vous maîtrisez le JS, AJAX est vraiment à votre portée et ça a quand même l'avantage de ne pas faire clignoter toute la page web par un rechargement. Vous pouvez juste modifier quelques caractères ou dessins ça et là dans la page. ça fait bcp plus propre et d'un point de vue arduino ça reste une requête GET (ou POST à votre convenance).

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Simple question , on peut utiliser tout les ports GPIO sur l'ESP8266 ou certain ne peuvent pas être utilisé, car j'ai mal calculé le jeu de fléchette contient une matrice de 8x8 ce qui fait 16 Ports et non 17

  12. #12
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Citation Envoyé par hourra Voir le message
    Simple question , on peut utiliser tout les ports GPIO sur l'ESP8266 ou certain ne peuvent pas être utilisé, car j'ai mal calculé le jeu de fléchette contient une matrice de 8x8 ce qui fait 16 Ports et non 17
    Vous nous en dites plus sur cette fameuse matrice ? vous avez 64 points c'est cela ?

    Sur ESP32 vous pourriez prendre les pins suivantes: 04, 13, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33 qui sont OK en INPUT ou OUTPUT et compléter avec les pin 34 et 35 qui sont en INPUT seulement et n'ont pas de pull-ups non pull-down interne.

    Mais à voir comment est pilotée la matrice.

    sinon il existe des extensions de port.

  13. #13
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Bonjour, merci !
    J'ai commandé l'ESP32 qui devrait arriver Mardi, concernant la matrice, j'ai fait des tests et après avoir ouvert le jeu j'en ai déduit que c'est une matrice , car il y a deux nappes en plastique avec des conducteurs dessus qui sont superposé l'une sur l'autre avec une couche en mousse percé pour séparer et faire le contact quand la flèche touche la cible, je vais commencer la partie programmation cet après midi !

  14. #14
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    vous avez un lien vers la cible en question ?

  15. #15
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Oui pas de souci, je ne l'ai pas acheté sur ce site, je l'ai retrouvé dans mon garage, mais c'est bien cette cible la : https://www.paruvendu.fr/annonces/en...530A1KBEBJJ000

  16. #16
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Et en plus pas mal du tout car tu retire la coque du dessus et tu as les deux nappes directe et tu as de la place pour y mettre l'elec

  17. #17
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    cool - sympa comme projet !

  18. #18
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Bonjour, il existe quoi comme module d'extension pour ajouter des ports gpio ? Car je vais intégrer un module que j'avais crée l'année dernière, en gros un capteur ultrason va mesurer la hauteur entre la cible et le sol, connaissant la distance réglementaire de lancé et avec un calcul d'angle un moteur pap va orienter un laser horizontal à la distance réglementaire de lancé

  19. #19
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour,
    Heuh, cela commence à faire beaucoup pour l'ESP32.
    C'est en fait presque un autre projet, ce capteur ultrason.
    Je le mettrais donc sur un ESP séparé.

  20. #20
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par boijea Voir le message
    Bonjour,
    Heuh, cela commence à faire beaucoup pour l'ESP32.
    C'est en fait presque un autre projet, ce capteur ultrason.
    Je le mettrais donc sur un ESP séparé.
    D'accord je mettrais cette partie dans un pro mini j'en ai plein en stock !

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/10/2017, 18h23
  2. Communication entre serveurs sur des sites distants
    Par yakatebayo dans le forum Administration
    Réponses: 5
    Dernier message: 06/05/2013, 13h00
  3. comment trouve la difference dans un champ commun entre deux tables
    Par pmorth dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/02/2008, 07h04
  4. Communication entre deux sites.
    Par Ithomir dans le forum Mon site
    Réponses: 6
    Dernier message: 03/07/2006, 18h07
  5. Communication entre mon appli et un site web
    Par Neilos dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2005, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo