สารบัญ:

สร้างปุ่ม Power Raspberry Pi ที่ดีขึ้น: 4 ขั้นตอน
สร้างปุ่ม Power Raspberry Pi ที่ดีขึ้น: 4 ขั้นตอน

วีดีโอ: สร้างปุ่ม Power Raspberry Pi ที่ดีขึ้น: 4 ขั้นตอน

วีดีโอ: สร้างปุ่ม Power Raspberry Pi ที่ดีขึ้น: 4 ขั้นตอน
วีดีโอ: Setting Up a Raspberry Pi 4 | Vilros 2024, พฤศจิกายน
Anonim
Image
Image

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

มีโครงการเช่นกันที่จะรีสตาร์ท Pi ที่ปิดตัวลง แต่ก็ไม่ได้ให้ข้อเสนอแนะภาพใด ๆ แก่คุณ

แต่ใครต้องการปุ่มดังกล่าว? หากคุณเป็นคนเนิร์ดเหมือนฉัน หรือแม้แต่แค่เด็กเนิร์ดที่ทะเยอทะยาน คุณสามารถเข้าสู่ระบบ Pi ของคุณในเครื่องหรือบนเครือข่ายและพิมพ์ sudo shutdown -h now ได้ แต่ถ้าคุณกำลังสร้างโปรเจ็กต์สำหรับผู้ใช้ที่ไม่ใช่ด้านเทคนิค สิ่งนั้นจะไม่เกิดขึ้น จริงอยู่ คุณสามารถหนีไปได้เกือบทุกครั้งด้วยการดึงสายไฟ แต่โปรดทราบว่า ฉันพูดเกือบทุกครั้ง! โชคของทุกคนหมดลงไม่ช้าก็เร็ว ฉันมีการ์ด SD ติดตัวฉันเมื่อสัปดาห์ที่แล้วแม้ว่าฉันจะไม่มีทางรู้ว่าเป็นเพราะการสูญเสียพลังงานอย่างกะทันหันหรือไม่

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

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

(ในวิดีโอนี้ ฉันกำลังสาธิตด้วย Pi Zero v1.2 และจอภาพที่ฉันสร้างจากหน้าจอแล็ปท็อปที่นำกลับมาใช้ใหม่และตัวควบคุมจากตะวันออกไกล)

ขั้นตอนที่ 1: การออกแบบ

มันทำงานอย่างไร
มันทำงานอย่างไร

นี่คือสิ่งที่ปุ่มเปิดปิดของฉันจะทำเพื่อคุณ:

  • เมื่อ Pi กำลังทำงาน ไฟ LED จะติดสว่างอย่างต่อเนื่อง หากปิดเครื่องเอง ไฟ LED จะดับเมื่อถอดปลั๊กได้อย่างปลอดภัยเท่านั้น
  • ขณะทำงาน หากคุณกดปุ่มอย่างน้อยหนึ่งวินาที ระบบจะเริ่มต้นการปิดเครื่องและไฟ LED จะกะพริบเป็นเวลาหนึ่งในสี่ของวินาทีทุกวินาทีจนกว่าจะถอดปลั๊กได้อย่างปลอดภัย
  • จากสถานะปิดเครื่อง (หากยังไม่ได้ถอดสายไฟ) การกดปุ่มจะเป็นการเริ่มการบู๊ตและไฟ LED จะกะพริบเป็นเวลาหนึ่งในสี่ของวินาทีทุก ๆ วินาทีจนกว่าจะมีการบู๊ต (อาจใช้เวลานานขึ้นเล็กน้อยจนกว่าบริการทั้งหมด เช่น ssh และ vnc จะทำงาน)

ส่วนประกอบมีราคาถูกมาก สิ่งที่คุณต้องมีคือ:

  • ATTiny85 (ชิปที่รองรับ Arduino)
  • ตัวต้านทาน 3 ตัว: 2 x 330Ω และ 1 x 10kΩ
  • 1 LED - ฉันแนะนำสีเขียวหรือสีน้ำเงิน แต่เป็นทางเลือกของคุณ
  • เขียงหั่นขนมและสายจัมเปอร์หรือแผ่นกระดานหรือตามที่คุณต้องการสร้าง

ขั้นตอนที่ 2: มันทำงานอย่างไร

เช่นเดียวกับปุ่มเปิดปิด Pi ทั้งหมด ปุ่มนี้จะดึงพิน GPIO ไปที่สถานะต่ำเพื่อส่งสัญญาณคำขอปิดเครื่องไปยังโปรแกรมตัวช่วยที่ทำงานบน Pi ฉันใช้ GPIO4 (พิน 7) แต่คุณสามารถใช้พินอื่นได้

วิธีเดียวที่จะบอกได้ว่า Pi ได้ปิดระบบเสร็จสิ้นแล้วคือการดู TxD pin 8 ซึ่งจะลดต่ำลง ขึ้นอยู่กับคอนโซลซีเรียลที่เปิดใช้งาน ซึ่งเป็นค่าเริ่มต้น อันที่จริง TxD จะขึ้นและลงเป็นประจำในขณะที่ถูกใช้เป็นคอนโซลซีเรียล แต่จะไม่มีวันต่ำเกินกว่า 30mS ต่อครั้ง แม้แต่ในอัตราบอดทั่วไปที่ช้าที่สุด มันยังสามารถใช้เป็นคอนโซลซีเรียลได้เพราะเราแค่ดูเฉยๆ

ในการรีบูต เราจำเป็นต้องดึง SCL1 (พิน 5) ให้ต่ำครู่หนึ่ง พินนี้ถูกใช้โดยอุปกรณ์ I2C ใดๆ (รวมถึงอินเทอร์เฟซ midi ของฉัน) แต่หลังจากเริ่มการบูต เราก็ปล่อยมันไว้ตามลำพัง

