วันอาทิตย์ที่ 17 พฤศจิกายน พ.ศ. 2562

Module:RTC

Module Real Time Clock

    Real Time Clock(RTC) อุปกรณ์ไฟฟ้าทุกตัวถ้าจะตัองการใช้ค่าเวลา ต้องมีนาฬิกาอยู่ใน ถ้าถอดปลักออกอุปกรณ์หยุดทำงาน แต่นาฬิกาต้องเดินต่อไป ดังนั้นต้องมีแบตเตอรี่เป็นไฟเลี้ยง(เฉพาะนาฬิกา)  เมื่อเปิดเครื่องขึ้นมาใหม่ก็ยังเห็นเวลาที่ถูกต้อง คอมพิวเตอร์และโน้ตบุ๊กที่ใช้่เป็นเวลานานหลายปีเวลาจะไม่ถูกต้อง ก็ต้องเปลี่ยนแบ็ตเตอรี่ซึ่งจะเป็นถ่านกระดุม สำหรับไมโครคอนโทรลเลอร์ก็เช่นกัน ถ้าต่ออินเตอร์เน็ตตลอดเวลาอาจใช้เวลาจากเน็ตเวิร์กก็ได้ แต่ถ้าไม่ได้ต่อเน็ตเวิร์กอาจจำเป็นต้องใช้ โมดูล RTC มีหลายรุ่นให้เลือกใช้งาน

โมดูล DS3231 for Pi

ใช้การเชื่อมต่อแบบ I2C เป็นรุ่นสำหรับ Raspberry Pi แต่ก็ใช้กับบอร์ดรุ่นอื่นๆที่สนับสนุน I2C ได้ แค่ต่อขาให้ถูก
RTC สำหรับ Raspberry PI
ขาในภาพต้องส่งดูสัญลักษณ์บนบอร์ด ไล่จากซ้ายไปขวา
+  ต่อไฟ 3.3โวลต์
D SDA (ใช้ขา 21)
C SCL (ใช้ขา 22)
NC ไม่ได้ใช้
- ต่อ Ground
ให้ติดตั้ง RTClib ด้วย Library Manager เลือกที่เป็น by Adafruit จะมี Library เพิ่มเติมให้ตอบตกลงไปโปรแกรมจะอ่านค่าเวลาจาก RTC ถ้าไม่ได้ตั้งเวลาไว้เพราะเอาแบตเตอรี่ออก ก็จะตั้งเวลาใหม่โดยใช้ วันเวลาตอนคอมไพล์โค้ด RTC รุ่นนี้จะตั้งเวลามาเรียบร้อยแล้ว แต่อาจจะไม่ตรงนักต้องตั้งใหม่

 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
#include <Wire.h> 
#include "RTClib.h"  // by Adafruit 
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
  Serial.begin(9600);
  delay(3000); // wait for console opening
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }
  if (rtc.lostPower()) { //เวลาที่เก็บใน RTC ใช้ไม่ได้ต้องตั้งใหม่
    Serial.println("RTC lost power, lets set the time!");
    // January 21, 2014 at 3am ให้ใช้ rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //เซ็ตวันและเวลา ให้เป็นเวลาของโค้ด
  }
}
void loop () {
    DateTime now = rtc.now();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime()); // UNIX time เริ่มจาาก  1/1/1970
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // คำนวณเวลา ไปข้างหน้า 7 วันกับ 30 วินาที 
    DateTime future (now + TimeSpan(7,12,30,6));   
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    Serial.println();
    delay(3000);
}


ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Module:Control:IFR 520

MOSFET Module  สวิตซ์ปิดเปิดไฟเหมือน Relay แต่เป็น Solid state (ไม่มีส่วนที่เคลื่อนไหว) มันทำงานที่ความถี่สูงได้เหมาะกับเอาไปใช้งาน PWM ...