Mundarija:

Ishlab chiqarishni boshqarish uchun WIFI displeyi: 6 qadam
Ishlab chiqarishni boshqarish uchun WIFI displeyi: 6 qadam

Video: Ishlab chiqarishni boshqarish uchun WIFI displeyi: 6 qadam

Video: Ishlab chiqarishni boshqarish uchun WIFI displeyi: 6 qadam
Video: Telefonni koʻz bilan boshqarish 2024, Noyabr
Anonim
Ishlab chiqarishni boshqarish uchun WIFI displeyi
Ishlab chiqarishni boshqarish uchun WIFI displeyi

Men IOT va bitta taxtali kompyuterlar haqida bir oz ma'lumotga egaman.

Men har doim uni "Hobby & Fun Projects" (haqiqiy ishlab chiqarish va ishlab chiqarish) doirasidan tashqarida ishlatishni xohlayman.

Bu ko'rsatma soatlik ishlab chiqarish ma'lumotlarini ko'rsatish uchun ESP nodemcu bilan 4 xonali 7 segmentli WIFI displeyini yaratish arafasida. Men elektronika ishlab chiqarish sohasida ishlayman, u erda biz ishlab chiqarishning kirish, chiqish va jarayonini nazorat qilish va nazorat qilish uchun ishlab chiqarishni bajarish tizimi (MES) dan foydalanamiz. Ushbu loyihada men ishlab chiqarish hajmini chiziq, smena va soat bo'yicha ko'rsatadigan kichik displey qurilmasini yaratyapman.

Texnik nuqtai nazardan, bu loyiha onlaynda API/HTTP javobidan foydalanadigan Youtube obunachilari sonini aks ettirishga o'xshaydi, lekin bu erda biz o'z MI tizimimiz bilan mahalliy MES tizimiga kirish miqdorini olish uchun o'zaro aloqa o'rnatamiz.

1 -qadam: Ishlatiladigan qismlar va asboblar:

Ishlatiladigan qismlar va asboblar
Ishlatiladigan qismlar va asboblar

Ishlatilgan apparat qismlari:

  1. ESP tugunlari
  2. TM1637 4 raqamli soatli displey
  3. Kalitni bosing
  4. 10 k qarshilik
  5. bir nechta o'tish simlari

Ishlatilgan dasturiy vositalar:

  1. Arduino IDE
  2. PHP/Apache veb -serveri uchun Xampp

Arduino kutubxonasi ishlatilgan:

1. Wifi menejeri tzapu & i mening shaxsiy fayllarim uchun moslashtirilgan (wifimanager)

2. ESP_EEPROM mening shaxsiy qiymatlarimni Flash xotirada saqlash uchun

3. SevenSegment TM1637 ko'rsatish uchun

2 -qadam: Wi -Fi menejerini sozlash

Wifi menejerini sozlash
Wifi menejerini sozlash

Bu erda men birinchi bo'lib Wi -Fi menejerini o'rnatdim, keyin men Wi -Fi menejeri papkasini nusxalashtirdim va Arduino kutubxonasidagi papkaga o'tdim, keyin WiFiManager_custom deb nomladim.

Papka ildizi katalogi asosan yoqadi

C: / Foydalanuvchilar / sizning kompyuteringiz nomi / Hujjatlar / Arduino / kutubxonalari

Keyin wifimanager_custom papkasini ochdim va header.cpp faylini wifimanager_custom bilan bir xil qilib o'zgartirdim, shuningdek header va.cpp fayllariga qo'shdim.

Va sarlavhaga shaxsiy shakl va tugma qo'shildi.

HTTP_PORTAL_OPTIONS PROGMEMda menyu tugmachasini Menyu uchun qo'shdim.

satr va siljish uchun yangi shakl qo'shildi. Men bu shaklni oddiy matn shakli sifatida yaratdim.

Shundan so'ng, biz bu formalar uchun.cpp faylida harakat funktsiyalarini yaratmoqchimiz, buning uchun header faylida funktsiyalarni e'lon qilishimiz kerak.

/ * mening shaxsiy funktsiyalarim */

void handleCustomForm (); void handleCustomSave ();

men sarlavha faylida maxsus funktsiyalarni e'lon qildim. Shunday qilib, bizning sarlavhadagi ishimiz tugadi, biz o'z vazifamiz va harakatlarimizni yaratish uchun.cpp fayli bilan borishimiz kerak.

3 -qadam: Forma uchun maxsus funktsiyalar

Forma uchun maxsus funktsiyalar
Forma uchun maxsus funktsiyalar
Forma uchun maxsus funktsiyalar
Forma uchun maxsus funktsiyalar
Forma uchun maxsus funktsiyalar
Forma uchun maxsus funktsiyalar

Endi biz wifimanager_custom.cpp faylini ochamiz.

va biz formani yuborganimizda o'z vazifalarimizni chaqirish uchun http javob ishlovchilarini qo'shishimiz kerak.

server-> on (String (F ("/custom_config")), std:: bind (& WiFiManager:: handleCustomForm, bu)); // MYning maxsus tutqichi

server-> on (String (F ("/custom_save")), std:: bind (& WiFiManager:: handleCustomSave, bu)); // MYning maxsus tutqichi

bu shakl joylashtirilganda bizning maxsus funktsiyalarimizni chaqiradi.

1.handleCustomForm ()-> chiziq va siljish kiritish va saqlash tugmachalari uchun maxsus shaklga ega bo'lgan sahifani yaratadi.

2.handleCustomSave ()-> bu funksiya forma qiymatlarini oladi va Flash xotirada 0 (chiziq) va 50 (siljish) joylarida saqlanadi.

4 -qadam: Ulanishlar va asosiy dastur

Ulanish va asosiy dastur
Ulanish va asosiy dastur

Ulanishlar juda oddiy..

Ulanish va simlar:

nodemcu TM1637 Displey

3.3v ---- Vcc

G ---- Gnd

D2 ---- CLK

D3 ----- DIO

tugunni bosish tugmasi

- +5V dan D8 piniga biriktirilgan tugma - erdan D8 piniga ulangan 10K qarshilik

biz wifimanager -ni sozlashni tugatdik. endi biz asosiy dasturimizni yaratishimiz kerak.

1. bizning Wi -Fi menejerimiz Wi -Fi tarmog'iga oxirgi ishlatilgan hisob ma'lumotlari bilan ulanadi, agar u ishlamasa, u AutoConnectAP wifi -serverini ochadi, biz wifi serveriga ulanish orqali yangi Wi -Fi ma'lumotlarini sozlashimiz, yo'nalish va siljishlarni amalga oshirishimiz mumkin.

2. keyin u asosiy tsiklga kiradi.

Bizning asosiy halqa ikki qismdan iborat bo'ladi. biz sozlashimiz kerak bo'lgan AP rejimini chaqirish uchun liniyani o'zgartirish, o'zgartirish yoki Wi -Fi ma'lumotlarini qo'shish kerak bo'lganda, bu subroutine. bu D8 piniga ulangan tugma bosilganda chaqiriladi.

void loop () {

config_loop ();

}

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

Serial.println ("Konfiguratsiya tugmasi holatini kutilmoqda …");

//display.print("Kutish");

agar (digitalRead (TRIGGER_PIN) == YUQORI)

{

display.print ("Conf"); // WiFi menejeri

// Mahalliy intializatsiya. Uning ishi tugagach, uni WiFiManager wifiManager atrofida saqlashga hojat yo'q;

// sozlamalarni tiklash - sinov uchun

//wifiManager.resetSettings ();

// konfiguratsiya portali o'chirilmaguncha vaqtni belgilaydi // hammasini qayta urinish yoki bir necha soniyada uxlab qolish uchun foydalidir //

//wifiManager.setTimeout (120);

// u ko'rsatilgan nom bilan kirish nuqtasini ishga tushiradi

// bu erda "AutoConnectAP" // va konfiguratsiyani kutayotgan blokirovka tsikliga o'tadi

// BU YO'RSIZ AP, SDK 1.5 bilan to'g'ri ishlamaydi, kamida 1.5.1 ga yangilang //WiFi.mode(WIFI_STA);

if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("ulanib bo'lmadi va kutish vaqti tugadi"); kechikish (3000); // qayta o'rnating va qaytadan urinib ko'ring, yoki uni chuqur uyquga qo'ying ESP.reset (); kechikish (5000); }}

//Serial.println("Tugma holati False. Back to Main loop "); //display.print("Ana ko'chadan "); //display.clear ();

}

Ikkinchisi, ma'lum bir serverdan HTTP javobini olish va displeyda kirish miqdorini ko'rsatish uchun bizning asosiy dasturimiz bo'ladi.

Buning uchun biz ESP-ning Flash-xotirasidan (0-> liniya, 50-> smenadan) o'z liniyamiz va smenamiz tafsilotlarini olishimiz kerak.

EEPROM.begin (100); // eeprom saqlashEEPROM.get (0, qator); // 0 manzilidan qiymatni oling

EEPROM.get (50, siljish); // 50 -manzildan qiymat oling

keyin biz kirish va chiqish qiymatini olish uchun bu satrni olishimiz va get usuli bilan tafsilotlarni http serverimizga o'tkazishimiz kerak.

String Base_url = "o'chirildi"; // mening asosiy urlHTTPClient http; // HTTPClient sinfining ob'ekti

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

Serial.println (URL);

http.begin (URL);

int httpCode = http. GET ();

Serial.println (http.getString ()); // bu barcha http javob satrini chop etadi;

Agar siz butun matnni qanday qilib tugatishni xohlasangiz, biz uni to'g'ridan -to'g'ri tm1637 displeyida ko'rsatishimiz mumkin.

display.print (http.getString ());

Lekin men hamma matnni ko'rsatishni xohlamayman, chunki u json formasida kirish, chiqish va ma'lumotlar bazasi va boshqalar haqidagi boshqa umumiy matnni o'z ichiga oladi.

shuning uchun birinchi navbatda Substring () funktsiyasidan foydalanib, bu umumiy matnni javoblar qatoridan olib tashladim.

Men umumiy matn uzunligini hisobladim va qirqib tashladim.

agar (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); DynamicJsonDocument ildizi (bufferSize);

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

String json_string = http.getString (). Pastki satr (121); /* bu mening umumiy matndagi ofsetim, agar sizning javobingizda bu kodni o'chirib tashlashingiz mumkin bo'lgan narsa bo'lmasa; */

//Serial.println(json_string);

DeserializationError xato = deserializeJson (root, json_string);

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

agar (xato)

{Serial.print (F ("deserializeJson () muvaffaqiyatsiz tugadi:"));

Serial.println (error.c_str ());

qaytish;

}

boshqa {

const char* kirish = ildiz ["kirish"];

const char* chiqish = ildiz ["chiqish"];

Serial.print ("Kirish:");

Serial.println (kirish);

Serial.print ("Chiqish:");

Serial.println (chiqish);

display.print (".. ichida..");

display.clear (); // displeyni tozalash

display.print (kirish);

}

Shunday qilib, bizning asosiy dasturimiz tugadi.

5 -qadam: Veb -server yaratish

Veb -server yaratish
Veb -server yaratish
Veb -server yaratish
Veb -server yaratish

Men aniq ma'lumotni olish uchun SQL ma'lumotlar bazasidan ma'lumotlarni olish uchun xampp -ni veb -xizmat sifatida va PHP kodidan foydalanaman.

Lekin men uning barcha asl kodlarini baham ko'rmayman. chunki bu mening kompaniyamning maxfiyligi. lekin men qanday qilib bitta veb -serverni yaratishni ko'rsataman, statik kirish va chiqish miqdorini ko'rsataman.

Buning uchun sizga har qanday veb -xost kerak bo'lishi kerak, men bu erda xamppni xost sifatida ishlataman.

xampp -ni bu yerdan yuklab olishingiz mumkin.

xampp -ni o'rnating … agar sizga aniq ko'rsatma kerak bo'lsa, siz bu havoladan foydalanishingiz mumkin.

Xampp -ni o'rnatgandan so'ng, siz o'zingizning asosiy katalogingizga o'tishingiz kerak.

C: / xampp / htdocs

barcha php dasturlaringiz shu ildiz ichida bo'lishi kerak.

Men o'z sahifamni esp_api.php nomli yaratdim

bu mening php kodim. bu erda men faqat kirish va chiqishning statik qiymatlarini ko'rsataman;

$ line = $ _ Oling ['qator']; $ shift = $ _ Oling ['siljish'];

echo ("myString"); // umumiy matn

agar ($ line == 'a0401' va $ shift = 'dd') {$ natija ['kiritish'] = 100; $ natija ['chiqish'] = 99; }

boshqa {$ natija ['kiritish'] = 200; $ natija ['chiqish'] = 199; }

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

$ myObj-> chiqish = ''. $ natija ['chiqish']. '';

$ myJSON = json_encode ($ myObj);

echo $ myJSON;

Endi bizning HTTP javob API -si tugadi.

Bizning http bazasining url -si shunga o'xshash bo'ladi

you_ip_address/esp_api.php

API javob matnini tekshirishingiz mumkin

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

bu erda men a0401 qatorini aytib o'tdim va dd sifatida o'tdim.

6 -qadam: Oxirgi qadam !!

Yakuniy qadam !!!
Yakuniy qadam !!!
Yakuniy qadam !!!
Yakuniy qadam !!!
Yakuniy qadam !!!
Yakuniy qadam !!!

Asosiy IP manziliga kompyuterning IP manzilini kiriting

String Base_url = "o'chirildi"; // sizning asosiy url

va ESP nodemcu -ga yuklang. Wi -Fi -ni mobil yoki noutbukdan yoqgandan so'ng, siz AutoConnectAP deb nomlangan tarmoqqa ega bo'lasiz. U bilan bog'laning va hisob ma'lumotlarini va chiziq konfiguratsiyasini kiriting.

Keyin qurilmangizni qayta o'rnating va tarmoq ulangandan so'ng hamma narsa bajarilganligini tekshiring.

Kirish displeyda ko'rsatilishini ko'rishingiz mumkin.

Agar siz biron bir tarmoq yoki Wi -Fi ma'lumotlarini o'zgartirishni xohlasangiz, tugmani bir necha soniya bosib turishingiz mumkin.

sizAPAP rejimiga kirdingiz. qurilmani o'zgartirish va qayta o'rnatish mumkin.

Uning asosiy moto muallifi sizga sevimli mashg'ulotlarimiz va qiziqarli loyihalarimizni haqiqiy ishlab chiqarish va ishlab chiqarish maydonida qanday ishlatishimiz mumkinligini ko'rsatib beradi.

Tavsiya: