Для электронщиков и радиолюбителей

Считываем аналоговый сигнал с помощью ESP32 и отправляем его на LCD-дисплей и веб-интерфейс

Считываем аналоговый сигнал с помощью ESP32 и отправляем его на LCD-дисплей и веб-интерфейс

В этой статье мы узнаем, как создать беспроводную систему мониторинга аналоговых датчиков с помощью ESP32 с ЖК-дисплеем и веб-интерфейсом.

Эта система объединяет микроконтроллер ESP32 с аналоговым датчиком (в данном случае потенциометром для возможности ручного изменения аналогового сигнала), ЖК-дисплеем и веб-сервером. ESP32 непрерывно считывает показания датчика, обновляет ЖК-дисплей и предоставляет данные датчика в режиме реального времени через веб-интерфейс, к которому пользователи могут получить доступ через веб-браузер.

Схема подключения компонентов системы на основе ESP32 следующая.

Код программы ESP32 довольно прост. В нем мы создаем сервер с веб-формой и подключаем дисплей, и на эти средства отображения информации будем отправлять данные, полученные с помощью функции analogRead.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <WebServer.h>

const char* ssid = "EmbedderShop";
const char* password = "EmbedderShop.ru";

WebServer server(80);

const int analogPin = 34;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
  Serial.begin(115200);
  lcd.init();
  lcd.backlight();

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  server.on("/", HTTP_GET, []() {
    server.send(200, "text/html", getHTML());
  });
  server.begin();
}

void loop() {
  server.handleClient();
  displayAnalogValue();
}

String getHTML() {
  int analogValue = analogRead(analogPin);
  String html = "<html><head></head><body>";
  html += "<h1>ESP32 Analog Sensor</h1>";
  html += "<p>Analog Value: " + String(analogValue) + "</p>";
  html += "</body></html>";
  return html;
}

void displayAnalogValue() {
  int analogValue = analogRead(analogPin);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Analog Value:");
  lcd.setCursor(0, 1);
  lcd.print(analogValue);
  delay(1000);
}