ΠΠΎΠ΄ΡΠ»ΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (RTC) Π½Π° Π±Π°Π·Π΅ ΡΠΈΠΏΠΎΠ² DS3231 ΠΈΠ»ΠΈ DS1307 β Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Arduino, Π³Π΄Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ. ΠΡΠ΄Ρ ΡΠΎ ΡΠ°ΡΡ Ρ Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠΎΠΌ, ΡΠΈΡΡΠ΅ΠΌΠ° Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ½ΡΠΉ Π΄ΠΎΠΌ Ρ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ β RTC-ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ Ρ ΠΎΠ΄ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΈΡΠ°Π½ΠΈΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π±Π°ΡΠ°ΡΠ΅Π΅.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΠΎΠ²ΠΈΡΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ: Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ, ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π²ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ β ΠΎΡ Π²ΡΠ±ΠΎΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π°, β Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΠΊΡΠΎΠ΅ΠΌ ΡΠ΅ΠΊΡΠ΅Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ DS3231 Π΄ΠΎ Β±1 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π² ΠΌΠ΅ΡΡΡ (Π΄Π°, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!).
ΠΡΠ±ΠΎΡ RTC-ΠΌΠΎΠ΄ΡΠ»Ρ: DS3231 vs DS1307 β ΡΡΠΎ Π»ΡΡΡΠ΅ Π΄Π»Ρ Arduino?
ΠΠ° ΡΡΠ½ΠΊΠ΅ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ: Π½Π° Π±Π°Π·Π΅ DS3231 (ΡΠΎΡΠ½ΡΠΉ, Ρ ΡΠ΅ΡΠΌΠΎΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ) ΠΈ DS1307 (Π±ΡΠ΄ΠΆΠ΅ΡΠ½ΡΠΉ, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ). ΠΠΎΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ:
- π Π’ΠΎΡΠ½ΠΎΡΡΡ: DS3231 ΡΠ΅ΡΡΠ΅Ρ Β±2 ΠΌΠΈΠ½ΡΡΡ Π² Π³ΠΎΠ΄, DS1307 β Π΄ΠΎ Β±2 ΠΌΠΈΠ½ΡΡ Π² ΠΌΠ΅ΡΡΡ (ΡΠ°Π·Π½ΠΈΡΠ° Π² 12 ΡΠ°Π·!).
- π‘οΈ Π’Π΅ΡΠΌΠΎΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΡ: ΡΠΎΠ»ΡΠΊΠΎ Ρ DS3231 β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅Ρ Ρ ΠΎΠ΄ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ.
- π° Π¦Π΅Π½Π°: DS1307 Π΄Π΅ΡΠ΅Π²Π»Π΅ Π² 1.5β2 ΡΠ°Π·Π°, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΡΡΠΈ.
- π ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ: ΠΎΠ±Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ
I2C, Π½ΠΎ DS3231 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΆΠ΅SPI(ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ Arduino).
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½ DS3231 β Π΅Π³ΠΎ ΡΠΎΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ°Π²Π΄ΡΠ²Π°Π΅Ρ ΡΠ°Π·Π½ΠΈΡΡ Π² ΡΠ΅Π½Π΅. DS1307 ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ Π·Π°Π΄Π°Ρ, Π³Π΄Π΅ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ Π² 5β10 ΠΌΠΈΠ½ΡΡ Π·Π° ΠΌΠ΅ΡΡΡ Π½Π΅ΠΊΡΠΈΡΠΈΡΠ½Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅ Π±Π΅Π· Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ).
- DS3231
- DS1307
- ΠΡΡΠ³ΠΎΠΉ (Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ )
- ΠΡΡ Π½Π΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ RTC-ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊ Arduino Uno/Nano Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ:
- π Arduino Uno, Nano ΠΈΠ»ΠΈ Mega (Π»ΡΠ±Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ
I2C). - β±οΈ ΠΠΎΠ΄ΡΠ»Ρ DS3231 ΠΈΠ»ΠΈ DS1307 (Ρ Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΠΎΠΉ
CR2032). - π ΠΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ
Dupont(male-to-female ΠΈΠ»ΠΈ male-to-male, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ). - π» ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
RTClib(ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π·Arduino IDE). - π§ ΠΡΠ»ΡΡΠΈΠΌΠ΅ΡΡ (Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Π±Π°ΡΠ°ΡΠ΅ΠΈ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΈΠ²Π°Π΅ΡΡΡ).
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ: Π΄Π΅ΡΡΠ²ΡΠ΅ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ DS3231 ΡΠ°ΡΡΠΎ ΠΈΠ΄ΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ DS1307 Π²Π½ΡΡΡΠΈ! ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΎΠΌ Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ).
ΠΠ΅ΡΠ΅Π΄ ΠΏΠΎΠΊΡΠΏΠΊΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΎΡΠ·ΡΠ²Ρ ΠΎ ΠΏΡΠΎΠ΄Π°Π²ΡΠ΅ β ΠΌΠΎΠ΄ΡΠ»ΠΈ Ρ AliExpress ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ Ρ ΡΠ°Π·ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΠΎΠΉ. ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Ρ Π½Π° Π½ΠΎΠ²ΡΡ CR2032 ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
Π‘Ρ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ RTC ΠΊ Arduino: ΠΏΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΈΠ½Π΅ I2C, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠ΅Π³ΠΎ 2 ΠΏΡΠΎΠ²ΠΎΠ΄Π°: SDA (Π΄Π°Π½Π½ΡΠ΅) ΠΈ SCL (ΡΠ°ΠΊΡΡ). ΠΠ° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π½Π΅Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡ ΡΡ
Π΅ΠΌΡ:
| ΠΠΎΠ΄ΡΠ»Ρ RTC | Arduino Uno/Nano | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|
VCC |
5V |
ΠΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ (3.3Vβ5V) |
GND |
GND |
ΠΠ΅ΠΌΠ»Ρ |
SDA |
A4 |
ΠΠΈΠ½ΠΈΡ Π΄Π°Π½Π½ΡΡ I2C |
SCL |
A5 |
ΠΠΈΠ½ΠΈΡ ΡΠ°ΠΊΡΠΎΠ² I2C |
ΠΠ»Ρ Arduino Mega ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ SDA (20) ΠΈ SCL (21). ΠΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅:
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ SDA/SCL (Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ°Π½Ρ Π»ΠΈ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ)|
ΠΠ°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π±Π°ΡΠ°ΡΠ΅ΠΈ (Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ β₯ 2.8V)|
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΈΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ Π½Π° ΠΏΠ»Π°ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ|
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° RTClib-->
ΠΠ°ΠΆΠ½ΠΎ: Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ DS3231 ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ 32K (ΡΠΈΠ³Π½Π°Π» 32.768 ΠΊΠΡ) β Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ°ΡΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΊΠ΅ΡΡ Π΄Π»Ρ RTC
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ RTC-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° RTClib ΠΎΡ Adafruit. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Ρ ΡΠ΅ΡΠ΅Π· ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Π‘ΠΊΠ΅ΡΡ β ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ β Π£ΠΏΡΠ°Π²Π»ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ) ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ Ρ GitHub.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Serial Monitor:
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc; // ΠΠ»Ρ DS1307 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ RTC_DS1307
void setup() {
Serial.begin(9600);
if (!rtc.begin()) {
Serial.println("RTC Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!");
while (1);
}
// Π Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop() {
DateTime now = rtc.now();
Serial.print(now.year()); Serial.print('/');
Serial.print(now.month()); Serial.print('/');
Serial.print(now.day()); Serial.print(' ');
Serial.print(now.hour()); Serial.print(':');
Serial.print(now.minute()); Serial.print(':');
Serial.println(now.second());
delay(1000);
}
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΡΡΠΎΠΊΡ rtc.adjust(), Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠΊΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Π΅Ρ. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ ΡΠ±ΡΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Arduino.
ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΡΠΈΠΊΠ»Π΅ loop() β ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌΡ ΡΠ±ΡΠΎΡΡ ΡΠ΅ΠΊΡΠ½Π΄ ΠΈ ΠΌΠΈΠ½ΡΡ, Π΄Π΅Π»Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ RTC-ΠΌΠΎΠ΄ΡΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠΎΡ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ:
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ DS3231 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ 5 ΡΠ΅ΠΊΡΠ½Π΄ Π² ΡΡΡΠΊΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Ρ Π²Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠ° ΠΏΠΎΠ΄ DS1307. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅ΡΠΈΠ² ΡΠΎΠΊ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ: ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ DS3231 ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ~150 ΠΌΠΊΠ, ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠ° β Π΄ΠΎ 1 ΠΌΠ.
- β ΠΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ (
RTC not found):- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
SDA/SCL(ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ). - Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΠ° (Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ β₯ 2.8V).
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΠ΅Ρ Π»ΠΈ Π°Π΄ΡΠ΅Ρ
0x68Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ I2C-ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΠ°Π½Π΅Ρ I2C).
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
- β ΠΡΠ΅ΠΌΡ ΡΠ±ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ:
- ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΡ
CR2032β Π΅Ρ ΡΠΌΠΊΠΎΡΡΠΈ Ρ Π²Π°ΡΠ°Π΅Ρ Π½Π° 2β5 Π»Π΅Ρ, Π½ΠΎ Π΄Π΅ΡΡΠ²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ°ΡΡΠΎ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΠ°Π·ΡΡΠΆΠ΅Π½Π½ΡΠΌΠΈ. - ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ Π±Π°ΡΠ°ΡΠ΅ΠΈ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π΅ (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΎΡΡ ΠΎΠ΄ΡΡ).
- ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΡ
- β ΠΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π±ΠΎΠ»Π΅Π΅ 1 ΠΌΠΈΠ½ΡΡΡ Π² Π½Π΅Π΄Π΅Π»Ρ:
- ΠΠ»Ρ DS1307: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
DS1307RTCΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΠ΅ΠΉ Ρ ΠΎΠ΄Π°. - ΠΠ»Ρ DS3231: ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ (ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΠ΅Π²Π΅ >50Β°C ΡΠΎΡΠ½ΠΎΡΡΡ ΠΏΠ°Π΄Π°Π΅Ρ).
- ΠΠ»Ρ DS1307: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΡΠ΅ΡΠ΅Π½Π°, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅ΡΡΠ° ΡΠΎΡΠ½ΠΎΡΡΠΈ (Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΈ ΠΎΡΡΠ°Π²ΡΡΠ΅ Π½Π° 24 ΡΠ°ΡΠ°):
#include <RTClib.h>
RTC_DS3231 rtc;
void setup() {
Serial.begin(9600);
rtc.begin();
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop() {
DateTime now = rtc.now();
Serial.print("Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°: "); Serial.print(rtc.getTemperature()); Serial.println("Β°C");
Serial.print("ΠΡΠ΅ΠΌΡ: ");
Serial.print(now.hour()); Serial.print(':'); Serial.print(now.minute()); Serial.print(':'); Serial.println(now.second());
delay(60000); // ΠΡΠ²ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΌΠΈΠ½ΡΡΡ
}
ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ: Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠΈ, ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡ Ρ ΠΎΠ΄Π°, Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
ΠΠΎΠ΄ΡΠ»Ρ DS3231 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²:
- π ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠΈ: ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΡ Arduino (ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ½Π΅ΡΠ³ΠΈΡ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
). ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
rtc.setAlarm1(DateTime(2023, 12, 25, 8, 0, 0), DS3231_A1_Date); - βοΈ ΠΠΎΡΡΠ΅ΠΊΡΠΈΡ Ρ
ΠΎΠ΄Π°: Π΄Π»Ρ DS1307 ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ ΠΊΠ²Π°ΡΡΠ°, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡ 20β100 ΠΏΠ€ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ
XiΠΈXo. - π ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ: Π²ΡΠ²ΠΎΠ΄
SQW/INTΠ½Π° DS3231 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π° 1 ΠΡ, 1 ΠΊΠΡ ΠΈΠ»ΠΈ ΠΏΠΎ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠ°.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² setup():
rtc.clearAlarm1(); // Π‘Π±ΡΠΎΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
rtc.setAlarm1(DateTime(now + TimeSpan(0, 1, 0, 0)), DS3231_A1_Hour); // ΠΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊ ΡΠ΅ΡΠ΅Π· 1 ΡΠ°Ρ
rtc.alarmInterrupt1(true); // Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π½Π° DS3231 Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠ»Π°Π³ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅, ΠΈΠ½Π°ΡΠ΅ Arduino Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΈΠ³Π½Π°Π»:if (rtc.alarmFired(1)) {rtc.clearAlarm1();
// ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠ°
}
ΠΠ°ΠΊ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ RTC Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅?
ΠΠ»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡΠΈ (Π΄ΠΎ 10 Π»Π΅Ρ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ CR2032) ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ DS3231:
1. ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π²ΡΡ
ΠΎΠ΄ SQW (Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅): rtc.writeSqwPinMode(DS3231_OFF);
2. Π£ΠΌΠ΅Π½ΡΡΠΈΡΠ΅ ΡΠ°ΡΡΠΎΡΡ I2C Π΄ΠΎ 100 ΠΊΠΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 400 ΠΊΠΡ).
3. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΠΆΠΈΠΌ ΡΠ½Π° Arduino Ρ ΠΏΡΠΎΠ±ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ RTC.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ RTC-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ
ΠΠΎΡ 3 ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π³Π΄Π΅ RTC-ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ:
- π ΠΠ°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ DHT22 Π½Π° SD-ΠΊΠ°ΡΡΡ Ρ ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°.
- β° Π£ΠΌΠ½ΡΠΉ Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊ: ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»Π΅ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ ΠΌΡΠ·ΡΠΊΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
TimeAlarms. - π Π’ΡΠ΅ΠΊΠ΅Ρ ΠΏΠ°ΡΠΊΠΎΠ²ΠΊΠΈ: ΡΠΈΠΊΡΠ°ΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΠ±ΡΡΠΈΡ/ΡΠ±ΡΡΠΈΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π°ΡΡΠΈΠΊΠ° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ HC-SR501.
ΠΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π½Π° SD-ΠΊΠ°ΡΡΡ:
#include <SPI.h>
#include <SD.h>
#include <RTClib.h>
RTC_DS3231 rtc;
File dataFile;
void setup() {
SD.begin(10); // CS Π½Π° ΠΏΠΈΠ½Π΅ 10
rtc.begin();
}
void loop() {
DateTime now = rtc.now();
dataFile = SD.open("log.csv", FILE_WRITE);
dataFile.print(now.year()); dataFile.print("-");
dataFile.print(now.month()); dataFile.print("-");
dataFile.println(now.day());
dataFile.close();
delay(3600000); // ΠΠ°ΠΏΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Ρ
}
ΠΠ»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΌΠ΅ΡΡΠ° Π½Π° SD-ΠΊΠ°ΡΡΠ΅ Ρ
ΡΠ°Π½ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ UNIX timestamp:
uint32_t timestamp = now.unixtime();
dataFile.println(timestamp);
FAQ: ΠΎΡΠ²Π΅ΡΡ Π½Π° ΡΠ°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ RTC ΠΊ Arduino ΡΠ΅ΡΠ΅Π· Software I2C?
ΠΠ°, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. Software I2C (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° SoftI2CMaster) ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ±ΠΎΡΠΌ ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΉ I2C (ΠΏΠΈΠ½Ρ A4/A5 Π½Π° Uno/Nano).
ΠΠ°ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ RTC Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΠΌ (NTP)?
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½ ΠΊ ΡΠ΅ΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ NTPClient Π΄Π»Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ:
#include <NTPClient.h>
#include <WiFiUdp.h>
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");
void syncRTC() {
timeClient.update();
rtc.adjust(DateTime(timeClient.getEpochTime()));
}
ΠΡΠ·ΡΠ²Π°ΠΉΡΠ΅ syncRTC() ΡΠ°Π· Π² ΡΡΡΠΊΠΈ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Π΄ΡΠ΅ΠΉΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ DS3231 Π³ΡΠ΅Π΅ΡΡΡ?
ΠΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° DS3231 β Π΄ΠΎ 40Β°C. ΠΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°Π³ΡΠ΅Π²Π°Π΅ΡΡΡ ΡΠΈΠ»ΡΠ½Π΅Π΅:
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°ΡΠ΅ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ ΠΊΠ²Π°ΡΡΠ°).
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 5.5V.
- ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π·Π°Π²ΠΎΠ΄ΡΠΊΠΎΠΉ Π±ΡΠ°ΠΊ.
ΠΠ΅ΡΠ΅Π³ΡΠ΅Π² Π²Π΅Π΄ΡΡ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ!
ΠΠ°ΠΊ ΡΠ±ΡΠΎΡΠΈΡΡ RTC ΠΊ Π·Π°Π²ΠΎΠ΄ΡΠΊΠΈΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ?
ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠ±ΡΠΎΡΠ° DS3231 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΠ΄:
rtc.writeSqwPinMode(DS3231_OFF);
rtc.disable32K();
rtc.clearAlarm1();
rtc.clearAlarm2();
ΠΠ»Ρ DS1307 Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° 10 ΡΠ΅ΠΊΡΠ½Π΄ (Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΡ Π½Π΅ Π²ΡΠ½ΠΈΠΌΠ°ΠΉΡΠ΅!).
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ RTC Π±Π΅Π· Arduino?
ΠΠ°! ΠΠΎΠ΄ΡΠ»Ρ DS3231 Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ ΠΏΠΈΡΠ°Π½ΠΈΡ 3.3β5V ΠΈ Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ°ΡΡ Π½Π° TM1637, Π³Π΄Π΅ Arduino Π½ΡΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π΄Π°Π»ΡΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.