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 wraz z czujnikiem DHT11 i programatorem USBasp

Moduł uruchomieniowy wraz z czujnikiem DHT11 i programatorem USBasp

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.

 

Czujnik DHT11

Czujnik DHT11

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:

Efekt działania programu

Efekt działania programu

 

Dodaj komentarz