การตั้งค่า Raspberry เป็น data logger


13

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

ขณะนี้ฉันอยู่ในขั้นตอนที่การบันทึกดูเหมือนจะทำงานอยู่และฉันพยายามกำหนดค่าระบบและฉันมีคำถามสองสามข้อ

  1. ระบบมีวัตถุประสงค์เพื่อบันทึกข้อมูลลงใน FAT32 USB stick ซึ่งอาจถอดปลั๊กเปลี่ยนใหม่หรือเปลี่ยนใหม่ได้ตลอดเวลา อะไรคือวิธีที่แนะนำในการติดตั้งที่เก็บข้อมูล USB ขนาดใหญ่ที่เสียบเข้าไปในไดเรกทอรีแบบคงที่โดยอัตโนมัติ? แพคเกจ usbmount ดูเหมือนว่าจะทำเช่นนี้ แต่การขาดการบำรุงรักษาทำให้ต้องระมัดระวัง

  2. ฉันไม่สามารถรับประกันแหล่งจ่ายไฟและทำการปิดระบบใหม่ทั้งหมด โชคดีที่ไฟล์เดียวที่จะเขียนนอกเหนือจากข้อมูลระบบปฏิบัติการภายในควรเป็นไฟล์บันทึก ระบบไฟล์ที่ทำเจอร์นัลสำหรับระบบปฏิบัติการจะช่วยฉันด้วยตัวเองหรือฉันควรจะติดตั้งระบบแบบอ่านอย่างเดียวหรือแก้ไขดิสก์ RAM?

  3. ระบบไฟล์ FAT ใน USB stick จะอยู่รอดและหายจากภาวะไฟฟ้าดับและการดีดออกอย่างฉับพลันหรือไม่? ฉันควรสร้างไฟล์บันทึกใหม่ทุกครั้งที่เมาต์?

  4. ฉันได้ตั้งค่าเซิร์ฟเวอร์ X ให้เริ่มต้นโดยอัตโนมัติและเล่นกับสคริปต์เริ่มอัตโนมัติ LXDE เพื่อเริ่มการแสดงสถานะและปิดการใช้งานตัวจัดการหน้าต่าง / โปรแกรมรักษาหน้าจอ มี gotchas อื่น ๆ เพื่อรักษาจอแสดงผลอย่างต่อเนื่องหรือไม่?

  5. คนตัดไม้จะไม่สามารถเข้าถึงอีเธอร์เน็ตและต้องการนาฬิกาที่แม่นยำ โมดูล RasClock เป็นตัวเลือกที่เหมาะสมหรือไม่?

ขออภัยเกี่ยวกับการโพสต์ยาวและคำถามที่เกี่ยวข้องกับกึ่งหลาย

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


คุณกำลังอธิบายถึง USB-> serial solution ของคุณที่อื่นเพื่อที่ผู้อื่นจะลองใช้ดาต้าล็อกเกอร์? ฉันกระตือรือร้นที่จะรับค่าเพิ่มเติมจากมีดโกน / คนตัดไม้ / เว็บแคมของฉัน ขอบคุณ!
Tai Viinikka

คำตอบ:


7

ระบบมีวัตถุประสงค์เพื่อบันทึกข้อมูลลงใน FAT32 USB stick ซึ่งอาจถอดปลั๊กเปลี่ยนใหม่หรือเปลี่ยนใหม่ได้ตลอดเวลา

ส่วนที่ไม่ได้เสียบปลั๊กนั้นเป็นปัญหา AFAIK ไม่มีระบบคอมพิวเตอร์ใด ๆ ที่คุณสัญญาว่าจะดึง USB ออกโดยไม่ต้องแจ้งให้ทราบล่วงหน้า ณ จุดใดก็ได้โดยไม่มีปัญหาที่อาจเกิดขึ้น ดังนั้นคุณจะต้องคิดเกี่ยวกับวิธีการที่จะได้รับรอบ

ฉันไม่สามารถรับประกันแหล่งจ่ายไฟและทำการปิดระบบใหม่ทั้งหมด

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

คุณสามารถเพิ่มsyncตัวเลือกใน/etc/fstabการ จำกัด การแคช แต่man mountหมายเหตุ:

ในกรณีที่สื่อที่มีจำนวนรอบการเขียน จำกัด (เช่นแฟลชไดรฟ์บางตัว) "การซิงค์" อาจทำให้วงจรชีวิตสั้นลง

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

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

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

เมื่อคุณมีทุกอย่างที่คุณต้องการติดตั้งและกำหนดค่าคุณอาจจะสามารถติดตั้งระบบแฟ้มรากอ่านอย่างเดียวถ้าคุณสร้างพาร์ทิชันที่แยกต่างหากสำหรับ/var, /runและ/tmpและภูเขา RW เหล่านั้น คุณสามารถสร้างพาร์ทิชันที่เมานต์ได้หนึ่งตัวและเชื่อมโยงไดเรกทอรี rw เข้าด้วยกัน

สำหรับ raspbian pi คุณไม่ต้องกังวล/runเพราะมันเป็น tmpfs (RAM) อยู่แล้ว /sysและ/procยังอยู่ใน RAM (แต่อย่าใช้เพื่ออะไรนอกจากสิ่งที่ตั้งใจไว้) หากระบบมีจุดประสงค์เดียวและข้อมูลทั้งหมดของคุณไปที่ USB stick /varเป็นปัญหาเดียว แต่ไม่ใช่ฉันคิดว่าเป็นช่วงที่สำคัญมาก


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

@doynax: มันเป็นไปได้ที่จะรันด้วยระบบไฟล์รูท RO ฉันไม่ได้มีประสบการณ์ใด ๆ กับเรื่องนั้น แต่ฉันเพิ่มสองสามย่อหน้าในตอนท้ายเกี่ยวกับสิ่งที่ฉันเชื่อว่าเป็นปัญหาพื้นฐาน
goldilocks

2

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

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

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

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

นี่คือสิ่งที่ระดับต่ำแม้ว่า การทำมันผ่านระบบไฟล์เป็นอีกเรื่องหนึ่ง

สิ่งที่คุณต้องการจริงๆคือสำเนาของ FAT ที่ซ้ำซ้อนและทำสิ่งที่คล้ายกันรอบ ๆ ตาราง FAT หมายเลขต่อเนื่องจะบอกคุณว่าหมายเลขไหนล่าสุดและนัดหน้า / หลังและ CRC จะรับรองความถูกต้อง

ผ่านการนอนของฉันแล้วฉันหวังว่านี่จะชัดเจนพอ


1

สำหรับนาฬิกาที่แม่นยำนั้นมีโมดูล GPS ราคาถูกมากมายให้เลือก ยากที่จะหานาฬิกาที่แม่นยำกว่านั้น


นั่นเป็นข้อเสนอแนะที่ยอดเยี่ยม ช่วยเราแก้ไขปัญหาเกี่ยวกับการตั้งนาฬิกาและจัดการกับแบตเตอรี่ เราเพียงแค่ต้องติดตามเขตเวลา (และกฎ DST ที่ฉันคิดว่า) และสำหรับเครื่องเก็บบันทึกข้อมูลที่เป็นสากลเวลาควรจะดี
doynax

โมดูล GPS ทำงานในอาคารเมื่อไม่มีส่วนใดของท้องฟ้ามองเห็นได้และยังคงให้ประโยชน์มากกว่า RTC แบบง่ายหรือไม่?
Stéphane Gourichon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.