
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Я немного Серию про IOT и одноплатные компьютеры.
Я всегда хочу использовать его за пределами Hobby & Fun Projects (реальное производство и производство).
Это руководство предназначено для создания 4-значного 7-сегментного дисплея WIFI с узлом ESP для отображения почасового ввода данных. Я работаю в сфере производства электроники, где мы используем систему управления производством (MES) для мониторинга и контроля ввода, вывода и процесса производства. В этом проекте я создаю небольшой дисплей, на котором будет отображаться количество вводимой продукции по строке, смене и часу.
Технически этот проект похож на отображение количества подписчиков Youtube, где мы используем ответ API / HTTP из Интернета, но здесь мы собираемся создать наш собственный api для взаимодействия с нашей локальной системой MES для получения количества входных данных.
Шаг 1: Используемые детали и инструменты:

Используемые детали оборудования:
- Узел ESP
- TM1637 4-значный дисплей часов
- Нажмите переключатель
- Резистор 10к
- несколько перемычек
Используемые программные инструменты:
- IDE Arduino
- Xampp для веб-сервера PHP / Apache
Используемая библиотека Arduino:
1. Менеджер Wi-Fi от tzapu & i. Настроен для моих пользовательских полей (wifimanager)
2. ESP_EEPROM для хранения моих пользовательских значений во флэш-памяти.
3. SevenSegmentTM1637 для отображения
Шаг 2. Настройка 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. вы можете изменить и сбросить устройство.
Основной девиз его инструктажа - показать вам, как мы можем использовать наши хобби и развлекательные проекты в реальной производственной и производственной сфере, а также на шоу.
Рекомендуемые:
Использование гитары Guitar Hero для управления масштабированием (только для Windows): 9 шагов

Использование гитары Guitar Hero для управления Zoom (только для Windows): поскольку мы находимся в разгаре глобальной пандемии, многие из нас застряли в уборке дома и присоединяются к собраниям на Zoom. Через некоторое время это может стать очень утомительным и утомительным. Убирая свой дом, я обнаружил старую гитару Guitar Hero, которую бросили в
ЖК-дисплей для обмена сообщениями, управляемый через Bluetooth -- ЖК-дисплей 16x2 -- Hc05 -- Простой -- Доска объявлений о беспроводной связи: 8 шагов

ЖК-дисплей для обмена сообщениями, управляемый через Bluetooth || ЖК-дисплей 16x2 || Hc05 || Простой || Доска объявлений о беспроводных технологиях: …………………………. ПОДПИСАТЬСЯ на мой канал YouTube, чтобы увидеть больше видео …… ………………………………… Доска объявлений используется для информирования людей новой информацией или Если вы хотите отправить сообщение в комнату или в половину
IRduino: Пульт дистанционного управления Arduino - имитация утерянного пульта дистанционного управления: 6 шагов

IRduino: Пульт дистанционного управления Arduino - имитируйте потерянный пульт: если вы когда-либо теряли пульт дистанционного управления для своего телевизора или DVD-плеера, вы знаете, как неприятно ходить, находить и использовать кнопки на самом устройстве. Иногда эти кнопки даже не обладают той же функциональностью, что и пульт. Rece
Симулятор игры для смартфона - играйте в игры для Windows, используя IMU для управления жестами, акселерометр, гироскоп, магнитометр: 5 шагов

SmartPhone Game Simulator - играйте в игры для Windows, используя IMU управления жестами, акселерометр, гироскоп, магнитометр: поддержите этот проект: https://www.paypal.me/vslcreations, сделав пожертвование на программы с открытым исходным кодом & поддержка дальнейшего развития
Отпуск кабеля дистанционного управления Olympus Evolt E510 (версия 2 с автофокусом на пульте дистанционного управления): 6 шагов (с изображениями)

Отпуск кабеля дистанционного управления Olympus Evolt E510 (версия 2 с автофокусом на пульте дистанционного управления): Вчера я построил простой пульт с одной кнопкой для своего Olympus E510. У большинства камер есть кнопка спуска затвора (та, которую вы нажимаете, чтобы сделать снимок), которая имеет два режима. Если слегка нажать кнопку, камера автоматически сфокусируется и измерит свет