สารบัญ:
- ขั้นตอนที่ 1: พื้นหลัง
- ขั้นตอนที่ 2: ส่วนประกอบฮาร์ดแวร์หลัก
- ขั้นตอนที่ 3: นำทุกอย่างมารวมกัน
- ขั้นตอนที่ 4: PCB แบบกำหนดเอง
- ขั้นตอนที่ 5: สิ่งที่แนบมา
- ขั้นตอนที่ 6: การตั้งค่า Raspberry Pi
- ขั้นตอนที่ 7: ซอฟต์แวร์
- ขั้นตอนที่ 8: อะไรต่อไป
วีดีโอ: A Back to the Future Clock: 8 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
โครงการนี้เริ่มต้นชีวิตเป็นนาฬิกาปลุกสำหรับลูกชายของฉัน ฉันทำให้มันดูเหมือนวงจรเวลาจาก Back to the Future จอแสดงผลสามารถแสดงเวลาในรูปแบบต่างๆ ได้ รวมถึงการแสดงเวลาจากภาพยนตร์ด้วย สามารถกำหนดค่าได้โดยใช้ปุ่มที่ด้านบนของตัวเครื่อง แต่ยังผ่านทางหน้าเว็บที่ให้บริการโดย Raspberry Pi Zero ภายใน ในโหมดการแสดงผลโหมดใดโหมดหนึ่ง จะแสดงสภาพอากาศในท้องถิ่น (จากสถานีตรวจอากาศที่ขับเคลื่อนโดย Arduino ของฉัน) ตลอดจนการพยากรณ์และการเตือนความจำรายวันใดๆ ที่กำหนดค่าผ่านเว็บอินเทอร์เฟซ นอกจากนี้ยังมีเสียงด้วย DAC และจะสตรีมเพลงโดยใช้โปรโตคอล AirPlay เสียงปลุกสามารถเป็นไฟล์เสียงใดก็ได้ที่คุณเลือก หน้าจอจะหรี่และเพิ่มความสว่างโดยอัตโนมัติตามเวลาที่กำหนดของวัน (เช่น รุ่งอรุณและค่ำ)
ขั้นตอนที่ 1: พื้นหลัง
ปีที่แล้วฉันกำลังค้นหาโครงการ Arduino ใหม่ที่เพิ่งสร้างสถานีตรวจอากาศที่บ้านเสร็จเป็นครั้งแรก ลูกชายวัย 11 ขวบของฉันเพิ่งดูหนังเรื่อง Back to the Future เป็นครั้งแรก ฉันเลยคิดว่ามันคงจะสนุกดีถ้าสร้างนาฬิกาปลุกให้เขาดูเหมือนวงจรเวลาใน Delorean สำหรับวันเกิดของเขา นี่ไม่ใช่แนวคิดใหม่ มีโครงการที่คล้ายคลึงกันอยู่สองสามโครงการ (ตัวอย่างเช่น โครงการนี้) ดังนั้นฉันคิดว่ามันจะเป็นโครงการที่ดีที่จะเรียนรู้จากผู้อื่นและรับทักษะใหม่ ๆ
เวอร์ชันแรกทำงานได้ดี (ยังไม่พร้อมสำหรับวันเกิดของเขา: ฉันทำได้ในวันคริสต์มาส) แต่ฉันค่อนข้างทะเยอทะยานในสิ่งที่ฉันต้องการให้ทำ และพบว่าสเก็ตช์ของฉันยังทำงานอยู่ในขีดจำกัดหน่วยความจำของ Arduino ฉันยังมีโมดูลฮาร์ดแวร์ภายนอกขนาดเล็กหลายตัว (WiFi, เครื่องเล่น MP3, เครื่องขยายเสียง, RTC ฯลฯ) ดังนั้นมันจึงค่อนข้างเทอะทะเล็กน้อย ในท้ายที่สุด ฉันตัดสินใจย้ายไปที่แพลตฟอร์ม Raspberry Pi ซึ่งทำให้ฮาร์ดแวร์ง่ายขึ้น และอนุญาตให้ฉันบรรจุฟังก์ชันและคุณสมบัติอีกมากมาย
ขั้นตอนที่ 2: ส่วนประกอบฮาร์ดแวร์หลัก
ภายในกล่อง
นี่คือส่วนประกอบอิเล็กทรอนิกส์ที่ฉันใช้ ส่วนใหญ่เป็นแหล่งที่มาจาก Core Electronics ในออสเตรเลีย แต่แน่นอนว่ามีจำหน่ายที่อื่นเช่นกัน:
- 4 x Quad ตัวเลขและจอแสดงผล -สีเหลือง-สีเขียว
- Raspberry Pi Zero W
- Pimoroni pHAT DAC สำหรับ Raspberry Pi Zero
- แอมป์เสียง (PAM8403 IC)
- Raspberry Pi 3+ พาวเวอร์ซัพพลาย
- สายจัมเปอร์ 4 เส้น - 0.1", 5 ขา, 12"
- สายแพ 40 พิน (2 x 20)
- Raspberry Pi GPIO หัวชาย
- Raspberry Pi รุ่น B - GPIO Shrouded Header (2X20)
- GPIO Stacking Header สำหรับ Pi A+/B+/PI 2/PI 3 - 2X20. ยาวพิเศษ
- หัวต่อตัวผู้ 4 x 5 ขา
- ลำโพง 3W ขนาดเล็ก 2 ตัว
- 2 x สายโคแอกเชียลสำหรับการเชื่อมต่อสัญญาณเสียงอะนาล็อก DAC กับ Amp
- Veraboard หรือ PCB แบบกำหนดเองเพื่อจัดการ Rpi กับแอมป์, LED, ปุ่ม
- 5 x สวิตช์ปุ่มกดชั่วขณะ
- เทอร์มินัลบล็อกสกรูแบบติดตั้งบน PCB 4 x 2 ทาง
กล่อง
- เศษไม้ MDF สกรูและสลักเกลียวเพื่อทำ 'แชสซี'
- เพอร์เพ็กซ์ย้อมสีเขียว ซัพพลายเออร์ในท้องถิ่น
- Styrene, กาวจำลอง, สีสเปรย์ (สีอลูมิเนียม) จากร้านงานอดิเรกในท้องถิ่น
-
สติ๊กเกอร์ (ไฟล์ตามคำขอ - พิมพ์โดย Redbubble)
ขั้นตอนที่ 3: นำทุกอย่างมารวมกัน
จอแสดงผล LED สำหรับนาฬิกาประกอบด้วยการแสดงตัวเลขและตัวอักษรขนาด 16x14 ส่วน โชคดีที่มีจำนวนอักขระเท่ากันกับวงจรย้อนเวลาสู่อนาคต แม้ว่าอักขระสามตัวแรกต้องเป็นตัวอักษรและตัวเลขเท่านั้น และส่วนที่เหลืออาจเป็นการแสดงตัวเลข 7 ส่วนเพื่อเลียนแบบพร็อพภาพยนตร์ ฉันตัดสินใจสร้างตัวอักษรและตัวเลขทั้งหมดเพื่อให้มีความยืดหยุ่นในสิ่งที่สามารถแสดงได้และเพื่อให้พวกเขาทั้งหมดดู เหมือนกัน. กระเป๋าเป้สะพายหลังรูปสี่เหลี่ยมของ Adafruit เป็นโซลูชันที่ยอดเยี่ยมและสามารถทำงานบนบัส I2C ของ Raspberry Pi ได้ ข้อมูลเพิ่มเติมเกี่ยวกับหน่วยเหล่านี้และวิธีการวางสายสามารถดูได้ที่นี่ในเว็บไซต์ Adafruit สิ่งที่ไม่ได้มาตรฐานเพียงเล็กน้อยที่ฉันต้องทำคือเปลี่ยนที่อยู่ของทั้งสามแห่งเพื่อให้กระเป๋าเป้แต่ละใบมีเอกลักษณ์เฉพาะตัว
ในการเล่นเสียง (ในระบบสเตอริโอ) ฉันได้รวม Pimoroni pHAT DAC และเครื่องขยายเสียงสเตอริโอ 2 x 3W ที่ใช้ชิป PAM8403 pHAT DAC นั้นง่ายต่อการเชื่อมต่อกับ Pi ฉันใส่ส่วนหัวของตัวผู้ 2 x 20 พินบน Pi และส่วนหัวสแต็ค GPIO บน DAC เพื่อให้สามารถเสียบเข้าด้วยกันที่ด้านบนของอีกอัน หมุดส่วนหัวของตัวผู้จะทะลุผ่านด้านบนของ DAC ทำให้ฉันสามารถใช้สายริบบิ้นที่มีขั้วต่อตัวเมีย ขั้นแรกไปที่ Raspberry Pi breakout สำหรับการทดสอบเขียงหั่นขนม แต่ท้ายที่สุดแล้วจะเป็นส่วนหัวที่หุ้มไว้บน PCB แบบกำหนดเอง
สำหรับแอมพลิฟายเออร์เสียง มีตัวเลือกมากมาย (รวมถึงเพียงแค่รับชิปและประกอบของคุณเอง) อันนี้มีตัวเลือกในการปิดเสียงเอาต์พุตโดยเพียงแค่เปลี่ยนสถานะของหมุดตัวใดตัวหนึ่ง (เปิดสูง ปิดต่ำ) และฉันต่อสายเพื่อให้สามารถควบคุมได้จาก Pi ในความพยายามครั้งแรกของฉันที่จะวางสายนี้ ฉันพบเสียงพื้นหลังค่อนข้างมากเมื่อเปิดเสียง หลังจากเล่นกราวด์มาหลายครั้ง ในที่สุดฉันก็ลองย้ายแรงดันไฟฟ้าอินพุตจาก 5V ของ Pi เป็น 3.3V และนั่นก็แก้ไขได้ ฉันเดาว่ามีสัญญาณรบกวนค่อนข้างมากที่เกิดจากสัญญาณดิจิตอลต่างๆ ที่บินไปมา แต่ดูเหมือนว่าแหล่งจ่ายไฟ 3.3V จะถูกแยกออกมาต่างหาก
การเชื่อมต่ออื่นๆ ได้แก่ เสียงอะนาล็อกจาก DAC ไปยังแอมพลิฟายเออร์ (ฉันใช้สายโคแอกเซียลที่นี่เพื่อช่วยจัดการการรับเสียง) และส่งสัญญาณเสียงไปยังลำโพง 3W ขนาดเล็กคู่หนึ่งที่พอดีกับตัวเครื่อง นอกจากนี้ยังมีการเชื่อมต่อ GPIO สำหรับสวิตช์ชั่วขณะสี่ตัวที่ด้านบนของกล่อง และฉันได้ต่อปุ่มชั่วขณะเข้ากับพิน "RUN" ที่ฮาร์ดรีเซ็ต (ดูส่วนการเชื่อมต่อเพิ่มเติมในหน้านี้) ปุ่มรีเซ็ตถูกติดตั้งให้มองไม่เห็นที่ด้านหลังของตัวเครื่อง นี่คือไดอะแกรมแสดงการเชื่อมต่อ:
ขั้นตอนที่ 4: PCB แบบกำหนดเอง
แม้ว่าจะไม่มีอะไรซับซ้อนเกินไปเกี่ยวกับวงจร แต่ก็มีการเดินสายเล็กน้อยและเขียงหั่นขนมอาจดูเหมือนปาเก็ตตี้ได้อย่างรวดเร็ว ดังนั้นฉันจึงออกแบบ PCB เพื่อให้ทุกอย่างอยู่ภายใต้การควบคุม มันเป็นกระดานแบบโฮมเมดและฉันมีเพื่อนมาช่วยทำ หลังจากที่ทำและต่อสายแล้ว ฉันรู้ว่าฉันลืมใส่การเชื่อมต่อสำหรับแผงขั้วต่อสำหรับเสียง และต่อมาได้เปลี่ยนแปลงเพื่อย้ายแหล่งจ่ายแอมป์สำหรับเสียงจาก 5V เป็น 3.3V ดังนั้นจึงไม่เหมาะและฉันต้องแก้ไข Veroboard บางตัวเพื่ออนุญาตการเชื่อมต่อเสียง นอกจากนี้ พินเอาต์ของบอร์ดแอมป์เสียงอยู่ที่การแยกที่ไม่ได้มาตรฐาน (แม้จะแตกต่างกันไปตามพิน) ดังนั้นการเชื่อมต่อกับ PCB หลักจึงค่อนข้างแย่ด้วยสายเชื่อมต่อสั้น ~ 1 ซม. 11 เส้น
ถ้าฉันทำบอร์ดอื่น ฉันจะรวมการดัดแปลงทั้งหมดเหล่านี้ไว้ด้วย และเปลี่ยนตัวเชื่อมต่อสำหรับปุ่มทั้งสี่ให้เป็นสิ่งที่ดีกว่าเล็กน้อย DAC และ Pi จะวางซ้อนกันอยู่ด้านบน ดังนั้นจึงไม่จำเป็นต้องใช้สายแพ แผนภาพด้านบนแสดงให้เห็นว่าอาจมีลักษณะอย่างไร
ขั้นตอนที่ 5: สิ่งที่แนบมา
ฉันต้องการสร้างกล่องหุ้มที่ดูเหมือนวงจรเวลาภาพยนตร์หนึ่งแถว จอแสดงผล LED สามแถวอาจมากเกินไปสำหรับนาฬิกาปลุกและจะทำให้ต้นทุนเพิ่มขึ้นอย่างมาก ฉันเคยคิดจะทำโครงตู้จากอะลูมิเนียมแต่ฉันไม่มีทักษะในด้านนั้นเลย ฉันเคยสร้างโมเดลพลาสติกมาสองสามแบบในชีวิตแล้ว และมีประสบการณ์ด้านงานไม้มาก่อน เลยตัดสินใจทำกรอบโดยใช้ MDF เพื่อยึด LED และลำโพง และแก้ไข Perspex ที่ด้านหน้า จากนั้นปิดด้วยสไตรีน 5 ด้าน กล่องที่มีกรอบด้านหน้า ทาสีด้วยสีสเปรย์อะลูมิเนียมเมทัลลิก พลาสติกและสีได้มาจากร้านโมเดลในท้องถิ่น ฉันตรวจดูฉลากบนพร็อพภาพยนตร์อย่างละเอียด และพยายามคัดลอกสี ประเภทฟอนต์ และขนาดอย่างเต็มที่ ฉันใช้ Photoshop เพื่อสร้างฉลากและพิมพ์เป็นสติกเกอร์จาก Redbubble
ภาพด้านบนแสดง:
- ด้านหน้าของแชสซี MDF กระเป๋าเป้สะพายหลัง LED 4 ดวงติดตั้งที่ด้านหน้าด้วยสีเขียวอมเขียว
- ภายในกล่อง. เป้สะพายหลังที่ติดตั้งและจัดเรียงทั้งหมด Raspberry Pi และ PCB แบบกำหนดเองในลำโพงที่ด้านใดด้านหนึ่ง
- ติดตั้งสายไฟและเปลือกนอกพร้อมที่จะไปต่อ มันเป็นบิตบีบ!
ขั้นตอนที่ 6: การตั้งค่า Raspberry Pi
ฉันมีปัญหาความเข้ากันได้บางอย่างกับ Raspbian Stretch (ซึ่งอาจแก้ไขได้หากฉันยืนยัน) แต่ Jessie ทำงานได้ดี ดังนั้นฉันจึงตัดสินใจใช้
ฉันตั้งค่า Pi เป็นยูนิตหัวขาดพร้อมการเข้าถึง VNC และ SSH สิ่งนี้สามารถทำได้โดยไม่ต้องเสียบแป้นพิมพ์หรือจอภาพเลย แต่ฉันเพิ่งยืมทีวีมาและหยิบคีย์บอร์ดขึ้นมา ตั้งแต่นั้นมา ฉันค่อนข้างใช้ VNC ตั้งแต่นั้นมา
รหัสนาฬิกาของฉันใช้ Python 2.7.9 และอาศัยไลบรารีบางส่วนตามรายการด้านล่าง นอกจากนี้ ฉันใช้เว็บเซิร์ฟเวอร์ Flask และ MQTT สำหรับการควบคุมระยะไกลและ Shairplay สำหรับการสตรีมเพลง ฉันเพิ่งทำตามบันทึกการติดตั้งออนไลน์สำหรับสิ่งเหล่านี้ทั้งหมดและไม่มีปัญหาเลย นี่คือไลบรารีหลามและแพ็คเกจอื่น ๆ ฯลฯ ที่ฉันต้องติดตั้งพร้อมลิงก์ไปยังบันทึกการติดตั้งหรือเพียงแค่คำสั่งที่คุณต้องเรียกใช้เพื่อรับมัน:
ห้องสมุดไพทอน
- Adafruit_LED_Backpack
- Rpi. GPIO (apt-get ติดตั้ง python-rpi.gpio)
- alsaaudio
- paho.mqtt.client (pip ติดตั้ง paho-mqtt)
- ขวด (apt-get ติดตั้ง python-flask)
แพ็คเกจอื่นๆ ฯลฯ
- ยุง (apt-get ติดตั้งยุง)
- shairport
- เว็บไซต์ Pimoroni มีเอกสารที่ดีเกี่ยวกับการตั้งค่า DAC ดังนั้นฉันจึงดำเนินการตามนั้น
ขั้นตอนที่ 7: ซอฟต์แวร์
รหัสนาฬิกาเขียนด้วยภาษา Python และใช้เธรดเพื่อเล่นเสียงเตือนและเสียงบี๊บเป็นครั้งคราวในพื้นหลังโดยไม่บล็อกการอัปเดตการแสดงผล ฉันใช้ไลบรารี ConfigParser และไฟล์กำหนดค่าที่เก็บไว้นั้นอ่านและเขียนด้วยรหัสนาฬิกา เช่นเดียวกับเว็บแอป Flask ดังนั้นเมื่อใดก็ตามที่การกำหนดค่าถูกเปลี่ยนผ่านเว็บอินเทอร์เฟซหรือนาฬิกา จะถูกซิงโครไนซ์ ซอฟต์แวร์นาฬิกายังมีนายหน้า MQTT เพื่อให้สามารถควบคุมโหมดการแสดงผลและการปิดเสียงได้จากระยะไกล ในที่สุดแรงจูงใจที่ซ่อนเร้นของฉันคือการเขียนแอป iOS สำหรับรีโมตคอนโทรล แต่เว็บอินเทอร์เฟซทำงานได้ดีพอสำหรับตอนนี้
ภาพแรกด้านบนแสดงให้เห็นว่านาฬิกามีลักษณะอย่างไรในโหมดการแสดงผลต่างๆ และมีวิดีโอสั้นที่แสดงในโหมดเลื่อน
แม้ว่าโค้ดจะดูไม่สวย แต่ก็ดูดีและเสถียร ฉันยินดีที่จะส่งให้ใครก็ตามที่ร้องขอและจะเผยแพร่ทางออนไลน์เมื่อมีการจัดระเบียบและแสดงความคิดเห็นได้ดีขึ้น
เว็บแอป
รูปภาพถัดไปแสดงหน้าตาของเว็บอินเตอร์เฟสกับนาฬิกา นอกจากนี้ยังมีการกำหนดค่าและหน้าควบคุม ซึ่งช่วยให้เล่นกับนาฬิกาได้ง่ายขึ้นโดยไม่ต้องกดปุ่มมาก:-)
ขั้นตอนที่ 8: อะไรต่อไป
มีตัวถอดรหัสข้อมูลเมตาของ Python Shareport ดังนั้นฉันคิดว่าฉันจะเพิ่มรหัสเพื่อแสดงข้อมูลเช่นชื่อและศิลปินเมื่อมีการเล่นเพลง นอกจากนี้ยังจะคำนวณเวลาพระอาทิตย์ขึ้นและตกได้ง่ายอีกด้วย เพื่อให้หน้าจอสว่างขึ้นและหรี่ลงโดยอัตโนมัติ แทนที่จะตั้งค่าด้วยตนเอง บางทีการเพิ่มคุณสมบัติวิทยุอินเทอร์เน็ตก็สนุกเช่นกัน การแสดงการเลื่อนสามารถกำหนดค่าได้มากขึ้น
แนะนำ:
Kissing the Frog V2.0 - Back Horn Bluetooth Speaker พิมพ์ได้เต็มที่: 5 ขั้นตอน (พร้อมรูปภาพ)
Kissing the Frog V2.0 - Back Horn Bluetooth Speaker พิมพ์ได้อย่างเต็มที่: บทนำ ให้ฉันเริ่มต้นด้วยพื้นหลังเล็กน้อย ลำโพงฮอร์นแบบโหลดกลับคืออะไร? คิดว่ามันเป็นโทรโข่งหรือแผ่นเสียงกลับด้าน โทรโข่ง (โดยทั่วไปคือลำโพงแบบฮอร์นด้านหน้า) ใช้ฮอร์นอะคูสติกเพื่อเพิ่มประสิทธิภาพโดยรวมของ
Back to the Future Antigravity Water Drop - Seeeduino Lotus: 5 ขั้นตอน
Back to the Future Antigravity Water Drop - Seeeduino Lotus: StoryTime เป็นเหมือนกระแสน้ำที่พัดพาผู้คนไปข้างหน้า มีช่วงเวลาใดที่คุณต้องการให้เวลาหยุดนิ่งหรือถอยหลัง? มองดูหยดน้ำอย่างใกล้ชิด จะหยดหรือจะไหล ผลงานนี้ได้รับแรงบันดาลใจจากปรากฏการณ์การมองเห็น
3D Printed Back to the Future TIME Circuit Clock: 71 ขั้นตอน (พร้อมรูปภาพ)
3D Printed Back to the Future TIME Circuit Clock: ไฟล์ LED.stl ด้านหน้าซ้ายไม่ถูกต้องและอัปเดตแล้ว นาฬิกาวงจรเวลาจะแสดงสิ่งต่อไปนี้ผ่านจอแสดงผล LED เวลาปลายทาง - (บน-แดง) เวลาปลายทางเป็นพื้นที่ที่แสดงวันที่และเวลาที่แน่นอน ใช้นี่คือ
รีโมท Bluetooth "Retro Future": 9 ขั้นตอน (พร้อมรูปภาพ)
"อนาคตย้อนยุค" รีโมทบลูทูธ: ฉันชอบรูปลักษณ์ของ "โลกแห่งอนาคต" เราถูกนำเสนอในนิยายวิทยาศาสตร์และผลิตภัณฑ์แนวความคิดในช่วงกลางศตวรรษ โอเค นั่นไม่เป็นความจริง เมื่อฉันยังเด็ก ฉันคิดว่า Tricoders ใน Star Trek นั้นน่าเกลียดและเงอะงะ แต่ท
Outlets of the Future ที่ชาร์จ USB ในผนัง Aka: 7 ขั้นตอน (พร้อมรูปภาพ)
Outlets of the Future Aka ที่ชาร์จ USB แบบติดผนัง: Iphone ของคุณเสียแล้ว มีคนใช้ที่ชาร์จติดผนัง Ipod ของคุณหมด ถ้าเพียงแต่เป็นที่ที่อนาคตและช่องเสียบทั้งหมดเป็น USB! คำแนะนำนี้จะแสดงให้คุณเห็นถึงวิธีการแปลงเต้ารับมาตรฐานเป็นที่ชาร์จ USB ในผนัง ผม