Оглавление:

Дисплей WIFI для управления производством: 6 шагов
Дисплей WIFI для управления производством: 6 шагов

Видео: Дисплей WIFI для управления производством: 6 шагов

Видео: Дисплей WIFI для управления производством: 6 шагов
Видео: Управление электрическим котлом Thermex Tesla 6-12 Wi-Fi в приложении Thermex Home 2024, Июль
Anonim
Дисплей WIFI для управления производством
Дисплей WIFI для управления производством

Я немного Серию про IOT и одноплатные компьютеры.

Я всегда хочу использовать его за пределами Hobby & Fun Projects (реальное производство и производство).

Это руководство предназначено для создания 4-значного 7-сегментного дисплея WIFI с узлом ESP для отображения почасового ввода данных. Я работаю в сфере производства электроники, где мы используем систему управления производством (MES) для мониторинга и контроля ввода, вывода и процесса производства. В этом проекте я создаю небольшой дисплей, на котором будет отображаться количество вводимой продукции по строке, смене и часу.

Технически этот проект похож на отображение количества подписчиков Youtube, где мы используем ответ API / HTTP из Интернета, но здесь мы собираемся создать наш собственный api для взаимодействия с нашей локальной системой MES для получения количества входных данных.

Шаг 1: Используемые детали и инструменты:

Используемые детали и инструменты
Используемые детали и инструменты

Используемые детали оборудования:

  1. Узел ESP
  2. TM1637 4-значный дисплей часов
  3. Нажмите переключатель
  4. Резистор 10к
  5. несколько перемычек

Используемые программные инструменты:

  1. IDE Arduino
  2. Xampp для веб-сервера PHP / Apache

Используемая библиотека Arduino:

1. Менеджер Wi-Fi от tzapu & i. Настроен для моих пользовательских полей (wifimanager)

2. ESP_EEPROM для хранения моих пользовательских значений во флэш-памяти.

3. SevenSegmentTM1637 для отображения

Шаг 2. Настройка Wifi Manager

Настройка Wifi Manager
Настройка Wifi Manager

Сначала я установил диспетчер Wi-Fi, а затем скопировал папку диспетчера Wi-Fi и снова передал его в папку «То же» в папке библиотеки Arduino, а затем переименовал в WiFiManager_custom.

Папка Корневой каталог В основном нравится

C: / Users / имя вашего компьютера / Documents / Arduino / библиотеки

Затем я открыл папку wifimanager_custom и переименовал файл заголовка.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 () -> эта функция получит значения формы и сохранит их в ячейках флэш-памяти 0 (строка) и 50 (сдвиг).

Шаг 4: Подключения и основная программа

Связи и основная программа
Связи и основная программа

Подключения очень простые..

Подключения и проводка:

nodemcu TM1637 Дисплей

3,3 В ---- Vcc

G ---- Земля

D2 ---- CLK

D3 ----- DIO

nodemcu- нажимной переключатель

- кнопка подключена к контакту D8 от + 5В - резистор 10K подключен к контакту D8 с земли

мы закончили настройку нашего wifimanager. теперь нам нужно создать нашу основную программу.

1. наш менеджер Wi-Fi будет подключаться к сети Wi-Fi с последними использованными учетными данными для подключения, в случае сбоя он открывает сервер Wi-Fi AutoConnectAP. Мы можем настроить новые параметры Wi-Fi, линию и сдвиг, подключившись к этому серверу Wi-Fi.

2. Затем он войдет в основной цикл.

Наш основной цикл будет состоять из двух частей. one - это подпрограмма confi, когда нам нужно изменить линию, сдвинуть или добавить какие-либо учетные данные Wi-Fi для вызова AP режима по запросу для настройки. это будет вызываться при нажатии кнопки, подключенной к выводу D8.

void loop () {

config_loop ();

}

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

Serial.println («Ожидание состояния кнопки конфигурации…»);

//display.print("Wait ");

если (digitalRead (TRIGGER_PIN) == HIGH)

{

display.print («Конфигурация»); // WiFiManager

// Локальная инициализация. После того, как его бизнес завершен, нет необходимости держать его около WiFiManager wifiManager;

// сбросить настройки - для тестирования

//wifiManager.resetSettings ();

// устанавливает тайм-аут до выключения портала конфигурации // полезно для повторной попытки или перехода в режим сна // в секундах

//wifiManager.setTimeout(120);

// запускает точку доступа с указанным именем

// здесь "AutoConnectAP" // и переходит в цикл блокировки, ожидая конфигурации

// БЕЗ ЭТОГО AP, ПОСМОТРЕТЬ, НЕ РАБОТАЕТ НАДЛЕЖАЩИМ С 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("Главный цикл "); //display.clear ();

}

Вторая будет нашей основной программой для получения HTTP-ответа от определенного сервера и отображения количества ввода на дисплее.

Для этого сначала мы должны получить информацию о нашей строке и сдвиге из флэш-памяти ESP (адрес 0-> строка, 50-> сдвиг).

EEPROM.begin (100); // хранилище eeprom EEPROM.get (0, line); // получаем значение с адреса 0

EEPROM.get (50, сдвиг); // Получить значение с адреса 50

затем мы должны передать эту строку и сдвинуть детали на наш http-сервер методом get, чтобы получить значение ввода и вывода.

Строка Base_url = "удалено"; // мой базовый urlHTTPClient http; // Объект класса

Строка URL = Base_url + "?" + "Line =" + line + "& shift =" + shift;

Serial.println (URL);

http.begin (URL);

интервал httpCode = http. GET ();

Serial.println (http.getString ()); // это напечатает всю строку ответа

Если вы хотите, чтобы весь текст был завершен здесь, мы можем напрямую отобразить его на дисплее tm1637.

display.print (http.getString ());

Но я не хочу показывать весь текст, потому что он содержит ввод, вывод в форме json и некоторый другой общий текст о своей базе данных и т. Д.

поэтому сначала я удалил этот общий текст из строки ответа с помощью функции Substring ().

Я посчитал длину общего текста и подрезал его.

если (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); DynamicJsonDocument root (bufferSize);

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

Строка 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 ["ввод"];

const char * output = root ["вывод"];

Serial.print ("Ввод:");

Serial.println (ввод);

Serial.print ("Вывод:");

Serial.println (вывод);

display.print (".. в..");

display.clear (); // очищаем дисплей

display.print (input); // выводим ПОДСЧЕТ НЕКОТОРЫХ ЦИФР

}

вот и наша основная программа закончена.

Шаг 5: Создание веб-сервера

Создание веб-сервера
Создание веб-сервера
Создание веб-сервера
Создание веб-сервера

Я использую xampp в качестве моей веб-службы и кода PHP для получения данных из моей базы данных SQL, чтобы получить точное количество.

Но я не могу поделиться всеми исходными кодами. потому что это конфиденциальность моей компании. но я покажу, как создать один веб-сервер, покажу фиктивное статическое количество ввода и вывода.

Для этого вам понадобится любой веб-хостинг, я использую здесь xampp в качестве своего хоста.

вы можете скачать xampp здесь.

установить xampp … если вам нужна четкая инструкция, вы можете использовать эту ссылку.

После установки xampp вам нужно перейти в корневой каталог.

C: / xampp / htdocs

все ваши программы php должны находиться внутри этого корня.

я создал свою страницу под названием esp_api.php

это мой код php. здесь я просто отображаю статические значения ввода и вывода;

$ line = $ _ GET ['строка']; $ shift = $ _ GET ['shift'];

эхо ("myString"); // общий текст

если ($ line == 'a0401' и $ shift = 'dd') {$ result ['input'] = 100; $ result ['вывод'] = 99; }

иначе {$ result ['input'] = 200; $ result ['вывод'] = 199; }

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

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

$ myJSON = json_encode ($ myObj);

echo $ myJSON;

На этом наш API HTTP-ответов готов.

Наш базовый URL-адрес http будет похож на

you_ip_address / esp_api.php

вы можете проверить текст ответа API, выполнив

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

здесь я упомянул строку как a0401 и сдвиг как dd.

Шаг 6: Последний шаг !

Заключительный этап!!!
Заключительный этап!!!
Заключительный этап!!!
Заключительный этап!!!
Заключительный этап!!!
Заключительный этап!!!

Введите IP-адрес вашего компьютера в Base URL

Строка Base_url = "удалено"; // ваш базовый URL

и загрузите на свой узел ESP. После того, как вы закончите, просто включите свой Wi-Fi со своего мобильного телефона или ноутбука, вы получите сеть под названием AutoConnectAP. подключитесь к нему и введите свои учетные данные и конфигурацию линии.

Затем перезагрузите устройство и проверьте, подключена ли ваша сеть, как только она подключится, и все будет сделано.

Вы можете видеть, что ввод отображается на дисплее.

если вы хотите изменить любую линию или учетные данные Wi-Fi, вы можете нажать переключатель на несколько секунд, на дисплее отобразится confi.

вы вошли в режим DemandAP. вы можете изменить и сбросить устройство.

Основной девиз его инструктажа - показать вам, как мы можем использовать наши хобби и развлекательные проекты в реальной производственной и производственной сфере, а также на шоу.

Рекомендуемые: