Esp8266 wireless display

Bonjour,

J'ai aujourd'hui remis la main sur mon esp8266 et des modules max7219, j'en ai 8. L'anniversaire de ma petite amie arrivant, je me suis dit que je pourrais lui faire un afficheur sans fil en plus de son cadeau pour qu'elle sache que je pense à elle.

Le but de cet afficheur serait simple : afficher le texte que l'afficheur récupèrerait sur une page web, et que je pourrais mettre à jours à distance.

Le seul problème, non n'habitons pour l'instant pas au même endroit, il faut donc passer internet et pas en local.

J'ai réussi à faire fonctionner l'afficheur, de ce côté là pas de problème, mais il faudrait que l'esp8266 créé son propre réseau, que l'on puisse se connecter dessus pour le connecter au wifi domestique, et qu'ensuite, il retienne ces informations. Aussi, il devrait aller sur internet et commencer à récupérer le texte que je mettrai à jour.

Je ne sais pas du tout par où commencer, mais ce projet me tient à cœur, et j'aimerais vraiment réussir à le faire fonctionner !

Pour l'instant j'utlise MD_PAROLA pour gérer l'affichage.

Merci à tous ceux/celles qui me donneront une direction ou m'aideront ! :slight_smile:

Bonjour

Plusieurs librairies pour ESP8266 offrent cette fonctionalité :

ESP_WiFIManager (tuto : https://randomnerdtutorials.com/wifimanager-with-esp8266-autoconnect-custom-parameter-and-manage-your-ssid-and-password/

ESP_WiFISettinges
.......etc...

Sympa comme projet. :grinning:

Tu n'as pas besoin de créer un réseau wifi avec ton esp8266. Il te suffit de te connecter au wifi local et de le programmer pour qu'il aille lire périodiquement le contenu du site sur lequel tu mettras les messages.

Si tu n'as pas un site pour ça, il faut que tu accèdes à l'esp depuis Internet, donc il faut connaître son port et l'ouvrir pour lui envoyer des commandes, comme afficher le texte que tu veux.

Merci beaucoup, ca a l'air de totalement faire l'affaire, ensuite as tu une idée de comment aller chercher un texte sur internet ? Et si oui créer le site dont j'aurais besoin. (Je sais coder un site mais je ne vois pas exactement comment faire mon interface pour qu'elle soit lisible)

"aller chercher un texte sur Internet" ? Précises ta question.
je ne vois pas de rapport avec la lisibilité de ton interface

Merci beaucoup,

Je pensais heberger le site sur hostinger ou un truc du genre, tu aurais une idée de comment faire ce site, et de comment faire lire les informations à l'esp ?

Alors une fois que l'esp est connecté à internet, il faudrait qu'il aille chercher périodiquement un texte sur un site web afin que je puisse l'afficher sur la matrice led.

Mais je ne sais pas comment faire ce site (en tout cas pour que l'esp puisse y accéder facilement), ni comment faire pour que récupérer le texte grâce à l'esp

je n'ai jamais essayé avec Arduino, je fasi ça avec Raspberry PI en bash ou Python
faire une recherche avec comme mots clefs 'web scrapping Arduino'

bonjour,
l'esp qui traite l'affichage et reçoit le message doit etre connecté au wifi de la personne a qui est destiné le message ?
le module wifi+affichage doit etre installé et connecté en permanence chez elle ?

on dirait un truc comme çà il utilise le esp en AP d'ailleurs....

petit aparté : se mefier du pinout entre la wemos d1 format arduino et la carte wemos MINI :
exemple la D1 gpio4=d4=d14 alors que sur la mini gpio4 = d2
sur carte D1
digitalWrite(D14,HIGH);
digitalWrite(D4,HIGH);
digitalWrite(4,HIGH);
mettront au niveau haut la meme broche
sur la mini : D14 n'existe pas , gpio4 correspond a D2, et D4 ben correspond a d4
sans compter qu'il faut choisir la bonne carte dans la liste LOLIN(WEMOS)xxx
a bon entendeur

Bonjour,

Ca ne pause pas (trop) de problème.
Il suffit de choisir la bonne carte et d'utiliser la notation Dx
Sur la carte D1 R1 la pin marquée D4 correspond à D4 dans le programme
De même sur la carte D1 mini la pin marquée D4 correspond à D4 dans le programme
Mais effectivement ça ne correspond pas à la même gpio

Bonjour, oui en effet, l'esp doit être connecté à son wifi.
Comme l'a proposé al1fch, je me suis donc dirigé pour cette partie vers wifimanager.
Et en effet, l'afficheur doit être connecté en permanence chez elle, et aller vérifier périodiquement la présence d'un nouveau texte.

Pour commencer, j'ai branché mon panneau led, et ai essayé d'afficher un texte en fonction de l'état de connexion, mais en mode de configuration, le texte associé ne s'affiche pas, et en mode connecté, le texte qui s'affiche réellement est constitué de caractères incompréhensibles.

Voici le code :



#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>


#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW
#define MAX_DEVICES 8


#define CLK_PIN   D7
#define DATA_PIN  D5
#define CS_PIN    D6

 MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

#define SPEED_TIME  25
#define PAUSE_TIME  1000

int NUM_ZONES=2;
static int state = 0;


void setup(void)
{

  Serial.begin(115200);
  WiFiManager wifiManager;


 P.begin(NUM_ZONES);
 P.setInvert(false);
//wifiManager.resetSettings();
  wifiManager.setAPCallback(configModeCallback);
  wifiManager.autoConnect("Afficheur");


String stat = "Connected "+ WiFi.localIP().toString();
Serial.println(stat);
int stat_len = stat.length();
char stat_char[50];
stat.toCharArray(stat_char,stat_len);


  P.setZone(0, 0, 7);
  P.displayZoneText(0, stat_char, PA_CENTER, SPEED_TIME, PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
    
  if ( P.displayAnimate()) // animates and returns true when an animation is completed
  {
    P.displayReset(0);
  }
}

void changezone(void){
  
if(state==0){
  
    P.setZone(0, 0, 3);
    P.displayZoneText(0, "Texte 1", PA_CENTER, SPEED_TIME, PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
    P.displayReset(0);
  
    P.setZone(1, 4, 7);
    P.displayZoneText(1, "Texte 2", PA_CENTER, SPEED_TIME, PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
    P.displayReset(1);
  
  state=1;
  }
  
  else if(state==1){
    P.setZone(0, 0, 7);
  state=2;
P.displayZoneText(0, "Texte 3", PA_CENTER, SPEED_TIME, PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
P.displayReset(0);
    
    }
    else if(state==2){
      P.setZone(1, 0, 6);
    P.setZone(0, 7, 7);
    
  state=0;
P.displayZoneText(0, "Texte 4", PA_CENTER, 70, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
P.displayReset(0);

P.displayZoneText(1, "Texte 5", PA_CENTER, SPEED_TIME, PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
P.displayReset(1);
    
    }

  P.synchZoneStart();
  loop();
  }

void loop(void)
{


  // animates and returns true when an animation is completed. These are synchronised, so assume they are all done.
 if (P.displayAnimate()) // animates and returns true when an animation is completed
  {  
    
    for (uint8_t i=0; i<NUM_ZONES; i++)
    {
boolean bAllDone = true;

    for (uint8_t i=0; i<NUM_ZONES && bAllDone; i++)
    {
      bAllDone = bAllDone && P.getZoneStatus(i);
    }

    if (bAllDone) changezone();
      
     
    }
  }
    
}

void configModeCallback (WiFiManager *myWiFiManager) {
    P.setZone(0, 0, 7);
    P.displayZoneText(0, "Config mode : 192.168.4.1", PA_CENTER, SPEED_TIME, PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
    P.displayReset(0);
     if ( P.getZoneStatus(0)) // animates and returns true when an animation is completed
  {
   loop();
  }

}

Pouvez-vous m'aider avec cela dans un premier temps s'il vous plait ? Ensuite, je pensais créer un site web du genre todo list avec une bdd php pour envoyer des requêtes de lecture dessus avec l'esp. Qu'en pensez-vous ?

Pour lire des infos sur un site, voici un tuto : il traite de données au format json

C'est vraiment super ça, ça me permettrait de retrouver les infos qu'il me faut, mais comment mettre le site en forme pour que l'esp récupère ce qu'il lui faut ? Si jamais vous avez une code de site simple là dessus (j'en avais trouvé un pour faire une todo list php) ce serait super ! (Evidemment avec modification en ligne possible)