Spisu treści:
- Krok 1: Używane części i narzędzia:
- Krok 2: Dostosowywanie Menedżera Wi-Fi
- Krok 3: Niestandardowe funkcje akcji formularza
- Krok 4: Połączenia i główny program
- Krok 5: Tworzenie serwera WWW
- Krok 6: Ostatni krok !
Wideo: Wyświetlacz WIFI do zarządzania produkcją: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Jestem trochę Series o IOT i komputerach jednopłytkowych.
Zawsze chcę używać go poza Hobby & Fun Projects (prawdziwa produkcja i produkcja).
Ten instruktaż ma zamiar utworzyć 4-cyfrowy 7-segmentowy wyświetlacz WIFI z ESP nodemcu, aby pokazać godzinowe wejście produkcyjne. Pracuję w przemyśle elektronicznym, gdzie używamy Systemu Realizacji Produkcji (MES) do monitorowania i kontrolowania wejścia, wyjścia i procesu produkcji. W tym projekcie tworzę mały wyświetlacz, który pokaże ilość wejściową produkcji według linii, zmiany i godziny.
Pod względem technicznym ten projekt jest podobny do wyświetlania liczby subskrybentów YouTube, w którym używamy odpowiedzi API/HTTP z Internetu. Ale tutaj stworzymy własne API do interakcji z naszym lokalnym systemem MES w celu uzyskania ilości danych wejściowych.
Krok 1: Używane części i narzędzia:
Używane części sprzętu:
- węzeł ESP
- TM1637 4-cyfrowy wyświetlacz zegara
- Przełącznik wciskany
- rezystor 10k
- kilka przewodów połączeniowych
Używane narzędzia programowe:
- IDE Arduino
- Xampp dla serwera WWW PHP/Apache
Używana biblioteka Arduino:
1. Menedżer Wifi autorstwa tzapu i dostosowany do moich niestandardowych plików (wifimanager)
2. ESP_EEPROM do przechowywania moich niestandardowych wartości w pamięci Flash
3. SevenSegmentTM1637 do wyświetlania
Krok 2: Dostosowywanie Menedżera Wi-Fi
W tym pierwszym najpierw zainstalowałem menedżera Wi-Fi, a następnie skopiowałem folder menedżera Wifi i przeszedłem ponownie w tym samym folderze biblioteki Arduino, a następnie zmieniłem nazwę na WiFiManager_custom.
Folder Katalog główny Głównie jak
C:\Użytkownicy\nazwa komputera\Dokumenty\Arduino\biblioteki
Następnie otworzyłem folder wifimanager_custom i zmieniłem nazwę pliku nagłówkowego.cpp na taki sam jak wifimanager_custom, dodałem to samo również w plikach nagłówkowych i.cpp.
I dodałem mój niestandardowy formularz i przycisk w nagłówku.
w HTTP_PORTAL_OPTIONS PROGMEM dodałem formularz przycisku do Menu.
i dodano nowy formularz do wprowadzania linii i zmiany. stworzyłem ten formularz jako prosty formularz tekstowy.
Następnie stworzymy funkcje akcji dla tych formularzy w pliku.cpp, w tym celu musimy zrobić deklarację funkcji w pliku nagłówkowym.
/* moje funkcje niestandardowe */
void handleCustomForm(); void handleCustomSave();
zadeklarowałem moje niestandardowe funkcje w pliku nagłówkowym. że nasza praca w nagłówku jest zakończona, musimy przejść do pliku.cpp, aby utworzyć naszą funkcję i akcje.
Krok 3: Niestandardowe funkcje akcji formularza
Teraz otwieramy nasz plik wifimanager_custom.cpp.
i musimy dodać nasz program obsługi odpowiedzi http, aby wywoływać nasze funkcje, gdy nasz formularz jest wysyłany.
server->on(String(F("/custom_config")), std::bind(&WiFiManager::handleCustomForm, to)); // MÓJ niestandardowy uchwyt
server->on(String(F("/custom_save")), std::bind(&WiFiManager::handleCustomSave, to)); // MÓJ niestandardowy uchwyt
wywołają one nasze funkcje niestandardowe po opublikowaniu formularza.
1.handleCustomForm()-> utworzy stronę z naszym niestandardowym formularzem dla wprowadzania linii i przesunięcia oraz przycisku zapisu.
2.handleCustomSave()-> ta funkcja pobiera wartości formularza i przechowuje w lokalizacjach pamięci Flash 0 (linia) i 50 (przesunięcie).
Krok 4: Połączenia i główny program
Połączenia są bardzo proste..
Połączenia i okablowanie:
Wyświetlacz nodemcu TM1637
3.3 v ---- Vcc
G ----Gnd
D2 ---- CLK
D3----- DIO
nodemcu- przełącznik wciskany
- przycisk dołączony do pinu D8 od +5V - rezystor 10K podłączony do pinu D8 od masy
zakończyliśmy dostosowywanie naszego wifimanagera. teraz musimy stworzyć nasz główny program.
1. nasz menedżer Wi-Fi połączy się z siecią Wi-Fi z ostatnio używanymi danymi uwierzytelniającymi do połączenia, jeśli się nie powiedzie, otworzy serwer Wi-Fi AutoConnectAP. Możemy skonfigurować nowe dane uwierzytelniające Wi-Fi, linię i przesunięcie, łącząc się z tym serwerem Wi-Fi.
2. następnie wejdzie do głównej pętli.
Nasza główna pętla będzie składać się z dwóch części. jednym z nich jest podprogram conf, gdy musimy zmienić linię, przesunąć lub dodać dowolne dane uwierzytelniające Wi-Fi, aby skonfigurować AP w trybie żądania. zostanie to wywołane po naciśnięciu przycisku podłączonego do pinu D8.
pusta pętla () {
config_loop();
}
void config_loop(){ Serial.println("");
Serial.println("Oczekiwanie na stan przycisku konfiguracji…");
//display.print("Czekaj");
if (digitalRead(TRIGGER_PIN) == HIGH)
{
display.print("Konf"); //Menedżer WiFi
//Inicjalizacja lokalna. Po zakończeniu działalności nie ma potrzeby trzymania go w pobliżu WiFiManager wifiManager;
//resetuj ustawienia - do testów
//wifiManager.resetSettings();
//ustawia limit czasu do momentu wyłączenia portalu konfiguracyjnego //przydatne, aby spróbować ponownie lub przejść w tryb uśpienia //w sekundach
//wifiManager.setTimeout(120);
//uruchamia punkt dostępowy o podanej nazwie
//tutaj "AutoConnectAP" //i przechodzi w pętlę blokującą oczekującą na konfigurację
//BEZ TEGO AP NIE DZIAŁA POPRAWNIE Z SDK 1.5, zaktualizuj co najmniej do wersji 1.5.1 //WiFi.mode(WIFI_STA);
if (!wifiManager.startConfigPortal("OnDemandAP")) { Serial.println("nie udało się połączyć i przekroczyć limit czasu"); opóźnienie(3000); //resetuj i spróbuj ponownie, a może uśpij go ESP.reset(); opóźnienie(5000); } }
//Serial.println("Status przycisku False. Powrót do pętli głównej"); //display.print("Pętla główna"); //wyswietl.clear();
}
Drugi będzie naszym głównym programem do pobierania odpowiedzi HTTP z konkretnego serwera i wyświetlania ilości wejściowej na wyświetlaczu.
W tym celu najpierw musimy pobrać szczegóły linii i zmiany z pamięci Flash ESP (adres 0-> linia, 50-> przesunięcie)
EEPROM.początek(100); // pamięć eepromEEPROM.get(0, linia); // pobierz wartość z adresu 0
EEPROM.get (50, przesunięcie); // Pobierz wartość z adresu 50
następnie musimy przekazać tę linię i przesunąć szczegóły do naszego serwera http za pomocą metody get, aby uzyskać wartość wejścia i wyjścia.
Ciąg Base_url="usunięty"; // mój podstawowy adres URLHTTPClient http; //Obiekt klasy
String URL=Base_url+"?"+"line="+linia+"&shift="+shift;
Serial.println(URL);
http.początek(URL);
int httpCode =
Serial.println(http.getString()); // to wypisze cały łańcuch odpowiedzi
jeśli chcesz, jak cały tekst, to twoja praca jest tutaj skończona, możemy ją bezpośrednio wyświetlić na wyświetlaczu tm1637.
display.print(http.getString());
Ale nie chcę pokazywać całego tekstu, ponieważ zawiera on dane wejściowe, wyjściowe w formie json i inny ogólny tekst dotyczący bazy danych itp.
więc najpierw usunąłem ten ogólny tekst z ciągu odpowiedzi za pomocą funkcji Substring().
policzyłem długość ogólnego tekstu i przyciąłem go.
if (httpCode > 0) { const size_t bufferSize = 100; //DynamicJsonDocument jsonBuffer(bufferSize); DynamicJsonDocument root (rozmiar bufora);
//JsonObject& root = doc.parseObject(http.getString());
String json_string=http.getString().substring(121); /* to jest moje przesunięcie tekstu ogólnego, jeśli twoja odpowiedź nie ma czegoś takiego, możesz usunąć ten kod; */
//Serial.println(json_string);
DeserializationError error = deserializeJson(root, json_string);
//JsonObject& root = jsonBuffer.parseObject(http.getString());
jeśli (błąd)
{ Serial.print(F("deserializeJson() nie powiodło się: "));
Serial.println(błąd.c_str());
powrót;
}
w przeciwnym razie{
const char* input = root["input"];
const char* wyjście = root["wyjście"];
Serial.print("Wejście:");
Serial.println(wejście);
Serial.print("Wyjście:");
Serial.println(wyjście);
display.print("..in..");
wyświetl.wyczyść(); // wyczyść wyświetlacz
display.print(input);// print LICZĄC NIEKTÓRE CYFRY
}
to koniec naszego głównego programu.
Krok 5: Tworzenie serwera WWW
Używam xampp jako mojego serwera WWW i kodu PHP, aby uzyskać dane z mojej bazy danych SQL, aby uzyskać dokładną ilość.
Ale nie mogę podzielić się wszystkimi oryginalnymi kodami. ze względu na poufność mojej firmy. ale pokażę, jak utworzyć jeden serwer WWW, pokażę fikcyjną ilość danych wejściowych i wyjściowych.
W tym celu potrzebujesz dowolnego hosta internetowego, używam tutaj xampp jako mojego hosta.
możesz pobrać xampp tutaj.
zainstaluj xampp… jeśli potrzebujesz jasnej instrukcji, możesz użyć tego linku.
Po zainstalowaniu xamppa musisz przejść do katalogu głównego.
C:\xampp\htdocs
wszystkie twoje programy php powinny znajdować się w tym katalogu głównym.
stworzyłem swoją stronę o nazwie esp_api.php
to jest mój kod php. tutaj wyświetlam tylko statyczne wartości wejścia i wyjścia;
$line=$_GET['line'];$shift=$_GET['shift'];
echo ("myString"); //ogólny tekst
if($line=='a0401' i $shift='dd') { $result['input']=100; $wynik['wyjście']=99; }
else { $result['input']=200; $wynik['wyjście']=199; }
$myObj->input =''.$result['input'].'';
$myObj->wyjście =''.$result['wyjście'].'';
$myJSON = json_encode($myObj);
echo $myJSON;
Teraz nasz interfejs API odpowiedzi HTTP jest gotowy.
Nasz podstawowy adres URL http będzie podobny
you_ip_address/esp_api.php
możesz sprawdzić tekst odpowiedzi API przez
localhost/esp_api.php?line=a0401&shift=dd
tutaj wymieniłem linię jako a0401 i przesunięcie jako dd.
Krok 6: Ostatni krok !
Wpisz adres IP swojego komputera w podstawowym adresie URL
Ciąg Base_url="usunięty"; // Twój podstawowy adres URL
i prześlij do swojego węzła ESP. Gdy to zrobisz, po prostu włącz Wi-Fi z telefonu komórkowego lub laptopa, otrzymasz sieć o nazwie AutoConnectAP. połącz się z nim i wprowadź konfiguracje poświadczeń i linii.
Następnie zresetuj urządzenie i sprawdź, czy twoja sieć jest podłączona po podłączeniu, a następnie wszystko jest zrobione.
Możesz zobaczyć wejście jest wyświetlane na wyświetlaczu.
jeśli chcesz zmienić dowolną linię lub dane uwierzytelniające Wi-Fi, możesz nacisnąć przełącznik na kilka sekund, wyświetlacz pokaże konfi.
wszedłeś w tryb demandAP. możesz zmienić i zresetować urządzenie.
Głównym motywem jego instruktażu, aby pokazać, jak możemy wykorzystać nasze hobby i zabawne projekty w prawdziwej produkcji i produkcji oraz pokazać
Zalecana:
Wyświetlacz TTGO (kolorowy) z Micropythonem (wyświetlacz TTGO T): 6 kroków
Wyświetlacz TTGO (kolorowy) Z Micropythonem (wyświetlacz TTGO T): Wyświetlacz TTGO T to płyta oparta na ESP32, która zawiera 1,14-calowy kolorowy wyświetlacz. Deskę można kupić za cenę mniejszą niż 7$ (wliczając wysyłkę, nagrodę widzianą na banggood). To niesamowita nagroda za ESP32 z wyświetlaczem.T
Produkcja kostki świetlnej: 7 kroków
Produkcja kostki świetlnej: 1. Podstawowa zasada kostki świetlnej Wykorzystując efekt trwałości ludzkiego oka i używając komputera jednoukładowego do sterowania lampą LED, aby szybko migać, wyświetlany jest pełny wzór
Produkcja płytki sterującej falą sinusoidalną: 5 kroków
Produkcja tablicy sterującej falą sinusoidalną: tym razem jest to jednofazowa tablica kontrolna z sinusoidą poza siecią, a następnie jednofazowa tablica kontrolna z falą sinusoidalną poza siecią, a następnie trójfazowa tablica kontrolna z falą sinusoidalną poza siecią, i wreszcie trójfazową sinusoidalną tablicę kontrolną poza siecią. Mamy nadzieję, że
Wtyki Arduino Mega RJ45 do zarządzania kablami: 5 kroków
Wtyki Arduino Mega RJ45 do zarządzania kablami: Arduino Mega ma mnóstwo pinów - to duży powód, aby kupić jeden, prawda? Chcemy wykorzystać wszystkie te szpilki! Okablowanie może jednak szybko stać się bałaganem spaghetti bez zarządzania kablami. Możemy skonsolidować przewody za pomocą wtyczek Ethernet. Piny danych na
Wyświetlacz LCD I2C / IIC - Konwertuj wyświetlacz LCD SPI na wyświetlacz LCD I2C: 5 kroków
Wyświetlacz LCD I2C / IIC | Konwertuj wyświetlacz LCD SPI na wyświetlacz LCD I2C: używanie wyświetlacza LCD spi wymaga zbyt wielu połączeń, co jest naprawdę trudne, więc znalazłem moduł, który może przekonwertować wyświetlacz LCD i2c na wyświetlacz LCD spi, więc zaczynamy