Innholdsfortegnelse:

ESP8266 digitalt termometer med LCD -skjerm: 7 trinn
ESP8266 digitalt termometer med LCD -skjerm: 7 trinn

Video: ESP8266 digitalt termometer med LCD -skjerm: 7 trinn

Video: ESP8266 digitalt termometer med LCD -skjerm: 7 trinn
Video: WiFi thermometer with ESP8266 2024, November
Anonim
Image
Image
LCD grafisk modul 128x128 RGB TFT ILI 9163C
LCD grafisk modul 128x128 RGB TFT ILI 9163C

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

Fuktighets- og temperatursensor AM2302 DHT22
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

Krets
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

montering
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

Bibliotek
Bibliotek
Bibliotek
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);

Anbefalt: