Saya ingin memasang Pi di mobil saya dan menggunakannya untuk merekam data GPS. Strategi apa (dalam program saya) yang dapat saya ikuti untuk meminimalkan masalah karena daya terputus saat menulis ke kartu SD?
Sejauh ini saya bisa memikirkan:
- Menyimpan data dan hanya menulis sebentar-sebentar
- Hanya menulis ketika kecepatan kendaraan tidak mendekati nol (yaitu mematikan mesin)
- Menulis ke file temp yang saya bisa rusak, kemudian bertahan bahwa setiap sekarang dan kemudian
Saya bertanya-tanya apakah ada
- Mode Sistem File Saya dapat tetap di sebagian besar waktu yang akan bertahan dari shutdown mendadak
- Cara untuk membuat pemulihan dari mati sementara menulis lebih dapat diandalkan
Jelas (saya pikir) beberapa kehilangan data tidak dapat dihindari, tetapi bagaimana saya bisa menguranginya?
sumber
Itu semua tergantung pada jumlah data yang Anda siap kehilangan. Jika Anda tidak mampu kehilangan apa pun, itu akan mengharuskan Anda menemukan cara untuk menghubungkan PI Anda langsung ke baterai (dengan sekering tentu saja), sehingga tidak dimatikan saat kunci kontak dimatikan.
Kemudian lagi, aki mobil khas akan memiliki sekitar 80 Ah dan PI akan mengkonsumsi antara 500-1200 mA (tergantung pada apakah itu model A atau B), sehingga mungkin akan menguras baterai mobil Anda di antara 2 dan 6 hari, jadi saya tidak berpikir Anda akan menemukan ini dapat diterima.
Jika Anda masih tidak mampu kehilangan data, Anda mungkin dapat merancang beberapa jenis perangkat keras khusus tempat Anda dapat mengontrol catu daya dari PI dan juga memantau keadaan kunci kontak. Jika kunci kontak dimatikan, Anda menyiram data Anda ke kartu SD, matikan OS dan kemudian sebagai langkah terakhir matikan catu daya. Catu daya juga perlu dihidupkan ketika kunci kontak dihidupkan, untuk membiarkan PI memulai lagi. Ini semua bisa dilakukan, tetapi proyek yang cukup besar.
Namun, jika Anda merasa dapat kehilangan beberapa data pada saat shutdown, saya akan merancang daemon yang menyimpan data GPS secara berkala ke file sedemikian rupa sehingga menjalankan panggilan fsync setelah setiap kali menulis (untuk menyiram data ke SD- kartu). Jika Anda melakukan ini setiap beberapa detik (dan juga menggunakan sistem file ext4 journaling default) ini mungkin berarti bahwa Anda hanya akan kehilangan beberapa detik terakhir pada setiap kehilangan daya.
Harap diingat bahwa Raspbian (setidaknya instalasi saya) tidak datang dengan fsck dari sistem file root pada saat boot. Anda harus melakukan yang berikut untuk mengaktifkannya di setiap mount:
Anda juga harus mengubah baris terakhir agar sistem file root di / etc / fstab mengandung 1, seperti ini:
Jika Anda tidak melakukan ini maka sistem file root Anda mungkin tidak dapat di-boot dari waktu ke waktu, jadi jika Anda menjalankan sistem tanpa kepala di mana Anda mematikan daya tanpa melakukan shutdown yang terkontrol, ini benar-benar diperlukan.
sumber
Ini terlihat seperti tambahan yang baik yang akan membersihkan listrik mobil untuk pi, dan menangani mendeteksi kehilangan kunci kontak mobil, memasok daya pi pada saat yang bersamaan, dan mengirim sinyal ke pin GPIO untuk memerintahkannya mematikan pi dengan aman .
Sayangnya tampaknya kehabisan stok saat ini, tetapi Anda dapat memesan di muka.
sumber
Jika Anda harus sering kehilangan daya, pilihan sistem file dan metode boot (hanya baca, jurnal, fsck tanpa pengawasan, pemulihan cepat ..) dapat membantu memastikan sistem muncul dengan andal.
Di sisi aplikasi, menggunakan basis data tertentu ( sqlite ?) Harus menjamin seluruh penulisan atau tidak ada status penulisan pada data saat dibuka kembali.
Lebih baik akan memang menjadi mencoba untuk menghindari harus menutup kecuali bila diperlukan. Dengan pengontrol yang lebih kecil, Anda sering menonton catu daya dan jika turun, Anda memiliki jendela kecil untuk mematikan berbagai hal, menyimpan data yang tidak mudah menguap dan mungkin tidur atau menghentikan prosesor sampai daya pulih. Dengan prosesor tujuan umum besar seperti PI, itu mungkin memerlukan jarak yang cukup panjang.
Jadi, memiliki cadangan daya online dan peringatan ketika catu daya utama turun mungkin membantu. Jika glitchy, Anda mungkin perlu membedakan antara kehilangan daya sementara (jangan menulis, menahan napas) dan kemungkinan shutdown (simpan dan bersihkan).
Di dalam mobil Anda akan memiliki +12/24 V dan PI menggunakan +5 V, jadi ada potensi (heh) untuk sesuatu di atau sebelum konverter. Anda mungkin dapat dioda-ATAU baterai 9-12 V berukuran cukup sebelum konverter yang akan mengambil alih ketika tegangan turun, misalnya. Mempertimbangkan penarikan daya yang relatif berat, itu harus tetap dibebankan entah bagaimana. Anda mungkin juga dapat memasang pembanding atau monitor tegangan khusus untuk saluran listrik utama dan mendapatkan peringatan ketika daya utama mati. (Saya tidak tahu apa yang akan menjadi cara cepat untuk memberi sinyal PI.)
sumber