Подключение датчика температуры и влажности DHT22 к NodeMcu, вывод на OLED и Blynk



  • Постараюсь подробно рассказать, как подключить к NodeMcu датчик температуры и влажности DHT22 (или DHT11), вывести на OLED дисплей размером 1.3 дюйма данные и по Wi-Fi передавать данные в приложение Blynk (под iOS и Android).

    Вот так всё выглядет на макетке:

    0_1490072064700_dht22-nodemcu-oled-blynk-1.jpg

    А вот, как данные отображаются в приложении Blynk:

    0_1490072594659_dht22-nodemcu-oled-blynk-2.png

    Что нам потребуется:

    • Плата NodeMcu
    • Датчик DHT22 (или DHT11)
    • Резистор на 10К
    • Дисплей OLED 1.3 128x64 на контроллере SH1106 или SSD1306
    • Макетка и провода

    Распиновка:

    0_1490073900295_dht22-nodemcu-oled-blynk-3.png

    OLED -> NodeMcu
    VCC -> 3V3 или VIN
    GND -> GND
    SCL -> D5
    SDA -> D3

    DHT22 -> NodeMcu
    VCC -> 3V3
    DATA -> D6
    NC ->
    GND -> GND

    Blynk
    Теперь нужно установить приложение Blynk
    Ссылка для установки на iOS
    Ссылка для установки на Android

    Официальная страница - http://www.blynk.cc/getting-started

    Регистрируемся в приложении, создаем проект и получаем AUTH TOKEN.
    (Подробнее опишу процесс работы с Blynk позже)

    Для Arduino IDE требуется установить библиотеки:

    • ESP8266 OLED Driver for SSD1306
    • ESP8266WiFi
    • Blynk
    • DHT
    • SimpleTimer

    Все библиотеки можно установить через диспетчер библиотек в Arduino IDE

    0_1490074716434_dht22-nodemcu-oled-blynk-4.png

    Теперь через Arduino IDE заливаем скетч:

    #include "SH1106.h"
    #define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
    #include <ESP8266WiFi.h>
    #include <BlynkSimpleEsp8266.h>
    #include <SimpleTimer.h>
    #include <DHT.h>
    #define DHTPIN 12 //pin gpio 12 in sensor
    #define DHTTYPE DHT22   // DHT 22 Change this if you have a DHT11
    DHT dht(DHTPIN, DHTTYPE);
    
    // You should get Auth Token in the Blynk App.
    // Go to the Project Settings (nut icon).
    char auth[] = "ВАШ AUTH TOKEN";  // Put your Auth Token here. (see Step 3 above)
    
    SimpleTimer timer;
    SH1106  display(0x3c, D3, D5);
    int counter = 1;
    
    void setup()
    {
      Serial.begin(9600); // See the connection status in Serial Monitor
       Blynk.begin(auth, "SSID ВАШЕЙ WIFI СЕТИ", "ПАРОЛЬ ОТ WIFI"); //insert here your SSID and password
       pinMode(14, OUTPUT);
    
      // Initialising the UI will init the display too.
      display.init();
      display.flipScreenVertically();
      display.setFont(ArialMT_Plain_10);
       
      // Setup a function to be called every second
      timer.setInterval(1000L, sendUptime);
    }
    
    void sendUptime()
    {
      // You can send any value at any time.
      // Please don't send more that 10 values per second.
       //Read the Temp and Humidity from DHT
      float h = dht.readHumidity();
      float t = dht.readTemperature();
      
      Blynk.virtualWrite(10, t); // virtual pin 
      Blynk.virtualWrite(11, h); // virtual pin 
    
      if (h > 70) {
        digitalWrite(14, HIGH);
        Blynk.virtualWrite(0, 1023); // virtual pin
      } else {
        digitalWrite(14, LOW);
        Blynk.virtualWrite(0, 0); // virtual pin
      }
    }
    
    void loop()
    {
      float t = dht.readTemperature();
      float h = dht.readHumidity();
      // clear the display
      display.clear();
    
      display.setFont(ArialMT_Plain_16);
      display.setTextAlignment(TEXT_ALIGN_LEFT);
      display.drawString(10, 0, "Temp:");
      display.drawString(70, 0, String(t,1) + "C");
      display.drawString(10, 18, "Hum:");
      display.drawString(70, 18, String(h,1) + "%");
    
      display.setFont(ArialMT_Plain_10);
      display.setTextAlignment(TEXT_ALIGN_CENTER);
      display.drawString(64, 50, "www.hab.kg");
      
      display.display();
      Blynk.run();
      timer.run();
    }
    

    Далее буду делать корпус для устройства.
    На любые вопросы с удовольствием постараюсь ответить :)



  • Hello good project btw, can you tell wich version arduino ide did you use and ive got an error like this :

    # code block
    In file included from D:\belgeler\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:22:0:
    D:\belgeler\Arduino\libraries\DHT_sensor_library\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory
    #include <Adafruit_Sensor.h>
    compilation terminated.
    
    


  • @plazma use Any version



  • # code block
    In file included from D:\belgeler\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:22:0:
    D:\belgeler\Arduino\libraries\DHT_sensor_library\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory
    #include <Adafruit_Sensor.h>
    compilation terminated.
    
    

    Judging by the error message you do not have a library (DHT_sensor_librery)



  • ty for quick response i found the problem i have already library but its needed specific version which is "DHT 1.2.3", ive got this error with 1.3.0 and thank you again working perfect



Похоже, подключение к Хаб было разорвано, подождите, пока мы пытаемся восстановить соединение.