สารบัญ:

Space Invaders Clock (ในราคาประหยัด!): 6 ขั้นตอน (พร้อมรูปภาพ)
Space Invaders Clock (ในราคาประหยัด!): 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Space Invaders Clock (ในราคาประหยัด!): 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Space Invaders Clock (ในราคาประหยัด!): 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Space Invaders Board Game - How to Play. With Stella & Tarrant 2024, กรกฎาคม
Anonim
Image
Image
รวบรวมอะไหล่
รวบรวมอะไหล่

เมื่อเร็ว ๆ นี้ฉันเห็นงานสร้างที่ยอดเยี่ยมโดย GeckoDiode และฉันต้องการสร้างมันเองทันที คำแนะนำคือนาฬิกาตั้งโต๊ะ Space Invaders และฉันแนะนำให้คุณดูหลังจากอ่านข้อความนี้

โปรเจ็กต์นี้สร้างขึ้นเกือบทั้งหมดจากชิ้นส่วนที่มาจาก Adafruit พร้อมกล่องพิมพ์ 3 มิติ และ Facia ที่ตัดด้วยเลเซอร์ การเพิ่มค่าใช้จ่ายในการสร้างจะมีราคาแพงมาก! (ประมาณ 100 ปอนด์ขึ้นไป) ปัญหาคือถ้าคุณไม่ได้เป็นเจ้าของเครื่องพิมพ์ 3 มิติ คุณต้องจ่ายเงินเพื่อพิมพ์แบบจำลองของคุณ หรือซื้อกล่องหุ้มที่น่าเกลียดจาก ebay ซึ่งมักจะมีขนาดเล็กเกินไป แคบเกินไป สั้นเกินไป หรือตรงกันข้าม

งานสร้างของฉันส่วนใหญ่ต้องใช้งบประมาณสำหรับงานอดิเรก และส่วนหุ้มมักจะเป็นส่วนที่แพงที่สุดเสมอ ดังนั้นฉันจึงตัดสินใจสร้างนาฬิกาแบบเดียวกันแต่ด้วยงบประมาณที่เหมาะสม

หากคุณชอบดูนาฬิกาแปลกๆ ลองดูนาฬิกา Steampunk Voltmeter Clock ซึ่งใช้วัสดุประกอบแบบเดียวกันสำหรับกล่องหุ้ม:-)

ขั้นตอนที่ 1: รวบรวมชิ้นส่วน

ในการทำโครงการนี้ คุณจะต้องมีสิ่งต่อไปนี้ โปรดจำไว้ว่า วัสดุสำหรับตู้จะมีของเหลือมากมายซึ่งคุณสามารถใช้ในโครงการอื่นได้ (ซึ่งทำให้ต้นทุนของงานสร้างในอนาคตถูกกว่า) ฉันได้อัปโหลดสิ่งที่คุณต้องการในรูปแบบ PDF หากคุณต้องการตรวจสอบราคา ฯลฯ บน ebay

เครื่องมือ (ฉันคิดว่าคุณคงมีอยู่แล้ว)

  • หัวแร้ง
  • ประสาน
  • ปั๊มบัดกรี (ถ้าคุณทำผิดพลาดและจำเป็นต้องถอดบัดกรี)
  • ปืนกาวร้อน
  • แท่งกาวร้อน
  • มีดหัตถกรรม (aka มีดสแตนลี่ย์)
  • ไม้บรรทัด / ตลับเมตร / เวอร์เนียคาลิปเปอร์
  • สว่านไร้สาย + ดอกสว่าน (1 มม. ถึง 13 มม.)
  • เครื่องมืออเนกประสงค์แบบโรตารี่พร้อมจานตัด (a.k.a. Dremel)
  • น้ำยาทำความสะอาดอย่างไอโซโพรพิล-แอลกอฮอล์ (โลชั่นหลังโกนหนวดราคาถูกก็ใช้ได้เช่นกัน)
  • หน้ากากนิรภัย (ใช้สำหรับพ่นสี)

อิเล็กทรอนิกส์ (ค่าอุปกรณ์อิเล็กทรอนิกส์ = £13.05)

บางส่วนของเหล่านี้ฉันมีฟรี ของเล่นอิเล็กทรอนิกส์เก่าๆ จะมีลำโพง Mylar ดีๆ อยู่ข้างใน ถ้าคุณแยกพวกมันออกจากกัน ในขณะที่คุณอยู่ที่นั่น คุณอาจได้รับถัง DC และปุ่มกดด้วย

  • สายดูปองท์ / สายจัมเปอร์ - £0.99
  • DS1307 โมดูลนาฬิกาตามเวลาจริง - 0.99 ปอนด์ (ฉันขอแนะนำให้ใช้ DS3231 แทนหากมี)
  • Arduino nano + สาย usb - £2.23
  • ลำโพง 8 โอห์ม Mylar - 0.99 ปอนด์
  • ปุ่มกด SPST ชั่วขณะ - 1.49 ปอนด์
  • ซ็อกเก็ตบาร์เรล DC 5.5 มม. - 1.26 ปอนด์
  • แหล่งจ่ายไฟ DC 5v, 0.5A - 2.83 ปอนด์สเตอลิงก์
  • MAX7219 จอแสดงผลดอทเมทริกซ์ - 3.76

สิ่งที่แนบมา (ค่าวัสดุหุ้ม = 17.19 ปอนด์)

  • ท่อระบายน้ำขนาด 60 มม. - 5.99 ปอนด์ (คุณจะเหลืออีกมากสำหรับโครงการอื่นๆ)
  • สีสเปรย์สีดำ - £ 4.85
  • พีวีซีสีดำ (โฟมบอร์ด) - £2.99
  • กาวซุปเปอร์ - £0.99
  • ฝาท้าย 60 มม. - 2.37 ปอนด์

ค่าใช้จ่ายทั้งหมด = 30.24 ปอนด์:-) …….. ณ วันนี้ เท่ากับ 38 USD สำหรับผู้อ่านต่างประเทศ

ฉันชอบทำงานกับท่อพีวีซีสี่เหลี่ยม เจาะ ตัด ระบายสีได้ง่าย และฉันใช้สำหรับนาฬิกา Steampunk ของฉัน

ขั้นตอนที่ 2: เตรียมท่อระบายน้ำของคุณ

เตรียมท่อระบายน้ำ
เตรียมท่อระบายน้ำ

ทำเครื่องหมายที่คุณต้องการวางสิ่งของ

มันง่ายมาก ฉันไม่ได้ใช้อะไรแฟนซี ก่อนอื่น ฉันตัดความยาว 2.5 ม. ให้เหลือขนาดที่เหมาะสมสำหรับม้านั่งที่บ้าน (ประมาณ 30 ซม.) ด้วยเลื่อยฉลุ ต่อมาฉันตัดมันด้วยเดรเมลเพื่อทำให้ขอบสวยและตรง จากนั้นฉันก็วางส่วนประกอบไว้บนพื้นผิวของท่อและใช้ตลาดถาวรเพื่อทำเครื่องหมายตำแหน่งที่ต้องการเจาะและตัด ฉันลากเส้นไปรอบๆ ด้านนอกของเมทริกซ์ LED และใช้เครื่องมือหลายตัวแบบโรตารีเพื่อตัดเป็นรูสี่เหลี่ยมเพื่อให้เข้าที่พอดี ฉันใช้คาลิปเปอร์ดิจิทัลเพื่อวัดเส้นผ่านศูนย์กลางของปุ่มกดและกระบอก DC เพื่อตัดรูขนาดที่ถูกต้องที่ด้านหลังและด้านบน

ตัดขอบ

ฉันมีแผ่นโฟมพีวีซีจำนวนมากวางอยู่รอบๆ จากโครงการก่อนหน้านี้ เหมาะอย่างยิ่งสำหรับการติดตั้งวงจรเข้ากับเปลือกหุ้ม ใช้ในการผสมอีพ็อกซี่เข้าด้วยกัน และทำชิ้นส่วนและบ็อบอื่นๆ นำชิ้นส่วนขนาด A4 หรือ A5 แล้วตัดขอบหรือกรอบสี่เหลี่ยมขนาด 5 มม. เพื่อใส่กรอบเมทริกซ์ LED สิ่งนี้จะซ่อนจุดสิ้นสุดที่ว่องไวที่คุณทำเมื่อตัดรูสี่เหลี่ยมสำหรับเมทริกซ์ สำหรับสิ่งนี้ ฉันวาดเทมเพลตขนาดเล็กบน Inkscape แล้วพิมพ์ออกมา (แนบไฟล์ SVG) จากนั้นฉันก็ติดเทปกาวลงบนแผ่นโฟมแล้วใช้มีดตัดรอบๆ อย่างระมัดระวัง กว่าจะถูกมันยาก แนะนำให้ตัดด้านในก่อนแล้วค่อยตัดด้านนอก

ทาสีทุกอย่าง

เมื่อเจาะและตัดรูทั้งหมดแล้ว ให้เอาขอบที่เป็นเสี้ยนออก ทำความสะอาดพื้นผิวด้วยทิชชู่เปียกแอลกอฮอล์เพื่อขจัดฝุ่นหรือมลภาวะ (หรือโลชั่นหลังโกนหนวดราคาถูกหากคุณไม่มี IPA) พยายามฉีดพ่นในบริเวณที่อากาศถ่ายเทได้ดีและใช้หน้ากากหากเป็นไปได้ ฉันทำสิ่งนี้ข้างนอกด้วยกระดาษแข็งบนพื้น แต่ไม่เหมาะ แม้แต่ลมพัดเบาๆ ก็อาจทำให้สีลอยกลับมาที่ใบหน้าของคุณได้ ระมัดระวังและสวมอุปกรณ์ป้องกันหากเป็นไปได้

ฉีดสเปรย์ที่ท่อ ขอบตัวเรือน และฝาท้ายเพื่อให้เป็นสีดำประเภทเดียวกัน จากนั้นปล่อยให้แห้งสองสามชั่วโมง

ขั้นตอนที่ 3: ตั้งโปรแกรม Arduino

โปรแกรม Arduino
โปรแกรม Arduino

ข้อมูลบางอย่างเกี่ยวกับรหัส

ให้เครดิตกับ GeckoDiode ในขณะที่ฉันใช้รหัสของเขาและแก้ไขให้ทำงานกับชิป MAX7219 รุ่น Adafruit ใช้บัส I2C และ MAX ใช้บัส SPI สำหรับสิ่งนี้ ฉันใช้ไลบรารี MaxMatrix ซึ่งฉันดาวน์โหลดและติดตั้งลงใน Arduino IDE หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ MaxMatrix และเมทริกซ์ LED ทำงานอย่างไรในหลักการสำคัญ มีบทช่วยสอนสั้น ๆ เกี่ยวกับ HowToMechatronics.com เมทริกซ์ LED ประกอบด้วยสีเดียวของ LED แทนที่จะมีจอแสดงผลหลายสี

ความผิดหวังอย่างหนึ่งที่ฉันมีคือไม่มีคำจำกัดความที่ชัดเจนว่าฟังก์ชันสำหรับไลบรารีคืออะไรและมีข้อโต้แย้งใดบ้างที่ต้องส่งผ่านเข้าไป โชคดีที่ฉันสามารถค้นหาสิ่งที่ทำโดยการลองผิดลองถูก และในที่สุดก็ไม่ยากเกินไปที่จะให้มันทำงานอย่างถูกต้อง สิ่งแรกที่ต้องทำความเข้าใจคือ คุณต้องกำหนดจำนวนโมดูล 8x8 ที่อยู่ในเมทริกซ์ของคุณ ในรหัสของฉันสิ่งนี้ถูกเก็บไว้ในจำนวนเต็มที่เรียกว่า "โมดูล" ดังนี้:

"โมดูล int = 4;"

นี่คือ NUMBER ของโมดูล 8x8 ที่คุณเชื่อมโยงเข้าด้วยกันในจอแสดงผลของคุณ ไม่ใช่จำนวน LED หรือพินที่คุณใช้ส่งข้อมูล สิ่งต่อไปที่ต้องจำคือถ้า "สไปรท์" ของคุณหรืออะไรก็ตามที่ครอบคลุมเมทริกซ์ทั้งสี่ ไบต์อาร์เรย์จะต้องกำหนดดังนี้:

"ไบต์ text_start_bmp = {32, 8, …*ข้อมูลบางไบต์*…};"

ตัวเลขระบุจำนวนแถวและคอลัมน์ในเมทริกซ์ ในโอกาสนี้ ไบต์ที่ชื่อ "text_start_bmp" จะแสดงมากกว่า 32 คอลัมน์และ 8 แถว ตัวเลขจะแสดงบนเมทริกซ์ขนาด 8x8 เดียว ดังนั้นหมายเลขนาทีที่ 10 จะมีลักษณะดังนี้:

"byte minutes_ten_bmp = {8, 8, …*ข้อมูลบางไบต์*…};"

ผู้บุกรุกครอบคลุมสองเมทริกซ์ดังนั้นไบต์จะได้รับ 16, 8 ในข้อมูลไบต์

อีกสิ่งหนึ่งที่ดึงดูดใจฉันคือการวางตำแหน่งของข้อมูลสไปรท์ คุณสามารถขอให้ Arduino แสดงสไปรต์ในตำแหน่ง X/Y อื่นบนเมทริกซ์จากตำแหน่งเริ่มต้นเริ่มต้น รหัสมีลักษณะดังนี้สำหรับศูนย์นาที:

"matrix.writeSprite(8, 0, minutes_zero_bmp);"

ตัวเลขหนึ่งคือการปรับค่า X และอีกค่าหนึ่งคือ Y จำไม่ได้ว่าอันไหนเป็นตอนนี้ แต่ถ้าคุณต้องการดันสไปรท์ขึ้นหรือลง 1 แถวหรือคอลัมน์ คุณเพียงแค่เพิ่มตัวเลขบวกหรือลบ ง่ายพอสำหรับเมทริกซ์ 8x8 แต่เมื่อสไปรท์ของคุณครอบคลุมมากกว่าหนึ่งเมทริกซ์ คุณต้องตั้งค่าตำแหน่งเริ่มต้นตามลำดับ สไปรท์ "POP" แสดงอยู่ด้านล่าง:

"matrix.writeSprite(16, 0, invader_pop_bmp);"

สังเกตว่าตำแหน่งเจ้าบ้านเป็น 16 ไม่ใช่ 8 อย่างไร? ในที่นี้โค้ดระบุว่าสไปรต์แสดงจากซ้ายไปขวาจากแถว/คอลัมน์ตำแหน่ง 16 โดยถือว่าจอแสดงผล 8x8 สองจอเป็นจอแสดงผล 16x8 จอเดียว แม้ว่าจะมี 4 จอก็ตาม! ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องนึกถึงจำนวนการแสดงที่สไปรท์จะแสดงข้ามและปรับขนาดอาร์เรย์ไบต์ของสไปรท์แต่ละตัวตามลำดับ มิฉะนั้นคุณจะมีสไปรท์ที่น่าสนใจมาก!

DS1307 RTC

แม้ว่า DS1307 จะทำงานได้ดีกับไลบรารี Adafruit RTClib.h แต่คุณไม่สามารถตั้งเวลาด้วยตนเองซึ่งเป็นเพียงความเจ็บปวดได้ ฉันเพิ่งไปกับสิ่งนี้เพราะมันหมายถึงการเปลี่ยนรหัสน้อยลง DS1307 ตั้งเวลาโดยใช้เวลาและวันที่รวบรวมรหัสจากเวลาในคอมพิวเตอร์ของคุณ ให้เรียนรู้วิธีใช้ไลบรารี DS3231 และตั้งค่าล่วงหน้าหนึ่งหรือสองนาทีในอนาคต นอกจากนี้ยังมี "ดริฟท์" น้อยลงเพื่อให้เวลาดีขึ้นเมื่อเวลาผ่านไป ทั้งสองโมดูลใช้บัส I2C และฉันเชื่อว่า DS3231 สามารถใช้กับ RTClib.h ได้ หากคุณต้องการใช้งานต่อไป

อัพโหลดโค้ด

เมื่อคุณพอใจกับโค้ดที่อัปโหลดไปยัง Arduino ฉันได้แนบร่าง Arduino ของฉันเพื่อให้คุณพิจารณา

ขั้นตอนที่ 4: การประกอบอุปกรณ์อิเล็กทรอนิกส์

การประกอบอุปกรณ์อิเล็กทรอนิกส์
การประกอบอุปกรณ์อิเล็กทรอนิกส์

ขณะอัปโหลดโค้ด ฉันขอแนะนำให้มีอุปกรณ์อิเล็กทรอนิกส์ประกอบกับสายดูปองต์/จัมเปอร์บนเขียงหั่นขนมก่อน ดังนั้นเมื่อคุณอัปโหลดโค้ด คุณจะรู้ว่าทุกอย่างทำงานได้ตามที่ตั้งใจไว้ วิธีนี้ช่วยให้คุณขจัดปัญหาใดๆ เกี่ยวกับการแสดงสไปรท์ ฯลฯ ก่อนที่คุณจะเริ่มติดกาวและติด ในรหัสของฉัน คุณจะเห็นว่าฉันใช้หมุดดิจิทัล 4, 5, 6, 7, 9 แต่คุณสามารถเปลี่ยนได้หากจำเป็น คุณอาจจำเป็นต้องบัดกรีสายเคเบิลเข้ากับปุ่ม แจ็ค DC และลำโพง แต่ส่วนใหญ่ควรเป็นตัวเชื่อมต่อแบบกดพอดี

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

ฉันทำให้ปุ่มกดทำงานเมื่อดึงพิน "mainButton" ต่ำ ฉันพบว่า Arduino รับรู้ถึงการกดปุ่มผิด ๆ เมื่ออุปกรณ์อิเล็กทรอนิกส์แบบลอยตกลงมา การใช้ตัวต้านทานแบบดึงลง 10K บนปุ่มกดและการตั้งค่าพินเป็น "INPUT_PULLUP" ช่วยแก้ปัญหานั้นให้ฉันได้

สิ่งที่แนบมาคือแผนผังใน PDF และ-p.webp

ขั้นตอนที่ 5: ติดตั้งอุปกรณ์อิเล็กทรอนิกส์และปิด

ติดตั้งอุปกรณ์อิเล็กทรอนิกส์และระยะใกล้
ติดตั้งอุปกรณ์อิเล็กทรอนิกส์และระยะใกล้
ติดตั้งอุปกรณ์อิเล็กทรอนิกส์และระยะใกล้
ติดตั้งอุปกรณ์อิเล็กทรอนิกส์และระยะใกล้

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

ขั้นตอนที่ 6: สนุก

สนุก
สนุก
สนุก
สนุก

โดยรวมแล้วฉันพอใจกับผลลัพธ์ที่ได้ เพราะมันเป็นแค่ท่อรางน้ำและสีสเปรย์ ฉันหวังว่าคุณจะชอบมันและแจ้งให้เราทราบหากคุณสามารถนึกถึงการอัปเกรดเจ๋ง ๆ ที่สามารถเพิ่มได้ ฉันสนใจที่จะรู้ว่ามีใครทำให้ราคานี้ถูกลงหรือมีวิธีอื่นที่ประหยัดกว่าในการทำตู้ที่ฉันสามารถลองทำในโปรเจ็กต์ถัดไป

แนะนำ: