Spisu treści:

Wyświetlacz WIFI do zarządzania produkcją: 6 kroków
Wyświetlacz WIFI do zarządzania produkcją: 6 kroków

Wideo: Wyświetlacz WIFI do zarządzania produkcją: 6 kroków

Wideo: Wyświetlacz WIFI do zarządzania produkcją: 6 kroków
Wideo: Doda i jej miny podczas przemówienia Górniak (oryg. cezarywisniewski_) 2024, Listopad
Anonim
Wyświetlacz WIFI do zarządzania produkcją
Wyświetlacz WIFI do zarządzania produkcją

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 i narzędzia
Używane części i narzędzia

Używane części sprzętu:

  1. węzeł ESP
  2. TM1637 4-cyfrowy wyświetlacz zegara
  3. Przełącznik wciskany
  4. rezystor 10k
  5. kilka przewodów połączeniowych

Używane narzędzia programowe:

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

Dostosowywanie Menedżera Wi-Fi
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

Funkcje niestandardowe dla akcji formularza
Funkcje niestandardowe dla akcji formularza
Funkcje niestandardowe dla akcji formularza
Funkcje niestandardowe dla akcji formularza
Funkcje niestandardowe dla akcji formularza
Funkcje niestandardowe dla 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 i program główny
Połączenia i program główny

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

Tworzenie serwera WWW
Tworzenie serwera WWW
Tworzenie serwera WWW
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 !

Ostatni krok!!!
Ostatni krok!!!
Ostatni krok!!!
Ostatni krok!!!
Ostatni krok!!!
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: