Strategi untuk menangani catu daya yang tidak dapat diprediksi


15

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?

Jawaban:


3

Ada dua opsi (setidaknya) di sisi pasokan:

  • Banyak mobil sekarang memiliki soket aksesori yang tidak dinyalakan oleh kunci kontak ... jika mobil Anda memilikinya, gunakan itu (tapi hati-hati untuk mencabut saat tidak digunakan!) Yang akan memberi Anda pasokan yang dapat diandalkan (meskipun ini mungkin jatuh selama mesin cranking)
  • Jika Anda mendesain konverter daya Anda sendiri, tambahkan kapasitor reservoir yang cukup besar untuk memastikan pasokan tetap cukup lama setelah kendaraan dimatikan ... Anda juga dapat mendeteksi kendaraan mati (pasokan kendaraan turun di bawah ambang batas) ke GPIO, untuk pastikan Anda tidak mulai menulis setelah mati

2

Ada konsep di Windows Embedded yang disebut Enhanced Write Filters. Mereka menggunakannya untuk menghindari kerusakan data yang hilang karena kehilangan daya, dll. OS menulisnya ke overlay RAM. Sistem file tidak rusak ketika ada kehilangan daya dan Anda dapat "melakukan" data ke memori hanya jika Anda inginkan.

Demikian juga, pada sistem operasi Linux, ada teknik untuk menjaga sistem file tetap utuh dan Anda dapat menulis ke kartu SD hanya jika diinginkan. Pertanyaan ini menjelaskan cara membuat sistem file hanya baca dan Anda dapat menyimpan perubahan hanya jika diinginkan. Ini berarti Anda akan menggunakan opsi 3: "Menulis ke file temp dan bertahan bila perlu". Pertanyaan itu juga menunjuk ke sebuah artikel "Bagaimana membangun sistem file hanya baca". Mungkin, itu mungkin tempat pertama untuk memulai!


Adakah yang mencoba menggunakan artikel ini di PI? Sepertinya akan membutuhkan banyak adaptasi
GuySoft

2

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:

tune2fs -c 1 /dev/mmcblk0p2

Anda juga harus mengubah baris terakhir agar sistem file root di / etc / fstab mengandung 1, seperti ini:

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

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.


1

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.


0

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.)


1
Pertanyaan kekuatan terkait tampaknya telah muncul: raspberrypi.stackexchange.com/questions/3778/…
XTL
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.