Sadržaj:

ESP8266 Digitalni termometar s LCD zaslonom: 7 koraka
ESP8266 Digitalni termometar s LCD zaslonom: 7 koraka

Video: ESP8266 Digitalni termometar s LCD zaslonom: 7 koraka

Video: ESP8266 Digitalni termometar s LCD zaslonom: 7 koraka
Video: FLProg7: часы реального времени и температура | ESP32 NodeMCU | Визуальное программирование для 2024, Srpanj
Anonim
Image
Image
LCD grafički modul 128x128 RGB TFT ILI 9163C
LCD grafički modul 128x128 RGB TFT ILI 9163C

Danas ću vam pokazati kako koristiti TFT LCD zaslon na ESP8266 NodeMCU za prikaz podataka o temperaturi i vlažnosti za dato okruženje u stvarnom vremenu. Navodim primjer korištenja zaslona s DHT22, a to je mjerač temperature i vlažnosti. U ovom videu konkretno koristim kompaktni zaslon za naš digitalni termometar, koji je grafički i omogućuje nadzor na samom sustavu. Stoga je današnji cilj stoga naučiti rukovanje zaslonom s tekućim kristalima pomoću ESP8266.

Korak 1: LCD grafički modul 128x128 RGB TFT ILI 9163C

Zaslon koji koristimo u ovom projektu je 128x128 piksela. 0, 0 je u gornjem lijevom kutu, a ovaj model ima i funkcije ispisa teksta i grafičkog ispisa, o čemu ćemo kasnije govoriti.

Korak 2: Senzor vlage i temperature AM2302 DHT22

Senzor vlage i temperature AM2302 DHT22
Senzor vlage i temperature AM2302 DHT22

U našem ćemo sastavu koristiti AM2302 DHT22, senzor koji mi se jako sviđa, jer je vrlo precizan.

Korak 3: Krug

Krug
Krug

U projektu imamo ESP8266 koji je već programiran i koristi USB napajanje. DHT22 je spojen na Data, a pull-up otpornik na ESP8266, koji kontrolira LCD zaslon.

Korak 4: Montaža

Skupština
Skupština

Ovdje imamo električni dijagram našeg sklopa koji prikazuje NodeMCU, senzor i zaslon. Upamtite da je ovo serijski zaslon, i2c, koji je lakši za upotrebu jer ima više pinova.

Korak 5: Knjižnica

Knjižnica
Knjižnica
Knjižnica
Knjižnica

Budući da ćemo zaslon programirati jezikom Arduino C, potrebna nam je knjižnica DHT22, kao i LCD.

Prvo dodajte sljedeću biblioteku "Knjižnica DHT senzora" za komunikaciju s osjetnikom vlažnosti i temperature.

Jednostavno pristupite "Sketch >> Include Libraries >> Manage Libraries …"

Sada dodajte sljedeću biblioteku "Adafruit-GFX-Library-master".

Jednostavno pristupite "Sketch >> Include Libraries >> Manage Libraries …"

Također, dodajte knjižnicu "TFT_ILI9163C" za komunikaciju s LCD grafičkim modulom.

Pristupite vezi ((((((((https://github.com/sumotoy/TFT_ILI9163C)))))) i preuzmite biblioteku.

Raspakirajte datoteku i zalijepite je u mapu knjižnica Arduino IDE -a.

C: / Programske datoteke (x86) / Arduino / knjižnice

Korak 6: Kodiranje

Prvo dodajmo knjižnice koje će se koristiti u našem kodu.

#include // iskorištavanje za komunikacijski com o módulo LCD#include // korištenje za parametar comunicar com o senzor de umidade e temperature

Definicije

U nastavku ćemo vidjeti varijable koje ćemo koristiti tijekom programa i instancu objekata.

#define DHTPIN D6 // pino que conectaremos o senzoru DHT22#define DHTTYPE DHT22 // DHT22 é o tipo do senzor que utilizaremos (važno za konstruktor) DHT dht (DHTPIN, DHTTYPE); // construtor učiniti objeto que utilizaremos para sebi comunicar com o senzor // definicije boja #define CRNA 0x0000 #define PLAVA 0x001F #define CRVENA 0xF800 #define ZELENA 0x07E0 #define cijan 0x07FF #define magenta 0xF81F #define ŽUTA 0xFFE0 #define BIJELA 0xFFFF # define _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); // konstruktor ne koristi que iskorištavanje parametara za komunikacijski com o módulo LCD

Postaviti

U funkciji setup () inicijaliziramo varijablu "dht", koja je odgovorna za komunikaciju sa senzorom vlažnosti i temperaturom. Također ćemo inicijalizirati varijablu "display" koja se koristi za komunikaciju s LCD modulom.

Također ćemo konfigurirati objekt za početak crtanja na ekranu.

void setup (void) {dht.begin (); // inicialização para se comunicar com o senzor display.begin (); // inicialização para se comunicar com o módulo LCD zaslonu.clearScreen (); // limpa a tela, removendo todos os desenhos display.fillScreen (BLACK); // pinta a tela toda de preto display.setTextSize (2); // konfiguracija o tamanho do texto com o tamanho 2 display.setTextColor (ZELENO); // konfiguracija a cor do texto como verde display.setCursor (5, 10); // poziciona o kurzor para começar a escrita a partir do (x, y) display.print ("TEMPERATUR"); // escreve em tela display.setCursor (22, 70); // repoziciona o pokazivaču pokazivača.print ("UMIDADE"); // escreve em tela display.setTextColor (BIJELO); // konfiguracija a cor do texto como branco (a partir de agora) delay (1000); // espera de 1 segundo}

Petlja

U funkciji loop () dohvatit ćemo vlažnost i temperature koje očitava senzor i zapisuju na zaslonu na određenom mjestu. U svakom intervalu od 5 sekundi, vrijednost se očitava sa senzora i zapisuje na zaslon.

void loop () {int h = dht.readHumidity (); // faz a leitura da umidade do sensor int t = dht.readTemperature (); // faz a leitura da temperature 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 temperature, apagaremos o valor atual para escrever novamente atualizado. display.fillRect (5, 32, 120, 20, CRNO); // fillRect (x, y, širina, visina, boja); display.fillRect (5, 92, 120, 20, CRNO); display.setCursor (40, 35); // repoziciona o kurzor para escrever display.print (t); // escreve a temperature em tela display.print ((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); // repoziciona o kurzor para escrever display.print (h); // escreve a umidade em tela display.print ("%"); // escreve o símbolo de “porcentagem” para indicar a umidade delay (5000); }

Korak 7: Neke druge zanimljive funkcije

// Okreće sadržaj zaslona (parametri 0, 1, 2 ili 3)

display.setRotation (uint8_t);

// Obrće boje prikaza (čini negativ)

display.invertDisplay (boolean);

// Crta jedan piksel na zaslonu u položaju (x, y)

display.drawPixel (x, y, boja);

// Povlači okomitu liniju u položaju

display.drawFastVLine (x, y, širina, boja);

// Povlači okomitu liniju na navedenom položaju

display.drawFastHLine (x, y, širina, boja);

// Povlači vodoravnu liniju na navedenom položaju

display.drawRect (x, y, širina, visina, boja);

// Crta krug na navedenom mjestu

display.drawCircle (x, y, radijus, boja);

Preporučeni: