Table des matières:
- Étape 1: pièces et outils utilisés:
- Étape 2: Personnalisation de Wifi Manager
- Étape 3: Fonctions personnalisées pour l'action de formulaire
- Étape 4: Connexions et programme principal
- Étape 5: Création d'un serveur Web
- Étape 6: Dernière étape !
Vidéo: Affichage WIFI pour la gestion de la production : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Je suis un peu une série sur l'IOT et les ordinateurs à carte unique.
Je souhaite toujours l'utiliser au-delà des projets Hobby & Fun (production et fabrication réelles).
Ce Instructable est sur le point de créer un affichage WIFI à 7 segments à 4 chiffres avec ESP nodemcu pour afficher l'entrée de production horaire. Je travaille dans l'industrie de la fabrication électronique, où nous utilisons le système d'exécution de la fabrication (MES) pour surveiller et contrôler les entrées, les sorties et les processus de production. Dans ce projet, je crée une petite unité d'affichage qui affichera la quantité d'entrée de production selon la ligne, le quart et l'heure.
Techniquement, ce projet est similaire à un affichage du nombre d'abonnés Youtube, où nous utilisons la réponse API/HTTP en ligne. Mais ici, nous allons créer notre propre API pour interagir avec notre système MES local pour obtenir la quantité d'entrée.
Étape 1: pièces et outils utilisés:
Pièces de matériel utilisées:
- ESP nœudmcu
- TM1637 Horloge à 4 chiffres Affichage
- Interrupteur poussoir
- résistance 10k
- quelques cavaliers
Outils logiciels utilisés:
- IDE Arduino
- Xampp pour serveur Web PHP/Apache
La bibliothèque Arduino est utilisée:
1. Gestionnaire Wifi par tzapu & i Personnalisé pour mes fichiers personnalisés (wifimanager)
2. ESP_EEPROM pour stocker mes valeurs personnalisées dans la mémoire Flash
3. SevenSegmentTM1637 pour l'affichage
Étape 2: Personnalisation de Wifi Manager
Dans ce premier, j'ai d'abord installé le gestionnaire wifi, puis j'ai copié le dossier du gestionnaire Wifi et passé à nouveau dans le même dans le dossier de la bibliothèque Arduino, puis renommé en WiFiManager_custom.
Dossier Répertoire racine Plutôt similaire
C:\Users\votre nom d'ordinateur\Documents\Arduino\libraries
Ensuite, j'ai ouvert le dossier wifimanager_custom et renommé le fichier d'en-tête.cpp identique à wifimanager_custom, ajouté la même chose dans les fichiers d'en-tête et.cpp également.
Et j'ai ajouté mon formulaire et mon bouton personnalisés dans l'en-tête.
dans HTTP_PORTAL_OPTIONS PROGMEM j'ai ajouté mon formulaire de bouton pour Menu.
et ajout d'un nouveau formulaire pour entrer la ligne et le décalage. J'ai créé ce formulaire sous forme de texte simple.
Après cela, nous allons créer des fonctions d'action pour ces formulaires dans le fichier.cpp, pour cela nous devons faire une déclaration de fonction dans le fichier d'en-tête.
/* mes fonctions personnalisées */
void handleCustomForm(); void handleCustomSave();
J'ai déclaré mes fonctions personnalisées dans le fichier d'en-tête. que cela, notre travail dans l'en-tête est terminé, nous devons utiliser le fichier.cpp pour créer notre fonction et nos actions.
Étape 3: Fonctions personnalisées pour l'action de formulaire
Maintenant, nous ouvrons notre fichier wifimanager_custom.cpp.
et nous devons ajouter notre gestionnaire de réponse http pour appeler nos fonctions lorsque notre formulaire est posté.
server->on(String(F("/custom_config")), std::bind(&WiFiManager::handleCustomForm, this)); // MA poignée personnalisée
server->on(String(F("/custom_save")), std::bind(&WiFiManager::handleCustomSave, this)); // MA poignée personnalisée
ceux-ci appelleront nos fonctions personnalisées lorsque le formulaire est publié.
1.handleCustomForm () -> créera une page avec notre formulaire personnalisé pour la saisie de ligne et de décalage et le bouton d'enregistrement.
2.handleCustomSave() -> cette fonction obtiendra les valeurs du formulaire et les stockera dans les emplacements de mémoire Flash 0 (ligne) et 50 (shift).
Étape 4: Connexions et programme principal
Les connexions sont très simples..
Connexions et câblage:
Affichage nodemcu TM1637
3.3v ----Vcc
G ----Gnd
D2 ---- CLK
D3 ----- DIO
bouton-poussoir nodemcu
- bouton-poussoir attaché à la broche D8 de +5V - résistance de 10K attachée à la broche D8 de la terre
nous avons fini de personnaliser notre wifimanager. maintenant nous devons créer notre programme principal.
1. notre gestionnaire wifi se connectera au réseau wifi avec les dernières informations d'identification utilisées pour se connecter, s'il échoue, il ouvre un serveur wifi AutoConnectAP.
2. puis il entrera dans la boucle principale.
Notre boucle principale contiendra deux parties. l'un est la sous-routine confi lorsque nous devons changer de ligne, déplacer ou ajouter des informations d'identification wifi pour appeler le mode de demande AP à configurer. celui-ci sera appelé lorsqu'un bouton-poussoir connecté à la broche D8 est enfoncé.
boucle vide() {
config_loop();
}
void config_loop(){ Serial.println("");
Serial.println("En attente de l'état du bouton Config…");
// display.print("Attendez");
if (digitalRead(TRIGGER_PIN) == HIGH)
{
display.print("Conf"); //Gestionnaire WiFi
//Initialisation locale. Une fois son travail terminé, il n'est pas nécessaire de le garder autour de WiFiManager wifiManager;
//réinitialiser les paramètres - pour les tests
//wifiManager.resetSettings();
//définit le délai d'attente jusqu'à ce que le portail de configuration soit désactivé //utile pour tout réessayer ou se mettre en veille //en quelques secondes
//wifiManager.setTimeout(120);
//il démarre un point d'accès avec le nom spécifié
//ici "AutoConnectAP" //et entre dans une boucle de blocage en attente de configuration
//SANS CELA, L'AP NE SEMBLE PAS FONCTIONNER CORRECTEMENT AVEC SDK 1.5, mettez à jour au moins vers 1.5.1 //WiFi.mode(WIFI_STA);
if (!wifiManager.startConfigPortal("OnDemandAP")) { Serial.println("échec de connexion et expiration du délai"); retard(3000); // réinitialiser et réessayer, ou peut-être le mettre en veille prolongée ESP.reset(); retard (5000); } }
//Serial.println("État du bouton False. Retour à la boucle principale"); // display.print("Boucle principale"); //affichage.clear();
}
Le deuxième sera notre programme principal pour obtenir une réponse HTTP d'un serveur particulier et afficher la quantité d'entrée dans l'affichage.
Pour cela, nous devons d'abord obtenir nos détails de ligne et de décalage à partir du stockage Flash d'ESP (adresse 0-> ligne, 50-> décalage)
EEPROM.begin(100); // stockage eepromEEPROM.get(0, ligne); // récupère la valeur de l'adresse 0
EEPROM.get (50, décalage); // Obtenir la valeur de l'adresse 50
Ensuite, nous devons transmettre cette ligne et décaler les détails à notre serveur http par la méthode get pour obtenir la valeur de l'entrée et de la sortie.
String Base_url="supprimé"; // mon urlHTTPClient http; //Objet de la classe
URL de chaîne=Base_url+"?"+"line="+line+"&shift="+shift;
Serial.println(URL);
http.begin(URL);
int httpCode =
Serial.println(http.getString()); // cela imprimera toutes les chaînes de réponse
si vous voulez voir tout le texte, votre travail est terminé ici, nous pouvons l'afficher directement dans l'affichage tm1637.
display.print(http.getString());
Mais je ne veux pas afficher tout le texte, car il contient des entrées, des sorties sous forme json et un autre texte général sur sa base de données, etc.
j'ai donc d'abord supprimé ce texte général de la chaîne de réponse en utilisant la fonction Substring().
J'ai compté la longueur du texte général et l'ai coupé.
if (httpCode > 0) { const size_t bufferSize = 100; //DynamicJsonDocument jsonBuffer(bufferSize); DynamicJsonDocument root(bufferSize);
//JsonObject& root = doc.parseObject(http.getString());
Chaîne json_string=http.getString().substring(121); /* c'est mon décalage du texte général si votre réponse n'a rien de tel, vous pouvez supprimer ce code; */
//Série.println(json_string);
DeserializationError error = deserializeJson(root, json_string);
//JsonObject& root = jsonBuffer.parseObject(http.getString());
si (erreur)
{ Serial.print(F("deserializeJson() a échoué: "));
Serial.println(error.c_str());
revenir;
}
autre{
const char* input = root["input"];
const char* sortie = racine["sortie"];
Serial.print("Entrée:");
Serial.println(entrée);
Serial.print("Sortie:");
Serial.println(sortie);
display.print("..in..");
display.clear(); // efface l'affichage
display.print(input);// print COMPTER QUELQUES CHIFFRES
}
ça y est, notre programme principal est terminé.
Étape 5: Création d'un serveur Web
J'utilise xampp comme serveur Web et code PHP pour obtenir des données de ma base de données SQL afin d'obtenir la quantité exacte.
Mais je ne peux pas partager tous les codes originaux de celui-ci. parce que sa confidentialité de mon entreprise. mais je vais montrer comment créer un serveur Web, montrer la quantité statique d'entrée et de sortie factice.
Pour cela, vous devriez avoir besoin de n'importe quel hébergeur, j'utilise ici xampp comme hôte.
vous pouvez télécharger xampp ici.
installez xampp… si vous avez besoin d'instructions claires, vous pouvez utiliser ce lien.
Après avoir installé xampp, vous devez vous rendre dans votre répertoire racine.
C:\xampp\htdocs
tous vos programmes php devraient être à l'intérieur de cette racine.
j'ai créé ma page au nom appelé esp_api.php
c'est mon code php. ici, je n'affiche que les valeurs statiques d'entrée et de sortie;
$line=$_GET['line'];$shift=$_GET['shift'];
echo ("maChaîne"); //texte général
if($line=='a0401' et $shift='dd') { $result['input']=100; $result['output']=99; }
else { $result['input']=200; $result['output']=199; }
$myObj->input =''.$result['input'].'';
$monObj->sortie =''.$result['sortie'].'';
$myJSON = json_encode($myObj);
echo $myJSON;
Notre API de réponse HTTP est maintenant terminée.
Notre URL de base http sera comme
votre_adresse_ip/esp_api.php
vous pouvez vérifier le texte de votre réponse API en
localhost/esp_api.php?line=a0401&shift=dd
ici, j'ai mentionné la ligne comme a0401 et le décalage comme dd.
Étape 6: Dernière étape !
Entrez l'adresse IP de votre ordinateur dans l'URL de base
String Base_url="supprimé"; // votre URL de base
et téléchargez sur votre nodemcu ESP. Une fois que vous avez terminé, allumez simplement votre wifi depuis votre mobile ou votre ordinateur portable, vous obtiendrez un réseau appelé AutoConnectAP. connectez-vous avec et entrez vos informations d'identification et vos configurations de ligne.
Ensuite, réinitialisez votre appareil et vérifiez que votre réseau est connecté une fois qu'il est connecté, puis tout est fait.
Vous pouvez voir que l'entrée est affichée à l'écran.
si vous souhaitez modifier n'importe quelle ligne ou identifiant wifi, vous pouvez appuyer sur l'interrupteur poussoir pendant quelques secondes, l'écran affiche confi.
vous êtes entré en mode demandAP. votre peut changer et réinitialiser l'appareil.
La principale moto de son instructable pour vous montrer comment nous pouvons utiliser nos projets de passe-temps et amusants dans la zone de production et de fabrication réelle et montrer
Conseillé:
Gestion facile hors bande pour l'informatique : 4 étapes
Gestion hors bande facile pour l'informatique : icônes créées par Freepik à partir de www.flaticon.comApprenez à configurer la gestion hors bande (OOBM) en connectant un Raspberry Pi configuré à distance.it et un appareil Android ou iPhone par connexion USB. Cela fonctionne sur RPi2/RPi3/RPi4. Si vous ne savez pas quoi
Gestion de l'alimentation pour CR2032 : 4 étapes
Gestion de l'alimentation pour CR2032 : faire une application à faible consommation d'énergie nécessite des composants spéciaux et des soins de lignes de code. Certains composants offrent cette fonctionnalité, d'autres nécessitent d'être travaillés en peu de temps. l'idée principale lorsque l'on travaille dans une application à très basse énergie est le type de batterie. les
Fiches Arduino Mega RJ45 pour la gestion des câbles : 5 étapes
Fiches Arduino Mega RJ45 pour la gestion des câbles : Arduino Mega a des tonnes de broches - c'est une grande raison d'en acheter une, non ? Nous voulons utiliser toutes ces épingles ! Cependant, le câblage peut rapidement devenir un gâchis spaghetti sans gestion des câbles. Nous pouvons consolider les fils en utilisant des prises Ethernet. Les broches de données sur
Comment créer une piste électronique impressionnante : Production musicale d'introduction pour FL Studio : 6 étapes
Comment faire une piste électronique Bumpin' : Production musicale d'introduction pour FL Studio : Bienvenue ! Ce guide Instructable aidera les producteurs de musique débutants à intermédiaires à utiliser FL Studio pour créer divers genres de musique de danse électronique. Il passera en revue les éléments de base de la création d'une chanson, dans le but de détailler les astuces de base
Télécommande de climatiseur infrarouge pour téléphone portable Production de bricolage: 7 étapes
Télécommande de climatiseur infrarouge pour téléphone portable Production de bricolage: Pendant l'été chaud, lorsque vous rentrez chez vous ou au bureau, vous voulez allumer le climatiseur mais vous ne trouvez pas la télécommande pendant un certain temps. C'est une chose très ennuyeuse. À l'ère où ce téléphone mobile ne part pas, pouvez-vous utiliser le téléphone mobile comme un