Wednesday, March 3, 2021

Arduino reading temperature and humidity from DHT-11 with SPI character LCD

Overview Of DHT-11

DHT-11 is a humidity and temperature sensor, interfaces to the controller using only one data wire. It could measure the humidity between 20 to 90 %RH with the accuracy of 5%RH. The temperature could be measure between 0 to 50 degree Celsius with the accuracy of 2 degree Celsius.

Arduino reading temperature and humidity from DHT-11 with SPI character LCD
Arduino Example Of Using DHT-11



The voltage typically supplied at 5 VDC. However, The data DQ pin requires a pull up resistor of around 5 kOhm.

Arduino reading temperature and humidity from DHT-11 with SPI character LCD


Arduino reading temperature and humidity from DHT-11 with SPI character LCD
Connection diagram between DHT-11 and MCU.


Arduino Interfacing And Programming

For this sensor, there are a lot of libraries available on line made by many author, especially on Github.

I use SimpleDHT by the authors on Github.

Arduino reading temperature and humidity from DHT-11 with SPI character LCD
SimpleDHT library installation on Arduino

In this example, I use an Arduino, a DHT-11 and an SPI LCD, to read and display the temperature and humidity on the screen. I modified the built-in example comes with this library.

Arduino reading temperature and humidity from DHT-11 with SPI character LCD
Schematic
 

 

Arduino Source Code:

#include <SimpleDHT.h>
#include <ShiftedLCD.h>
#include <SPI.h>

int pinDHT11 = 2;
SimpleDHT11 dht11(pinDHT11);

//Select pin 8 for Enable pin
LiquidCrystal lcd(8);


void setup() {
  lcd.begin(16,4);
  lcd.clear();

  lcd.setCursor(0,0);
  lcd.print("DHT-11 Sensor");
}

void loop() {

  // read without samples.
  byte temperature = 0;
  byte humidity = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    delay(1000);
    return;
  }
  
  lcd.setCursor(0,0);
  lcd.print("DHT-11 Sensor");

  lcd.setCursor(0,1);
  lcd.print("Temp: "+String(temperature)+char(223)+"C");

  lcd.setCursor(-4,2);
  lcd.print("Humidity: "+String(humidity)+"%RH");
 
  // DHT11 sampling rate is 1HZ.
  delay(1500);
 
}

Arduino sketch for this example could be download here.





No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (54) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)