สารบัญ:

A Back to the Future Clock: 8 ขั้นตอน (พร้อมรูปภาพ)
A Back to the Future Clock: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: A Back to the Future Clock: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: A Back to the Future Clock: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Doc Brown's Back To The Future Timeline Explained 2024, พฤศจิกายน
Anonim
ย้อนเวลาสู่อนาคต
ย้อนเวลาสู่อนาคต

โครงการนี้เริ่มต้นชีวิตเป็นนาฬิกาปลุกสำหรับลูกชายของฉัน ฉันทำให้มันดูเหมือนวงจรเวลาจาก 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 แบบกำหนดเอง
PCB แบบกำหนดเอง

แม้ว่าจะไม่มีอะไรซับซ้อนเกินไปเกี่ยวกับวงจร แต่ก็มีการเดินสายเล็กน้อยและเขียงหั่นขนมอาจดูเหมือนปาเก็ตตี้ได้อย่างรวดเร็ว ดังนั้นฉันจึงออกแบบ PCB เพื่อให้ทุกอย่างอยู่ภายใต้การควบคุม มันเป็นกระดานแบบโฮมเมดและฉันมีเพื่อนมาช่วยทำ หลังจากที่ทำและต่อสายแล้ว ฉันรู้ว่าฉันลืมใส่การเชื่อมต่อสำหรับแผงขั้วต่อสำหรับเสียง และต่อมาได้เปลี่ยนแปลงเพื่อย้ายแหล่งจ่ายแอมป์สำหรับเสียงจาก 5V เป็น 3.3V ดังนั้นจึงไม่เหมาะและฉันต้องแก้ไข Veroboard บางตัวเพื่ออนุญาตการเชื่อมต่อเสียง นอกจากนี้ พินเอาต์ของบอร์ดแอมป์เสียงอยู่ที่การแยกที่ไม่ได้มาตรฐาน (แม้จะแตกต่างกันไปตามพิน) ดังนั้นการเชื่อมต่อกับ PCB หลักจึงค่อนข้างแย่ด้วยสายเชื่อมต่อสั้น ~ 1 ซม. 11 เส้น

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

ขั้นตอนที่ 5: สิ่งที่แนบมา

สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา

ฉันต้องการสร้างกล่องหุ้มที่ดูเหมือนวงจรเวลาภาพยนตร์หนึ่งแถว จอแสดงผล LED สามแถวอาจมากเกินไปสำหรับนาฬิกาปลุกและจะทำให้ต้นทุนเพิ่มขึ้นอย่างมาก ฉันเคยคิดจะทำโครงตู้จากอะลูมิเนียมแต่ฉันไม่มีทักษะในด้านนั้นเลย ฉันเคยสร้างโมเดลพลาสติกมาสองสามแบบในชีวิตแล้ว และมีประสบการณ์ด้านงานไม้มาก่อน เลยตัดสินใจทำกรอบโดยใช้ MDF เพื่อยึด LED และลำโพง และแก้ไข Perspex ที่ด้านหน้า จากนั้นปิดด้วยสไตรีน 5 ด้าน กล่องที่มีกรอบด้านหน้า ทาสีด้วยสีสเปรย์อะลูมิเนียมเมทัลลิก พลาสติกและสีได้มาจากร้านโมเดลในท้องถิ่น ฉันตรวจดูฉลากบนพร็อพภาพยนตร์อย่างละเอียด และพยายามคัดลอกสี ประเภทฟอนต์ และขนาดอย่างเต็มที่ ฉันใช้ Photoshop เพื่อสร้างฉลากและพิมพ์เป็นสติกเกอร์จาก Redbubble

ภาพด้านบนแสดง:

  1. ด้านหน้าของแชสซี MDF กระเป๋าเป้สะพายหลัง LED 4 ดวงติดตั้งที่ด้านหน้าด้วยสีเขียวอมเขียว
  2. ภายในกล่อง. เป้สะพายหลังที่ติดตั้งและจัดเรียงทั้งหมด Raspberry Pi และ PCB แบบกำหนดเองในลำโพงที่ด้านใดด้านหนึ่ง
  3. ติดตั้งสายไฟและเปลือกนอกพร้อมที่จะไปต่อ มันเป็นบิตบีบ!

ขั้นตอนที่ 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: ซอฟต์แวร์

Image
Image
ซอฟต์แวร์
ซอฟต์แวร์

รหัสนาฬิกาเขียนด้วยภาษา Python และใช้เธรดเพื่อเล่นเสียงเตือนและเสียงบี๊บเป็นครั้งคราวในพื้นหลังโดยไม่บล็อกการอัปเดตการแสดงผล ฉันใช้ไลบรารี ConfigParser และไฟล์กำหนดค่าที่เก็บไว้นั้นอ่านและเขียนด้วยรหัสนาฬิกา เช่นเดียวกับเว็บแอป Flask ดังนั้นเมื่อใดก็ตามที่การกำหนดค่าถูกเปลี่ยนผ่านเว็บอินเทอร์เฟซหรือนาฬิกา จะถูกซิงโครไนซ์ ซอฟต์แวร์นาฬิกายังมีนายหน้า MQTT เพื่อให้สามารถควบคุมโหมดการแสดงผลและการปิดเสียงได้จากระยะไกล ในที่สุดแรงจูงใจที่ซ่อนเร้นของฉันคือการเขียนแอป iOS สำหรับรีโมตคอนโทรล แต่เว็บอินเทอร์เฟซทำงานได้ดีพอสำหรับตอนนี้

ภาพแรกด้านบนแสดงให้เห็นว่านาฬิกามีลักษณะอย่างไรในโหมดการแสดงผลต่างๆ และมีวิดีโอสั้นที่แสดงในโหมดเลื่อน

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

เว็บแอป

รูปภาพถัดไปแสดงหน้าตาของเว็บอินเตอร์เฟสกับนาฬิกา นอกจากนี้ยังมีการกำหนดค่าและหน้าควบคุม ซึ่งช่วยให้เล่นกับนาฬิกาได้ง่ายขึ้นโดยไม่ต้องกดปุ่มมาก:-)

ขั้นตอนที่ 8: อะไรต่อไป

อะไรต่อไป?
อะไรต่อไป?

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

แนะนำ: