AHT10 to precyzyjny cyfrowy czujnik temperatury i wilgotności, który zapewnia nam dokładne odczyty parametrów środowiskowych z komunikacją I2C. Jest szeroko stosowany w aplikacjach takich jak monitoring pogody, automatyki przemysłowej i automatyki domowej. W tym samouczku połączymy czujnik AHT10 z Arduino i wyświetlimy zmierzoną temperaturę jak i wilgotność na ekranie OLED SSD1306.
Potrzebne komponenty:
- Arduino np. Nano
- Moduł AHT10 (czujnik temperatury i wilgotności)
- 0,96-calowy wyświetlacz OLED SSD1306
- Przewody połączeniowe
- Opcjonalnie płytka stykowa
Kilka słów o komponentach które użyjemy:
AHT10 to czujnik temperatury i wilgotności o wysokiej wydajności oferujący nam:
- Zakres temperatur: od -40°C do 85°C z dokładnością ±0,3°C.
- Zakres wilgotności: od 0% do 100% RH z dokładnością ±2%.
- Protokół komunikacyjny: I2C.
- Napięcie zasilania: 2,2V – 5,5V.
Wyświetlacz OLED SSD1306 to monochromatyczny ekran o rozdzielczości 128 x 64 pikseli, który:
- Komunikacja przy użyciu protokołu I2C lub SPI w tym projekcie użyjemy protokołu I2C,
- Zapewnia wysoki kontrast przy niskim zużyciu energii,
- Zasilanie napięciem 3,3V jak i 5V.
Schemat połączeń
Opis połączeń
Arduino Nano z wyświetlaczem OLED (0,96″ I2C):
GND → GND
VDD → 5 V
SCK → A5 (SCL)
SDA → A4 (SDA)
Arduino Nano z czujnikiem temperatury i wilgotności AHT10:
GND → GND
VCC → 5 V
SCL → A5
SDA → A4
Kod programu czujnika temperatury i wilgotności:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#include <Wire.h> #include <Adafruit_AHTX0.h> #include <Adafruit_SSD1306.h> #include <Adafruit_GFX.h> #define OLED_WIDTH 128 #define OLED_HEIGHT 64 #define OLED_ADDR 0x3C Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT); Adafruit_AHTX0 aht; void setup() { Serial.begin(115200); Serial.println(); if (!aht.begin()) { Serial.println(F("AHT10 chyba czegoś brkuje!")); while (1) delay(10); } Serial.println(F("AHT10 uruchamiania")); if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) { Serial.println(F("SSD1306 nie podłączone")); while (1); } display.clearDisplay(); } void loop() { sensors_event_t humidity, temp; aht.getEvent(&humidity, &temp); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(35, 0); display.println(F("Temp")); display.setCursor(25, 25); display.print(temp.temperature); display.drawRect(90, 25, 3, 3, WHITE); // dodanie pioruńskiego symbolu "°" display.println(F(" C")); display.display(); Serial.print(F("Temperatura: ")); Serial.print(temp.temperature); Serial.println(F(" C")); delay(4000); display.clearDisplay(); display.setCursor(35, 0); display.println(F("Wilg")); display.setCursor(25, 25); display.print(humidity.relative_humidity); display.print(F(" %")); display.display(); Serial.print(F("Wilgotność: ")); Serial.print(humidity.relative_humidity); Serial.print(F(" %")); delay(4000); } |


