กลับไปหน้ารวมไฟล์
all-in-one-clock-ds3231-bmp280-tft-arduino.md

ระบบลำดับเวลาบรรยากาศขั้นสุดยอด: นาฬิกา All-in-One

นาฬิกาที่บอกเวลาเพียงอย่างเดียวถือเป็นการใช้ซิลิคอนที่ด้อยประสิทธิภาพอย่างมาก All-in-One Clock 1.0 ได้รวบรวมเซ็นเซอร์สภาพแวดล้อมและเวลาที่มีความซับซ้อนหลายมิติเข้าไว้ด้วยกันในแดชบอร์ดเดียวที่รวมเป็นหนึ่งและยอดเยี่ยม! ด้วยการซิงค์ DS3231 Real-Time Clock ที่แม่นยำสูงเข้ากับข้อมูลบรรยากาศจาก DHT22 และค่าการวัดความสูงจาก BMP280 ทำให้ Arduino Mega ทำหน้าที่เป็นตัวรวบรวมข้อมูลขั้นสุดยอด มันรวบรวมเมทริกซ์ข้อมูลขนาดใหญ่เหล่านี้อย่างต่อเนื่อง และจัดรูปแบบอย่างรวดเร็วโดยใช้ไลบรารี <Adafruit_GFX.h> ไปยัง SPI TFT LCD แบบความละเอียดสูง!

dht11_lcd_display_diagram_1772681525046.png

การจัดโครงสร้างระบบนิเวศของเซ็นเซอร์ SPI / I2C

คุณไม่สามารถต่อสายเซ็นเซอร์ 3 ตัวที่แตกต่างกันโดยใช้ UART port 3 พอร์ตแยกกันได้ คุณจะไม่มีขา (pin) เพียงพอ!

  1. DS3231 และ BMP280 ใช้ I2C Bus (SDA/SCL) เดียวกันโดยธรรมชาติ Arduino สื่อสารกับทั้งสองตัวแยกกันผ่าน Hex Address ที่แตกต่างกัน (0x68 สำหรับ RTC, 0x76 สำหรับ BMP)
  2. DHT22 ต้องการ Digital Pin เพียง 1 ขาโดยเฉพาะสำหรับการส่งสัญญาณแบบ 1-Wire proprietary pulse sequence ของมัน
  3. TFT Display ต้องการ Hardware SPI Bus ความเร็วสูงและขนาดใหญ่ (MOSI, MISO, SCK) อย่างแม่นยำ
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <RTClib.h>
#include <DHT.h>

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
RTC_DS3231 rtc;
DHT dht(DHTPIN, DHT22);

void loop() {
  DateTime now = rtc.now(); // Pull Time!
  float temp = dht.readTemperature(); // Pull Atmosphere!
  
  // Wipe just the numeric regions to prevent catastrophic screen flicker natively!
  tft.fillRect(100, 50, 80, 20, ILI9341_BLACK); 
  
  tft.setCursor(10, 50);
  tft.setTextColor(ILI9341_GREEN);
  tft.print("TEMPR: ");
  
  tft.setCursor(100, 50);
  tft.setTextColor(ILI9341_WHITE);
  tft.print(temp); tft.print(" C");
  
  delay(2000); 
}

ตรรกะการขจัดภาพกระพริบของ GUI (fillRect)

ผู้เริ่มต้นมักจะทำให้ LCD เสียหายโดยการเรียก tft.fillScreen(BLACK) ในทุกๆ ลูปโดยไม่ได้ตั้งใจ!

  • การกะพริบหน้าจอทั้งหมดให้เป็นสีดำทำให้เกิด "ภาพกระพริบ" ที่น่ากลัว
  • สถาปัตยกรรมระดับมืออาชีพต้องการการวาดใหม่แบบไดนามิกที่สวยงามและสมบูรณ์แบบ เฉพาะพิกเซลที่เปลี่ยนแปลงเท่านั้น!
  • คุณวาดข้อความคงที่ ("TEMP:") อย่างสวยงามและชาญฉลาดเพียงครั้งเดียว! จากนั้น ใช้ tft.fillRect() อย่างชาญฉลาดและเชี่ยวชาญเพื่อวาดกล่องสีดำที่สะอาดตา เป็นธรรมชาติ และเข้าใจง่ายทับตัวเลขเฉพาะอย่างสมบูรณ์แบบ! จากนั้นจึงเขียนตัวเลขใหม่ที่สมบูรณ์และชัดเจนลงไปอย่างเชี่ยวชาญ

ฐานฮาร์ดแวร์ Telemetry แบบรวม

  • Arduino Mega 2560 (บอร์ด Mega มีหน่วยความจำขนาดใหญ่ที่จำเป็นสำหรับ TFT display อย่างเหมาะสม!)
  • ILI9341 SPI TFT Color LCD Screen
  • DS3231 I2C RTC Module
  • DHT22 Temperature & Humidity Sensor
  • BMP280 I2C Barometric Pressure Sensor

ข้อมูล Frontmatter ดั้งเดิม

title: "All in one clock 1.0"
description: "Assemble an ultimate temporal and atmospheric station integrating the DS3231 RTC, DHT22 humidity matrix, and BMP280 barometer flawlessly onto a unified TFT LCD display."
category: "Home Automation"
difficulty: "Beginner"