นาฬิกาเรียลไทม์ที่ใช้ Arduino นี้เป็นนาฬิกาดิจิตอลที่แสดงเวลาจริงโดยใช้RTC IC DS1307ซึ่งทำงานบนโปรโตคอล I2C นาฬิกาแบบเรียลไทม์หมายความว่าเครื่องทำงานแม้ไฟฟ้าดับ เมื่อเชื่อมต่อพลังงานอีกครั้งจะแสดงเวลาจริงโดยไม่คำนึงถึงเวลาและระยะเวลาที่อยู่ในสถานะปิด ในโครงการนาฬิกาปลุก Arduino นี้เราได้ใช้โมดูล LCD 16x2 เพื่อแสดงเวลาในรูปแบบ - "ชั่วโมงนาทีวินาทีวันที่เดือนและปี" นอกจากนี้ยังเพิ่มตัวเลือกนาฬิกาปลุกและเราสามารถตั้งเวลาปลุกได้ เมื่อเวลาปลุกบันทึกไว้ใน EEPROM ภายในของ arduino แล้วจะยังคงบันทึกไว้แม้จะรีเซ็ตหรือไฟฟ้าขัดข้อง นาฬิกาแบบเรียลไทม์มักใช้ในคอมพิวเตอร์บ้านสำนักงานและอุปกรณ์อิเล็กทรอนิกส์ของเราเพื่อให้อัปเดตตามเวลาจริง
โพรโทคอ I2C เป็นวิธีการที่จะเชื่อมต่อสองคนหรือมากกว่าอุปกรณ์ที่ใช้สองสายจะเป็นระบบเดียวและเพื่อโปรโตคอลนี้จะเรียกว่าเป็นโปรโตคอลสองสายสามารถใช้เพื่อสื่อสารอุปกรณ์ 127 เครื่องกับอุปกรณ์หรือโปรเซสเซอร์เดียว อุปกรณ์ I2C ส่วนใหญ่ทำงานบนความถี่ 100Khz
ขั้นตอนสำหรับการเขียนข้อมูลต้นแบบไปยังทาส (โหมดรับทาส)
- ส่งเงื่อนไขเริ่มต้นไปยังทาส
- ส่งที่อยู่ทาสไปยังทาส
- ส่งบิตเขียน (0) ไปยังทาส
- รับบิต ACK จากทาส
- ส่งคำที่อยู่ไปยังทาส
- รับบิต ACK จากทาส
- ส่งข้อมูลไปยังทาส
- รับบิต ACK จากทาส
- และล่าสุดส่งเงื่อนไข STOP ไปยังทาส
ขั้นตอนในการอ่านข้อมูลจาก Slave to Master (โหมดการส่งข้อมูลแบบ Slave)
- ส่งเงื่อนไขเริ่มต้นไปยังทาส
- ส่งที่อยู่ทาสไปยังทาส
- ส่งบิตอ่าน (1) ไปยังทาส
- รับบิต ACK จากทาส
- ได้รับข้อมูลจากทาส
- รับบิต ACK จากทาส
- ส่งเงื่อนไข STOP ไปยังทาส
ในการสร้างนาฬิกาดิจิตอลที่ใช้RTC DS1307 IC นี้เราได้ใช้ Arduino Pro Mini ที่นี่ แต่คุณยังสามารถใช้ Arduino รุ่นอื่น ๆ เช่น Arduino Uno หรือ Arduino Nano นอกจากบอร์ด Arduino, DS1307 RTC IC แล้วเรายังใช้โมดูล LCD 16x2 เพื่อแสดงเวลาและวันที่ออสซิออลเลเตอร์คริสตัลตัวควบคุมแรงดันไฟฟ้า 7805 กริ่งและทรานซิสเตอร์และตัวต้านทานไม่กี่ตัว
แผนภาพวงจรและคำอธิบาย
ในวงจรนาฬิกาดิจิตอลที่ใช้ Arduino นี้เราได้ใช้ส่วนประกอบหลักสามส่วน ได้แก่ IC DS1307, Arduino Pro Mini Board และโมดูล LCD 16x2
ที่นี่ arduino ใช้สำหรับอ่านเวลาจาก ds1307 และแสดงบน LCD 16x2 DS1307 ส่งเวลา / วันที่โดยใช้ 2 บรรทัดไปยัง arduino นอกจากนี้ยังใช้เสียงสัญญาณเตือนซึ่งจะส่งเสียงบี๊บเมื่อเปิดใช้งานการปลุก แผนภาพบล็อกแสดงไว้ด้านล่างเพื่อทำความเข้าใจการทำงานของนาฬิกาแบบเรียลไทม์นี้
ดังที่คุณเห็นในแผนภาพวงจรพินชิป DS1307 SDA และ SCL เชื่อมต่อกับพิน arduino SDA และ SCL พร้อมตัวต้านทานแบบดึงขึ้นที่มีค่าเริ่มต้นสูงที่ข้อมูลและสายนาฬิกา 32.768KHz คริสตัลออสซิลเลเตอร์เชื่อมต่อกับชิป DS1307 เพื่อสร้างความล่าช้า 1 วินาทีที่แน่นอนและแบตเตอรี่ 3 โวลต์ยังเชื่อมต่อกับพิน 3 rd (BAT) ของ DS1307 ซึ่งช่วยให้เวลาทำงานหลังจากไฟฟ้าขัดข้อง 16x2 LCD เชื่อมต่อกับ arduino ในโหมด 4 บิต ขาควบคุม RS, RW และ En เชื่อมต่อโดยตรงกับขา Arduino 2, GND และ 3 และขาข้อมูล D0-D7 เชื่อมต่อกับ 4, 5, 6, 7 ของ arduino ออดเชื่อมต่อกับพิน arduino หมายเลข 13 ผ่านทรานซิสเตอร์ NPN BC547 ที่มีตัวต้านทาน 1 k ที่ฐาน
ปุ่มสามปุ่มคือ set, INC และ Next ใช้สำหรับตั้งปลุกเป็นพิน 12, 11 และ 10 ของ arduino ในโหมด active low เมื่อเรากด set โหมดตั้งปลุกจะเปิดใช้งานและตอนนี้เราจำเป็นต้องตั้งปลุกโดยใช้ปุ่ม INC และปุ่มถัดไปใช้สำหรับย้ายไปที่ตัวเลข การตั้งค่าเขียงหั่นขนมที่สมบูรณ์ของนาฬิกาเรียลไทม์พร้อมนาฬิกาปลุกนี้แสดงอยู่ในภาพด้านล่าง คุณยังสามารถตรวจสอบบทช่วยสอนโดยละเอียดเกี่ยวกับนาฬิกาปลุกดิจิตอลด้วยไมโครคอนโทรลเลอร์ AVR
คำอธิบายโปรแกรม
ในการตั้งโปรแกรมสำหรับนาฬิกาแบบเรียลไทม์นี้เราได้ใช้ไลบรารีบางส่วนเพื่อแยกเวลา / วันที่ออกจาก DS1307 และสำหรับการแสดงบน LCD ซึ่งแสดงไว้ด้านล่าง:
และการเริ่มต้นของ RTC, LCD และอินพุตเอาต์พุตจะดำเนินการในลูปการตั้งค่า
สิ่งที่เหลือเช่นเวลาอ่านการตั้งปลุกจะดำเนินการในส่วน void loop