Dziś pokażę jak za pomocą czujnika DHT11, odczytać temperaturę i wilgotność, panującą w otoczeniu czujnika, i wyświetlić ją na LCD zgodnym z HD44780, zawartym w module uruchomieniowym Gotronik.
Co będziemy potrzebować :
- moduł uruchomieniowy Gotronik
- Programator USBasp
- Środowisko programistyczne Eclipse
- Przewody połączeniowe żeńsko – żeńskie
- Moduł czujnika DHT11: 1 lub 2
- Biblioteki obsługujące czujnik DHT11
Czujnik DHT11 jest zarówno czujnikiem temperatury, jak i wilgotności. Moduły czujników dostępne w sklepie Gotronik są gotowe do użycia. Oczywiście, można byłoby użyć samego czujnika DHT11, nie w formie modułu. Należy wtedy pamiętać, aby między 1 a 2 pin czujnika, dołączyć rezystor 4,7k Ω.
Pamiętajmy również, że zakres napięć pracy czujnika wynosi 3,5V – 5,5V, zatem musimy użyć programatora, który zasili nam zestaw napięciem 5V.
Pin 1 – VCC
Pin 2 – DATA
Pin 3 – Nieużywany
Pin 4 – GND
Ja użyłem gotowego modułu, do którego link podałem wyżej.
Podłączenie czujnika do płytki przedstawia się następująco:
DAT -> PC5
VCC -> VCC
GND -> GND
Biblioteki do obsługi czujnika, wypakowujemy do katalogu C:\WinAVR-20100110\avr\include\dht11
Jeśli podłączyliśmy czujnik tak jak opisałem powyżej, nie jest konieczne wprowadzanie żadnych zmian w pliku nagłówkowym dht11.h.
Czas na kod źródłowy programu, który wklejam poniżej:
/*
* DHT11.c
*
* Created on: 3 sie 2015
* Author: Gotronik_1
*/
#include <avr/io.h>
#include <util/delay.h>
#include <hd44780/hd44780.c>
#include <dht11/dht11.c>
int main (void){
LCD_Initalize();
uint8_t temperatura=0;
uint8_t wilgotnosc=0;
char bufor[100];
while(1){
LCD_GoTo(0,0);
LCD_WriteText("Temp:");
temperatura=dht11_gettemperature(); // funkcja pobiera temperaturę z czujnika i przypisuje ją do zmiennej
itoa(temperatura,bufor,10); //funkcja zamieniajaca typ integer na char
LCD_GoTo(6,0);
LCD_WriteText(bufor);
LCD_GoTo(8,0);
LCD_WriteData(223); //instrukcja wyświetlająca znak stopnia
LCD_GoTo(9,0);
LCD_WriteText("C");
LCD_GoTo(0,1);
LCD_WriteText("Wilg:");
wilgotnosc=dht11_gethumidity();
itoa(wilgotnosc,bufor,10);
LCD_GoTo(6,1);
LCD_WriteText(bufor);
LCD_GoTo(8,1);
LCD_WriteText("%");
}
}
Jeżeli wszystko zrobiliśmy poprawnie, naszym oczom powinien ukazać się widok taki, jak na poniższym zdjęciu:



Dodaj komentarz
Musisz się zalogować, aby móc dodać komentarz.