Mundarija:

LCD displeyli ESP8266 raqamli termometr: 7 qadam
LCD displeyli ESP8266 raqamli termometr: 7 qadam

Video: LCD displeyli ESP8266 raqamli termometr: 7 qadam

Video: LCD displeyli ESP8266 raqamli termometr: 7 qadam
Video: Lesson 28: DHT11 Temperature Sensor with TM1637 Display| Arduino Step By Step Course 2024, Noyabr
Anonim
Image
Image
LCD grafik moduli 128x128 RGB TFT ILI 9163C
LCD grafik moduli 128x128 RGB TFT ILI 9163C

Bugun men sizga ESP8266 NodeMCU-dagi TFT LCD displeyidan qanday qilib real vaqtda muhit uchun harorat va namlik ma'lumotlarini ko'rsatish kerakligini ko'rsataman. Men harorat va namlik o'lchagichi bo'lgan DHT22 yordamida displeydan foydalanishga misol keltiraman. Bu videoda, aniqrog'i, men raqamli termometrimiz uchun ixcham displeydan foydalanaman, bu grafik va tizimni o'zi kuzatishga imkon beradi. Shunday qilib, bugungi kunning maqsadi - ESP8266 yordamida suyuq kristalli displey bilan ishlashni o'rganish.

1 -qadam: LCD grafik moduli 128x128 RGB TFT ILI 9163C

Ushbu loyihada biz foydalanadigan displey 128x128 piksel. 0, 0 yuqori chap burchakda joylashgan va bu model matnli va grafikli bosib chiqarish funktsiyalariga ega, ular haqida keyinroq gaplashamiz.

2 -qadam: namlik va harorat sensori AM2302 DHT22

Namlik va harorat sensori AM2302 DHT22
Namlik va harorat sensori AM2302 DHT22

Biz yig'ilishimizda AM2302 DHT22 -dan foydalanamiz, bu sensor menga juda yoqadi, chunki bu juda aniq.

3 -qadam: O'chirish

O'chirish
O'chirish

Loyihada bizda allaqachon dasturlashtirilgan va USB quvvatidan foydalanadigan ESP8266 bor. DHT22 Ma'lumotlarga va tortishish qarshiligi LCD displeyni boshqaruvchi ESP8266 ga ulangan.

4 -qadam: yig'ish

O'rnatish
O'rnatish

Bu erda biz NodeMCU, sensor va displeyni ko'rsatadigan yig'ilishimizning elektr diagrammasini topdik. Shuni esda tutingki, bu i2c ketma -ket displeyi, undan foydalanish osonroq, chunki u ko'proq pinlarga ega.

5 -qadam: kutubxona

Kutubxona
Kutubxona
Kutubxona
Kutubxona

Biz displeyni Arduino C tili bilan dasturlamoqchi bo'lganimiz uchun bizga DHT22 kutubxonasi hamda LCD displey kerak.

Birinchidan, namlik va harorat sensori bilan aloqa qilish uchun quyidagi "DHT sensorlar kutubxonasi" kutubxonasini qo'shing.

"Sketch >> kutubxonalarni qo'shish >> kutubxonalarni boshqarish …" ga kiring.

Endi quyidagi kutubxonani qo'shing: "Adafruit-GFX-Library-master".

"Sketch >> kutubxonalarni qo'shish >> kutubxonalarni boshqarish …" ga kiring.

Shuningdek, LCD grafik moduli bilan aloqa qilish uchun "TFT_ILI9163C" kutubxonasini qo'shing.

Havolaga kiring ((((((((https://github.com/sumotoy/TFT_ILI9163C))))))) kutubxonani yuklab oling.

Faylni oching va Arduino IDE kutubxonalari papkasiga joylashtiring.

C: / Dastur fayllari (x86) / Arduino / kutubxonalari

6 -qadam: kod

Avval kodimizda ishlatiladigan kutubxonalarni qo'shamiz.

#qo'shish // LCD displeyni ishga tushirish uchun#o'z ichiga oladi // utilizada uchun komunikator sensori ham umid qiladi va temperatura.

Ta'riflar

Biz quyida dastur davomida ishlatadigan o'zgaruvchilar va ob'ektlar misolini ko'ramiz.

#DHTPIN D6 ni aniqlang // DHT22 sensorini aniqlang#DHTTYPE DHT22 // DHT22 ni aniqlang va sensorni ishlating (muhim konstruktor) DHT dht (DHTPIN, DHTTYPE); // konstruktor sensorli aloqa vositasi yordamida // rang ta'riflari #QARA 0x0000ni belgilang #KO'Kni 0x001F aniqlang RED 0xF800 #aniqlang Yashil 0x07E0 #aniqlang CYAN 0x07FF #defineFEFFEFFEFFEFFOFIFOFFOFIFOFFIFOFIFIFIFI0 _CS D1 ni aniqlang // LCD displeyini aniqlang #Decine _DC D4 // plyonkali aloqa LCD displeyi TFT_ILI9163C displeyi = TFT_ILI9163C (_ CS, _DC); // konstruktor LCD displeyni ishga tushirish uchun zarur.

Sozlash

Setup () funktsiyasida namlik sensori va harorat bilan aloqa qilish uchun mas'ul bo'lgan "dht" o'zgaruvchisini ishga tushiramiz, shuningdek, LCD moduli bilan bog'lanish uchun ishlatiladigan "displey" o'zgaruvchisini ishga tushiramiz.

Shuningdek, biz ob'ektni ekranda chizishni boshlash uchun sozlaymiz.

void setup (void) {dht.begin (); // sensorlar displeyi.begin (); // LCD displeyni o'chirish yoki o'chirish uchun ochiq -oydin ekran (); // limpa a tela, removendo todos os desenhos display.fillScreen (Qora); // ekranni oldindan ko'rsatish.setTextSize (2); // konfiguratsiya yoki matnli buyruqlar berish 2 displey.setTextColor (Yashil); // konfiguratsiya qilingan matnli matnli displey.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 yoki kursorni display.print ("UMIDADE"); // displey displeyi.setTextColor (OQ); // kechiktirish (1000) kechiktirilmagan matnni sozlash (konfiguratsiya); // espera de segundo}

Loop

Loop () funktsiyasida biz sensor tomonidan o'qilgan va ekranda yozilgan namlik va haroratni aniq manzilda olamiz. Har 5 soniya oralig'ida qiymat sensordan o'qiladi va ekranda yoziladi.

void loop () {int h = dht.readHumidity (); // faz a leitura da umidade do sensor int t = dht.readTemperature (); // haroratni o'lchash uchun sensorlar // "to'ldirish" bo'limida ikkita vazifani bajaradi, shuning uchun ular mahalliy haroratda, shuningdek, haroratda, haroratda va vaqt oralig'ida. display.fillRect (5, 32, 120, 20, Qora); // fillRect (x, y, kenglik, balandlik, rang); display.fillRect (5, 92, 120, 20, Qora); display.setCursor (40, 35); // reposiciona yoki kursor uchun displey.print (t); // tela displey.print ((char) 247); // dispre.print ("C") belgisini bosish; // coloca o “C” para indicar que é graus Celcius display.setCursor (40, 95); // reposiciona yoki kursor uchun displey.print (h); // tela display.print ("%") uchun umidsizlikni saqlang; // kechiktirishni kechiktirish (5000); }

7 -qadam: Boshqa qiziqarli funktsiyalar

// Ekran tarkibini aylantiradi (parametrlar 0, 1, 2 yoki 3)

display.setRotation (uint8_t);

// Displey ranglarini o'zgartiradi (manfiy qiladi)

display.invertDisplay (mantiqiy);

// Ekranda bitta pikselni (x, y) joylashtiradi

display.drawPixel (x, y, rang);

// O'z o'rnida vertikal chiziq chizadi

display.drawFastVLine (x, y, kenglik, rang);

// Belgilangan pozitsiyada vertikal chiziq chiziladi

display.drawFastHLine (x, y, kenglik, rang);

// Belgilangan pozitsiyada gorizontal chiziq chizadi

display.drawRect (x, y, kenglik, balandlik, rang);

// Belgilangan pozitsiyada aylana chizadi

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

Tavsiya: