Веб сервер на Esp8266, с выводом данных на LCD1602

Предположим у Вас где то удаленно стоит датчик подключенный к esp8266, и Вам надо на другом контроллере надо как то отобразить измеряемые данные. Можно для этого как вариант использовать веб сервер на esp8266. Для создания web-сервера на ESP8266 и получения данных по GET-запросу и вывода полученных данных на LCD1602 можно использовать следующий код:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Replace with your network credentials
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";

// Set web server port number to 80
WiFiServer server(80);

// Initialize the LCD with the I2C address and number of columns and rows
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // Start the serial communication and the LCD
  Serial.begin(9600);
  lcd.init();                      // initialize the lcd 
  lcd.backlight();                 // turn on backlight
  lcd.clear();                     // clear the lcd

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  // Print ESP8266 Local IP Address
  Serial.println(WiFi.localIP());

  // Start the server
  server.begin();
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait for data from client
  while (!client.available()) {
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Extract the GET parameters from the request
  int value = 0;
  if (request.indexOf("/?value=") != -1) {
    value = request.substring(request.indexOf("/?value=")+8).toInt();
    Serial.print("Value received: ");
    Serial.println(value);
  }

  // Send the HTTP response to the client
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("");
  client.print("Value received: ");
  client.println(value);
  client.println("");

  // Display the value on the LCD
  lcd.setCursor(0, 0);
  lcd.print("Value: ");
  lcd.print(value);
}

В этом коде используется библиотека ESP8266WiFi для подключения к Wi-Fi сети и создания сервера на порту 80. Для работы с LCD1602 используется библиотека LiquidCrystal_I2C.

При получении GET-запроса сервер извлекает значение параметра “value” и выводит его в ответе клиенту и на LCD1602.

Для подключения LCD1602 по шине I2C используется двухпроводное подключение SDA и SCL к соответствующим выводам на плате ESP8266, а также подключение питания и заземления.

Оставьте комментарий