Table des matières:

Affichage WIFI pour la gestion de la production : 6 étapes
Affichage WIFI pour la gestion de la production : 6 étapes

Vidéo: Affichage WIFI pour la gestion de la production : 6 étapes

Vidéo: Affichage WIFI pour la gestion de la production : 6 étapes
Vidéo: Planification de Projet en 6 étapes : avec Méthode PERT et GANTT 2024, Novembre
Anonim
Affichage WIFI pour la gestion de la production
Affichage WIFI pour la gestion de la production

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 et outils utilisés
Pièces et outils utilisés

Pièces de matériel utilisées:

  1. ESP nœudmcu
  2. TM1637 Horloge à 4 chiffres Affichage
  3. Interrupteur poussoir
  4. résistance 10k
  5. quelques cavaliers

Outils logiciels utilisés:

  1. IDE Arduino
  2. 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

Personnalisation du gestionnaire Wifi
Personnalisation du gestionnaire Wifi

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

Fonctions personnalisées pour l'action de formulaire
Fonctions personnalisées pour l'action de formulaire
Fonctions personnalisées pour l'action de formulaire
Fonctions personnalisées pour l'action de formulaire
Fonctions personnalisées pour l'action de formulaire
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

Connexions et programme principal
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

Création d'un serveur Web
Création d'un serveur Web
Création d'un serveur Web
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 !

Dernière étape!!!
Dernière étape!!!
Dernière étape!!!
Dernière étape!!!
Dernière étape!!!
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é: