Kazalo:

ESP8266 Digitalni termometer z LCD zaslonom: 7 korakov
ESP8266 Digitalni termometer z LCD zaslonom: 7 korakov

Video: ESP8266 Digitalni termometer z LCD zaslonom: 7 korakov

Video: ESP8266 Digitalni termometer z LCD zaslonom: 7 korakov
Video: Уличный термометр на ESP8266 2024, November
Anonim
Image
Image
Grafični modul LCD 128x128 RGB TFT ILI 9163C
Grafični modul LCD 128x128 RGB TFT ILI 9163C

Danes vam bom pokazal, kako uporabljati TFT LCD zaslon na ESP8266 NodeMCU za prikaz podatkov o temperaturi in vlažnosti za določeno okolje v realnem času. Naredim primer uporabe zaslona z DHT22, ki je merilnik temperature in vlažnosti. V tem videoposnetku uporabljam kompakten zaslon za naš digitalni termometer, ki je grafičen in omogoča nadzor nad samim sistemom. Današnji cilj je torej spoznati ravnanje s prikazovalnikom s tekočimi kristali z uporabo ESP8266.

Korak: Grafični modul LCD 128x128 RGB TFT ILI 9163C

Zaslon, ki ga uporabljamo v tem projektu, je 128x128 slikovnih pik. 0, 0 je v zgornjem levem kotu in ta model ima funkcije tiskanja besedila in grafičnega tiskanja, o katerih bomo govorili kasneje.

2. korak: Senzor vlažnosti in temperature AM2302 DHT22

Senzor vlažnosti in temperature AM2302 DHT22
Senzor vlažnosti in temperature AM2302 DHT22

V sestavi bomo uporabili AM2302 DHT22, ki mi je zelo všeč, saj je zelo natančen.

3. korak: Vezje

Vezje
Vezje

V projektu imamo ESP8266, ki je že programiran in uporablja napajanje USB. DHT22 je priključen na Data, vlečni upor pa na ESP8266, ki upravlja LCD zaslon.

4. korak: Montaža

Montaža
Montaža

Tukaj imamo električni diagram našega sklopa, ki prikazuje NodeMCU, senzor in zaslon. Ne pozabite, da je to serijski zaslon i2c, ki ga je lažje uporabljati, ker ima več zatičev.

5. korak: Knjižnica

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

Ker bomo zaslon programirali v jeziku Arduino C, potrebujemo knjižnico DHT22 in LCD.

Najprej dodajte naslednjo knjižnico "Knjižnica senzorjev DHT" za komunikacijo s senzorjem vlažnosti in temperature.

Preprosto odprite "Skica >> Vključi knjižnice >> Upravljanje knjižnic …"

Zdaj dodajte naslednjo knjižnico "Adafruit-GFX-Library-master".

Preprosto odprite "Skica >> Vključi knjižnice >> Upravljanje knjižnic …"

Dodajte tudi knjižnico "TFT_ILI9163C" za komunikacijo z grafičnim modulom LCD.

Odprite povezavo (((((((https://github.com/sumotoy/TFT_ILI9163C))))) in prenesite knjižnico.

Razpakirajte datoteko in jo prilepite v mapo knjižnice Arduino IDE.

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

6. korak: Koda

Najprej dodajmo knjižnice, ki bodo uporabljene v naši kodi.

#include // izkoristite para se comunicar com o módulo LCD#include // izkoristite para se comunicar com o senzor de umidade e temperatura

Opredelitve pojmov

Spodaj bomo videli spremenljivke, ki jih bomo uporabljali med programom, in primerek objektov.

#define DHTPIN D6 // pino que conectaremos o senzorju DHT22#define DHTTYPE DHT22 // DHT22 é o tipo do senzor que uselizaremos (pomembno za konstruktor) DHT dht (DHTPIN, DHTTYPE); // konstruktor do objeto que useeremos para se comunicar com o sensor // Definicije barv #define BLACK 0x0000 #define BLUE 0x001F #define RDEČA 0xF800 #define ZELENA 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81FEF #defineFEFEFEFEx #defineFEFEFEFE #defineFEFEFEFEFE #defineFEFEFExFEFE #defineFEFEFExFEFE #defineFEFEFEFE #Define 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 naredi objektno uporabo pri uporabi parametra za komunikacijo z LCD zaslonom

Nastaviti

V funkciji setup () inicializiramo spremenljivko "dht", ki je odgovorna za komunikacijo s senzorjem vlažnosti in temperaturo. Inicializirali bomo tudi spremenljivko "display", ki se uporablja za komunikacijo z modulom LCD.

Objekt bomo tudi konfigurirali za začetek risanja na zaslonu.

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

Zanka

V funkciji loop () bomo pridobili vlažnost in temperature, ki jih odčita senzor in zapišejo na zaslonu na določeni lokaciji. V vsakem intervalu po 5 sekund se vrednost odčita s senzorja in zapiše 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 utilizendo 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, ČRNO); // fillRect (x, y, širina, višina, barva); display.fillRect (5, 92, 120, 20, ČRNO); display.setCursor (40, 35); // repoziciona o kurzorju para escrever display.print (t); // zvišanje 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 kurzorju para escrever display.print (h); // premaknite umidade em tela display.print ("%"); // escreve o símbolo de “porcentagem” para indicar a umidade delay (5000); }

7. korak: Nekaj drugih zanimivih funkcij

// Zavrti vsebino zaslona (parametri 0, 1, 2 ali 3)

display.setRotation (uint8_t);

// obrne barve prikaza (naredi negativen)

display.invertDisplay (logično);

// Nariše eno slikovno piko na zaslonu v položaju (x, y)

display.drawPixel (x, y, barvno);

// Nariše navpično črto v položaju

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

// Nariše navpično črto na določenem položaju

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

// Nariše vodoravno črto na določenem mestu

display.drawRect (x, y, širina, višina, barva);

// Nariše krog na določenem mestu

display.drawCircle (x, y, polmer, barva);

Priporočena: