⭐⭐ Początkujący plus
⏱️ 20 minut
Mini-stacja pogody
Zrobisz mini-stację pogody. DHT11 mierzy temperaturę i wilgotność powietrza, a ekranik OLED je pokazuje.
🧰 Czego potrzebujesz?
🔌
Kabel USB + Przewody połączeniowe🗺️ Schemat podłączenia
Poprowadź przewody od Arduino do każdej części. Kolory przewodów możesz wybrać samodzielnie.
| Od | Do |
|---|---|
Arduino UNO · D2 |
Czujnik temperatury DHT11 · DAT |
Arduino UNO · 5V |
Czujnik temperatury DHT11 · VCC |
Arduino UNO · GND |
Czujnik temperatury DHT11 · GND |
Arduino UNO · A4 |
Ekranik OLED 0,91" · SDA |
Arduino UNO · A5 |
Ekranik OLED 0,91" · SCL |
Arduino UNO · 5V |
Ekranik OLED 0,91" · VCC |
Arduino UNO · GND |
Ekranik OLED 0,91" · GND |
🛠️ Tak to zbudujesz
- Podłącz DHT11: DAT do pin 2, VCC do 5V i GND do GND.
- Podłącz ekran OLED: SDA do A4, SCL do A5, VCC do 5V i GND do GND.
- Wskazówka: dwie części potrzebują 5V i GND. Użyj pasków + i − na swoim breadboardzie.
💻 Kod
// Mini-stacja pogody
// DHT11 mierzy temperaturę i wilgotność powietrza. Ekranik OLED to pokazuje.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT z DHT11 jest na pin 2
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 ekran(128, 32, &Wire, -1); // OLED 128 x 32 piksele (SDA = A4, SCL = A5)
void setup() {
Serial.begin(9600);
dht.begin();
if (!ekran.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 0x3C to adres ekranu
Serial.println(F("Nie ma ekranu. Sprawdz SDA i SCL."));
while (true); // Stop: bez ekranu to nie ma sensu
}
ekran.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperatura = dht.readTemperature(); // W stopniach Celsius
float wilgotnosc = dht.readHumidity(); // W procentach
ekran.clearDisplay();
ekran.setTextSize(2);
ekran.setCursor(0, 0);
if (isnan(temperatura) || isnan(wilgotnosc)) { // Pomiar się nie udał?
ekran.setTextSize(1);
ekran.print(F("Brak DHT11"));
} else {
ekran.print(temperatura, 1);
ekran.print((char)247); // Znak stopnia
ekran.println(F("C"));
ekran.print(wilgotnosc, 0);
ekran.print(F("% wilg."));
Serial.print(F("Temperatura: "));
Serial.print(temperatura);
Serial.print(F(" C Wilg.: "));
Serial.print(wilgotnosc);
Serial.println(F(" %"));
}
ekran.display(); // Dopiero teraz wszystko naprawdę trafia na ekran
delay(2000); // DHT11 może mierzyć tylko raz na 2 sekundy
}
🧠 Co robi kod?
- DHT11 jest na pinie 2. Za pomocą
readTemperature()ireadHumidity()odczytujemy wartości. - Ekran OLED rozmawia przez SDA (A4) i SCL (A5). Za pomocą
print()pokazujemy tekst na ekranie. - Co 2 sekundy pojawia się nowy pomiar. Nie uda się zmierzyć? Wtedy zobaczysz komunikat.
🎯 Spróbuj…
- Pokaż też temperaturę w Fahrenheit
- Włącz LED, gdy jest cieplej niż 25 stopni
- Zapamiętaj najwyższą temperaturę z dzisiaj i też ją pokaż
🚀 Zbuduj ten projekt z Codey: otwórz codey.online/pl/starter-kits/uno/projects/weather-station i kliknij ZRÓB TO. Wtedy kod i schemat podłączenia będą od razu gotowe.
Codey Online to produkt od OTRONIC