Öngörülemeyen güç kaynağı ile başa çıkma stratejileri


15

Arabama bir Pi yüklemek ve GPS verilerini kaydetmek için kullanmak istiyorum. SD karta yazarken güç kesintisi nedeniyle ortaya çıkabilecek sorunları en aza indirmek için hangi programları (programımda) takip edebilirim?

Şimdiye kadar düşünebilirim:

  • Verileri saklama ve yalnızca ara ara yazma
  • Sadece araç hızı sıfıra yakın olmadığında yazma (yani kontağı kapatmak üzere)
  • Bozulmayı göze alabileceğim bir geçici dosyaya yaz, sonra her seferinde devam et

Orada olup olmadığını merak ediyorum

  • Dosya sistemi modları çoğu zaman aniden kapanabilecek şekilde kalabilirim
  • Daha güvenilir yazarken gücü keserek kurtarmanın yolları

Açıkçası (sanırım) bazı veri kayıpları kaçınılmazdır, ancak bunu nasıl en aza indirebilirim?

Yanıtlar:


3

Tedarik tarafında iki seçenek vardır (en azından):

  • Birçok otomobil artık ateşleme ile değiştirilmeyen bir aksesuar soketine sahiptir ... arabanız varsa, bunu kullanın (ancak kullanılmadığında fişini çekmeye dikkat edin!) Bu size güvenilir bir tedarik sağlamalıdır (bu, motor sırasında düşebilir) krank)
  • Kendi güç dönüştürücünüzü tasarlıyorsanız, beslemenin araç kapatıldıktan sonra yeterince uzun süre dayanmasını sağlamak için yeterince büyük bir rezervuar kondansatörü ekleyin ... ayrıca aracı bir GPIO'ya (araç beslemesi bir eşiğin altına düşer) kapatıldıktan sonra yazmaya başlamadığınızdan emin olun

2

Windows Embedded'de Gelişmiş Yazma Filtreleri adı verilen bir kavram vardır. Güç kaybı vb. Nedeniyle veri kaybını bozmamak için kullanırlar. İşletim sistemi bunu bir RAM yer paylaşımına yazar. Güç kaybı olduğunda dosya sistemi bozulmaz ve verileri yalnızca istediğiniz zaman belleğe "kaydedebilirsiniz".

Benzer şekilde, Linux işletim sistemlerinde, dosya sistemini olduğu gibi tutacak bir teknik vardır ve SD karta sadece isterseniz yazabilirsiniz. Bu soru , salt okunur bir dosya sisteminin nasıl oluşturulacağını açıklar ve değişiklikleri yalnızca isterseniz kaydedebilirsiniz. Bu, 3. seçeneğinizi kullanacağınız anlamına gelir: "Geçici bir dosyaya yazın ve gerektiğinde devam edin". Soru ayrıca "Salt okunur bir dosya sistemi nasıl oluşturulur" makalesine de işaret eder. Belki de bu başlangıç ​​için ilk yer olabilir!


PI'daki bu makaleye sahip olan var mı? Çok fazla adaptasyon gerektirecek gibi görünüyor
GuySoft

2

Her şey kaybetmeye hazır olduğunuz veri miktarına bağlıdır. Hiçbir şeyi kaybetmeyi göze alamazsanız, PI'nızı doğrudan aküye (elbette bir sigorta ile) bağlamak için bir yol bulmanızı gerektirir, böylece kontak kapatıldığında kapanmaz.

Daha sonra, tipik bir araba aküsü 80 Ah civarında olacak ve PI 500-1200 mA arasında tüketecek (A veya B modeline bağlı olarak), bu da muhtemelen araç akünüzü 2 ila 6 gün arasında tüketir, bu yüzden bunu kabul edilebilir bulacağınızı sanmıyorum.

Hala veri kaybını karşılayamıyorsanız, güç kaynağını PI'dan kontrol edebileceğiniz ve ayrıca ateşleme durumunu izleyebileceğiniz bir tür özel donanım tasarlayabilirsiniz. Kontak kapalıysa, verilerinizi SD karta temizler, işletim sistemini kapatırsınız ve son adım olarak güç kaynağını kapatırsınız. PI'nın yeniden başlaması için, kontak açıldığında da güç kaynağının açılması gerekir. Bunların hepsi yapılabilir, ancak oldukça büyük bir proje.

Ancak, kapanma sırasında bazı verileri kaybetmeyi kabul edilebilir bulursanız, GPS verilerini periyodik olarak bir dosyaya kaydeden arka plan programını, her yazma işleminden sonra bir fsync çağrısı yürütecek şekilde tasarlar (SD'ye veri akıtmak için - kart). Bunu birkaç saniyede bir yaparsanız (ve varsayılan günlük kaydı ext4 dosya sistemini de kullanıyorsanız), bu muhtemelen her güç kaybında yalnızca son birkaç saniyeyi kaybedeceğiniz anlamına gelir.

Raspbian'ın (en azından kurulumum) önyükleme sırasında kök dosya sisteminin bir fsck'iyle gelmediğini lütfen unutmayın. Her bağlamada etkinleştirmek için aşağıdakileri yapmanız gerekir:

tune2fs -c 1 /dev/mmcblk0p2

Ayrıca, / etc / fstab içindeki kök dosya sisteminin son satırını 1 içerecek şekilde değiştirmeniz gerekir, örneğin:

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

Bunu yapmazsanız, kök dosya sisteminiz zaman zaman önyüklenebilir olmayabilir, bu nedenle kontrollü bir kapatma yapmadan gücü kapattığınız başsız bir sistem çalıştırıyorsanız, bu kesinlikle gereklidir.


1

Bu , pi için araba elektriklerini güzel bir şekilde dezenfekte edecek ve araba ateşleme kaybını tespit eden, bu arada pi'ye güç sağlayacak ve pi'yi güvenli bir şekilde kapatmasını söylemek için GPIO pinine bir sinyal gönderecek iyi bir ek gibi görünüyor. .

Ne yazık ki şu anda stokta görünmüyor, ancak ön sipariş verebilirsiniz.


0

Sık sık güç kaybetmeyle uğraşmak zorunda kalırsanız, dosya sistemi ve önyükleme yöntemlerinin (salt okunur, günlük, katılımsız fsck, hızlı kurtarma ..) dikkatli bir şekilde seçilmesi, sistemin güvenilir bir şekilde ortaya çıkmasına yardımcı olabilir.

Uygulama tarafında, belirli veritabanlarının ( sqlite ?) Kullanılması, yeniden açıldığında veriler üzerinde tam bir yazma durumunu veya yazma durumunu garanti etmemelidir.

Gerçekten daha iyi olur de, gerektiğinde kapatılmaktan kaçınmaya çalışmak . Daha küçük bir denetleyiciyle, güç kaynağını sık sık izlersiniz ve kapanırsa, bir şeyleri kapatmak, kalıcı verileri kaydetmek ve muhtemelen güç geri gelene kadar işlemciyi uyku moduna sokmak veya durdurmak için küçük bir pencereniz olur. PI gibi büyük bir genel amaçlı işlemciyle, bu oldukça uzun bir boşluk gerektirebilir.

Bu nedenle, çevrimiçi bir güç rezervine ve ana güç kaynağı düştüğünde bir uyarıya sahip olmak yardımcı olabilir. Hatalıysa, geçici güç kaybı (yazma, nefesini tutma) ve olası kapatma (kaydetme ve temizleme) arasında ayrım yapmanız gerekebilir.

Bir arabada +12/24 V'ye sahip olacaksınız ve PI +5 V kullanıyor, bu nedenle dönüştürücüde veya öncesinde bir şey için potansiyel (heh) var. Örneğin voltaj düştüğünde konvertörden önce makul boyutta bir 9-12 V pil diyot-VEYA yapabilirsiniz . Nispeten ağır güç çekilmesi düşünüldüğünde, bunun bir şekilde şarj edilmesi gerekir. Ayrıca ana güç hattı için bir karşılaştırıcıyı veya özel bir voltaj monitörünü bağlayabilir ve ana güç kesildiğinde uyarı alabilirsiniz. (PI'ya işaret etmenin hızlı bir yolunun ne olacağını açıkça bilmiyorum.)


1
İlgili bir güç sorusu ortaya çıktı: raspberrypi.stackexchange.com/questions/3778/…
XTL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.