Specifikationer af ESP32-S3 Capacitive Touch LVGL Display 3.5″
ESP32-S3 Capacitive Touch LVGL Display 3.5″ er en kraftfuld og fleksibel løsning til projekter, hvor du ønsker både styrke, brugervenlighed og visuel præsentation i samme enhed. Med den nyeste ESP32-S3 chip kombineret med et responsivt ESP32 Touch Display, får du en platform, der er ideel til både hobbyprojekter, prototyper og professionelle IoT-løsninger.
Dette ESP32 Touch Display giver dig en 3.5” kapacitiv berøringsskærm, der gør det muligt at bygge interaktive brugerflader på en elegant og funktionel måde. Ved hjælp af LVGL Display-biblioteket (Light and Versatile Graphics Library) kan du designe alt fra simple menuer til avancerede grafiske grænseflader. Uanset om du bygger smarte hjem-apparater, overvågningssystemer eller specialdesignede maskinstyringer, giver ESP32-S3 dig masser af processorkraft, trådløs forbindelse og fleksibilitet.
Med indbygget Wi-Fi og Bluetooth gør ESP32-S3 det muligt at forbinde dit ESP32 Touch Display til forskellige sensorer, netværk og eksterne enheder. Kombinationen af den hurtige processor, det store display og understøttelsen af LVGL Display-frameworket betyder, at du kan skabe professionelle og responsive brugerflader uden at være begrænset af hardware.
Et ESP32-S3 Capacitive Touch LVGL Display 3.5″ er perfekt for udviklere, makers og undervisere, der vil tage deres projekter til næste niveau. Det er en alt-i-en løsning, der gør det lettere at skabe visuelt imponerende og brugervenlige applikationer
Tekniske detaljer for ESP32-S3 Capacitive Touch LVGL Display 3.5″
-
Model: ESP32-S3 Capacitive Touch LVGL Display
-
Processor: Dual-core Xtensa® LX7 32-bit (ESP32-S3 chip)
- Controllerchip (touch): AXS15231B Touch-controller (I²C-baseret)
-
Hastighed: Op til 240 MHz
- Driver chip: AXS15231B
-
Skærm: 3.5″ TFT capacitive touchskærm
- Interface til display: QSPI
-
Opløsning: 320 × 480 pixels (RGB)
- Skærmstørrelse: 3,2″ (diagonal)
-
Touch type: Capacitive
- Interface til touch: I²C (standardadresse 0x3B)
-
Grafikbibliotek: Understøtter LVGL Display (Light and Versatile Graphics Library)
-
RAM: 8 MB PSRAM
-
Flash: 16 MB
-
Forbindelser:
-
Wi-Fi 802.11 b/g/n
-
Bluetooth 5.0 (LE)
-
-
Interface: GPIO, I2C, SPI, UART, PWM
-
Driftsspænding: 5V via USB-C eller ekstern forsyning
-
Strømforbrug: Lavt strømforbrug, optimeret til IoT og displayprojekter
-
Udvidelsesmuligheder: Kompatibel med eksterne sensorer og moduler via standard interfaces
-
Størrelse: Ca. 3.5” modul (dimensioner varierer pr. version, typisk ca. 90 x 60 mm)
-
Kompatibilitet: Fuld understøttelse af Arduino IDE, ESP-IDF og MicroPython
JC3248W535EN Touch LCD er en moderne og brugervenlig skærmløsning, der forener skarp billedkvalitet med en responsiv touchfunktion. Den store, klare skærm giver en behagelig visuel oplevelse, hvor farver og detaljer står tydeligt frem. Med den indbyggede touchfunktion kan du nemt styre funktioner direkte på skærmen, hvilket gør betjeningen intuitiv og enkel. Skærmen er velegnet til projekter og produkter, hvor både visning og interaktion spiller en vigtig rolle. Uanset om den anvendes i styringssystemer, informationsskærme eller kreative projekter, giver JC3248W535EN en kombination af pålidelighed, hurtig reaktionsevne og en flot brugerflade. Med sit elegante design og høje brugervenlighed er denne touch LCD et oplagt valg, når du ønsker en professionel og funktionel skærmløsning.
Installere Arduino IDE Software
Før du kan starte din programmering skal Arduino’s IDE software hentes. Dette program bruges til at programmere din arduino.
Download fra dette link: Download
Installere SquareLine Studio
Før du kan begynde at designe brugerflader til din skærm, skal programmet SquareLine Studio hentes og installeres. Dette program bruges til at opbygge og designe grafiske interfaces, som efterfølgende kan eksporteres til Arduino IDE.
Download fra dette link: Download
Installere ESP package (Arduino IDE)
Åben Arduino IDE (Download her)
Klik “Fil/Egenskaber”
Indtast dette link i feltet “Additionel Board Manager URL’s”
Link “https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json“
Klik OK
Åben “Værktøj/Board/Boards manager” (Lad programmet opdatere)
Find “ESP32” og installere
Klik derefter “Værktøj/Board” og find (ESP32S3 Dev Module)
Du er nu klar til at sende en kode
Installere Arduino_GFX-master library
- Download library (Download)
- Åben Arduino IDE software og klik på “Sketch/Include library”
- Klik nu på “Add Zip. library” og find Zip filen du lige har downloaded.
- Luk, og åben Arduino IDE programmet. (Genstart programmet)
- Nu er library installeret.
- Library kan også downloades direkte i Arduino IDE find den her: “Sketch/Include library/Manage library/GFX Library for Arduino by Moon On Our Nattion”
- OBS: Brug version 1.6.0, da der er fejl i 1.6.1
Installere DHT-sensor-library-master library
- Download library (Download)
- Åben Arduino IDE software og klik på “Sketch/Include library”
- Klik nu på “Add Zip. library” og find Zip filen du lige har downloaded.
- Luk, og åben Arduino IDE programmet. (Genstart programmet)
- Nu er library installeret.
- Library kan også downloades direkte i Arduino IDE find den her: “Sketch/Include library/Manage library/Lvgl by kisvegabor (V 8.3.11)”
- OBS: SKAL være version “V 8.3.11”
Installere Lvgl library
- Download library (Download)
- Åben Arduino IDE software og klik på “Sketch/Include library”
- Klik nu på “Add Zip. library” og find Zip filen du lige har downloaded.
- Luk, og åben Arduino IDE programmet. (Genstart programmet)
- Nu er library installeret.
- Library kan også downloades direkte i Arduino IDE find den her: “Sketch/Include library/DHT sensor library by Adafruit”
Arduino IDE opsætning (JC3248W535EN / ESP32-S3 Dev Module)
For at indstille disse valg skal du klikke på Tools i menulinjen i Arduino IDE.
USB CDC ved opstart: Aktiveret (vigtigt for Serial-kommunikation) CPU-frekvens: 240 MHz (WiFi) Core Debug Level: Ingen USB DFU ved opstart: Deaktiveret Slet al flash før upload: Deaktiveret Events kører på: Core 1 Flash-tilstand: QIO 80 MHz Flash-størrelse: 16 MB (128 Mb) JTAG-adapter: Deaktiveret Arduino kører på: Core 1 USB Firmware MSC ved opstart: Deaktiveret Partitionsskema: 8M with spiffs (3 MB APP / 1,5 MB SPIFFS) PSRAM: OPI PSRAM Upload-tilstand: UART0 / Hardware CDC Upload-hastighed: 921600 USB-tilstand: Hardware CDC and JTAG Zigbee-tilstand: Deaktiveret
Guide: SquareLine Studio til Arduino (trin for trin)
1) Opsætning i SquareLine Studio (kun design + UI-export)
- Klik Arduino → Arduino with TFT_eSPI (vi bruger kun SquareLine som designer).
- Sæt Resolution = 480 x 320 (dit display).
- Sæt Color depth = 16 bit.
- Sørg for, at LVGL version = 8.3.
- Tryk Create.
2) Eksport af projekt
- Vælg Export → Create Template Project.
- Vælg den mappe, hvor du vil gemme dine filer.
- Når eksporten er færdig, bliver der oprettet to mapper i den valgte placering:
-> libraries
-> ui
3) Klargøring af filer
- I mappen ui ligger din hovedfil.
- Gå ind i libraries → ui → src.
- Kopiér alle filer herfra over i din ui-mappe (hvor hovedfilen ligger).
- I mappen libraries finder du filen lv_conf.
- Kopiér også denne fil over i din ui-mappe.
- Inde i ui-mappen har du nu samlet alle dine filer.
Eksempel
Her ses et hurtigt eksempel på, hvordan JC3248W535-skærmen kan kommunikere trådløst med en ESP32 via det samme Wi-Fi-netværk. På skærmen kan man tænde en LED ved at trykke på en knap: en grøn indikator viser tydeligt, når LED’en er tændt, mens en rød indikator viser, når den er slukket. Samtidig vises temperatur og luftfugtighed live på skærmen.”
Du skal bruge:
- USB-C Kabel
- NodeMcu ESP32 Wroom 38Pin CP2102 Udviklingsboard
- 1 Stk 10K Ohm’s Modstand
- 1 Stk 180 Ohm’s Modstand
- 1 Stk 5mm LED
Forbind sådan:
Kode (Display)
Vi har samlet hele filen som skal downloades til displayet. Download mappen og åben Ardiono IDE filen, alt hvad der skal bruges er i mappen.
Kode (ESP32 Udviklingsboard)
// ====== ESP32 ekstern modul: LED + DHT22 (GPIO 18) HTTP-server ====== #include <WiFi.h> #include <WebServer.h> #include <ArduinoJson.h> #include "DHT.h" // ======= KONFIGURER HER ======= #define WIFI_SSID "DIN_WIFI_SSID" #define WIFI_PASSWORD "DIT_WIFI_PASSWORD" // LED-pin på denne ESP32 (skift hvis du vil bruge en anden pin) const int LED_PIN = 2; // indbygget LED på mange ESP32 boards // DHT22 på GPIO 18 (VCC=3.3V, GND, DATA=18 + 10k pull-up til 3.3V) #define DHTPIN 18 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); // ======= HTTP SERVER ======= WebServer server(80); // ======= STABIL TEMPERATURMÅLING ======= // Cache + udglatning: median af 3 målinger, min. interval, max tilladt spring static float lastGoodT = NAN, lastGoodH = NAN; static unsigned long lastReadMs = 0; const unsigned long MIN_READ_INTERVAL_MS = 2500; // DHT22 bør læses max ~hver 2s (vi bruger 2.5s) const float MAX_STEP_C = 2.0f; // maks 2.0 °C spring pr. opdatering const int MEDIAN_SAMPLES = 3; // vi bruger median af 3 // Periodisk seriel log unsigned long lastLogMs = 0; const unsigned long LOG_EVERY_MS = 5000; // skriv til Serial hver 5s // ======= HJÆLPEFUNKTIONER ======= void allowCORS() { server.sendHeader("Access-Control-Allow-Origin", "*"); server.sendHeader("Access-Control-Allow-Methods", "GET, OPTIONS"); server.sendHeader("Access-Control-Allow-Headers", "Content-Type"); } void handleOptions() { allowCORS(); server.send(204); } // Median af 3 værdier (simple sort) static float median3(float a, float b, float c) { float v[3] = {a,b,c}; for (int i=0;i<3;i++) for (int j=i+1;j<3;j++) if (v[j] < v[i]) { float t=v[i]; v[i]=v[j]; v[j]=t; } // hvis midterste er NaN, returnér en af de ikke-NaN if (isnan(v[1])) return isnan(v[2]) ? v[0] : v[2]; return v[1]; } // Læs DHT med smoothing/caching. fresh=true hvis der blev lavet ny gyldig måling nu static void readDHTSmoothed(float &tOut, float &hOut, bool &fresh) { unsigned long now = millis(); fresh = false; // Respekter min. interval → returnér cache hvis for tidligt if ((now - lastReadMs < MIN_READ_INTERVAL_MS) && !isnan(lastGoodT)) { tOut = lastGoodT; hOut = lastGoodH; return; } // Tag 3 målinger og brug median float t1 = dht.readTemperature(); float h1 = dht.readHumidity(); delay(60); float t2 = dht.readTemperature(); float h2 = dht.readHumidity(); delay(60); float t3 = dht.readTemperature(); float h3 = dht.readHumidity(); float tMed = median3(t1,t2,t3); float hMed = median3(h1,h2,h3); if (!isnan(tMed) && !isnan(hMed)) { // Begræns store spring if (!isnan(lastGoodT)) { float dt = tMed - lastGoodT; if (dt > MAX_STEP_C) tMed = lastGoodT + MAX_STEP_C; if (dt < -MAX_STEP_C) tMed = lastGoodT - MAX_STEP_C; } lastGoodT = tMed; lastGoodH = hMed; lastReadMs = now; fresh = true; tOut = lastGoodT; hOut = lastGoodH; return; } // Hvis median fejler, men vi har cache, returnér cache if (!isnan(lastGoodT)) { tOut = lastGoodT; hOut = lastGoodH; return; } // Ellers helt ugyldigt tOut = NAN; hOut = NAN; } // ======= HTTP HANDLERS ======= void handleRoot() { allowCORS(); server.send(200, "text/plain", "OK. Endpoints: /api/led?state=on|off, /api/temp"); } void handleLed() { allowCORS(); if (!server.hasArg("state")) { server.send(400, "application/json", "{\"error\":\"missing state (on|off)\"}"); return; } String s = server.arg("state"); s.toLowerCase(); if (s == "on") digitalWrite(LED_PIN, HIGH); else if (s == "off") digitalWrite(LED_PIN, LOW); else { server.send(400, "application/json", "{\"error\":\"state must be on|off\"}"); return; } // Log i Serial Serial.print("[/api/led] state="); Serial.println(s); StaticJsonDocument<96> doc; doc["led"] = (s == "on") ? "on" : "off"; String out; serializeJson(doc, out); server.send(200, "application/json", out); } void handleTemp() { allowCORS(); float t, h; bool fresh=false; readDHTSmoothed(t, h, fresh); // Log ALLE API-svar i Serial Serial.print("[/api/temp] "); if (isnan(t) || isnan(h)) { Serial.println("sensor read failed"); server.send(503, "application/json", "{\"error\":\"sensor read failed\"}"); return; } Serial.print("T="); Serial.print(t, 1); Serial.print(" °C, RH="); Serial.print(h, 0); Serial.print(" % "); Serial.println(fresh ? "(fresh)" : "(cache)"); StaticJsonDocument<192> doc; doc["temp_c"] = t; doc["hum_pct"] = h; doc["fresh"] = fresh; // true hvis ny måling; false hvis cache String out; serializeJson(doc, out); server.send(200, "application/json", out); } // ======= SETUP / LOOP ======= void setup() { Serial.begin(115200); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); dht.begin(); WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Forbinder til WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); } Serial.println(); Serial.print("IP: "); Serial.println(WiFi.localIP()); server.on("/", HTTP_GET, handleRoot); server.on("/api/led", HTTP_OPTIONS, handleOptions); server.on("/api/led", HTTP_GET, handleLed); server.on("/api/temp",HTTP_OPTIONS, handleOptions); server.on("/api/temp",HTTP_GET, handleTemp); server.begin(); Serial.println("HTTP server kører"); } void loop() { server.handleClient(); // Periodisk log til Serial (uafhængigt af API-kald) unsigned long now = millis(); if (now - lastLogMs >= LOG_EVERY_MS) { lastLogMs = now; float t, h; bool fresh=false; readDHTSmoothed(t, h, fresh); if (!isnan(t) && !isnan(h)) { Serial.print("[periodic] T="); Serial.print(t, 1); Serial.print(" °C, RH="); Serial.print(h, 0); Serial.println(" %"); } else { Serial.println("[periodic] sensor read failed"); } } }
Kontakt os
Du er altid velkommen til at kontakte os på info@ardustore.dk, eller vores kontaktformular HER.
Anmeldelser
Der er endnu ikke nogle anmeldelser.