รับกระดานสองสาม Arduinoและส่วนประกอบวิทยุต่าง ๆ เพื่อทำความคุ้นเคยกับไมโครคอนโทรลเลอร์ผู้เขียนจึงตัดสินใจทำสิ่งที่น่าสนใจและในเวลาเดียวกันก็มีประโยชน์ มีสต็อค LED จำนวนมากแนวคิดนี้เกิดขึ้นเพื่อสร้างนาฬิกาไบนารี
ในด้านอิเล็กทรอนิกส์นาฬิกาไบนารีไม่ซับซ้อนโดยเฉพาะอย่างยิ่ง แต่ผู้เขียนซับซ้อนงานและตัดสินใจที่จะไม่บันทึกปุ่มและไฟ LED เริ่มแรกโครงการจะใช้หลอด LED 22 ดวงปุ่ม 6 ตัวและทวีตเตอร์หนึ่งตัว มันเป็นความคิดที่จะรวบรวมนาฬิกาบน Arduino Mega เนื่องจากมีหมุดจำนวนมาก แต่การลงทะเบียน 74HC595 กลับกลายเป็นความรอด
วัสดุ:
- Arduino Uno
- เขียงหั่นขนมขนาดใหญ่ 2 อัน
- LED สีแดง 7 ชิ้น
- ไฟ LED สีเขียว 7 ชิ้น
- ไฟ LED สีฟ้า 6 ชิ้น
- ไฟ LED สีเหลืองและสีขาว 2 ดวง
- ตัวต้านทาน 220 โอห์ม 25 ชิ้น
- Piezo buzzer 1 ชิ้น
- ปุ่มสัมผัส 6 ปุ่ม
- Shift output register 74HC595 ในแพคเกจ DIP-16 3 ชิ้น
- สายเชื่อมต่อ 90 ชิ้น
- โมดูลนาฬิกาแบบเรียลไทม์อ้างอิงจากชิป DS1307 RTC
ทุกอย่างจะทำงานอย่างไร
มีนาฬิกาไบนารีประมาณ 10 ชนิด บางเวลาแสดงในรูปแบบเลขฐานสองทศนิยม (BCD) ส่วนอื่น ๆ เป็นตัวเลขไบนารี เนื่องจากผู้เขียนไม่ชอบนาฬิกา BCD เป็นพิเศษเขาจึงตัดสินใจสร้างไบนารีที่บริสุทธิ์ของเขา บางคนพบว่าอ่านยาก แต่ความแตกต่างนั้นไม่ใหญ่นักเนื่องจากการแปลตัวเลขจากไบนารี่เป็นทศนิยมนั้นง่าย ข้อกำหนดเบื้องต้นสำหรับผู้สร้างนาฬิกาก็เป็นตัวบ่งบอกถึงวินาทีของนาฬิกา
นอกจากนี้นาฬิกามี 6 ปุ่ม:
ตั้งค่า - รับผิดชอบในโหมดการตั้งค่านาฬิกา / การเตือนและบันทึกพารามิเตอร์ในโหมดการตั้งค่า
Mode - รับผิดชอบในการสลับระหว่างโหมดนาฬิกาปลุกและโหมดจับเวลา
ขึ้น - ในการตั้งค่านาฬิกา / ปลุก / ตัวจับเวลาจะเพิ่มพารามิเตอร์หนึ่งตัว ในนาฬิกาปลุกและจับเวลามีหน้าที่เปิดใช้งานและปิดใช้งานโหมดที่เลือก เมื่อสัญญาณถูกทริกเกอร์มันจะปิดสัญญาณเตือน / ตัวจับเวลา
ลง - ในการตั้งค่านาฬิกา / ปลุก / ตัวจับเวลามันจะลดพารามิเตอร์หนึ่ง ตัวจับเวลาจะหยุดชั่วคราวโดยไม่รีเซ็ตการนับถอยหลัง เมื่อสัญญาณเตือนภัยดับไปก็จะถ่ายโอนสัญญาณเป็นเวลา 5 นาที
24/12 - เปลี่ยนรูปแบบเวลา
Dim - รับผิดชอบในการเปิดและปิดไฟ LED (เมื่อ LED ปิดปุ่มที่เหลือหยุดทำงาน)
แผนภาพการวางตำแหน่ง LED:
การเชื่อมต่อคอมโพเนนต์
ผู้เขียนจะเชื่อมต่อ LED ทั้งหมดในซีรีย์และกับตัวต้านทาน ตัวต้านทานจะถูกบัดกรีไปที่หนึ่งในเทอร์มินัลของ LED มันไม่สำคัญว่าอันไหน LED จะถูกเชื่อมต่อผ่านการลงทะเบียนชิพนี้มี 16 รายชื่อจำนวนพินนี้ช่วยให้คุณใช้พินจำนวนมากโดยใช้เพียง 3 พินใน Arduino
Shift Register Pinout 74HC595:
Q0-Q7 เป็นข้อค้นพบของการลงทะเบียนที่จะเชื่อมต่อ LED
Vcc - หมุดแหล่งจ่ายไฟ 5V จะถูกนำไปใช้กับมัน
GND - กราวด์ที่เชื่อมต่อกับ GND บน Arduino
OE - พินนั้นมีหน้าที่ในการเปิดใช้งานการคว่ำของพิน แต่จะไม่ถูกใช้งาน
MR เป็นการล้างข้อมูลรีจิสเตอร์แบบ inverted มันไม่จำเป็นต้องถูกควบคุมดังนั้นมันจะเชื่อมต่อกับแหล่งจ่ายไฟ 5V
ST_CP - พินมีหน้าที่ในการอัพเดทสถานะของการลงทะเบียน เมื่อบันทึกสถานะมีความจำเป็นต้องใช้ LOW กับสถานะหลังจากบันทึก - สูงเพื่ออัปเดตสถานะของเอาต์พุต จำเป็นต้องเชื่อมต่อกับขาบน Arduino คุณสามารถเชื่อมต่อพินนี้ได้ในสามรีจิสเตอร์พร้อมกัน
SH_CP - พินรับผิดชอบการเปลี่ยนแปลงจากการลงทะเบียน 1 บิต จำเป็นต้องเชื่อมต่อกับขาบน Arduino พวกมันเชื่อมต่อกับวงจรขนาดเล็กด้วยเช่นกัน
DS - ข้อมูลกำลังถูกส่งไปยังพินนี้มันเชื่อมต่อกับพินบน Arduino
Q7 '- พินนี้ใช้สำหรับการเชื่อมต่อแบบเรียงซ้อนกับรีจิสเตอร์อื่น 74HC595
แผนภาพการเดินสายไฟ:
สัญญาณเตือนแบบ piezo จะเชื่อมต่อกับขา Arduino ตัวที่สามในซีรีย์พร้อมตัวต้านทาน ก่อนที่จะรวมทวีตเตอร์ในวงจรผู้เขียนดูว่าพินรองรับ PWM หรือไม่เนื่องจากนี่เป็นข้อบังคับสำหรับเธอ บน Arduino Uno, PWM รองรับ 3, 5, 6, 9, 10 และ 11 พิน
ปุ่มเชื่อมต่อโดยใช้ตัวต้านทานที่ติดตั้งใน Arduino โดยมีด้านหนึ่งของปุ่มที่เชื่อมต่อกับภาคพื้นดินและอีกด้านหนึ่งไปยังหมุด Arduino
ดังนั้นการออกแบบขั้นสุดท้ายมีลักษณะ:
สร้างบน Breadboard
หลังจากได้รับรายละเอียดเพิ่มเติมผู้เขียนก็เริ่มประกอบโครงการบนเขียงหั่นขนมตามแบบแผน รูปร่างหน้าตากำลังจะเกิดขึ้นเพราะ Breadboard จำกัด เสรีภาพในการจัดวางส่วนประกอบและการยึดสายไฟไม่ได้สร้างความพึงพอใจด้านสุนทรียภาพ แต่เขียงหั่นขนมหลังจากทั้งหมดมีไว้สำหรับรุ่นเขียงหั่นขนม แต่ไม่ได้สำหรับอุปกรณ์สำเร็จรูป
รหัสโปรแกรม
ผู้เขียนจึงตัดสินใจที่จะเขียนโค้ดด้วยตัวเองโดยไม่ต้องใช้การพัฒนาของคนอื่น ขั้นตอนแรกคือการเขียนรูทีนย่อยมันมีหน้าที่ในการกระพริบไดโอดทั้งหมดและให้สัญญาณ Piezo เมื่อเปิด ฟังก์ชั่นนี้ช่วยในการตรวจสอบความสมบูรณ์ของวงจรเช่นเดียวกับที่ใช้กับอุปกรณ์หลายชนิด
ร่างร่างออกมาค่อนข้างใหญ่จากนั้นคุณสามารถพิจารณาคุณสมบัติหลักของมันได้
งาน LED
เนื่องจากไฟ LED มีการเข้าถึงผ่าน shift register ก่อนอื่นจำเป็นต้องใช้งานรูทีนเพิ่มเติมสำหรับ LED เพื่อการใช้งานที่ง่ายขึ้นกับไดโอดจึงมีการใช้ฟังก์ชั่นเพิ่มเติมจำนวนหนึ่ง มีการนำเอฟเฟกต์ต่าง ๆ ของแอนิเมชันของไดโอด เมื่อไม่ได้ตั้งค่านาฬิกาไดโอดที่รับผิดชอบชั่วโมงและนาทีจะเริ่มกะพริบ (ตามนาฬิกาปกติจะกะพริบเมื่อไม่ได้ตั้งค่า) ไฟ LED ที่รับผิดชอบเป็นวินาทีมีภาพเคลื่อนไหวของตัวเองไดโอดสามารถเรียกใช้ซ้ายและขวาในโหมดสัญญาณเตือนหรือในโหมดการตั้งค่านาฬิกา
ห่วงหลัก
โปรแกรมได้รับการกำหนดค่าให้ทำงานดังนี้: นาฬิกาแสดงข้อมูลขึ้นอยู่กับสถานะปัจจุบันและเปลี่ยนสถานะขึ้นอยู่กับการใช้ปุ่มและเหตุการณ์ ดูเหมือนว่ามีเงื่อนไขซ้อนกันอยู่จำนวนหนึ่ง สถานะของไดโอดจะได้รับการอัพเดตทุกครั้งหลังจากตรวจสอบสถานะของตัวจับเวลาและปุ่มด้วยการเรียกไปยังตัวจัดการ
นอกจากนี้ผู้เขียนทำงานได้อย่างยอดเยี่ยมสำหรับการทำงานที่ถูกต้องของปุ่มอินพุตและตัวจับเวลา รหัสแหล่งที่มาของร่างสามารถดาวน์โหลดได้ภายใต้บทความ
เปิดตัวเลย์เอาต์
หลังจากเปิดโปรเจคได้อย่างรวดเร็วอุปกรณ์จะทำงานอย่างถูกต้องและเสถียร แต่ผู้เขียนพบข้อผิดพลาดนาฬิกาอยู่ข้างหลังหนึ่งวินาทีต่อชั่วโมงเป็นเวลานานมันจะเป็นข้อผิดพลาดใหญ่
จากการศึกษาปัญหานี้พบว่า Arduino Uno ดั้งเดิมใช้ตัวสะท้อนความร้อนแบบเซรามิกและขาดความแม่นยำในการวัดระยะเวลานาน ทางออกที่สมเหตุสมผลที่สุดคือการซื้อนาฬิกาแบบเรียลไทม์บวกด้วยโมดูลนี้เวลาบนนาฬิกาจะไม่หลงทางเมื่อปิด ผู้เขียนซื้อโมดูล Grove RTC จาก Seeed Studio มันเป็นกระดานเสร็จกับชิปนาฬิกา ผู้เขียนเชื่อมต่อหมุดของโมดูล SDA และ SCL เข้ากับ Arduino บนหมุดของ A4 และ A5, GND กับกราวด์ เนื่องจากกำลังไฟ 5V ถูกครอบครองโดยบอร์ดนาฬิกาจึงไม่มีการเชื่อมต่อโมดูล ผู้เขียนได้ตัดสินใจที่จะจ่ายไฟให้กับโมดูลจากหนึ่งในพินดิจิตอลซึ่งจะได้รับพลังงานอย่างต่อเนื่องนอกจากนี้ผู้เขียนจำเป็นต้องแก้ไขซอร์สโค้ดและเพิ่มไลบรารีของนาฬิกาเรียลไทม์
ประกอบนาฬิกา
หลังจากเสร็จสิ้นการทำงานกับโค้ดมาเป็นเวลานานถึงเวลาที่จะทำให้อุปกรณ์ดูสมบูรณ์และถ่ายโอนจาก breadboard ไปยังแผงวงจรพิมพ์ ประการแรกจำเป็นต้องทำการเดินสายสำหรับบอร์ด Fritzing ใช้สำหรับเรื่องนี้เนื่องจากผู้เขียนมีความคิดเกี่ยวกับการปรากฏตัวของนาฬิกาและเขาสร้างแผนภาพอุปกรณ์ ผู้เขียนติดตามด้วยตนเองด้วยบอร์ดใช้เวลานานมาก
โครงการสำหรับการผลิตแผงวงจรพิมพ์:
สั่งผลิต PCB ในประเทศจีน Seeed Studio มีบริการ Fusion PCB board ไฟล์นี้ถูกส่งออกไปยังรูปแบบ Extended Gerber ผ่าน Fritzing ผู้ผลิตบอร์ดหลายรายสามารถใช้งานมันได้ สองสัปดาห์ต่อมาผู้เขียนได้รับค่าธรรมเนียมที่รอมานานในจดหมาย
มันยังคงมีเพียงส่วนเล็ก ๆ ที่เต็มไปด้วยฝุ่นบัดกรีบนกระดาน ผลลัพธ์ที่ได้หลังจากการบัดกรีดูดีกว่าเลย์เอาต์บน Breadboard มาก
ผู้เขียนโครงการทำงานอย่างหนักเป็นเวลานานและได้รับสิ่งที่เขาต้องการ - นาฬิกาไบนารีที่ไม่ซ้ำใครพร้อมตัวจับเวลาและนาฬิกาปลุก เมื่อใช้ช่องใส่แบตเตอรี่คุณสามารถวางนาฬิกาได้ทุกที่ Arduino ตรงตามความคาดหวังและรับมือกับงานอย่างสมบูรณ์