สารบัญ:
- ขั้นตอนที่ 1: ภาพรวมองค์ประกอบฮาร์ดแวร์
- ขั้นตอนที่ 2: ภาพรวมซอฟต์แวร์
- ขั้นตอนที่ 3: รายการชิ้นส่วน
- ขั้นตอนที่ 9: ออกแบบและเขียนโค้ด
- ขั้นตอนที่ 10: ติดตั้งโปรแกรม
- ขั้นตอนที่ 11: ประกอบตัวจับเวลา
- ขั้นตอนที่ 12: การทดสอบการรวม
- ขั้นตอนที่ 13: ความคิดสุดท้าย
วีดีโอ: Multi-Timer พร้อมการควบคุมภายนอก: 13 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
โปรเจ็กต์ Instructable นี้สร้างขึ้นจากตัวจับเวลาหลายฟังก์ชัน
ตัวจับเวลานี้สามารถทำงานเป็น:
- นาฬิกาปลุกเอนกประสงค์ที่สามารถเลือกเวลาได้ตั้งแต่ 1 วินาทีถึง +90 ชั่วโมง มีการนับถอยหลังพร้อมเสียงเตือนและ/หรือการควบคุมอุปกรณ์ภายนอกจนเสร็จ จากนั้นจึงนับเวลานับตั้งแต่การเตือน
- ตั้งเวลางีบได้ 7 ครั้ง นับถอยหลังและปลุกเมื่อเสร็จสิ้น
- ตัวจับเวลาทำสมาธิที่สามารถเลือกได้ 4 ครั้ง โดยมีการนับถอยหลังและเสียงร้องสั้นๆ เมื่อเสร็จสิ้น นับขึ้นพร้อมกับอีก 5 นาทีหลังจากนั้น
โครงการนี้อาจสร้างอีเทอร์ตามที่อธิบายไว้ที่นี่หรือแก้ไขให้เหมาะสม ก่อนหน้านี้ฉันสร้างตัวจับเวลาด้วยฟังก์ชันนี้และใช้ใน Instructable แรกของฉันเพื่อควบคุมกล่องรับแสง UV
ฉันคิดว่าฉันสามารถเผยแพร่โปรแกรมดั้งเดิมและการออกแบบบอร์ดได้ อย่างไรก็ตาม ฉันไม่สามารถหารหัสได้ด้วยเหตุผลบางอย่าง ฉันยังต้องการปรับปรุงฮาร์ดแวร์เพื่อให้วงจรควบคุมมีความยืดหยุ่นมากขึ้นและลดการสิ้นเปลืองแบตเตอรี่ การออกแบบแผงวงจรหลักและการเขียนโค้ดใหม่ที่เป็นผลลัพธ์ทำให้เกิดโอกาสในการหารือเกี่ยวกับแนวทางการเขียนโปรแกรมและการออกแบบฮาร์ดแวร์
เมื่อใดก็ตามที่ฉันสร้างแผงวงจร ฉันมักจะพบว่ามีข้อบกพร่องในการออกแบบหรือการจัดวางส่วนประกอบ บอร์ดที่ฉันสร้างก็เป็นหนึ่งในสองส่วนเช่นกัน นอกจากนี้ ฉันยังต้องการมีส่วนร่วมในทุกแง่มุมของโครงการตั้งแต่ต้นจนจบ นี่คือเหตุผลบางประการที่ฉันทำแผงวงจรของตัวเองแทนที่จะส่งไฟล์ Gerber ไปต่างประเทศเพื่อการผลิต บางทีฉันอาจจะแก่แล้วและติดอยู่ในทางของฉัน โครงการนี้สะท้อนถึงอคตินี้ เนื่องจากฉันสร้างแผงวงจรของตัวเอง การออกแบบและไฟล์ Gerber ของฉันไม่เป็นไปตามมาตรฐานการผลิต ฉันจึงไม่ได้รวมไฟล์เหล่านี้ ผู้ที่ไม่ต้องการกัดและตกแต่งบอร์ดให้เสร็จสามารถเตรียมการออกแบบของตนเองและโพสต์ไฟล์ Gerber ในส่วนความคิดเห็น โปรดให้บอร์ดของคุณผลิตและทดสอบก่อนโพสต์
ขั้นตอนที่ 1: ภาพรวมองค์ประกอบฮาร์ดแวร์
อุปกรณ์นี้ใช้พลังงานจากแบตเตอรี่ AAA 4 ก้อนและควบคุมโดย Arduino Pro Mini 5V
เสียงกริ่ง/ลำโพงขนาดเล็กจะส่งเสียงเตือน
รีเลย์ขนาดเล็ก 5v ให้แรงดันไฟฟ้าควบคุมกับอุปกรณ์ภายนอก แหล่งที่มาของเอาต์พุตแรงดันควบคุมนี้ให้ความยืดหยุ่น
เครื่องเข้ารหัสแบบโรตารี่พร้อมปุ่มกดช่วยให้สามารถเลือกเมนูได้
จอแสดงผล OLED และสวิตช์เริ่ม/หยุดชั่วขณะทำให้อินเทอร์เฟซผู้ใช้สมบูรณ์
ฮาร์ดแวร์อิเล็กทรอนิกส์เพิ่มเติมประกอบด้วยสวิตช์เปิดปิด SPDT และแจ็คโทรศัพท์ขนาดเล็กเพื่อเชื่อมต่อกับอุปกรณ์ภายนอก
นอกจากนี้ยังมีไฟล์ที่จะช่วยคุณในโครงการนี้:
ไฟล์ STL สำหรับกรณีโครงการที่พิมพ์ 3 มิติ
ภาพหน้ากากทองแดงและบัดกรีสำหรับการแกะสลักและการตกแต่งแผงวงจรควบคุมและเครื่องเข้ารหัสแบบหมุน
ภาพแผนผังและบอร์ดเป็นข้อมูลอ้างอิงสำหรับผู้ที่ต้องการแก้ไขการออกแบบของฉัน
คุณอาจต้องการทบทวนคำแนะนำของฉันเกี่ยวกับการสร้างแผงวงจรสองด้านเป็นตัวอย่างของวิธีการผลิตแผงวงจร
ขั้นตอนที่ 2: ภาพรวมซอฟต์แวร์
นอกจากไฟล์ต้นทางของ Arduino แล้ว ยังมีข้อมูลเพิ่มเติมที่อาจเป็นประโยชน์..
ไลบรารีการควบคุมฮาร์ดแวร์จะใช้เมื่อพร้อมใช้งาน (ปุ่มดีบักซ์, การควบคุม OLED, การอ่านตัวเข้ารหัสแบบหมุน)
โปรแกรมใช้เครื่องสถานะ จำกัด อย่างง่าย (FSM) เพื่อควบคุมการเรียกใช้โค้ดเป็นคำสั่งสวิตช์ในฟังก์ชันลูป
มีการกำหนดคลาสเมนูเพื่อให้สามารถเลือกตัวเลือกที่แสดงบน OLED และการเลือกโดยใช้ตัวเข้ารหัสแบบหมุนได้
อินพุตถูกนำไปใช้โดยการทำโพลโดยตรง (ขับเคลื่อนโดยไม่ขัดจังหวะ) เนื่องจากไม่ใช่เวลาวิกฤติและทำให้โค้ดชัดเจนขึ้น
พิมพ์คำสั่งไปยัง Serial เพื่อช่วยในการติดตามการเรียกใช้โค้ดและการดีบัก
องค์ประกอบโครงสร้างโปรแกรมประเภทต่างๆ ได้แก่:
- แท็บโค้ดหลายแท็บเพื่อแยกฟังก์ชันและตัวแปรควบคุมฮาร์ดแวร์บางส่วน
- สลับคำสั่งเพื่อตั้งค่าสถานะ (FSM) และตัวแปรควบคุม
- คำจำกัดความของโครงสร้าง
- การแจงนับเพื่อให้สามารถกำหนดค่าสถานะเป็นข้อความได้
- #define คำจำกัดความของโปรเซสเซอร์ล่วงหน้าสำหรับพินฮาร์ดแวร์และค่ามาตรฐาน
ขั้นตอนที่ 3: รายการชิ้นส่วน
ฉันไม่แน่ใจว่าจะวางขั้นตอนนี้ไว้ที่ใดเนื่องจากสามารถทำได้เกือบทุกจุด ฉันใช้กล่องเคสที่พิมพ์ 3 มิติ คุณอาจไม่มีสิทธิ์เข้าถึงเครื่องพิมพ์ 3 มิติหรือต้องการตู้ประเภทอื่น เช่น กล่องอลูมิเนียม พลาสติกตัดด้วยเลเซอร์ ไม้แกะสลักด้วยมือ หรือประเภทอื่นๆ ที่คุณใช้สำหรับโครงการอิเล็กทรอนิกส์ของคุณ ฉันได้รวมไฟล์ STL สำหรับปุ่มบน ล่าง ตัวเข้ารหัสแบบหมุน และขอบจอ OLED แล้ว ใช้ไฟล์เหล่านี้และตัวแบ่งส่วนข้อมูลที่คุณเลือกเพื่อสร้างไฟล์ gcode สำหรับเครื่องพิมพ์ของคุณ
ฉันพิมพ์ชิ้นส่วนทั้งหมดโดยใช้เส้นพลาสติก PLA สีหนึ่งสำหรับด้านบนและด้านล่างของกล่อง และอีกสีหนึ่งตัดกันสำหรับปุ่มและกรอบ (ซึ่งติดอยู่ด้านบน) ฉันจะไม่ระบุการตั้งค่าตัวแบ่งส่วนข้อมูลทั้งหมดของฉัน แต่ใช้ Tri - เติมหกเหลี่ยมอย่างน้อย 35% เพื่ออนุญาตให้แตะสกรูมุมและการตั้งค่า "ไม่รองรับ" สำหรับการอ่านตัวอักษรที่มีรอยบาก ฉันพิมพ์กล่องโดยใช้ความสูงของเลเยอร์ "ปกติ" ของเครื่องพิมพ์
ขั้นตอนที่ 9: ออกแบบและเขียนโค้ด
ขั้นตอนนี้เป็นทางเลือก แต่แนะนำเพื่อความเข้าใจที่ดีขึ้น
ความพยายามส่วนใหญ่ในแง่ของชั่วโมงคือการเขียนโค้ด คุณสามารถข้ามขั้นตอนนี้ได้หากคุณใช้โปรแกรมที่แนบมาตาม -is อย่างไรก็ตาม ขอแนะนำให้คุณใช้เวลาทบทวนโค้ดเพื่อความเข้าใจที่ดีขึ้นหรือแก้ไขให้ตรงกับความต้องการของคุณ
ความคิดเห็นต่อไปนี้อาจเป็นประโยชน์ในการทำความเข้าใจกระบวนการนี้
- ความคิดเห็น- แสดงความคิดเห็นอย่างกว้างขวางในขณะที่คุณไป - ฉันมักจะเขียนความคิดเห็นก่อนที่จะเขียนโค้ด
- แบ่งและพิชิต - ใช้ฟังก์ชัน คลาส และโมดูล (แท็บ) ใช้คอมไพล์บ่อย (ตรวจสอบ) เพื่อตรวจสอบไวยากรณ์ ดีบัก - ใช้คำสั่งพิมพ์เพื่อตรวจสอบโฟลว์และค่าทดสอบและอินเทอร์เฟซฮาร์ดแวร์ อย่ากลัวที่จะจัดการกับปัญหาที่เกิดขึ้น เพราะไม่มีใครเขียนโค้ดที่ปราศจากข้อผิดพลาด!
- ค่าคงที่ - #define คำแนะนำก่อนคอมไพเลอร์กำหนดชื่อให้กับหมายเลขพิน คำจำกัดความตัวแปร Const พร้อมความคิดเห็นจะลดหรือกำจัดตัวเลข "วิเศษ" การใช้ค่าคงที่ที่จุดเริ่มต้นของโปรแกรมหรือฟังก์ชันช่วยให้สามารถเปลี่ยนพารามิเตอร์ได้โดยไม่ต้องเขียนโค้ดใหม่
- ไลบรารีที่กำหนดไว้ล่วงหน้า - การใช้ไลบรารีที่กำหนดไว้ล่วงหน้าช่วยลดภาระในการเขียนโปรแกรมและเวลาในการดีบัก
- Design Blocks - สร้างโดยใช้ฟังก์ชัน การแยกโค้ดในแท็บแยกกัน (โปรแกรมที่เกี่ยวข้อง &.hfiles) การแจงนับ คลาส และโครงสร้าง มุ่งความสนใจไปที่แต่ละรายการเพื่อทำความเข้าใจวิธีการทำงานที่เกี่ยวข้องกับโค้ดที่เหลือ
- State Machine (s) - นี่คือรูปแบบการเขียนโปรแกรมที่ทำงานได้ดีกับ Arduinos หรือโปรแกรมใดๆ ที่ใช้ในการควบคุมเอาต์พุตหรือตอบสนองอินพุต มีหลายรสชาติของเครื่องของรัฐ รหัสนี้ใช้เครื่องสถานะตามคำสั่งสวิตช์ในฟังก์ชันลูป แบบฟอร์มนี้เข้าใจง่ายและแก้ไขข้อบกพร่อง
- จอแสดงผลและเมนู - เอาต์พุต OLED นั้นสั้น แต่ให้ข้อเสนอแนะที่เพียงพอสำหรับผู้ใช้ทั่วไปและรองรับการเลือกตัวเลือก มันรวมเข้ากับเครื่องของรัฐได้ดี (เกือบทุกสถานะมีหน้าจอ OLED ที่เกี่ยวข้อง) คลาสเมนูมีประโยชน์ในการแยกรหัสเพื่อแสดงและเลือกตัวเลือกเมนู
โปรดอ่านโปรแกรมหลาย ๆ ครั้ง ช่วยในการใช้หนึ่งฟังก์ชันหรือส่วนในแต่ละครั้ง ฉันมักจะไม่เข้าใจรหัสที่ฉันเขียนเว้นแต่ฉันจะอ่านมันอย่างน้อยสองครั้ง!
ขั้นตอนที่ 10: ติดตั้งโปรแกรม
คัดลอกไฟล์ที่แนบมาไปยังคอมพิวเตอร์ของคุณ จากนั้นแตกไฟล์ลงในไดเร็กทอรี Sketches
เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณและดาวน์โหลดรหัสโปรแกรมในลักษณะปกติ เปิดมอนิเตอร์อนุกรม Arduino IDE เพื่อตรวจสอบว่าโปรแกรมกำลังทำงานและช่วยในการดีบัก
ขั้นตอนที่ 11: ประกอบตัวจับเวลา
เมื่อพิมพ์และทำความสะอาดส่วนบนและส่วนล่างของเคสแล้ว ส่วนประกอบต่างๆ ก็สามารถติดตั้งได้โดยใช้สกรูพลาสติกแบบแตะตัวเองเล็กๆ ขั้นแรกให้ใส่ที่ใส่แบตเตอรี่เข้าที่ด้านหลัง ชิ้นส่วนที่เหลือติดเข้ากับส่วนบนของตัวเครื่องตามลำดับต่อไปนี้:
- OLED และสายเคเบิล
- สวิตช์สตาร์ท/หยุดและสายไฟ
- เครื่องเข้ารหัสโรตารี่และสายเคเบิล
- ลำโพง / Buzzer และสายไฟ
- แจ็คควบคุมภายนอกและสายไฟ
- สวิตช์เปิด/ปิดแบบสไลด์และการเดินสายไฟ (ตรวจสอบการวางแนวอีกครั้งเพื่อให้เปิดอยู่ในทิศทางที่คุณต้องการ
หากคุณกำลังบัดกรีสายเคเบิลเข้ากับแผงวงจรโดยตรง ให้ทำสิ่งนี้หลังจากต่อชิ้นส่วนทั้งหมดเข้ากับตัวเครื่องแล้ว เพื่อลดการแตกหักของสายไฟ คุณต้องรอจนกว่าสายเคเบิลจะต่อเข้ากับเมนบอร์ดก่อนที่คุณจะขันสกรูบอร์ดนั้นไปทางด้านหลัง
หากคุณใช้หัวเข็มหมุดและขั้วต่อดูปองท์ ขั้นแรกให้ต่อเมนบอร์ดเข้ากับด้านหลังโดยใช้สกรู จากนั้นจึงเสียบส่วนประกอบต่างๆ เข้าไป ระวังเมื่อคุณเชื่อมต่อแบตเตอรี่กับเมนบอร์ดและสังเกตขั้วที่ถูกต้อง คุณควรตั้งค่าจัมเปอร์ควบคุมรีเลย์หรือสายไฟในเวลานี้ด้วย
ด้านล่างของตัวเครื่องเชื่อมต่อกับด้านบนโดยใช้สกรูหัวกลม 4-40 ตัว หนึ่งตัวในแต่ละมุม สี่รูที่ด้านบนควรถูกต๊าปด้วยการต๊าป 4/40 หรือถ้าคุณใช้เม็ดมีดเกลียว 4-40 คุณจะต้องเจาะรูเพื่อรับรู ต้องเจาะรู 4 รูสำหรับติดตั้งแผงวงจรหลักที่ด้านล่างด้วย แนบบอร์ดนี้เข้ากับตัวยึดแบตเตอรี่แบบสแน็ปอินและทำเครื่องหมายตำแหน่งของรู เจาะตามความเหมาะสมกับสกรูยึดของคุณ
ขั้นตอนที่ 12: การทดสอบการรวม
การทดสอบขั้นสุดท้าย (การรวมระบบ) ทำได้โดยลองใช้ตัวเลือกเมนูทั้งหมดและตรวจสอบว่าใช้งานได้กับฮาร์ดแวร์ตามที่ออกแบบไว้ สำหรับรหัสที่ฉันให้ไว้นั่นน่าจะเพียงพอแล้ว หากคุณเขียนโค้ดของคุณเองหรือแก้ไขเหมือง การทดสอบของคุณจะต้องครอบคลุมมากกว่านี้ ฉันไม่เชื่อว่าการเลือกเวลาทั้งหมดจำเป็นต้องใช้ แต่คุณต้องลองตัวเลือกการเตือนมาตรฐานทั้งหมด และตรวจสอบการเตือนการงีบหลับและการทำสมาธิทำงานตามที่ออกแบบไว้
ขั้นตอนที่ 13: ความคิดสุดท้าย
ขอแสดงความยินดีกับความสำเร็จของคุณฉันหวังว่าโครงการ ฉันแน่ใจว่าคุณประสบปัญหาระหว่างทางที่คุณต้องแก้ไข ฉันยังแน่ใจด้วยว่าคำแนะนำบางอย่างของฉันอาจสมบูรณ์หรือชัดเจนกว่านี้ โปรดแจ้งให้เราทราบในส่วนความคิดเห็นว่าผลลัพธ์ของคุณเป็นอย่างไร และให้คำแนะนำเกี่ยวกับวิธีการปรับปรุงคำแนะนำเหล่านี้
ขอขอบคุณที่สละเวลาดูและ/หรือสร้างโครงการนี้
แนะนำ:
PORTABLE MINI MULTI VOLTAGE PSU พร้อม USB, ไฟฉาย, เครื่องทดสอบส่วนประกอบและเครื่องชาร์จในตัว: 6 ขั้นตอน
PORTABLE MINI MULTI VOLTAGE PSU พร้อม USB, ไฟฉาย, เครื่องทดสอบส่วนประกอบและเครื่องชาร์จในตัว: ยินดีต้อนรับสู่คำสั่งแรกของฉัน! ด้วยคำแนะนำนี้คุณสามารถเปลี่ยนธนาคารพลังงานแสงอาทิตย์ที่หลบภัย / ราคาถูก (พร้อมชิ้นส่วนพิเศษบางส่วน) เป็นสิ่งที่มีประโยชน์ สิ่งที่คุณสามารถใช้ทุกวันเช่นฉัน เพราะมันยอดเยี่ยมมากที่จะใช้! ส่วนใหญ่ AV
Arduino Multi-track MIDI Loop Station: 6 ขั้นตอน
Arduino Multi-track MIDI Loop Station: ลูปสเตชันหรือลูปเปอร์เป็นเครื่องมือสำคัญสำหรับการเล่นในแบบเรียลไทม์ riffs เครื่องดนตรีของคุณ (ลูป) ไม่ได้ตั้งใจให้เป็นสื่อบันทึก แต่เป็นเครื่องมือในการสร้างแรงบันดาลใจโดยไม่วอกแวก (และในที่สุดก็แสดงสด…)Ther
Multi-channel Wifi Voltage & Current Meter: 11 ขั้นตอน (พร้อมรูปภาพ)
เครื่องวัดแรงดันและกระแสไฟ Wifi แบบหลายช่องสัญญาณ: เมื่อทำบอร์ดบอร์ด เรามักจะต้องตรวจสอบส่วนต่างๆ ของวงจรในคราวเดียว เพื่อหลีกเลี่ยงความเจ็บปวดที่ต้องติดโพรบมัลติมิเตอร์จากที่หนึ่งไปอีกที่หนึ่ง ฉันต้องการออกแบบมิเตอร์วัดแรงดันและกระแสแบบหลายช่องสัญญาณ บอร์ด Ina260
Arduino Multi Light Controller: 7 ขั้นตอน (พร้อมรูปภาพ)
Arduino Multi Light Controller: เพื่อนร่วมงานและศิลปิน Jim Hobbs กำลังวางแผนที่จะสร้างการติดตั้งอิสระสำหรับนิทรรศการที่เขากำลังรวบรวม การติดตั้งนี้จะประกอบด้วยชั้นวาง 8 ชั้นที่สร้างรูปทรงพาราโบลา ชั้นวาง 8 ชั้นแต่ละชั้นต้องมีหลอดไฟ 10 หลอด
Cyberpunk Multi-Sensor for Security.: 8 ขั้นตอน
Cyberpunk Multi-Sensor for Security.: ฉันตัดสินใจสร้างเซ็นเซอร์ความปลอดภัยหลายตัวหลังจากที่เราถูกปล้นขณะอาศัยอยู่ในป่าของเอกวาดอร์ ตอนนี้เราอาศัยอยู่ในเมืองอื่น แต่ฉันต้องการวิธีรับการแจ้งเตือนสำหรับกิจกรรมใดๆ ในบ้านของเรา ฉันเคยเห็นเซ็นเซอร์จำนวนมากเชื่อมต่อกันซึ่งไม่ใช่