INHOUDSOPGAWE:

ESP8266 digitale termometer met LCD -skerm: 7 stappe
ESP8266 digitale termometer met LCD -skerm: 7 stappe

Video: ESP8266 digitale termometer met LCD -skerm: 7 stappe

Video: ESP8266 digitale termometer met LCD -skerm: 7 stappe
Video: Lesson 31: Measure Temperature and Humidity Over Wi-Fi using DHT11 and ESP01 SunFounder Kit 2024, November
Anonim
Image
Image
LCD grafiese module 128x128 RGB TFT ILI 9163C
LCD grafiese module 128x128 RGB TFT ILI 9163C

Vandag sal ek u wys hoe u 'n TFT LCD-skerm op die ESP8266 NodeMCU kan gebruik om data oor temperatuur en humiditeit vir 'n gegewe intydse omgewing te vertoon. Ek maak 'n voorbeeld van die gebruik van die skerm met DHT22, wat die temperatuur- en humiditeitsmeter is. In hierdie video gebruik ek spesifiek 'n kompakte skerm vir ons digitale termometer, wat grafies is en die stelsel self kan monitor. Die doel van vandag is dus om te leer oor die hantering van die vloeibare kristalvertoning met behulp van die ESP8266.

Stap 1: LCD grafiese module 128x128 RGB TFT ILI 9163C

Die skerm wat ons in hierdie projek gebruik, is 128x128 pixels. Die 0, 0 is in die linker boonste hoek, en hierdie model het funksies vir teksdruk en grafiese druk, wat ons later sal hanteer.

Stap 2: Humiditeits- en temperatuursensor AM2302 DHT22

Humiditeits- en temperatuursensor AM2302 DHT22
Humiditeits- en temperatuursensor AM2302 DHT22

Ons sal die AM2302 DHT22 in ons samestelling gebruik, wat 'n sensor is waarvan ek baie hou, aangesien dit baie presies is.

Stap 3: Skakel

Kring
Kring

In die projek het ons 'n ESP8266 wat reeds geprogrammeer is en die USB -krag gebruik. Die DHT22 is gekoppel aan die data en die optrekweerstand aan die ESP8266, wat die LCD-skerm beheer.

Stap 4: Montering

Vergadering
Vergadering

Hier het ons die elektriese diagram van ons samestelling, wat die NodeMCU, die sensor en die skerm vertoon. Onthou dat dit 'n seriële skerm, i2c, is wat makliker is om te gebruik omdat dit meer penne het.

Stap 5: Biblioteek

Biblioteek
Biblioteek
Biblioteek
Biblioteek

Aangesien ons die skerm met die Arduino C -taal gaan programmeer, benodig ons die DHT22 -biblioteek sowel as die LCD.

Voeg eers die volgende "DHT -sensorbiblioteek" -biblioteek by vir kommunikasie met die humiditeits- en temperatuursensor.

Gaan eenvoudig na "Skets >> Sluit biblioteke in >> Beheer biblioteke …"

Voeg nou die volgende biblioteek by, "Adafruit-GFX-Library-master."

Gaan eenvoudig na "Skets >> Sluit biblioteke in >> Beheer biblioteke …"

Voeg ook die "TFT_ILI9163C" -biblioteek by vir kommunikasie met die LCD grafiese module.

Gaan na die skakel (((((((https://github.com/sumotoy/TFT_ILI9163C))))) en laai die biblioteek af.

Pak die lêer uit en plak dit in die biblioteekmap van die Arduino IDE.

C: / Programlêers (x86) / Arduino / biblioteke

Stap 6: Kode

Laat ons eers die biblioteke byvoeg wat in ons kode gebruik sal word.

#include // gebruik vir die komunikasie van 'n LCD

Definisies

Ons sien hieronder die veranderlikes wat ons tydens die program sal gebruik, en die voorkoms van die voorwerpe.

#define DHTPIN D6 // pino que conectaremos of sensor DHT22#define DHTTYPE DHT22 // DHT22 é o tipo do sensor que utilizaremos (importante para o construtor) DHT dht (DHTPIN, DHTTYPE); // konstrukteurs wat 'n gebruik kan maak vir 'n kombinasie van 'n sensor definieer _CS D1 // pino que conectaremos of CS to módulo LCD #define _DC D4 // pino que conectaremos of RS do módulo LCD TFT_ILI9163C display = TFT_ILI9163C (_ CS, _DC); // 'n oprigger vir die gebruik van 'n kommunikasie of 'n LCD -skerm

Stel op

In die setup () -funksie initialiseer ons die veranderlike "dht", wat verantwoordelik is vir die kommunikasie met die humiditeitsensor en temperatuur. Ons sal ook die "display" -veranderlike wat gebruik word om met die LCD -module te kommunikeer, initialiseer.

Ons sal ook die voorwerp instel om op die skerm te begin teken.

leemte opstel (leeg) {dht.begin (); // inicialização para se comunicar com o sensor display.begin (); // inicialização para se comunicar com o módulo LCD display.clearScreen (); // dit kan ook verwyder word, maar ons kan ook vertoon word.fillScreen (SWART); // om die weergawe te stel.setTextSize (2); // konfigurasie van die teks of die tamanho 2 display.setTextColor (GROEN); // configura a text text 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 cursor display.print ("UMIDADE"); // escreve em tela display.setTextColor (WHITE); // konfigura a cor do texto como branco (a partir de agora) vertraging (1000); // espera de 1 segment}

Lus

In die lus () -funksie sal ons die humiditeit en temperature wat deur die sensor gelees word, op die spesifieke plek ophaal. Met elke interval van 5 sekondes word die waarde van die sensor afgelees en op die skerm geskryf.

leemte -lus () {int h = dht.readHumidity (); // faz a leitura da umidade do sensor int t = dht.readTemperature (); // as 'n temperatuur vir die sensor // as 2 verskillende funksies gebruik word om "fillRect" te gebruik, kan ons ook 'n plaaslike of plaaslike temperatuurverskil en temperatuurverhouding hê, sowel as 'n waardering vir 'n nuwe boek. display.fillRect (5, 32, 120, 20, SWART); // fillRect (x, y, breedte, hoogte, kleur); display.fillRect (5, 92, 120, 20, SWART); display.setCursor (40, 35); // reposiciona o cursor para escrever display.print (t); // 'n temperatuur vir die 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); // reposiciona o cursor para escrever display.print (h); // gee 'n e -pos aan display.print ("%"); // escreve o símbolo de “porcentagem” para indicar a umidade delay (5000); }

Stap 7: 'n Paar ander interessante funksies

// Draai die inhoud van die skerm (parameters 0, 1, 2 of 3)

display.setRotation (uint8_t);

// Draai vertoonkleure om (maak negatief)

display.invertDisplay (booleaans);

// Teken 'n enkele pixel op die skerm op posisie (x, y)

display.drawPixel (x, y, kleur);

// Trek 'n vertikale lyn in posisie

display.drawFastVLine (x, y, breedte, kleur);

// Trek 'n vertikale lyn op die gespesifiseerde posisie

display.drawFastHLine (x, y, breedte, kleur);

// Trek 'n horisontale lyn op die gespesifiseerde posisie

display.drawRect (x, y, breedte, hoogte, kleur);

// Trek 'n sirkel op die gespesifiseerde posisie

display.drawCircle (x, y, radius, kleur);

Aanbeveel: