นาฬิกาดิจิตอล Arduino โดยใช้โมดูล RTC

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะสร้างนาฬิกาดิจิทัลโดยใช้โมดูล RTC หรือ Real Time Clock เราจะเข้าใจว่าโมดูล“ RTC” คืออะไรวิธีการเชื่อมต่อกับ Arduino และทำหน้าที่อะไร

โดย:



โมดูล RTC เป็นวงจรที่ติดตามเวลาปัจจุบันได้อย่างแม่นยำ ทำหน้าที่สองอย่างคือสื่อสารกับไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์เพื่อให้เวลาปัจจุบันและทำหน้าที่เป็นวงจรสำรองสำหรับรักษาเวลาในกรณีที่ไฟฟ้าดับเนื่องจากมีระบบสำรองแบตเตอรี่ในตัว

เราสามารถค้นหา RTC ได้ในอุปกรณ์อิเล็กทรอนิกส์ใด ๆ ที่เวลาเป็นหน้าที่สำคัญของแกดเจ็ต



ตัวอย่างเช่นคอมพิวเตอร์หรือแล็ปท็อปของเราจะรักษาเวลาแม้จะเสียบปลั๊กหรือถอดแบตเตอรี่ออกแล้วก็ตาม บนเมนบอร์ดของคอมพิวเตอร์ทุกเครื่องเราสามารถพบแบตเตอรี่ CMOS ซึ่งให้พลังงานแก่วงจร RTC

วงจรที่คล้ายกันที่เราจะใช้ในโครงการนี้

โมดูล RTC เป็นอุปกรณ์ราคาไม่แพงซึ่งสามารถพบได้ในไซต์อีคอมเมิร์ซและร้านค้าโครงการอิเล็กทรอนิกส์ในพื้นที่ของคุณ

ภาพประกอบของโมดูล RTC ทั่วไป DS1307:

โมดูล RTC ส่วนใหญ่มาพร้อมกับแบตเตอรี่ (CR2032) ในขณะที่ซื้อ มีขนาดและรุ่นที่แตกต่างกันภาพประกอบด้านบนอาจไม่เหมือนกันสำหรับคุณ แต่ตรวจสอบให้แน่ใจว่าหมายเลขรุ่นคือ DS1307 โค้ดที่เขียนในโพสต์นี้ใช้ได้กับ DS1307 เท่านั้น

ตอนนี้คุณรู้บางอย่างเกี่ยวกับ RTC แล้ว ตอนนี้เรามาดูการออกแบบนาฬิกาดิจิทัลกัน ก่อนดำเนินโครงการนี้คุณต้องดาวน์โหลดไลบรารีจากลิงค์ต่อไปนี้และติดตั้งบน IDE ของคุณ:

• DS1307RTC.h

ลิงก์: github.com/PaulStoffregen/DS1307RTC

• TimeLib.h

ลิงก์: github.com/PaulStoffregen/Time

ไลบรารีอีกสองแห่งจะได้รับการติดตั้งไว้ล่วงหน้าใน Arduino IDE หากคุณใช้เวอร์ชันล่าสุด

• LiquidCrystal.h

•ลวด h

วงจร:

การเชื่อมต่อวงจรระหว่าง arduino และจอแสดงผล LCD เป็นมาตรฐานซึ่งเราสามารถค้นหาการเชื่อมต่อที่คล้ายกันในโครงการที่ใช้ LCD อื่น ๆ ส่วนประกอบเพิ่มเติมเพียงอย่างเดียวคือ RTC

เพื่อลดความแออัดของสายในระหว่างต้นแบบคุณสามารถใส่ RTC เข้ากับพินอะนาล็อกโดยตรงของ arduino บัดกรี SCl, SDA, Vcc และ GND ด้วยหมุดส่วนหัวตัวผู้แล้วใส่หมุด A2 ถึง A5 ตามที่แสดงในต้นแบบ

ต้นแบบของผู้แต่ง:

วิธีใส่ RTC บน Arduino อย่างถูกต้อง:

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

วิธีตั้งเวลา:

เมื่อตั้งโปรแกรมโมดูล RTC แล้วจะรักษาเวลาแม้จะถูกลบออกจาก arduino แบตเตอรี่ควรมีอายุการใช้งานอย่างน้อยสองถึงสามปี

ไม่มีปุ่มปรับเวลาโปรแกรมต่อไปนี้จะตั้งเวลาเป็น RTC เวลาจะซิงโครไนซ์โดยอัตโนมัติกับเวลาของคอมพิวเตอร์ของคุณในขณะที่รวบรวมรหัสดังนั้นตรวจสอบให้แน่ใจว่าคอมพิวเตอร์ของคุณตั้งค่าเวลาที่ถูกต้องก่อนที่จะอัปโหลดโปรแกรม
อัปโหลดรหัส“ SetTime” นี้เพื่อตั้งเวลาที่เสียบ RTC:

#include  #include  #include  int P=A3 //Assign power pins for RTC int N=A2 const char *monthName[12] = { 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' } tmElements_t tm void setup() { pinMode(P,OUTPUT) pinMode(N,OUTPUT) digitalWrite(P,HIGH) digitalWrite(N,LOW) bool parse=false bool config=false // get the date and time the compiler was run if (getDate(__DATE__) && getTime(__TIME__)) { parse = true // and configure the RTC with this info if (RTC.write(tm)) { config = true } } Serial.begin(9600) while (!Serial)  // wait for Arduino Serial Monitor delay(200) if (parse && config) { Serial.print('DS1307 configured Time=') Serial.print(__TIME__) Serial.print(', Date=') Serial.println(__DATE__) } else if (parse) { Serial.println('DS1307 Communication Error :-{') Serial.println('Please check your circuitry') } else { Serial.print('Could not parse info from the compiler, Time='') Serial.print(__TIME__) Serial.print('', Date='') Serial.print(__DATE__) Serial.println(''') } } void loop() { } bool getTime(const char *str) { int Hour, Min, Sec if (sscanf(str, '%d:%d:%d', &Hour, &Min, &Sec) != 3) return false tm.Hour = Hour tm.Minute = Min tm.Second = Sec return true } bool getDate(const char *str) { char Month[12] int Day, Year uint8_t monthIndex if (sscanf(str, '%s %d %d', Month, &Day, &Year) != 3) return false for (monthIndex = 0 monthIndex < 12 monthIndex++) { if (strcmp(Month, monthName[monthIndex]) == 0) break } if (monthIndex >= 12) return false tm.Day = Day tm.Month = monthIndex + 1 tm.Year = CalendarYrToTm(Year) return true } 

เมื่ออัปโหลดรหัสนี้แล้วให้เปิดจอภาพแบบอนุกรมและข้อความแสดงความสำเร็จจะปรากฏขึ้นแจ้งว่าได้ตั้งเวลาแล้ว

นี่หมายความว่าการเชื่อมต่อระหว่าง RTC และ arduino ของคุณถูกต้องและตั้งเวลาแล้ว

ตอนนี้อัปโหลดรหัสต่อไปนี้เพื่อแสดงเวลาใน LCD

//------------Program Developed by R.Girish-------// #include  #include  #include  #include  LiquidCrystal lcd(12, 11, 5, 4, 3, 2) int P=A3 int N=A2 void setup() { lcd.begin(16,2) pinMode(P,OUTPUT) pinMode(N,OUTPUT) digitalWrite(P,HIGH) digitalWrite(N,LOW) } void loop() { tmElements_t tm lcd.clear() if (RTC.read(tm)) { if(tm.Hour>=12) { lcd.setCursor(14,0) lcd.print('PM') } if(tm.Hour<12) { lcd.setCursor(14,0) lcd.print('AM') } lcd.setCursor(0,0) lcd.print('TIME:') if(tm.Hour>12) //24Hrs to 12 Hrs conversion// { if(tm.Hour==13) lcd.print('01') if(tm.Hour==14) lcd.print('02') if(tm.Hour==15) lcd.print('03') if(tm.Hour==16) lcd.print('04') if(tm.Hour==17) lcd.print('05') if(tm.Hour==18) lcd.print('06') if(tm.Hour==19) lcd.print('07') if(tm.Hour==20) lcd.print('08') if(tm.Hour==21) lcd.print('09') if(tm.Hour==22) lcd.print('10') if(tm.Hour==23) lcd.print('11') } else { lcd.print(tm.Hour) } lcd.print(':') lcd.print(tm.Minute) lcd.print(':') lcd.print(tm.Second) lcd.setCursor(0,1) lcd.print('DATE:') lcd.print(tm.Day) lcd.print('/') lcd.print(tm.Month) lcd.print('/') lcd.print(tmYearToCalendar(tm.Year)) } else { if (RTC.chipPresent()) { lcd.setCursor(0,0) lcd.print('RTC stopped!!!') lcd.setCursor(0,1) lcd.print('Run SetTime code') } else { lcd.clear() lcd.setCursor(0,0) lcd.print('Read error!') lcd.setCursor(0,1) lcd.print('Check circuitry!') } delay(500) } delay(500) } //------------Program Developed by R.Girish-------// 

เมื่อเสร็จแล้วคุณจะเห็นเวลาและวันที่แสดงบน LCD และทำงาน

บันทึก: โค้ด“ SetTime” ได้รับการแก้ไขจากโค้ดตัวอย่างของ DS1307RTC เพื่อเพิ่มประสิทธิภาพการเชื่อมต่อสายสำหรับโมดูล RTC การอัปโหลดโค้ดต้นฉบับจะไม่กำหนดเวลา

นาฬิกาปลุกดิจิตอลโดยใช้ Arduino

ในข้างต้นนี้เราได้เรียนรู้วิธีสร้างนาฬิกา Arduino พื้นฐานโดยใช้โมดูล RTC ในวินาทีต่อไปนี้เราจะตรวจสอบว่าสามารถอัปเกรดเป็นวงจรนาฬิกาปลุกดิจิตอลโดยใช้ Arduino ได้อย่างไร

มีบางคนที่ไม่จำเป็นต้องใช้นาฬิกาปลุกพวกเขาตื่นขึ้นมาตามธรรมชาติและมีบางคนที่ตื่นขึ้นมาหลังจากเสียงนาฬิกาปลุกดังไม่กี่ครั้งและมีบางคนที่กดปุ่มเลื่อนซ้ำหลายครั้งและไปวิทยาลัย / ทำงานสายด้วย ข้อแก้ตัวบางอย่าง

โครงการนาฬิกาปลุกตัวน้อยแสนสนุกที่นำเสนออาจเผชิญกับปัญหาความเกียจคร้านในช่วงตื่นเช้า นาฬิกาปลุกส่วนใหญ่มีปุ่มเลื่อนและเวลาปิดเสียงที่กำหนดไว้ล่วงหน้าสำหรับการปลุกหากผู้ใช้ไม่ตอบสนอง

เราออกแบบนาฬิกาปลุกนี้โดยไม่มีปุ่มขี้เกียจ (ปุ่มเลื่อน) และนาฬิกาปลุกจะไม่ปิดจนกว่าผู้ใช้จะกดปุ่ม

นาฬิกานี้สามารถแสดงเวลาในรูปแบบ 12 ชั่วโมงและวันที่ในรูปแบบ DD / MM / YYYY

เวลาและวันที่จะแสดงบนจอ LCD 16 x 2 โมดูลนาฬิกา RTC หรือเรียลไทม์จะดูแลติดตามเวลาและสามารถรักษาเวลาที่ถูกต้องได้แม้จะตัดไฟเป็นเวลานาน

มีปุ่ม 5 ปุ่มซึ่งจะมีการอธิบายฟังก์ชั่นในไม่ช้า สมองของโครงการ Arduino สามารถเลือกรุ่นใดก็ได้เราขอแนะนำ Arduino pro mini หรือ Arduino nano เนื่องจากมีขนาดกะทัดรัด

ตอนนี้เรามาดูแผนงานกัน

ด้านบนเป็นแผนผังสำหรับ Arduino เพื่อแสดงการเชื่อมต่อปรับความคมชัดของการแสดงผลโดยการหมุนโพเทนชิออมิเตอร์ 10K

ด้านล่างคือส่วนที่เหลือของวงจร:

วงจรสามารถขับเคลื่อนอะแดปเตอร์ติดผนัง 9V 500mA

ฟังก์ชั่น 5 ปุ่ม:

S1 - ใช้สำหรับหยุดการเตือน (เป็นปุ่มรีเซ็ตด้วย)
S2 - ใช้สำหรับตั้งปลุก โดยการกด S2 ค้างไว้คุณจะเข้าสู่เมนูการตั้งค่าการเตือน
S3 - ใช้เพื่อเพิ่มชั่วโมง
S4 - ใช้เพื่อเพิ่มนาที
S5 - ใช้สำหรับสลับสถานะการเตือนภัย หากมี“ *” อยู่บนจอ LCD ที่มุมล่างด้านขวาสัญญาณเตือนจะเปิดอยู่หากไม่มี“ *” สถิติการเตือนจะปิด

รายละเอียดเพิ่มเติมเกี่ยวกับวิธีตั้งนาฬิกาปลุกอธิบายไว้ที่ด้านล่างของบทความ

ดาวน์โหลดไฟล์ไลบรารีด้านล่าง:

ลิงก์ 1: github.com/PaulStoffregen/DS1307RTC
ลิงก์ 2: github.com/PaulStoffregen/Time

ตอนนี้เราต้องตั้งเวลาเป็นโมดูล RTC เวลาจะซิงโครไนซ์จากพีซีของคุณไปยังโมดูล RTC

อัปโหลดรหัสด้านล่างเพื่อตั้งเวลาและเปิด Serial monitor:

//------------------------------------------------// #include  #include  #include  const char *monthName[12] = { 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' } tmElements_t tm void setup() { bool parse=false bool config=false // get the date and time the compiler was run if (getDate(__DATE__) && getTime(__TIME__)) { parse = true // and configure the RTC with this info if (RTC.write(tm)) { config = true } } Serial.begin(9600) while (!Serial)  // wait for Arduino Serial Monitor delay(200) if (parse && config) { Serial.print('DS1307 configured Time=') Serial.print(__TIME__) Serial.print(', Date=') Serial.println(__DATE__) } else if (parse) { Serial.println('DS1307 Communication Error :-{') Serial.println('Please check your circuitry') } else { Serial.print('Could not parse info from the compiler, Time='') Serial.print(__TIME__) Serial.print('', Date='') Serial.print(__DATE__) Serial.println(''') } } void loop() { } bool getTime(const char *str) { int Hour, Min, Sec if (sscanf(str, '%d:%d:%d', &Hour, &Min, &Sec) != 3) return false tm.Hour = Hour tm.Minute = Min tm.Second = Sec return true } bool getDate(const char *str) { char Month[12] int Day, Year uint8_t monthIndex if (sscanf(str, '%s %d %d', Month, &Day, &Year) != 3) return false for (monthIndex = 0 monthIndex < 12 monthIndex++) { if (strcmp(Month, monthName[monthIndex]) == 0) break } if (monthIndex >= 12) return false tm.Day = Day tm.Month = monthIndex + 1 tm.Year = CalendarYrToTm(Year) return true } //----------------------------------------// 

ตอนนี้คุณได้ตั้งเวลาเป็น RTC เรียบร้อยแล้ว
ถัดไปคุณต้องอัปโหลดรหัสหลักต่อไปนี้:

//------------Program Developed by R.Girish-------// #include  #include  #include  #include  #include  const int rs = 7 const int en = 6 const int d4 = 5 const int d5 = 4 const int d6 = 3 const int d7 = 2 const int buzzer = 8 boolean alarm = false boolean outloop = true const int setAlarm = A0 const int Hrs = A1 const int Min = A2 const int ok = A3 const int HrsADD = 0 const int MinADD = 1 const int ALsave = 2 int HrsVal = 0 int MinVal = 0 int H = 0 int M = 0 int S = 0 int i = 0 int j = 0 int k = 0 LiquidCrystal lcd(rs, en, d4, d5, d6, d7) void setup() { Serial.begin(9600) lcd.begin(16, 2) pinMode(buzzer, OUTPUT) pinMode(setAlarm, INPUT) pinMode(Hrs, INPUT) pinMode(Min, INPUT) pinMode(ok, INPUT) digitalWrite(setAlarm, HIGH) digitalWrite(Hrs, HIGH) digitalWrite(Min, HIGH) digitalWrite(ok, HIGH) } void loop() { tmElements_t tm lcd.clear() if (EEPROM.read(ALsave) == false) { lcd.setCursor(15, 1) lcd.print('') } if (EEPROM.read(ALsave) == true) { lcd.setCursor(15, 1) lcd.print(F('*')) } if (RTC.read(tm)) { if (tm.Hour >= 12) { lcd.setCursor(14, 0) lcd.print('PM') } if (tm.Hour < 12) { lcd.setCursor(14, 0) lcd.print('AM') } lcd.setCursor(0, 0) lcd.print('TIME:') H = tm.Hour if (tm.Hour > 12) { if (tm.Hour == 13) { lcd.print('01') } if (tm.Hour == 14) { lcd.print('02') } if (tm.Hour == 15) { lcd.print('03') } if (tm.Hour == 16) { lcd.print('04') } if (tm.Hour == 17) { lcd.print('05') } if (tm.Hour == 18) { lcd.print('06') } if (tm.Hour == 19) { lcd.print('07') } if (tm.Hour == 20) { lcd.print('08') } if (tm.Hour == 21) { lcd.print('09') } if (tm.Hour == 22) { lcd.print('10') } if (tm.Hour == 23) { lcd.print('11') } } else { lcd.print(tm.Hour) } M = tm.Minute S = tm.Second lcd.print(':') lcd.print(tm.Minute) lcd.print(':') lcd.print(tm.Second) lcd.setCursor(0, 1) lcd.print('DATE:') lcd.print(tm.Day) lcd.print('/') lcd.print(tm.Month) lcd.print('/') lcd.print(tmYearToCalendar(tm.Year)) } else { if (RTC.chipPresent()) { lcd.setCursor(0, 0) lcd.print('RTC stopped!!!') lcd.setCursor(0, 1) lcd.print('Run SetTime code') } else { lcd.clear() lcd.setCursor(0, 0) lcd.print('Read error!') lcd.setCursor(0, 1) lcd.print('Check circuitry!') } } if (digitalRead(setAlarm) == LOW) { setALARM() } if (H == EEPROM.read(HrsADD) && M == EEPROM.read(MinADD) && S == 0) { if (EEPROM.read(ALsave) == true) { sound() } } if (digitalRead(ok) == LOW) { if (EEPROM.read(ALsave) == true) { EEPROM.write(ALsave, 0) alarm = false delay(1000) return } if (EEPROM.read(ALsave) == false) { EEPROM.write(ALsave, 1) alarm = true delay(1000) return } } delay(1000) } void setALARM() { HrsVal = EEPROM.read(HrsADD) MinVal = EEPROM.read(MinADD) lcd.clear() lcd.setCursor(0, 0) lcd.print(F('>>>>SET ALARM<<<')) lcd.setCursor(0, 1) lcd.print(F('Hrs:')) lcd.print(EEPROM.read(HrsADD)) lcd.print(F(' Min:')) lcd.print(EEPROM.read(MinADD)) delay(600) while (outloop) { if (HrsVal > 23) { HrsVal = 0 lcd.clear() lcd.setCursor(0, 0) lcd.print(F('>>>>SET ALARM<<<')) lcd.setCursor(0, 1) lcd.print(F('Hrs:')) lcd.print(HrsVal) lcd.print(F(' Min:')) lcd.print(MinVal) } if (MinVal > 59) { MinVal = 0 lcd.clear() lcd.setCursor(0, 0) lcd.print(F('>>>>SET ALARM<<<')) lcd.setCursor(0, 1) lcd.print(F('Hrs:')) lcd.print(HrsVal) lcd.print(F(' Min:')) lcd.print(MinVal) } if (digitalRead(Hrs) == LOW) { HrsVal = HrsVal + 1 lcd.clear() lcd.setCursor(0, 0) lcd.print(F('>>>>SET ALARM<<<')) lcd.setCursor(0, 1) lcd.print(F('Hrs:')) lcd.print(HrsVal) lcd.print(F(' Min:')) lcd.print(MinVal) delay(250) } if (digitalRead(Min) == LOW) { MinVal = MinVal + 1 lcd.clear() lcd.setCursor(0, 0) lcd.print(F('>>>>SET ALARM<<<')) lcd.setCursor(0, 1) lcd.print(F('Hrs:')) lcd.print(HrsVal) lcd.print(F(' Min:')) lcd.print(MinVal) delay(250) } if (digitalRead(setAlarm) == LOW) { EEPROM.write(HrsADD, HrsVal) EEPROM.write(MinADD, MinVal) lcd.clear() lcd.setCursor(0, 0) lcd.print(F('Alarm is Set for')) lcd.setCursor(0, 1) lcd.print(EEPROM.read(HrsADD)) lcd.print(F(':')) lcd.print(EEPROM.read(MinADD)) lcd.print(F(' Hrs')) delay(1000) outloop = false } } outloop = true } void sound() { lcd.clear() lcd.setCursor(0, 0) lcd.print('Wakey Wakey !!!') lcd.setCursor(0, 1) lcd.print('Its Time now.....') for (j = 0 j < 10 j++) { for (i = 0 i < 2  i++) { digitalWrite(buzzer, HIGH) delay(150) digitalWrite(buzzer, LOW) delay(150) } delay(400) } for (k = 0 k < 10 k++) { for (i = 0 i < 4  i++) { digitalWrite(buzzer, HIGH) delay(150) digitalWrite(buzzer, LOW) delay(150) } delay(250) } while (true) { digitalWrite(buzzer, HIGH) delay(150) digitalWrite(buzzer, LOW) delay(150) } } //------------Program Developed by R.Girish-------// 

หลังจากอัปโหลดโค้ดด้านบนคุณจะต้องเห็นเวลาและวันที่ที่ถูกต้องซึ่งทำงานอยู่บนหน้าจอ

ตอนนี้เรามาดูวิธีตั้งปลุก:
•กด S2 ค้างไว้จนกว่าคุณจะเห็นเมนูนาฬิกาปลุก
•กด S3 และ S4 เพื่อปรับชั่วโมงและนาทีตามลำดับ
•หลังจากตั้งเวลาที่ต้องการแล้วให้กด S2 อีกครั้ง จะมีข้อความว่า“ ตั้งปลุกไว้ที่ xx: xx ชั่วโมง”
•หากนาฬิกาปลุกเปิดอยู่คุณจะเห็นสัญลักษณ์“ *” บนหน้าจอหากปิดการปลุกจะไม่มีสัญลักษณ์“ *”
•คุณสามารถเปิด / ปิดการปลุกได้โดยกด S5 ครึ่งวินาที อย่ากดนานจนกว่า“ *” จะหายไป (มันจะกลับมาอีกครั้ง) เพียงกดค้างไว้ครึ่งวินาทีเพื่อสลับสถานะการปลุก

โน๊ตสำคัญ:

ข้อผิดพลาดที่พบบ่อยที่สุดขณะตั้งนาฬิกาปลุกคือการสลับ AM / PM โดยไม่ได้ตั้งใจซึ่งส่งผลให้ไม่ส่งเสียงปลุกตามเวลาที่เราต้องการ

เพื่อแก้ปัญหานี้การตั้งค่านาฬิกาปลุกที่เสนอได้รับการออกแบบในรูปแบบนาฬิกา 24 ชั่วโมง

เวลาที่แสดงบน LCD จะเป็น 12 ชั่วโมงในรูปแบบ AM / PM แต่เมื่อคุณตั้งนาฬิกาปลุกด้วยโปรเจ็กต์นี้คุณต้องตั้งค่าเป็นรูปแบบ 24 ชั่วโมงตั้งแต่ 0 ถึง 23 ชั่วโมง

ตัวอย่างเช่นหากคุณต้องการตั้งปลุกเวลา 21.00 น. คุณต้องตั้งเวลา 21 ชั่วโมง 0 นาที เป็นเวลา 5.00 น.: 5 ชั่วโมง 0 นาทีเป็นต้นไป

ต้นแบบของผู้แต่ง:

คุณชอบโครงการนี้หรือไม่? หากมีคำถามใด ๆ เกี่ยวกับโครงการนี้โปรดแสดงความคิดเห็นคุณอาจได้รับคำตอบอย่างรวดเร็ว

คลิปวิดีโอ:




คู่ของ: วงจรตัวบ่งชี้ระดับ Beacon สำหรับถังรวมเมล็ดพืชเก็บเกี่ยว ถัดไป: 3 วงจรอินเวอร์เตอร์ Pure Sinewave พลังงานสูง SG3525