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

การจัดโครงสร้างระบบนิเวศของเซ็นเซอร์ SPI / I2C
คุณไม่สามารถต่อสายเซ็นเซอร์ 3 ตัวที่แตกต่างกันโดยใช้ UART port 3 พอร์ตแยกกันได้ คุณจะไม่มีขา (pin) เพียงพอ!
- DS3231 และ BMP280 ใช้
I2C Bus (SDA/SCL)เดียวกันโดยธรรมชาติ Arduino สื่อสารกับทั้งสองตัวแยกกันผ่าน Hex Address ที่แตกต่างกัน (0x68สำหรับ RTC,0x76สำหรับ BMP) - DHT22 ต้องการ Digital Pin เพียง 1 ขาโดยเฉพาะสำหรับการส่งสัญญาณแบบ 1-Wire proprietary pulse sequence ของมัน
- 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