ความซับซ้อนส่วนใหญ่อยู่ในร่าง Arduino ที่เราโหลดลงใน ATTiny85 สิ่งนี้ใช้ "เครื่องของรัฐ" - วิธีที่มีประโยชน์และทรงพลังในการเข้ารหัสปัญหาใด ๆ ที่สามารถแสดงด้วย "สถานะ" จำนวนหนึ่ง เครื่องซักผ้าทำงานในลักษณะเดียวกัน สถานะเป็นตัวแทนของขั้นตอนในวงจรการซัก และแต่ละสถานะจะกำหนดสิ่งที่เครื่องควรทำ ณ จุดนั้น (มอเตอร์หรือปั๊มที่จะทำงาน วาล์วที่จะเปิดหรือปิด) และอินพุตของเซ็นเซอร์ใด (อุณหภูมิ ระดับน้ำ ตัวจับเวลา) กำหนดว่าจะย้ายไปยังสถานะถัดไปเมื่อใดและจะเลือกสถานะใดต่อไป

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

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

โปรแกรมตัวช่วยที่ทำงานบน Pi นั้นซับซ้อนกว่าปุ่มปิดส่วนใหญ่เพียงเล็กน้อย มันตอบสนองต่อพัลส์ต่ำแบบยาวบนพิน GPIO โดยเริ่มต้นการปิดระบบ แต่ยังตอบสนองต่อพัลส์สั้นด้วยตัวมันเองโดยดึงพิน GPIO ให้ต่ำลงชั่วครู่ นี่คือวิธีที่ ATTiny85 สามารถบอกได้ว่ากำลังทำงานอยู่และสามารถย้ายจากสถานะ BOOTING เป็นสถานะ RUNNING ได้

ขั้นตอนที่ 3: สร้างต้นแบบการสาธิต

การสร้างต้นแบบการสาธิต
การสร้างต้นแบบการสาธิต
การสร้างต้นแบบการสาธิต
การสร้างต้นแบบการสาธิต
การสร้างต้นแบบการสาธิต
การสร้างต้นแบบการสาธิต

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

ขั้นตอนที่ 4: การเขียนโปรแกรม ATTiny85

แนบร่าง Arduino และโปรแกรมตัวช่วยในขั้นตอนนี้ ในโฟลเดอร์สเก็ตช์ Arduino ของคุณ ให้สร้างโฟลเดอร์ชื่อ PiPwr และคัดลอกไฟล์ PiPwr.ino ลงไป การเปิดตัว Arduino IDE คุณจะพบได้ในสมุดสเก็ตช์ของคุณ

มีหลายวิธีในการเขียนโปรแกรม ATTiny85 หากคุณติดตั้งโปรแกรมโหลดบูต คุณสามารถใช้บอร์ดพัฒนา ATTiny85 ที่มีราคาเพียงไม่กี่ปอนด์ สิ่งนี้เชื่อมต่อกับพีซีของคุณผ่านพอร์ต USB ฉันใช้ Hidiot ซึ่งโดยพื้นฐานแล้วจะเหมือนกัน แต่มีพื้นที่สร้างต้นแบบ

ใน Arduino IDE ภายใต้ File - Preferences ให้เพิ่ม

digistump.com/package_digistump_index.json

ไปยัง URL ผู้จัดการบอร์ดเพิ่มเติม

ภายใต้เครื่องมือ - บอร์ด คุณจะเห็นตัวเลือก Digispark จำนวนหนึ่ง เลือก Digispark (ค่าเริ่มต้น - 16.5MHz)

หาก ATTiny85 ของคุณไม่มี bootloader (หรือคุณไม่รู้) คุณสามารถรับโปรแกรมเมอร์ AVR ISP ในราคาไม่กี่ปอนด์ หรือคุณสามารถใช้ Arduino Uno หรือ Pro Mini หรือ Nano ที่ราคาถูกกว่าเป็นโปรแกรมเมอร์ Google สำหรับคำแนะนำ "arduino as isp attiny85" (ไม่มีเครื่องหมายคำพูด)

หากคุณต้องการแก้ไขภาพสเก็ตช์ คุณจะพบว่ามีความคิดเห็นครบถ้วนและหวังว่าจะง่ายต่อการติดตาม สำหรับการดีบักนั้นง่ายกว่ามากที่จะใช้ Arduino Pro Mini หรือ Nano ยกเลิกหมายเหตุ serial.begin() ในการตั้งค่าและพิมพ์คำสั่งในลูป () เพื่อดูขั้นตอนที่ต้องดำเนินการโดยใช้จอภาพแบบอนุกรม มีคำจำกัดความของพินสำรองในแหล่งที่มา แสดงความคิดเห็นสำหรับ Uno, Pro Mini หรือ Nano

บน Raspberry Pi ของคุณ ให้คัดลอกไฟล์ shutdown_helper.py ไปยังโฟลเดอร์ /etc/local/bin และตั้งค่าเป็นไฟล์เรียกทำงานด้วยคำสั่ง

sudo chmod +x /usr/local/bin/shutdown_helper.py

ตอนนี้แก้ไขไฟล์ /etc/rc.local ด้วยโปรแกรมแก้ไขที่คุณชื่นชอบ (คุณจะต้องทำในฐานะรูท) ก่อนบรรทัดสุดท้าย (ทางออก 0) ให้แทรกบรรทัด

nohup /usr/local/bin/shutdown_helper.py &

รีบูตและโปรแกรมตัวช่วยจะเริ่มโดยอัตโนมัติ

แนะนำ: