Ang DS1307 Real-Time Clock (RTC) ay isang module na malawakang ginagamit para sa pagsubaybay ng oras sa mga proyekto sa Arduino. Pinapanatili nito ang tamang oras kahit na patay ang Arduino, salamat sa onboard na baterya nito. Sa tutorial na ito, matututuhan mo kung paano ikonekta at i-program ang DS1307 RTC module sa Arduino upang ipakita at i-update ang oras.
Mga Kakailanganin
- Arduino Board (hal. Uno, Mega, Nano)
- DS1307 RTC Module
- Breadboard at Jumper Wires
- Isang computer na may naka-install na Arduino IDE
- Mga Library: RTClib
Hakbang 1: Pag-wire sa DS1307 RTC Module
Ang DS1307 RTC ay nakikipag-ugnayan sa Arduino sa pamamagitan ng I2C protocol.
Mga Koneksyon
| RTC Pin | Arduino Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
Paalala: Kung gumagamit ng Arduino board na may nakalaang SDA at SCL pins (hal. Mega), ikonekta ang SDA/SCL pins ng RTC sa mga ito sa halip.
Hakbang 2: Pag-install ng Kinakailangang Library
Para gumana ang DS1307 RTC, kakailanganin mo ang RTClib library.
Mga Hakbang para I-install ang RTClib
- Buksan ang Arduino IDE.
- Pumunta sa Sketch > Include Library > Manage Libraries.
- I-search ang "RTClib" sa Library Manager.
- I-click ang Install.
Hakbang 3: Pag-upload ng Halimbawang Code
Narito ang isang halimbawang sketch para ipakita ang kasalukuyang petsa at oras mula sa DS1307 module:
Halimbawang Code
#include
#include
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
// I-initialize ang RTC
if (!rtc.begin()) {
Serial.println("Hindi mahanap ang RTC");
while (1);
}
// Suriin kung tumatakbo ang RTC
if (!rtc.isrunning()) {
Serial.println("HINDI tumatakbo ang RTC! Itinatakda ang oras...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
// Ipakita ang oras
Serial.print(now.hour());
Serial.print(":");
if (now.minute() < 10) {
Serial.print("0");
}
Serial.print(now.minute());
Serial.print(":");
if (now.second() < 10) {
Serial.print("0");
}
Serial.println(now.second());
// Ipakita ang petsa
Serial.print(now.day());
Serial.print("/");
Serial.print(now.month());
Serial.print("/");
Serial.println(now.year());
delay(1000); // Mag-update bawat segundo
}
Hakbang 4: Pagtatakda ng Oras
Kung hindi tumatakbo ang RTC o kailangang i-update ang oras, maaari mong gamitin ang sumusunod na linya sa setup() function:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
-
F(__DATE__)atF(__TIME__)ay mga macro na nagtatakda ng petsa at oras mula sa iyong computer kapag nag-upload ka ng sketch.
Para magtakda ng partikular na oras nang manu-mano, gamitin ang:
rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS
Hakbang 5: Paggamit ng Data ng RTC sa Iyong mga Proyekto
Ang DS1307 ay maaaring magbigay ng data ng oras para sa iba't ibang aplikasyon, gaya ng:
- Data Logging: Paglalagay ng timestamp sa mga reading ng sensor o mga kaganapan.
- Mga Alarm at Timer: Mag-trigger ng mga aksyon batay sa partikular na oras.
- Mga Orasan: Gumawa ng digital o analog na mga orasan na may display.
Halimbawa: Pag-trigger ng Aksyon sa Partikular na Oras
void loop() {
DateTime now = rtc.now();
// Suriin kung alas-8:00 ng umaga na
if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
Serial.println("Alas-8:00 na ng umaga!");
}
delay(1000);
}
Troubleshooting
-
Hindi Mahanap ang RTC:
- I-verify ang mga koneksyon ng SDA at SCL.
- Siguraduhing tama ang pagkakabit ng baterya.
-
Maling Oras:
- Gamitin ang
rtc.adjust()para i-reset ang oras. - Suriin kung ubos na o wala ang baterya ng RTC.
- Gamitin ang
-
Hindi Consistent na Data:
- Siguraduhing stable ang power supply sa Arduino at RTC module.
Mga Aplikasyon ng DS1307 RTC
- Real-time na mga orasan at alarm
- Mga sistemang automation na nakabase sa oras
- Data logging na may mga timestamp
- Mga sistema ng paalala
Konklusyon
Ang DS1307 RTC module ay isang mahusay na tool para sa pagdaragdag ng kakayahang mag-orasan sa iyong mga proyekto sa Arduino. Sa pagsunod sa gabay na ito, maaari mong i-set up ang RTC, ipakita ang oras at petsa, at isama ito sa iba't ibang aplikasyon. Mag-eksperimento sa pagsasama ng DS1307 sa mga display o sensor para makabuo ng mas dynamic na mga proyekto!






1 Komento
Beim Verwenden des Befehls rtc.adjust(DateTime(F(DATE), F(TIME))); wird der sketch zwar fehlerlos kompiliert und hochgeladen, beim Ausführen des Programms stürzt das Programm aber ab, was auch zur Folge hat, dass die USB-Verbindung zum PC crasht und ein Hochladen von sketchs nicht mehr möglich ist. Abhilfe schafft dann nur ein Trick?. Nach einem Doppelclick auf die Reset-Taste des Boards funktioniert die USB-Verbindung wieder.