İçindekiler:
- Adım 1: Kullanılan Parçalar ve Araçlar:
- 2. Adım: Wifi Yöneticisini Özelleştirme
- 3. Adım: Form Eylemi için Özel İşlevler
- Adım 4: Bağlantılar ve Ana Program
- Adım 5: Web Sunucusu Oluşturma
- Adım 6: Son Adım!!
Video: Üretim Yönetimi için WIFI Ekranı: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
IOT ve Tek kartlı bilgisayarlar hakkında biraz Seriyim.
Her zaman Hobi & Eğlence Projelerinin (gerçek Üretim ve İmalat) ötesinde kullanmak isterim.
Bu Talimat, saatlik Üretim Girdisini Göstermek için ESP nodemcu ile 4 haneli 7 segmentli WIFI ekranı oluşturmak üzeredir. Üretim Katı Girdisini, Çıktısını ve Sürecini İzlemek ve Kontrol Etmek için Üretim Yürütme Sistemini (MES) kullandığımız Elektronik üretim endüstrisinde çalışıyorum. Bu projemde üretim girdi miktarını satır, vardiya ve saat bazında gösterecek olan Küçük teşhir ünitesi oluşturuyorum.
Teknik olarak bu Proje, çevrimiçi API/HTTP yanıtını kullandığımız bir Youtube Abone sayısı ekranına benzer. Ancak burada, Girdi miktarını Almak için yerel MES sistemimizle etkileşim kurmak için kendi api'mizi oluşturacağız.
Adım 1: Kullanılan Parçalar ve Araçlar:
Kullanılan Donanım Parçaları:
- ESP düğümü
- TM1637 4 haneli saat Ekranı
- itme anahtarı
- 10k direnç
- birkaç atlama teli
Kullanılan Yazılım Araçları:
- Arduino IDE'si
- PHP/Apache web sunucusu için Xampp
Arduino Kütüphanesinde Kullanılanlar:
1. Wifi yöneticisi tzapu & i Özel dosyalarım için özelleştirilmiş (wifimanager)
2. Özel değerlerimi Flash bellekte saklamak için ESP_EEPROM
3. Ekran için SevenSegmentTM1637
2. Adım: Wifi Yöneticisini Özelleştirme
Bu İlk önce önce wifi yöneticisini kurdum ve sonra Wifi yöneticisi Klasörünü Kopyaladım ve Arduino kütüphane klasöründeki Aynı'ya tekrar geçtim, ardından WiFiManager_custom olarak yeniden adlandırdım.
Klasör Kök dizini Çoğunlukla gibi
C:\Kullanıcılar\bilgisayarınızın adı\Documents\Arduino\libraries
Sonra wifimanager_custom klasörünü açtım ve başlık.cpp dosyasını wifimanager_custom ile aynı olarak yeniden adlandırdım, başlık &.cpp dosyalarına da aynısını ekledim.
Ve Özel Form ve Düğmemi üstbilgiye ekledim.
HTTP_PORTAL_OPTIONS PROGMEM'de Menü için buton formumu ekledim.
ve satır ve vardiya girmek için yeni Form eklendi. bu formu basit metin formu olarak oluşturdum.
Bundan sonra.cpp dosyasında bu formlar için eylem işlevleri oluşturacağız, bunun için başlık dosyasında işlev bildirimi yapmamız gerekiyor.
/* özel işlevlerim */
geçersiz tutamakCustomForm(); geçersiz tutamakCustomSave();
özel işlevlerimi başlık dosyasında ilan ettim. bu, başlıktaki işimiz bitti, işlevimizi ve eylemlerimizi oluşturmak için.cpp dosyasıyla gitmeliyiz.
3. Adım: Form Eylemi için Özel İşlevler
Şimdi wifimanager_custom.cpp dosyamızı açıyoruz.
ve formumuz gönderildiğinde işlevlerimizi çağırmak için http yanıt işleyicimizi eklemeliyiz.
server->on(String(F("/custom_config")), std::bind(&WiFiManager::handleCustomForm, this)); // BENİM özel tanıtıcım
server->on(String(F("/custom_save")), std::bind(&WiFiManager::handleCustomSave, this)); // BENİM özel tanıtıcım
bunlar, form gönderildiğinde özel işlevlerimizi çağırır.
1.handleCustomForm()->, satır & kaydırma girişi & kaydet düğmesi için özel formumuzu içeren bir sayfa oluşturacaktır.
2.handleCustomSave()-> bu fonksiyon, form değerlerini alacak ve Flash bellek konumları 0 (satır) ve 50(shift) içinde saklayacaktır.
Adım 4: Bağlantılar ve Ana Program
Bağlantılar çok basit..
Bağlantılar ve kablolama:
nodemcu TM1637 Ekran
3.3v ----Vcc
G ----Gnd
D2 ---- CLK
D3----- DIO
nodemcu- basmalı anahtar
- +5V'den D8 pimine bağlı buton - topraktan D8 pimine bağlı 10K direnç
wifimanager'ımızı özelleştirmeyi bitirdik. şimdi ana programımızı oluşturmalıyız.
1. wifi yöneticimiz, bağlanmak için son kullanılan kimlik bilgileriyle wifi ağına bağlanacaktır, başarısız olursa bir AutoConnectAP wifi sunucusu açar. Bu wifi sunucusuna bağlanarak yeni wifi kimlik bilgilerini, hat ve vardiyayı yapılandırabiliriz.
2. daha sonra ana döngüye girecektir.
Ana döngümüz iki bölümden oluşacaktır. Bunlardan biri, yapılandırmak üzere talep modu AP'yi çağırmak için hattı değiştirmemiz, kaydırmamız veya herhangi bir wifi kimlik bilgisi eklememiz gerektiğinde confi alt yordamıdır. bu, D8 pinine bağlı bir basma düğmesine basıldığında çağrılır.
boşluk döngüsü () {
config_loop();
}
void config_loop(){ Serial.println("");
Serial.println("Yapılandırma butonunun Durumu Bekleniyor…");
//display.print("Bekle");
if (digitalRead(TRIGGER_PIN) == YÜKSEK)
{
display.print("Konf"); //WiFiYöneticisi
//Yerel başlatma. İşi bittiğinde, onu WiFiManager wifiManager'ın etrafında tutmaya gerek yoktur;
// ayarları sıfırla - test için
//wifiManager.resetSettings();
//yapılandırma portalı kapanana kadar zaman aşımını ayarlar //her şeyi yeniden denemek veya uyku moduna geçirmek için kullanışlıdır //saniyeler içinde
//wifiManager.setTimeout(120);
//belirtilen adla bir erişim noktası başlatır
//burada "AutoConnectAP" //ve yapılandırmayı bekleyen bir engelleme döngüsüne girer
//BU OLMADAN AP SDK 1.5 İLE DÜZGÜN ÇALIŞMIYOR, en az 1.5.1'e güncelleyin //WiFi.mode(WIFI_STA);
if (!wifiManager.startConfigPortal("OnDemandAP")) { Serial.println("bağlanamadı ve zaman aşımına uğradı"); gecikme(3000); //sıfırlayıp yeniden deneyin veya derin uyku moduna geçirin ESP.reset(); gecikme (5000); } }
//Serial.println("Buton durumu False. Ana Döngüye Dön"); //display.print("Ana döngü"); //display.clear();
}
İkincisi, belirli bir sunucudan HTTP yanıtı almak ve Giriş miktarını Ekranda görüntülemek için ana programımız olacaktır.
Bunun için öncelikle ESP'nin Flash belleğinden line & shift detayımızı almalıyız (adres 0-> line, 50-> shift)
EEPROM.başla(100); // eeprom depolamaEEPROM.get(0, satır); // 0 adresinden Değer al
EEPROM.get(50, shift); // 50 adresinden Değer Al
daha sonra girdi ve çıktının değerini almak için bu satırı & shift ayrıntılarını get yöntemiyle http sunucumuza iletmeliyiz.
String Base_url="kaldırıldı"; // benim temelim urlHTTPClient http; // HTTPClient sınıfının nesnesi
Dize URL=Base_url+"?"+"line="+line+"&shift="+shift;
Seri.println(URL);
http.begin(URL);
int httpKodu =
Serial.println(http.getString()); // bu, tüm http yanıt dizesini yazdıracak;
Tüm metnin nasıl olduğunu istiyorsanız, işiniz burada biter, onu doğrudan tm1637 ekranında görüntüleyebiliriz.
display.print(http.getString());
Ancak tüm metni göstermek istemiyorum, çünkü girdi, json biçiminde çıktı ve veritabanı ve etcs hakkında diğer bazı genel metinler içeriyor.
bu yüzden önce Substring() işlevini kullanarak bu genel metni yanıt dizesinden kaldırdım.
genel metnin uzunluğunu saydım ve kırptım.
if (httpCode > 0) { const size_t bufferSize = 100; //DynamicJsonDocument jsonBuffer(bufferSize); DynamicJsonDocument kökü(bufferSize);
//JsonObject& root = doc.parseObject(http.getString());
String json_string=http.getString().substring(121); /* bu benim genel metnimin karşılığıdır, eğer yanıtlayıcınızda böyle bir şey yoksa bu kodu kaldırabilirsiniz; */
//Serial.println(json_string);
DeserializationError hatası = deserializeJson(root, json_string);
//JsonObject& root = jsonBuffer.parseObject(http.getString());
eğer (hata)
{ Serial.print(F("deserializeJson() başarısız oldu: "));
Seri.println(hata.c_str());
dönüş;
}
Başka{
const karakter* girdi = kök["girdi"];
const char* çıktı = kök["çıktı"];
Serial.print("Giriş:");
Seri.println(giriş);
Serial.print("Çıkış:");
Seri.println(çıktı);
display.print("..in..");
display.clear(); // ekranı temizle
display.print(input);// print BAZI BAZI BAZLARI SAYIM
}
işte bu kadar ana programımız bitti.
Adım 5: Web Sunucusu Oluşturma
Tam miktarı elde etmek için SQL veritabanımdan veri almak için web hizmetim ve PHP kodum olarak xampp kullanıyorum.
Ama tüm orijinal kodlarını paylaşamam. çünkü şirketimin gizliliği. ama ben bir web sunucusunun nasıl oluşturulacağını göstereceğim, yapay statik girdi ve çıktı miktarını göstereceğim.
Bunun için herhangi bir web barındırıcısına ihtiyacınız var, burada ana bilgisayarım olarak xampp kullanıyorum.
xampp'i buradan indirebilirsiniz.
xampp'yi kurun… net bir talimata ihtiyacınız varsa bu bağlantıyı kullanabilirsiniz.
xampp'yi kurduktan sonra kök dizininize gitmeniz gerekir.
C:\xampp\htdocs
tüm php programlarınız bu kökün içinde olmalıdır.
sayfamı esp_api.php adında oluşturdum
bu benim php kodum. burada sadece giriş ve çıkışın statik değerlerini görüntülüyorum;
$satır=$_GET['satır'];$shift=$_GET['shift'];
yankı ("myString"); //genel Metin
if($line=='a0401' ve $shift='dd') { $sonuç['girdi']=100; $sonuç['çıktı']=99; }
else { $sonuç['girdi']=200; $sonuç['çıktı']=199; }
$myObj->input =''.$result['input'].'';
$myObj->çıktı =''.$sonuç['çıktı'].'';
$myJSON = json_encode($myObj);
echo $myJSON;
Artık HTTP yanıt API'miz bitti.
http temel url'miz şöyle olacak
you_ip_address/esp_api.php
API yanıt metninizi şu şekilde kontrol edebilirsiniz:
localhost/esp_api.php?line=a0401&shift=dd
burada satırdan a0401 ve shift olarak dd olarak bahsettim.
Adım 6: Son Adım!!
Temel URL'ye bilgisayarınızın ip adresini girin
String Base_url="kaldırıldı"; // temel url'niz
ve ESP nodemcu'nuza yükleyin. Wi-Fi'nizi cep telefonunuzdan veya dizüstü bilgisayarınızdan açtığınızda, AutoConnectAP adlı ağa sahip olacaksınız. onunla bağlanın ve kimlik bilginizi ve hat yapılandırmalarınızı girin.
Ardından cihazınızı sıfırlayın ve bağlandıktan sonra ağınızın bağlı olup olmadığını kontrol edin, ardından her şey yapılır.
Girişin ekranda görüntülendiğini görebilirsiniz.
Herhangi bir hattı veya wifi kimlik bilgisini değiştirmek isterseniz, basmalı düğmeye birkaç saniye basabilirsiniz, ekranda confi gösterilir.
talep AP moduna girdiniz. cihazı değiştirebilir ve sıfırlayabilirsiniz.
Hobi ve eğlence projelerimizi gerçek üretim ve üretim alanında nasıl kullanabileceğimizi göstermek ve göstermek için onun talimatının ana motoru
Önerilen:
BT için Kolay Bant Dışı Yönetimi: 4 Adım
BT için Kolay Bant Dışı Yönetimi: www.flaticon.com adresinden Freepik tarafından yapılan simgeler USB bağlantısıyla bir Remote.it yapılandırılmış Raspberry Pi ve bir Android veya iPhone aygıtı bağlayarak Bant Dışı Yönetimi'ni (OOBM) nasıl yapılandıracağınızı öğrenin. Bu, RPi2/RPi3/RPi4'te çalışır. Ne olduğunu bilmiyorsanız
CR2032 için Güç Yönetimi: 4 Adım
CR2032 için Güç Yönetimi: Düşük enerji uygulaması yapmak, bazı özel bileşenler ve kod satırları bakımı gerektirir. Bazı bileşenler bu özelliği verir, bazılarının üzerinde kısa sürede çalışılması gerekir. Çok düşük enerjili uygulamalarda çalışırken ana fikir pilin tipidir. NS
Kablo Yönetimi için Arduino Mega RJ45 Fişler: 5 Adım
Arduino Mega RJ45 Kablo Yönetimi için Fişler: Arduino Mega'nın tonlarca pimi var - bu bir tane satın almak için büyük bir neden, değil mi? Tüm bu pinleri kullanmak istiyoruz! Yine de kablolama, kablo yönetimi olmadan hızla bir spagetti karmaşasına dönüşebilir. Ethernet fişlerini kullanarak kabloları birleştirebiliriz. Veri pinleri
POMODORO TEKNİĞİ ZAMANLAYICI - ZAMAN YÖNETİMİ İÇİN KOLAY KULLANIM DONANIM CİHAZI: 4 Adım
POMODORO TEKNİĞİ ZAMANLAYICI - ZAMAN YÖNETİMİ İÇİN KOLAY KULLANIM DONANIM CİHAZI: 1. Bu nedir? Pomodoro tekniği, çalışma süresini 25 dakikalık bloğa bölen ve 5 dakikalık molayı takip eden bir zaman yönetimi becerisidir. ayrıntılar aşağıdaki gibidir:https://francescocirillo.com/pages/pomodoro-techni…Bu zamanlayıcı kullanımı kolay bir ha
Üretim için Eagle PCB Board Nasıl Hazırlanır ve Gönderilir: 6 Adım
Fabrikasyon için Eagle PCB Board Nasıl Hazırlanır ve Gönderilir: Merhaba! Bu kısa eğitimde size pcb'nizi nasıl ihraç edeceğinizi ve sizin için üretilmesi için bir PCB imalathanesine nasıl göndereceğinizi göstereceğim. Bu eğitimde ALLPCB fab kullanacağım . house.www.allpcb.comHaydi başlayalım