Hőmérséklet és páratartalom Arduino- DHT11- és LCD kijelzővel

Hőmérséklet és páratartalom mérése és kiíratása LCD kijelzőre, DHT11-es szenzor segítségével. Újabb feladat, melyről azt hittem, hogy pikk-pakk összedugdosom, betöltöm a kódot és teszi is azt amire kitalálták. Nem ez történt 🙂 pedig már valami hasonlót az iskolában is készítettünk.
Csak hát az arduino alapcsomag alap LCD kijelzőt tartalmaz, amelyen nincs az a kiegészítő modul ami az I²C kommunikációhoz szükséges. Így azért kicsit több huzalra van szükség, plusz még egy 10kΩ-os potira is a kijelző kontrasztjának beállításához. Szerencsére azért ez utóbbi része a csomagnak.

Összehasonlításképpen:
Kiegészítőmodulos LCD, így kötöttük össze órán is (a DHT szenzor még nincs rajta), csak a táp és még 2 db vezeték kell hozzá.

És ahogy kénytelenek vagyunk bekötni a sima 1602-es LCD kijelzőt. Kell hozzá a 2 db tápvezetéken kívűl 7 adatvezeték, plusz a potméter (és természetesen a DHT szenzor).

Képek forrása: https://www.tavir.hu/ – itt részletesebb leírást is találsz a kijelzőkről, ha érdekel.
Mindenesetre én már megrendeltem a kijelzőmhöz a kiegészítő I²C modult – kemény 143 FT áfával együtt. De most kénytelen vagyok “abból főzni, ami van”.

Hát, alapból ez van… Valamit még forrasztani is kell hozzá, én ezt a csatlakozósort vállasztottam, mert így ha megérkezik a kiegészítőmodul, akkor hozzá tudom forrasztani a tüskesor másik felére.

Akkor majd így fog kb. kinézni:

Most megy így:

Beforrasztva meg így:

A tüskesort így most közvetlenül bee lehet dugni a breadboardba:

Összevezetékelve pedig így:
Kép nagyításához kattints ide

LCD-röl kis infó:

A kijelző kivezetései balról jobbra haladva:
1.: tápfeszültség negatív kivezetése (GND)
2.: tápfeszültség pozitív kivezetése (VCC)
3.: kontrasztbeállító láb (0-5V közötti potenciál)
4.: regiszterkiválasztó bemenet (parancs és adatregiszter közötti váltás)
5.: írás/olvasás kiválasztó bemenet (0: írás, 1: olvasás)
6.: engedélyező bemenet (magas szinten engedélyezi az írás/olvasás műveletet)
7. – 14.: (8db adatbit)
15. – 16.: kijelző háttérvilágítás

Az LCD, az Arduino, a DHT és a poti összevezetékelése (vezetékek színe a táblázatban ugyanolyanra színezve) :

Még egy rajzos segítség az összeállításhoz (itt a vezetékek színezése eltér):

Fenti kép forrása megegyezik azzal, ahonnan a kódot is letöltöttem: https://delightnet.nl

De ide kattintva is letölthető!

Sok sok weboldal kódjának és kapcsolás-összeállításának próbálgatása nem kevés időbe telt ezúttal is. Eleinte azt gondoltam, hogy az adott oldalon lévő kód nem jó, majd végül arra jutottam biztosan rossz kijelzőt küldtek nekem.
Jelenség: a kijelzőn csak a háttérvilágítás megy, semmi nem jelenik meg rajta, az adatfeltöltés az Arduinoba pedig állandóan valami hibaüzenettel ért véget, de szinte mindig más üzenetet dobott. Aztán már nem is akarta a feltöltést, csak villant egyet az upload és kész. Gondoltam hogy kész, kinyírtam az arduinot, de a közlekedési jelzőlámpa programot fel tudtam tölteni.

Kerestem egy sokadik oldalon lévő sokadik programot, fel tudtam tölteni, össze vezetékeltem, és láss csodát, elindult. Amikor módosítani akartam a programon, ismét nem sikerült feltölteni.

Ekkor arra következtettem, hogy valószínűleg nagyon beterhel az LCD kijelző az akkor ugye éppen USB porton keresztül kapott tápfeszültségnek. Az is lehet más az oka, de ha úgy töltöttem át az adatokat, mikor a kijelző háttérvilágítását leakasztottam, akkor mindig sikerült, ha fenn hagytam, akkor meg nem.

Íme a saját butaságom miatt több órásra sikeredett projekt végeredménye:
Azaz csak majdnem végeredmény, mert hát hogy néz már így ki?

A kijelző magyarításához elég csak kicserélni az itt megjelenő szöveget a kódban egy általunk jobbnak véltre és persze figyelni a karakterek pozíciójára Pl:

...
lcd.setCursor(0, 0);
//ez valójában az LCD első sorának első karaktere

lcd.print("Temp:     C  ");
// Itt cserélhetjük le az angolt magyarra pl:
lcd.print("Hom.:     C  ");

// akövetkező sorban a kurzort átállítjuk 
// az első sor 7. karakterére, nem elírás!
// vagyis a "Hom.:" és a "C" közé fogja írni
lcd.setCursor(6,0);
// és akkor kiíratjuk
lcd.print(temperature);

// kurzort a második sor első karakterére fókuszáljuk
lcd.setCursor(0,1);

// Itt cserélhetjük a "Hum"-ot bármire pl:
lcd.print("Parat.:     %  ");
// mivel hosszabb lett a felirat figyeljünk
//oda az érték pozicionálására:
lcd.setCursor(9,1);
...

De ékezetes karakterekkel ne is próbálkozzunk, mert csak mindenféle krikszkrakszok fognak megjelenni. Ha ékezeteket is szeretnénk, akkor azokat el kell nekünk készítenni, és megadni a program elején. Erre egy jó segítséget itt találsz: https://maxpromer.github.io/

Vagy lehet találni már megírt függvényt rá, amit szintén el kell helyezni a kódunkban.
Én kényelmes lévén ez utóbbit választottam.
Ehhez pl. itt találsz segítséget: https://starduino.hu/

A tényleg végeredmény nálam ez lett (bár nem kerül a legjobban sikerült fotóim közé):

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük