Мазмуну:

Өндүрүштү башкаруу үчүн WIFI дисплейи: 6 кадам
Өндүрүштү башкаруу үчүн WIFI дисплейи: 6 кадам

Video: Өндүрүштү башкаруу үчүн WIFI дисплейи: 6 кадам

Video: Өндүрүштү башкаруу үчүн WIFI дисплейи: 6 кадам
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Ноябрь
Anonim
Өндүрүштү башкаруу үчүн WIFI дисплейи
Өндүрүштү башкаруу үчүн WIFI дисплейи

Мен IOT жана Single Board компьютерлери жөнүндө бир аз сериямын.

Мен аны Hobby & Fun Projects (реалдуу өндүрүш жана өндүрүш) чегинен тышкары колдонууну каалайм.

Бул көрсөтмө ESP nodemcu менен 4 орундуу 7 сегменттүү WIFI дисплейин түзүү үчүн, саат сайын өндүрүштү киргизүүнү көрсөтүү үчүн. Мен Электрондук өндүрүш тармагында иштеп жатам, анда биз Өндүрүштү аткаруу системасын (MES) колдонуп, өндүрүштүн киришине, чыгышына жана процессине мониторинг жүргүзөбүз. Бул долбоордо мен чакан дисплей бирдигин түзүп жатам, ал өндүрүштүн көлөмүн сапка, сменага жана саатка жараша көрсөтөт.

Техникалык жактан бул долбоор Youtube абоненттеринин санына окшош, биз онлайндан API/HTTP жоопторун колдонобуз, бирок бул жерде биз жергиликтүү MES тутумубуз менен кирүү санын алуу үчүн өз апи түзөбүз.

1 -кадам: Колдонулган тетиктер жана шаймандар:

Колдонулган тетиктер жана шаймандар
Колдонулган тетиктер жана шаймандар

Колдонулган аппараттык бөлүктөр:

  1. ESP nodemcu
  2. TM1637 4 орундуу саат Дисплей
  3. Баскычты басыңыз
  4. 10k каршылык
  5. бир нече секирүүчү зымдар

Колдонулган Программалык Куралдар:

  1. Arduino IDE
  2. PHP/Apache веб -сервери үчүн Xampp

Arduino китепканасынын колдонулганы:

1. Wifi менеджери тарабынан tzapu & i Ыңгайлаштырылган файлдарга ылайыкташтырылган (wifimanager)

2. ESP_EEPROM менин ыңгайлаштырылган баалуулуктарымды Flash эстутумунда сактоо үчүн

3. SevenSegmentTM1637 дисплей үчүн

2 -кадам: Wifi менеджерин ыңгайлаштыруу

Wifi менеджерин ыңгайлаштыруу
Wifi менеджерин ыңгайлаштыруу

Бул адегенде мен адегенде wifi менеджерин орноттум, андан кийин мен Wifi менеджеринин папкасын көчүрдүм жана Arduino китепканасынын папкасына кайра тапшырдым, андан кийин WiFiManager_custom деп аталды.

Папка Root каталогу Көбүнчө жагат

C: / Колдонуучулар / сиздин компьютердин аты / Документтер / Arduino / китепканалары

Андан кийин мен wifimanager_custom папкасын ачып, header.cpp файлын wifimanager_custom менен бирдей деп өзгөртүп, башына &.cpp файлдарын дагы коштум.

Жана менин ыңгайлаштырылган формамды жана баскычымды башына кошту.

HTTP_PORTAL_OPTIONS PROGMEM ичинде меню үчүн баскычтын формасын коштум.

жана сап жана жылыш үчүн жаңы форма кошулду. Мен бул форманы жөнөкөй текст формасы катары түздүм.

Ушундан кийин биз.cpp файлында бул формалар үчүн аракет функцияларын түзөбүз, бул үчүн баш файлда функция декларациясын аткарышыбыз керек.

/ * менин ыңгайлаштырылган функцияларым */

void handleCustomForm (); void handleCustomSave ();

мен жеке файлдарымды жеке файлымда жарыяладым. бул, биздин баштагы ишибиз аяктады, биз функциябызды жана аракеттерибизди түзүү үчүн.cpp файлы менен барышыбыз керек.

3 -кадам: Форма аракетинин бажы функциялары

Форма аракети үчүн колдонуучунун функциялары
Форма аракети үчүн колдонуучунун функциялары
Форма аракети үчүн колдонуучунун функциялары
Форма аракети үчүн колдонуучунун функциялары
Форма аракети үчүн колдонуучунун функциялары
Форма аракети үчүн колдонуучунун функциялары

Эми биз wifimanager_custom.cpp файлды ачабыз.

жана биздин форма жарыяланганда, биздин функцияларга чалуу үчүн http жооп иштетүүчүбүздү кошушубуз керек.

server-> on (String (F ("/custom_config")), std:: bind (& WiFiManager:: handleCustomForm, бул)); // МЕНИН ыңгайлаштырылган туткасы

server-> on (String (F ("/custom_save")), std:: bind (& WiFiManager:: handleCustomSave, бул)); // МЕНИН ыңгайлаштырылган туткасы

бул форма жайгаштырылганда бул биздин ыңгайлаштырылган функцияларыбызды чакырат.

1.handleCustomForm ()-> линия жана жылыш киргизүү жана сактоо баскычы үчүн биздин ыңгайлаштырылган формабыз бар баракты түзөт.

2.handleCustomSave ()-> бул функция форма баалуулуктарын алат жана Flash эс тутумдарында 0 (линия) & 50 (жылыш) сакталат.

4 -кадам: Байланыштар жана негизги программа

Байланыштар жана негизги программа
Байланыштар жана негизги программа

Байланыштар абдан жөнөкөй..

Байланыштар жана зымдар:

nodemcu TM1637 Display

3.3v ---- Vcc

Г ---- Гнд

D2 ---- CLK

D3 ----- DIO

nodemcu- баскыч

- D8 пинге +5Vдан бекитилген баскыч - жерден D8 пинге бекитилген 10K каршылыгы

биз wifimanagerди ыңгайлаштырып бүттүк. азыр биз негизги программабызды түзүшүбүз керек.

1. биздин wifi менеджери wifi тармагына туташуу үчүн акыркы колдонулган грамоталары менен туташат, эгер ал ишке ашпай калса, анда AutoConnectAP wifi серверин ачат. Биз жаңы wifi сервистерин конфигурациялай алабыз, бул wifi серверине туташуу менен линия жана жылыш.

2. анда ал негизги циклге кирет.

Биздин негизги цикл эки бөлүктөн турат. конфигурациялоо үчүн AP режиминин талап режимине чалуу үчүн линияны өзгөртүү, жылдыруу же кандайдыр бир wifi грамотасын кошуу керек болгондо, бул Confi subroutine. бул D8 пинге туташкан баскыч басылганда чакырылат.

void loop () {

config_loop ();

}

жараксыз config_loop () {Serial.println ("");

Serial.println ("Config баскычынын статусу күтүлүүдө …");

//display.print( Күтө туруңуз));

эгер (digitalRead (TRIGGER_PIN) == HIGH)

{

display.print ("Conf"); // WiFiManager

// Жергиликтүү интиализация. Анын бизнеси бүткөндөн кийин, аны WiFiManager wifiManager тегерегинде сактоонун кажети жок;

// жөндөөлөрдү баштапкы абалга келтирүү - тестирлөө үчүн

//wifiManager.resetSettings ();

// конфигурация порталы өчүрүлгөнгө чейин күтүү убактысын коет // анын баарын кайра аракет кылуу же секунда ичинде уктоо // пайдалуу

//wifiManager.setTimeout(120);

// ал көрсөтүлгөн аталыш менен кирүү чекитин баштайт

// бул жерде "AutoConnectAP" // жана конфигурацияны күтүп жаткан бөгөт коюу циклине кирет

// МЫНАСЫЗ АП SDK 1.5 МЕНЕН ТУУРА ИШТЕП КӨРБӨЙТ, жок дегенде 1.5.1ге жаңыртуу //WiFi.mode(WIFI_STA);

if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("туташкан жок жана тайм -аут"); кечигүү (3000); // баштапкы абалга келтирип, кайра аракет кылыңыз, же аны терең уйкуга коёсуз ESP.reset (); кечигүү (5000); }}

//Serial.println("Button status False. Back to Main loop "); //display.print("Ana loop "); //display.clear ();

}

Экинчиси, белгилүү бир серверден HTTP жообун алуу жана дисплейде киргизүү санын көрсөтүү үчүн биздин негизги программабыз болот.

Ал үчүн биз ESPтин Flash сактагычынан линиябызды жана сменабыздын деталын алышыбыз керек (дарек 0-> линия, 50-> смена)

EEPROM.begin (100); // eeprom storageEEPROM.get (0, сап); // 0 дарегинен маанини алыңыз

EEPROM.get (50, нөөмөт); // 50 -даректен баалуулукту алыңыз

анда биз бул сапты өткөрүп, киргизүү жана чыгаруу маанисин алуу үчүн деталдуу маалыматты http серверибизге которушубуз керек.

String Base_url = "алып салынды"; // менин базалык urlHTTPClient http; // HTTPClient классынын объектиси

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

Serial.println (URL);

http.begin (URL);

int httpCode = http. GET ();

Serial.println (http.getString ()); // бул бардык http жооп саптарын басып чыгарат;

Эгерде сиз бардык тексттин кантип иштээрин билгиңиз келсе, анда сиздин ишиңиз ушул жерде бүтөт, биз аны tm1637 дисплейинде түз көрсөтө алабыз.

display.print (http.getString ());

Бирок мен бардык текстти көрсөткүм келбейт, анткени анда json түрүндө киргизүү, чыгаруу жана анын базасы жана башкалар жөнүндө башка жалпы текст бар.

Ошентип, адегенде мен Substring () функциясын колдонуу менен ошол жалпы текстти жооп сабынан алып салдым.

Мен жалпы тексттин узундугун санадым жана кыркып салдым.

if (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); DynamicJsonDocument тамыры (bufferSize);

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

String json_string = http.getString (). Substring (121); /* бул жалпы тексттин менин офсетим, эгерде сиздин жообуңузда бул кодду алып салсаңыз болот; */

//Serial.println(json_string);

DeserializationError катасы = deserializeJson (root, json_string);

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

эгер (ката)

{Serial.print (F ("deserializeJson () ишке ашпай калды:"));

Serial.println (error.c_str ());

кайтуу;

}

башка {

const char* input = root ["input"];

const char* output = root ["output"];

Serial.print ("Киргизүү:");

Serial.println (киргизүү);

Serial.print ("Чыгуу:");

Serial.println (чыгаруу);

display.print (".. ичинде..");

display.clear (); // дисплейди тазалоо

display.print (input); // print COUNTING SIGE SIGES

}

Ошентип, биздин негизги программабыз аяктады.

5 -кадам: Web Server түзүү

Веб -сервер түзүү
Веб -сервер түзүү
Веб -сервер түзүү
Веб -сервер түзүү

Мен так санын алуу үчүн SQL маалымат базасынан маалыматтарды алуу үчүн веб кызматым жана PHP коду катары xamppты колдоном.

Бирок мен анын бардык баштапкы коддорун бөлүшө албайм. анткени менин компаниямдын купуялыгы. бирок мен кантип бир веб -серверди түзүүнү, статикалык киргизүү жана чыгаруу көлөмүн көрсөтөм.

Бул үчүн сизге каалаган веб -хост керек, мен бул жерде xamppты хостум катары колдонуп жатам.

xamppты бул жерден жүктөп алсаңыз болот.

xampp орнотуу … эгер сизге так көрсөтмө керек болсо, бул шилтемени колдоно аласыз.

Xamppти орноткондон кийин, сиз түп каталогго өтүшүңүз керек.

C: / xampp / htdocs

php программаларыңыздын баары ушул тамырдын ичинде болушу керек.

Мен баракчамды esp_api.php деп аталышында түздүм

бул менин php кодум. бул жерде мен жөн эле кириштин жана чыгуунун статикалык маанилерин көрсөтүп жатам;

$ line = $ _ GET ['line']; $ shift = $ _ GET ['shift'];

echo ("myString"); // жалпы текст

if ($ line == 'a0401' жана $ 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;

Азыр биздин HTTP жооп API аяктады.

Биздин http базалык url окшош болот

you_ip_address/esp_api.php

аркылуу API жооп текстин текшере аласыз

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

Бул жерде мен a0401 катары линияны айттым жана dd катары жылдым.

6 -кадам: Акыркы кадам !

Акыркы кадам !!!
Акыркы кадам !!!
Акыркы кадам !!!
Акыркы кадам !!!
Акыркы кадам !!!
Акыркы кадам !!!

Негизги URL дарегине компьютериңиздин IP дарегин киргизиңиз

String Base_url = "алып салынды"; // сиздин базалык url

жана ESP nodemcuго жүктөө. Уюлдук телефонуңуздан же ноутбугуңуздан Wi -Fi күйгүзгөндөн кийин, AutoConnectAP деп аталган тармакка ээ болосуз. аны менен туташып, ишеним грамотаңызды жана сап конфигурацияларыңызды киргизиңиз.

Андан кийин түзмөгүңүздү баштапкы абалга келтирип, туташканыңызды текшериңиз, ал туташкандан кийин баары жасалат.

Сиз киргизүү дисплейде көрсөтүлө турганын көрө аласыз.

Эгерде сиз каалаган линияны же wifi ишеним грамотасын өзгөрткүңүз келсе, баскычты бир нече секундага бассаңыз болот, дисплейде конфини көрсөтөт.

СизAPAP режимине кирдиңиз. түзмөгүңүздү өзгөртүп, баштапкы абалга келтире аласыз.

Негизги мотосу, биз чыныгы өндүрүш жана өндүрүш чөйрөсүндө хоббибизди жана кызыктуу долбоорлорду кантип колдоно аларыбызды көрсөтүү үчүн.

Сунушталууда: