В этом техническом блоге мы рассмотрим, как использовать модуль Wi-Fi ESP8266 и OLED-дисплей SSD1306 для создания простой системы отображения информации и взаимодействия. Система позволяет пользователям вводить информацию через простой веб-интерфейс и отображать ее на OLED-экране. Это устройство имеет широкий спектр применений и может использоваться в системах умного дома, информационных вывесках или в любых сценариях, где информация должна отображаться удаленно.
OLED | ESP8266 | значение |
---|---|---|
GND | GND | Заземляющий провод |
VCC | 3V | источник питания |
SCL | D1 | линия часов |
SDA | D2 | Линия передачи данных |
Эффект OLED-дисплея
Поддерживается только отображение информации и цифр на английском языке.
В этом проекте в основном используются два основных компонента:
Программная часть проекта включает в себя несколько ключевых этапов:
После загрузки устройства на его OLED-экране отображается информация о том, как подключиться к сети Wi-Fi, включая SSID сети и базовую веб-ссылку.
Пользователи могут ввести сообщение, которое они хотят отобразить, открыв веб-адрес, указанный на OLED-дисплее. Это делается через простую HTML-форму, после отправки сообщение отправляется на ESP8266.
Отправленная информация будет получена через процессор маршрутов веб-сервера и отображена на OLED-экране. В то же время сервер подтверждает пользователю, что сообщение было отображено.
В коде мы сначала определяем все необходимые библиотеки и параметры, такие как размер экрана и настройки Wi-Fi. Основная логика включает в себя настройку режима точки доступа, инициализацию веб-сервера и создание функций для обработки HTTP-запросов. Реализация этих функций отражает то, как обрабатывать совместное использование сетевой связи и управления дисплеем во встроенных системах.
Кроме того, в коде реализован хороший механизм обработки ошибок. Например, при сбое инициализации программа войдет в бесконечный цикл, чтобы гарантировать, что последующие нестабильные операции не будут выполнены.
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const char* ssid = "ESP8266-AP";
const char* password = "12345678";
ESP8266WebServer server(80);
void setup() {
Serial.begin(115200);
// Инициализация дисплея
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Бесконечный цикл, если его невозможно инициализировать, выполнение не продолжится.
}
display.clearDisplay();
// Показать информацию о запуске
displayStartupMessage();
// Установите ESP8266 в режим AP
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
// Запустить веб-сервер
setupWebServer();
}
void loop() {
server.handleClient(); // Обрабатывать запросы клиентов
}
void displayStartupMessage() {
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Connect WiFi ");
display.println(ssid);
display.println("visit");
display.println("http://192.168.4.1");
display.println("to set content.");
display.display();
}
void handleRoot() {
String message = "Enter message to display: <form action=\"/display\"><input type=\"text\" name=\"message\"><input type=\"submit\"></form>";
server.send(200, "text/html", message);
}
void handleDisplay() {
String message = server.arg("message"); // Получить сообщение, введенное пользователем
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(message);
display.display();
server.send(200, "text/plain", "Message displayed: " + message);
}
void setupWebServer() {
server.on("/", HTTP_GET, handleRoot);
server.on("/display", HTTP_GET, handleDisplay); // Обработка пути для отображения сообщений
server.begin();
Serial.println("HTTP server started");
}
С помощью ESP8266 и SSD1306 мы можем создать простую, но мощную систему отображения информации, которая не только недорога, но и обеспечивает взаимодействие между пользователем и устройством в режиме реального времени. Этот проект демонстрирует основные концепции разработки устройств Интернета вещей, а также обеспечивает хорошую отправную точку для расширения других функций и интерфейсов.