Inhaltsverzeichnis:

WIFI-Display für das Produktionsmanagement - Gunook
WIFI-Display für das Produktionsmanagement - Gunook

Video: WIFI-Display für das Produktionsmanagement - Gunook

Video: WIFI-Display für das Produktionsmanagement - Gunook
Video: Diese macOS Einstellungen solltest du SOFORT ändern (macOS Monterey)! | Nils-Hendrik Welk 2024, November
Anonim
WIFI-Display für das Produktionsmanagement
WIFI-Display für das Produktionsmanagement

Ich bin ein bisschen Serie über IOT und Single Board Computer.

Ich habe immer den Wunsch, es über Hobby & Fun-Projekte (echte Produktion und Fertigung) hinaus zu verwenden.

Dieses Instructable ist dabei, ein 4-stelliges 7-Segment-WIFI-Display mit ESP-Nodemcu zu erstellen, um den stündlichen Produktionseingang anzuzeigen. Ich arbeite in der Elektronikfertigungsindustrie, wo wir das Manufacturing Execution System (MES) verwenden, um Input, Output und Prozesse in der Produktion zu überwachen und zu steuern. In diesem Projekt erstelle ich eine kleine Anzeigeeinheit, die die Produktionseingangsmenge pro Linie, Schicht und Stunde anzeigt.

Technisch ähnelt dieses Projekt einer Youtube-Abonnentenzahlanzeige, bei der wir eine API / HTTP-Antwort aus dem Internet verwenden. Aber hier werden wir unsere eigene API erstellen, um mit unserem lokalen MES-System zu interagieren, um die Eingangsmenge zu erhalten.

Schritt 1: Verwendete Teile und Werkzeuge:

Verwendete Teile & Werkzeuge
Verwendete Teile & Werkzeuge

Verwendete Hardwareteile:

  1. ESP-Knoten
  2. TM1637 4-stellige Uhranzeige
  3. Druckschalter
  4. 10k Widerstand
  5. paar Überbrückungsdrähte

Verwendete Softwaretools:

  1. Arduino-IDE
  2. Xampp für PHP/Apache-Webserver

Verwendete Arduino-Bibliothek:

1. Wifi Manager von tzapu & i Angepasst für meine benutzerdefinierten Felder (Wifimanager)

2. ESP_EEPROM zum Speichern meiner benutzerdefinierten Werte im Flash-Speicher

3. SevenSegmentTM1637 für die Anzeige

Schritt 2: WLAN-Manager anpassen

WLAN-Manager anpassen
WLAN-Manager anpassen

In diesem Zuerst habe ich zuerst den Wifi-Manager installiert und dann den Wifi-Manager-Ordner kopiert und erneut im gleichen Ordner im Arduino-Bibliotheksordner übergeben, dann in WiFiManager_custom umbenannt.

Ordner Root-Verzeichnis Meistens wie

C:\Benutzer\Ihr Computername\Dokumente\Arduino\Bibliotheken

Dann habe ich den Ordner wifimanager_custom geöffnet und die Header-.cpp-Datei wie wifimanager_custom umbenannt, das gleiche auch in den Header- und.cpp-Dateien hinzugefügt.

Und habe mein benutzerdefiniertes Formular und meine Schaltfläche in der Kopfzeile hinzugefügt.

in HTTP_PORTAL_OPTIONS PROGMEM habe ich mein Button-Formular für Menu hinzugefügt.

und neues Formular für die Eingabe von Zeile & Schicht hinzugefügt. Ich habe dieses Formular als einfaches Textformular erstellt.

Danach erstellen wir Aktionsfunktionen für diese Formulare in der.cpp-Datei, dafür müssen wir die Funktionsdeklaration in der Header-Datei durchführen.

/* meine benutzerdefinierten Funktionen */

void handleCustomForm(); void handleCustomSave();

Ich habe meine benutzerdefinierten Funktionen in der Header-Datei deklariert. dass unsere Arbeit im Header beendet ist, müssen wir mit der.cpp-Datei gehen, um unsere Funktion und Aktionen zu erstellen.

Schritt 3: Benutzerdefinierte Funktionen für Formularaktionen

Benutzerdefinierte Funktionen für Formularaktionen
Benutzerdefinierte Funktionen für Formularaktionen
Benutzerdefinierte Funktionen für Formularaktionen
Benutzerdefinierte Funktionen für Formularaktionen
Benutzerdefinierte Funktionen für Formularaktionen
Benutzerdefinierte Funktionen für Formularaktionen

Nun öffnen wir unsere Datei wifimanager_custom.cpp.

und wir müssen unseren http-Antworthandler hinzufügen, um unsere Funktionen aufzurufen, wenn unser Formular post ist.

server->on(String(F("/custom_config")), std::bind(&WiFiManager::handleCustomForm, this)); // MEIN benutzerdefinierter Griff

server->on(String(F("/custom_save")), std::bind(&WiFiManager::handleCustomSave, this)); // MEIN benutzerdefinierter Griff

diese rufen unsere benutzerdefinierten Funktionen auf, wenn das Formular veröffentlicht wird.

1.handleCustomForm()-> erstellt eine Seite mit unserem benutzerdefinierten Formular für die Zeilen- und Umschalteingabe und die Schaltfläche zum Speichern.

2.handleCustomSave()-> diese Funktion holt die Formularwerte und speichert sie in den Flash-Speicherplätzen 0 (Zeile) & 50 (Shift).

Schritt 4: Verbindungen & Hauptprogramm

Anschlüsse & Hauptprogramm
Anschlüsse & Hauptprogramm

Anschlüsse sind ganz einfach..

Anschlüsse und Verkabelung:

nodemcu TM1637 Display

3.3v ----Vcc

G ----Gnd

D2 ---- CLK

D3----- DIO

nodemcu-Druckschalter

- Taster an Pin D8 von +5V angeschlossen - 10K Widerstand an Pin D8 von Masse angeschlossen

wir haben unseren wifimanager fertig angepasst. Jetzt müssen wir unser Hauptprogramm erstellen.

1. Unser WLAN-Manager verbindet sich mit dem WLAN-Netzwerk mit den zuletzt verwendeten Anmeldeinformationen, um eine Verbindung herzustellen. Wenn dies fehlschlägt, wird ein AutoConnectAP-WLAN-Server geöffnet.

2. dann tritt es in die Hauptschleife ein.

Unsere Hauptschleife enthält zwei Teile. Eine ist die Conf-Subroutine, wenn wir die Leitung ändern, verschieben oder hinzufügen müssen, um WLAN-Anmeldeinformationen aufzurufen, um den AP im Bedarfsmodus zum Konfigurieren aufzurufen. diese wird aufgerufen, wenn ein mit dem D8-Pin verbundener Taster gedrückt wird.

Leere Schleife () {

config_loop();

}

Void config_loop () {Serial.println ("");

Serial.println("Warten auf Status der Konfigurationstaste…");

//display.print("Warten");

if (digitalRead(TRIGGER_PIN) == HIGH)

{

display.print("Konf"); //WiFiManager

//Lokale Initialisierung. Sobald das Geschäft erledigt ist, müssen Sie es nicht mehr in WiFiManager wifiManager aufbewahren;

// Einstellungen zurücksetzen - zum Testen

//wifiManager.resetSettings();

// Setzt die Zeitüberschreitung, bis das Konfigurationsportal ausgeschaltet wird // nützlich, um alles erneut zu versuchen oder in den Ruhezustand zu gehen // in Sekunden

//wifiManager.setTimeout(120);

//es startet einen Zugangspunkt mit dem angegebenen Namen

//hier "AutoConnectAP" //und geht in eine Blockierungsschleife, die auf die Konfiguration wartet

// OHNE DIESES FUNKTIONIERT DER AP MIT SDK 1.5 NICHT RICHTIG, aktualisiere auf mindestens 1.5.1 //WiFi.mode(WIFI_STA);

if (!wifiManager.startConfigPortal("OnDemandAP")) {Serial.println("Verbindung fehlgeschlagen und Timeout erreicht"); Verzögerung (3000); // zurücksetzen und erneut versuchen, oder vielleicht in den Tiefschlaf versetzen ESP.reset (); Verzögerung (5000); } }

//Serial.println("Button status False. Back to Main loop"); //display.print("Hauptschleife"); //display.clear();

}

Das zweite wird unser Hauptprogramm sein, um HTTP-Antworten von einem bestimmten Server zu erhalten und die Eingabemenge im Display anzuzeigen.

Dazu müssen wir uns zuerst unser Line & Shift Detail aus dem Flashspeicher von ESP holen (Adresse 0-> line, 50-> shift)

EEPROM.begin(100); // EEPROM-SpeicherEEPROM.get (0, Zeile); // Wert von Adresse 0 holen

EEPROM.get(50, verschieben); // Wert von Adresse 50 holen

Dann müssen wir diese Zeile und die Details mit der get-Methode an unseren http-Server übergeben, um den Wert von Eingabe und Ausgabe zu erhalten.

String Base_url="entfernt"; // meine Basis-URLHTTPClient http; //Objekt der Klasse

String URL=Base_url+"?"+"line="+line+"&shift="+shift;

Serial.println (URL);

http.begin(URL);

int httpCode =

Serial.println (http.getString()); // Dies wird alle HTTP-Antwortzeichenfolgen ausgeben;

Wenn Sie möchten, wie der ganze Text dann Ihre Arbeit hier selbst fertig ist, können wir ihn direkt in tm1637 anzeigen.

display.print (http.getString());

Aber ich möchte nicht den gesamten Text anzeigen, da er Eingaben, Ausgaben in JSON-Form und anderen allgemeinen Text über seine Datenbank und usw. enthält.

Also habe ich zuerst diesen allgemeinen Text aus der Antwortzeichenfolge entfernt, indem ich die Funktion Substring() verwendet habe.

Ich habe die Länge des allgemeinen Textes gezählt und gekürzt.

if (httpCode > 0) { const size_t bufferSize = 100; //DynamicJsonDocument jsonBuffer(bufferSize); DynamicJsonDocument root(bufferSize);

//JsonObject& root = doc.parseObject(http.getString());

String json_string=http.getString().substring(121); /* Dies ist mein Offset des allgemeinen Textes, wenn Ihre Antwort nichts dergleichen enthält, können Sie diesen Code entfernen; */

//Seriell.println(json_string);

DeserializationError error = deserializeJson(root, json_string);

//JsonObject& root = jsonBuffer.parseObject(http.getString());

wenn (Fehler)

{ Serial.print (F ("deserializeJson () fehlgeschlagen: "));

Serial.println (error.c_str());

Rückkehr;

}

anders{

const char* input = root["input"];

const char* Ausgabe = root["Ausgabe"];

Serial.print ("Eingabe:");

Serial.println (Eingabe);

Serial.print ("Ausgabe:");

Serial.println (Ausgabe);

display.print("..in..");

display.clear(); // Display löschen

display.print (input); // print ZÄHLEN EINIGE ZIFFERN

}

Das wars unser Hauptprogramm ist fertig.

Schritt 5: Webserver erstellen

Webserver erstellen
Webserver erstellen
Webserver erstellen
Webserver erstellen

Ich verwende xampp als Webserver und PHP-Code, um Daten aus meiner SQL-Datenbank zu erhalten, um die genaue Menge zu erhalten.

Aber ich kann nicht alle Originalcodes davon teilen. weil seine Vertraulichkeit meines Unternehmens. aber ich werde zeigen, wie man einen Webserver erstellt, zeige die statische Eingabe- und Ausgabemenge.

Dazu benötigen Sie einen beliebigen Webhost, ich verwende hier xampp als meinen Host.

Sie können xampp hier herunterladen.

install xampp… Wenn Sie eine klare Anleitung benötigen, können Sie diesen Link verwenden.

Nach der Installation von xampp müssen Sie in Ihr Root-Verzeichnis gehen.

C:\xampp\htdocs

Alle Ihre PHP-Programme sollten sich in diesem Root befinden.

Ich habe meine Seite mit dem Namen esp_api.php erstellt

das ist mein php-code. hier zeige ich nur statische Werte von Input & Output an;

$line=$_GET['line'];$shift=$_GET['shift'];

echo ("meinString"); //allgemeiner Text

if($line=='a0401' und $shift='dd') { $result['input']=100; $result['output']=99; }

else { $result['input']=200; $result['output']=199; }

$myObj->input =''.$result['input'].'';

$myObj->output =''.$result['output'].'';

$myJSON = json_encode($myObj);

echo $myJSON;

Jetzt ist unsere HTTP-Antwort-API fertig.

Unsere http-Basis-URL wird wie folgt aussehen

you_ip_address/esp_api.php

Sie können Ihren API-Antworttext überprüfen, indem Sie

localhost/esp_api.php?line=a0401&shift=dd

hier habe ich line als a0401 und shift als dd erwähnt.

Schritt 6: Letzter Schritt !

Letzter Schritt!!!
Letzter Schritt!!!
Letzter Schritt!!!
Letzter Schritt!!!
Letzter Schritt!!!
Letzter Schritt!!!

Geben Sie die IP-Adresse Ihres Computers in die Basis-URL ein

String Base_url="entfernt"; // deine Basis-URL

und auf Ihr ESP-Nodemcu hochladen. Sobald Sie Ihr WLAN von Ihrem Handy oder Laptop aus eingeschaltet haben, erhalten Sie ein Netzwerk namens AutoConnectAP. Verbinden Sie sich damit und geben Sie Ihre Anmeldeinformationen und Leitungskonfigurationen ein.

Setzen Sie dann Ihr Gerät zurück und überprüfen Sie, ob Ihr Netzwerk verbunden ist, sobald es verbunden ist, dann ist alles erledigt.

Sie können sehen, dass die Eingabe im Display angezeigt wird.

Wenn Sie irgendwelche Leitungs- oder WLAN-Anmeldeinformationen ändern möchten, können Sie den Druckschalter einige Sekunden lang drücken, das Display zeigt conf an.

Sie sind in den demandAP-Modus eingetreten. Sie können das Gerät ändern und zurücksetzen.

Das Hauptmotiv seines anweisbaren, um Ihnen zu zeigen, wie wir unsere Hobby- und Spaßprojekte im realen Produktions- und Fertigungsbereich nutzen und zeigen können

Empfohlen: