czwartek, 28 marca 2019

Mini stacja pogody na arduino

Mini stacja pogody będzie mierzyła temperaturę otoczenia a także wilgotność powietrza




Co potrzebujemy?

Wyświetlacz LCD SHIELD oraz Moduł MEGA2560 omawiane w poprzednich ćwiczeniach:





https://flesztech.blogspot.com/arduino

Czujnik DHT11:





Schemat:




Oprogramowanie:

Zanim wgramy sketch, potrzebujemy 2 bibliotek które wgrywamy w aplikacji, z czujnikiem DHT11 jest o tyle problem że żaden z poradników jakie znalazłem nie rozwiązywał problemów, wręcz autorzy specjalnie zmieniali (uszkadzali) kod aby tylko nie dać gotowca innym osobom, wkurza takie postępowanie rodem z elektrody (czyli moja wiedza jest tylko tylko moja i nikomu jej nie oddam), dopiero ten sposób zadziałał, potrzebujemy tych 2 konkretnych bibliotek inaczej wyskakują różne błędy :

01 - DHT-sensor-library-master.zip
02 - Adafruit_Sensor-master.zip

te pliki znajdują się w naszej paczce z gotowcem:

Pobierz gotowiec wraz ze sketchem:
https://drive.google.com/open?id=1h8NSv_-HxGpEnDe0AN1IqJr9kNhlU0PI



Kod do wgrania:

#include <LiquidCrystal.h> // dołączam bibliotekę od obsługi lcd
#include <DHT.h> // dołączam bibliotekę od obsługi czujnika DHTxx (pamiętaj żeby zainstalować dodatkową bibliotekę Adafruit Unified Sensor Library)
#define DHTPIN 22 // pin dla czujnika
#define DHTTYPE DHT11 // rodzaj czujnika
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7; // piny do których podłączony jest wyświetlacz (jeśli masz wyświetlacz typu shield lcd)
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // tworzę obiekt klasy LiquidCrystal o nazwie lcd o podanych parametrach
DHT dht(DHTPIN, DHTTYPE); // tworzę obiekt klasy DHT o nazwie dht o podanych parametrach
void setup() {
  lcd.begin(16, 2); // inicjalizuję lcd
  lcd.print("Czekaj..."); // napis kontrolny
  dht.begin(); // inicjalizuję czujnik DHT
}
void loop() {
  delay(2000); // czekam 2s
  float temp = dht.readTemperature(); // tworzę zmienną typu float przechowującą pomiar temperatury
  float wilg = dht.readHumidity(); // tworzę zmienną typu float przechowującą pomiar wilgotności
  if (isnan(temp) || isnan(wilg)) { // sprawdzam czy nie ma błędu odczytu
    lcd.home(); // kursor na 0, 0
    lcd.print("Blad odczytu"); // wypisuję napis na lcd
    return; // wychodzę z pętli
  }
  lcd.home(); // kursor na 0, 0
  lcd.print("T: ");
  lcd.print(temp); // wypisuję zmienną temp
  lcd.print(" *C");
  lcd.setCursor(0, 1); // kursor na drugi wiersz
  lcd.print("W: ");
  lcd.print(wilg); // wypisuję zmienną wilg
  lcd.print("  %");
}



Gotowy efekt:





Whatsapp Button works on Mobile Device only

Wpisz czego szukasz i kliknij w ikonkę lupy