การจ่ายไฟ และตั้งค่า Linux ให้ Raspberry Pi ไม่ตายเวลาไฟดับบ่อยๆ


เชื่อว่าระบบไฟเป็นปัญหาคาอกสำคัญของคนที่ใช้ Rasbperry Pi ในโครงงานที่ต้องใช้งานต่อเนื่องนานๆ ปัญหาเรื่องไฟมีมากมายเช่น ไฟที่จ่ายไม่เพียงพอทำให้ใช้ไปนานๆ แล้วเกิดปัญหา หรือถ้า Raspberry Pi ดับไปโดยไม่ได้ทำการ Shutdown ซึ่งเกิดได้บ่อยมากกับระบบไฟบ้านเรา บางครั้งดับนานจนแม้ว่าจะมี UPS ช่วยก็เอาไม่อยู่ คำถามคือ มีวิธีการอะไรที่จะช่วยให้ Raspberry Pi อึดขึ้นได้บ้างหรือไม่ บทความนี้ผมได้แนะนำการจ่ายไฟและรวบรวมวิธีการตั้งค่า Linux (Raspbian Jessie)  ที่ไปค้นคว้ามานำเสนอ แม้อาจไม่ 100% แต่คิดว่าคงพอเป็นประโยชน์บ้าง

การตรวจสอบระบบไฟ

Raspberry Pi model B ผู้ผลิตแจ้งว่ากินกระแส ระหว่าง 700-1000 mA แล้วแต่ว่ามีการต่ออุปกรณ์เสริมอะไรบ้าง เช่นหากต่อกล้อง, มีการใช้ GPIO, เมาส์ และแป้นพิมพ์ ระบบทั้งหมดอาจกินไฟมากกว่า 1000-1500 mA ดังนั้นต้องแน่ใจว่าท่านจ่ายไฟให้ Raspberry Pi อย่างเพียงพอ

วิธีการตรวจสอบขั้นต้นคือให้สังเกตว่าไฟ power สีแดงบน Raspberry Pi (ดังภาพ) กระพริบหรือไม่ ถ้ามีไฟเพียงพอไฟสีแดงนี้จะติดยาว แต่ถ้าไฟนี้กระพริบก็แปลว่าระบบไฟมีปัญหา

ขอให้ตรวจสอบเงื่อนไขต่อไปนี้ให้ดี

1. แหล่งจ่ายไฟให้กระแสพอหรือไม่

แหล่งจ่ายไฟ 5V ที่ใช้ควรให้กระแสได้ไม่ต่ำกว่า 1 A (1000 mA) ทางผู้ผลิต Raspberry Pi แนะนำว่าถ้าใช้แหล่งจ่ายไฟ 2.4 A (พบได้ใน adapter ชาร์ทโทรศัพท์) น่าจะทำให้ Raspberry Pi ทำงานได้ราบรื่น ไม่ว่าจะต่ออุปกรณ์เสริมอะไรเข้าไปก็ตาม ซึ่งแหล่งจ่ายไฟ 5V ที่ให้กระแสได้มากๆ นั้นปัจจุบันหาได้ไม่ยาก adapter ชาร์ทไฟโทรศัพท์ก็มักจะจ่ายกระแสได้สูง (แต่ขอให้อ่านฉลากให้ดี) หรือจะใช้แหล่งจ่ายไฟเฉพาะทางเช่น Panel Mount Supply ก็ได้ (ตัวอย่าง)

ไม่แนะนำให้จ่ายไฟจากพอร์ท USB คอมพิวเตอร์ เพราะโดยทั่วไปพอร์ท USB คอมพิวเตอร์จะจ่ายไฟได้เพียง 500 mA ซึ่งไม่เพียงพอกับความต้องการของ Raspberry Pi กรณีนี้พบบ่อยเวลาถอด Raspberry Pi มาซ่อม แต่สุดท้ายแทนที่จะซ่อมก็กลายเป็นสร้างปัญหาไปแทน

2. สาย Micro USB นำไฟได้เพียงพอหรือไม่

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

การปรับตั้งค่า Linux

แม้ระบบไฟจะสมบูรณ์ แต่บางครั้งก็เลี่ยงไฟดับไม่ได้ ความผิดพลาดที่มักเกิดขึ้นเมื่อ Raspberry Pi ดับโดยไม่ Shutdown คือ disk จะอยู่ในสถานะที่ไม่เสถียร ไฟล์อาจมีปัญหา เมื่อระบบตรวจ disk ตอน boot แล้วพบว่ามีปัญหาก็จะเข้าสู่ emergency mode ทำให้ไม่รันโปรแกรมใดๆ ผู้ดูแลต้องเข้ามาแก้ไขเอง แล้ว boot ใหม่ระบบจึงจะทำงานตามปกติ ขั้นตอนต่อไปนี้น่าจะช่วยแก้ไขสถานการณ์นี้ได้

1. แก้ /boot/cmdline.txt ให้บังคับตรวจ disk และแก้ไขข้อผิดพลาดโดยอัตโนมัติ

ให้เพิ่มสองคำสั่งนี้ต่อท้ายไฟล์ /boot/cmdline.txt (อย่าขึ้นบรรทัดใหม่ ให้ใช้วรรคแบ่งคำสั่ง)

fsck.mode=force  fsck.repair=yes

2. เปลี่ยน I/O mode ของ disk จาก async เป็น sync

ในไฟล์ /etc/fstab ให้เพิ่มพารามิเตอร์ sync เข้าไปที่ root partition ดังตัวอย่าง

/dev/mmcblk0p2     /        ext4      defaults,noatime,sync     0             1

โดยปกติแล้ว I/O mode จะเป็น async ซึ่งแม้จะทำงานได้เร็วกว่าแต่ก็เกิดปัญหาได้ง่ายกว่า เพราะการที่ async ชลอการกระทำ I/O ออกไปจนกว่าจะถึงเวลาที่เหมาะสม ทำให้ข้อมูลบน disk มักไม่ตรงกับข้อมูลจริง เมื่อเกิดไฟดับ โอกาสที่ไฟล์จะมีปัญหาก็จะสูงขึ้น กรณีนี้คล้ายกับเวลาเราดึง flash drive ออกจากคอมพิวเตอร์โดยไม่ได้ eject ก่อนให้ดี ไฟล์ที่ copy ใส่ flash drive อาจยังถูกเขียนไม่เสร็จสิ้นและส่งผลให้ไฟล์เหล่านั้นเสียได้

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

 

 

 

 

Leave a comment

Your email address will not be published. Required fields are marked *