Inhaltsverzeichnis:
- Schritt 1: Verwendete Teile und Werkzeuge:
- Schritt 2: WLAN-Manager anpassen
- Schritt 3: Benutzerdefinierte Funktionen für Formularaktionen
- Schritt 4: Verbindungen & Hauptprogramm
- Schritt 5: Webserver erstellen
- Schritt 6: Letzter Schritt !
Video: WIFI-Display für das Produktionsmanagement - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
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 Hardwareteile:
- ESP-Knoten
- TM1637 4-stellige Uhranzeige
- Druckschalter
- 10k Widerstand
- paar Überbrückungsdrähte
Verwendete Softwaretools:
- Arduino-IDE
- 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
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
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 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
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 !
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:
So bauen Sie ein Wifi-System, das die Beleuchtung und Heizung Ihres Aquariums steuert – wikiHow
So erstellen Sie ein Wifi-System, das die Beleuchtung und Heizung Ihres Aquariums steuert: Was macht es? Ein System, das Ihr Aquarium automatisch nach einem Zeitplan oder manuell mit einem Druckknopf oder einer Internetanfrage ein- / ausschaltet. Ein System, das die Wassertemperatur überwacht und E-Mails und Warnungen sendet, falls es unter
Arduino-Programmierung über das Handy -- Arduinodroid -- Arduino-Ide für Android -- Blinzeln: 4 Schritte
Arduino-Programmierung über das Handy || Arduinodroid || Arduino-Ide für Android || Blink: Bitte abonnieren Sie meinen Youtube-Kanal für weitere Videos…… Arduino ist ein Board, das direkt über USB programmiert werden kann. Es ist sehr einfach und günstig für College- und Schulprojekte oder sogar für Produktprototypen. Viele Produkte bauen zunächst darauf für i
IMovie für das Klassenzimmer: 4 Schritte
IMovie für das Klassenzimmer: In dieser Anleitung erfahren Sie, wie Sie Ihr eigenes iMovie planen, erstellen und bearbeiten, um bei dieser lästigen Videoaufgabe ein A zu bekommen. Um einen iMovie zu erstellen, benötigen Sie diese Materialien: einen Mac-Computer, die iMovie-Anwendung
Wir stellen vor: 'Deodorino' - das Infrarot-gesteuerte Arduino in einem leeren Deodorant-Stick. Klicken Sie auf das 1. Foto: 7 Schritte
Wir stellen vor: 'Deodorino' - das Infrarot-gesteuerte Arduino in einem leeren Deodorant-Stick. Klicken Sie auf das 1. Foto: Jetzt zum Detail
Das Optimierungshandbuch für Windows XP: 7 Schritte
Der Leitfaden zur Optimierung von Windows XP: Der vollständige Leitfaden zur Optimierung von Windows XP. Diese Anleitung hält Ihren Computer reaktionsschnell und bissig