กลยุทธ์ในการจัดการกับแหล่งจ่ายไฟที่ไม่แน่นอน


15

ฉันต้องการติดตั้ง Pi ในรถยนต์และใช้เพื่อบันทึกข้อมูล GPS ฉันสามารถทำตามกลยุทธ์ใดบ้าง (ในโปรแกรมของฉัน) เพื่อลดปัญหาเนื่องจากพลังงานถูกขัดจังหวะเมื่อเขียนไปยังการ์ด SD?

จนถึงตอนนี้ฉันสามารถคิด:

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

ฉันสงสัยว่ามี

  • โหมดระบบแฟ้มฉันสามารถอยู่ในเวลาส่วนใหญ่ที่จะอยู่รอดปิดระบบทันที
  • วิธีการกู้คืนจากพลังงานลงในขณะที่เขียนน่าเชื่อถือมากขึ้น

เห็นได้ชัดว่า (ฉันคิดว่า) การสูญเสียข้อมูลบางอย่างไม่สามารถหลีกเลี่ยงได้ แต่ฉันจะลดขนาดข้อมูลให้เล็กที่สุดได้อย่างไร

คำตอบ:


3

มีสองตัวเลือก (อย่างน้อย) ในด้านอุปทาน:

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

2

มีแนวคิดใน Windows Embedded ที่เรียกว่า Enhanced Write Filters พวกเขาใช้มันเพื่อหลีกเลี่ยงการสูญเสียข้อมูลเนื่องจากการสูญเสียพลังงาน ฯลฯ ระบบปฏิบัติการเขียนลงใน RAM โอเวอร์เลย์ ระบบไฟล์ไม่เสียหายเมื่อมีการสูญเสียพลังงานและคุณสามารถ "ส่ง" ข้อมูลไปยังหน่วยความจำเฉพาะในกรณีที่คุณต้องการ

ในทำนองเดียวกันบนระบบปฏิบัติการ Linux มีเทคนิคที่จะทำให้ระบบไฟล์ไม่บุบสลายและคุณสามารถเขียนไปยังการ์ด SD ได้เฉพาะในกรณีที่คุณต้องการ คำถามนี้อธิบายวิธีสร้างระบบไฟล์แบบอ่านอย่างเดียวและคุณสามารถบันทึกการเปลี่ยนแปลงได้หากคุณต้องการ ซึ่งหมายความว่าคุณจะใช้ตัวเลือกที่ 3: "เขียนไปยังไฟล์ temp และคงอยู่เมื่อจำเป็น" คำถามนี้ยังชี้ไปที่บทความ "วิธีสร้างระบบไฟล์แบบอ่านอย่างเดียว" บางทีนั่นอาจเป็นจุดเริ่มต้น!


มีใครพยายามไปกับบทความนี้ใน PI หรือไม่ ดูเหมือนว่ามันจะต้องมีการปรับตัวมากมาย
GuySoft

2

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

จากนั้นอีกครั้งแบตเตอรี่รถยนต์ทั่วไปจะมีประมาณ 80 Ah และ PI จะกินระหว่าง 500-1200 mA (ขึ้นอยู่กับว่าเป็นรุ่น A หรือ B) ดังนั้นอาจจะทำให้แบตเตอรี่รถยนต์ของคุณหมดภายใน 2 และ 6 วัน ดังนั้นฉันไม่คิดว่าคุณจะได้รับการยอมรับนี้

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

อย่างไรก็ตามหากคุณพบว่าเป็นที่ยอมรับได้ที่จะหลวมข้อมูลบางส่วนเมื่อปิดเครื่องฉันจะออกแบบ daemon ที่บันทึกข้อมูล GPS เป็นระยะเป็นไฟล์ในลักษณะที่เรียกใช้การเรียกใช้ fsync หลังจากการเขียนแต่ละครั้ง (เพื่อล้างข้อมูลไปยัง SD- การ์ด) หากคุณทำเช่นนี้ทุกสองสามวินาที (และใช้ระบบไฟล์ journaling ext4 ที่เป็นค่าเริ่มต้น) นี่อาจหมายความว่าคุณจะสูญเสียพลังงานในแต่ละวินาทีไปเท่านั้น

โปรดจำไว้ว่า Raspbian (อย่างน้อยการติดตั้งของฉัน) ไม่ได้มาพร้อมกับ fsck ของระบบไฟล์รูทขณะบู๊ต คุณต้องทำสิ่งต่อไปนี้เพื่อเปิดใช้งานทุกการเมานต์:

tune2fs -c 1 /dev/mmcblk0p2

คุณต้องเปลี่ยนบรรทัดสุดท้ายสำหรับระบบไฟล์รูทใน / etc / fstab เพื่อให้มี 1 เช่นนี้:

/dev/mmcblk0p2  /               ext4    defaults,noatime,commit=120  0       1
                                                               Change this ^^^^^

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


1

ดูเหมือนว่าจะเป็นการเพิ่มที่ดีที่จะทำให้รถยนต์ไฟฟ้าสะอาดสำหรับ pi และจัดการกับการตรวจจับการสูญเสียของการจุดระเบิดรถยนต์จัดหา pi ด้วยอำนาจในเวลาเดียวกันและส่งสัญญาณไปยัง GPIO pin เพื่อบอกให้ปิด pi ได้อย่างปลอดภัย .

น่าเสียดายที่ดูเหมือนว่าจะหมดในขณะนี้ แต่คุณสามารถสั่งซื้อล่วงหน้า


0

หากคุณต้องจัดการกับการสูญเสียพลังงานบ่อยครั้งการเลือกระบบไฟล์และวิธีการบูตอย่างระมัดระวัง (อ่านอย่างเดียวเจอร์นัล fsck ที่ไม่ต้องใส่ข้อมูลการกู้คืนอย่างรวดเร็ว .. ) อาจช่วยให้แน่ใจได้ว่าระบบจะขึ้นอย่างน่าเชื่อถือ

ในด้านแอปพลิเคชันการใช้ฐานข้อมูลบางอย่าง ( sqlite ?) ควรรับประกันการเขียนทั้งหมดหรือไม่มีสถานะการเขียนข้อมูลเมื่อเปิดใหม่

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

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

ในรถคุณจะมี +12/24 V และ PI ใช้ +5 V ดังนั้นจึงมีความเป็นไปได้ (heh) สำหรับบางสิ่งในหรือก่อนเครื่องแปลง คุณอาจจะสามารถไดโอด - หรือแบตเตอรี่ขนาด 9-12 โวลท์ที่มีขนาดพอสมควรก่อนตัวแปลงที่จะเข้าควบคุมเมื่อแรงดันไฟฟ้าตกเช่น เมื่อพิจารณาถึงการดึงพลังงานที่ค่อนข้างหนักซึ่งจะต้องถูกเรียกเก็บเงินอย่างใด คุณอาจสามารถแท่นขุดเจาะเครื่องเปรียบเทียบหรือเครื่องตรวจสอบแรงดันไฟฟ้าพิเศษสำหรับสายไฟหลักและรับการแจ้งเตือนเมื่อพลังงานหลักหยุดทำงาน (ฉันไม่ทราบทันทีทันใดสิ่งที่จะเป็นวิธีที่รวดเร็วในการส่งสัญญาณ PI)


1
คำถามเกี่ยวกับพลังงานที่เกี่ยวข้องดูเหมือนว่าจะผุดขึ้น: raspberrypi.stackexchange.com/questions/3778/…
XTL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.