Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
I dag vil jeg vise deg hvordan du bruker en TFT LCD-skjerm på ESP8266 NodeMCU for å vise temperatur- og fuktighetsdata for et gitt sanntidsmiljø. Jeg gjør et eksempel på å bruke displayet med DHT22, som er temperatur- og fuktighetsmåleren. Spesielt i denne videoen bruker jeg en kompakt skjerm for vårt digitale termometer, som er grafisk og tillater overvåking av selve systemet. Målet med i dag er derfor å lære om håndtering av flytende krystallskjerm ved bruk av ESP8266.
Trinn 1: LCD -grafikkmodul 128x128 RGB TFT ILI 9163C
Skjermen vi bruker i dette prosjektet er 128x128 piksler. 0, 0 er i øvre venstre hjørne, og denne modellen har både tekstutskrift og grafisk utskrift, som vi skal behandle senere.
Trinn 2: Fuktighets- og temperatursensor AM2302 DHT22
Vi vil bruke AM2302 DHT22 i vår samling, som er en sensor som jeg virkelig liker, siden den er veldig presis.
Trinn 3: Krets
I prosjektet har vi en ESP8266 som allerede er programmert og bruker USB -strøm. DHT22 er koblet til dataene og pull-up-motstanden til ESP8266, som styrer LCD-displayet.
Trinn 4: Montering
Her har vi det elektriske diagrammet over enheten vår, som viser NodeMCU, sensoren og displayet. Husk at dette er en seriell skjerm, i2c, som er lettere å bruke fordi den har flere pinner.
Trinn 5: Bibliotek
Siden vi skal programmere skjermen med Arduino C -språk, trenger vi DHT22 -biblioteket, så vel som LCD -skjermen.
Legg først til følgende "DHT -sensorbibliotek" -bibliotek for kommunikasjon med fuktighets- og temperatursensoren.
Bare få tilgang til "Skisse >> Inkluder biblioteker >> Administrer biblioteker …"
Legg nå til følgende bibliotek, "Adafruit-GFX-Library-master."
Bare få tilgang til "Skisse >> Inkluder biblioteker >> Administrer biblioteker …"
Legg også til "TFT_ILI9163C" -biblioteket for kommunikasjon med LCD -grafikkmodulen.
Få tilgang til lenken (((((((https://github.com/sumotoy/TFT_ILI9163C)))) og last ned biblioteket.
Pakk ut filen og lim den inn i bibliotekmappen i Arduino IDE.
C: / Program Files (x86) / Arduino / libraries
Trinn 6: Kode
La oss først legge til bibliotekene som skal brukes i koden vår.
#include // utilizada para se comunicar com eller módulo LCD#include // utilizada para se comunicar com o sensor de umidade e temperatura
Definisjoner
Vi ser nedenfor variablene som vi vil bruke under programmet, og forekomsten av objektene.
#define DHTPIN D6 // pino que conectaremos o sensor DHT22#define DHTTYPE DHT22 // DHT22 é o tipo do sensor que utilizaremos (importante para o construtor) DHT dht (DHTPIN, DHTTYPE); // construtor do objeto que utilizaremos para se comunicar com o sensor // Color definitions #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81Fin definere _CS D1 // pino que conectaremos o CS do módulo LCD #define _DC D4 // pino que conectaremos o RS do módulo LCD TFT_ILI9163C display = TFT_ILI9163C (_ CS, _DC); // construtor gjøre objeto que utilizaremos fora comunicar com eller modulo LCD
Oppsett
I setup () -funksjonen initialiserer vi variabelen "dht", som er ansvarlig for kommunikasjonen med fuktighetssensoren og temperaturen. Vi vil også initialisere "display" -variabelen som brukes til å kommunisere med LCD -modulen.
Vi vil også konfigurere objektet til å begynne å tegne på skjermen.
void -oppsett (void) {dht.begin (); // inicialização para se comunicar com o sensor display.begin (); // inicialização para se comunicar com o módulo LCD display.clearScreen (); // limpa a tela, removeendo todos os desenhos display.fillScreen (BLACK); // pinta a tela toda de preto display.setTextSize (2); // konfigurasjon av tamanho gjør tekst til com tamanho 2 display.setTextColor (GRØNN); // konfigura a cor do texto como verde display.setCursor (5, 10); // posiciona o cursor para começar a escrita a partir do (x, y) display.print ("TEMPERATUR"); // escreve em tela display.setCursor (22, 70); // reposiciona o markør display.print ("UMIDADE"); // escreve em tela display.setTextColor (WHITE); // konfigura a cor do texto como branco (a partir de agora) forsinkelse (1000); // espera de 1 segundo}
Løkke
I loop () -funksjonen vil vi hente fuktigheten og temperaturene som leses av sensoren og skrives på skjermen på det spesifikke stedet. Ved hvert intervall på 5 sekunder leses verdien fra sensoren og skrives på skjermen.
void loop () {int h = dht.readHumidity (); // faz a leitura da umidade do sensor int t = dht.readTemperature (); // faz a leitura da temperatura do sensor // as 2 linhas seguintes utilizando o método “fillRect”, são para fazer a limpeza do local onde escreveremos a umidade e a temperatura, apagaremos o valor atual para escrever novamente atualizado. display.fillRect (5, 32, 120, 20, SVART); // fillRect (x, y, bredde, høyde, farge); display.fillRect (5, 92, 120, 20, SVART); display.setCursor (40, 35); // reposiciona o markør for escrever display.print (t); // oppgi en temperatur på displayet. utskrift ((char) 247); // escreve o símbolo de grau ° através de código display.print ("C"); // coloca o “C” para indicar que é graus Celcius display.setCursor (40, 95); // reposiciona o markør for escrever display.print (h); // oppgi en umidade em tela display.print ("%"); // escreve o símbolo de “porcentagem” para indicar a umidade delay (5000); }
Trinn 7: Noen andre interessante funksjoner
// Roterer innholdet på skjermen (parameter 0, 1, 2 eller 3)
display.setRotation (uint8_t);
// Snu fargene på displayet (negativt)
display.invertDisplay (boolsk);
// Tegner en enkelt piksel på skjermen ved posisjon (x, y)
display.drawPixel (x, y, farge);
// Tegner en vertikal linje på plass
display.drawFastVLine (x, y, bredde, farge);
// Tegner en vertikal linje på den angitte posisjonen
display.drawFastHLine (x, y, bredde, farge);
// Tegner en horisontal linje på den angitte posisjonen
display.drawRect (x, y, bredde, høyde, farge);
// Tegner en sirkel i den angitte posisjonen
display.drawCircle (x, y, radius, farge);