Các chiến lược để đối phó với việc cung cấp năng lượng không thể đoán trước


15

Tôi muốn cài đặt Pi trong xe của mình và sử dụng nó để ghi dữ liệu GPS. Tôi có thể làm theo những chiến lược nào (trong chương trình của mình) để giảm thiểu các vấn đề do nguồn điện bị gián đoạn khi ghi vào thẻ SD?

Cho đến nay tôi có thể nghĩ về:

  • Lưu trữ dữ liệu và chỉ viết không liên tục
  • Chỉ viết khi tốc độ xe không gần bằng 0 (tức là sắp tắt lửa)
  • Viết vào một tệp tạm thời mà tôi có thể đủ khả năng để bị hỏng, sau đó tiếp tục rằng mọi lúc mọi nơi

Tôi đang tự hỏi liệu có

  • Các chế độ hệ thống tập tin Tôi có thể ở lại trong hầu hết thời gian sẽ tồn tại khi tắt máy đột ngột
  • Các cách để phục hồi từ mất điện trong khi viết đáng tin cậy hơn

Rõ ràng (tôi nghĩ) một số mất dữ liệu là không thể tránh khỏi, nhưng làm thế nào tôi có thể giảm thiểu nó?

Câu trả lời:


3

Có hai lựa chọn (ít nhất) ở phía cung:

  • Nhiều xe ô tô hiện có ổ cắm phụ kiện không được đánh lửa ... nếu xe của bạn có một cái, hãy sử dụng nó (nhưng hãy cẩn thận rút phích cắm khi không sử dụng!) Sẽ cung cấp cho bạn nguồn cung cấp đáng tin cậy (mặc dù điều này có thể giảm trong khi động cơ quây
  • Nếu bạn đang thiết kế bộ chuyển đổi năng lượng của riêng mình, hãy thêm một tụ điện đủ lớn để đảm bảo rằng nguồn cung cấp đủ lâu sau khi tắt xe ... bạn cũng có thể phát hiện xe tắt (nguồn cung cấp xe giảm xuống dưới ngưỡng) cho GPIO, để đảm bảo bạn không bắt đầu viết sau khi tắt nguồn

2

Có một khái niệm trong Windows Embedded gọi là Bộ lọc ghi nâng cao. Họ sử dụng nó để tránh làm hỏng dữ liệu do mất nguồn, vv Hệ điều hành ghi nó vào lớp phủ RAM. Hệ thống tập tin không bị hỏng khi mất điện và bạn chỉ có thể "cam kết" dữ liệu vào bộ nhớ nếu muốn.

Tương tự như vậy, trên các hệ điều hành Linux, có một kỹ thuật để giữ cho hệ thống tệp nguyên vẹn và bạn chỉ có thể ghi vào thẻ SD nếu bạn muốn. Câu hỏi này giải thích cách xây dựng một hệ thống tệp chỉ đọc và bạn chỉ có thể lưu các thay đổi nếu bạn muốn. Điều này có nghĩa là bạn sẽ sử dụng tùy chọn 3 của mình: "Ghi vào tệp tạm thời và duy trì khi cần thiết". Câu hỏi cũng chỉ ra một bài viết "Cách xây dựng một hệ thống tệp chỉ đọc". Có lẽ, đó có thể là nơi đầu tiên để bắt đầu!


Có ai đã thử đi với bài viết này về PI chưa? Có vẻ như nó sẽ cần rất nhiều sự thích nghi
GuySoft

2

Tất cả phụ thuộc vào lượng dữ liệu bạn chuẩn bị mất. Nếu bạn không đủ khả năng để mất bất cứ thứ gì, nó sẽ yêu cầu bạn tìm cách kết nối PI trực tiếp với pin (dĩ nhiên là có cầu chì), để nó không bị tắt khi tắt đánh lửa.

Sau đó, một lần nữa, pin xe thông thường sẽ có khoảng 80 Ah và PI sẽ tiêu thụ trong khoảng 500-1200 mA (tùy thuộc vào việc đó là model A hay B), do đó có thể sẽ làm cạn kiệt pin xe của bạn trong khoảng từ 2 đến 6 ngày, Vì vậy, tôi không nghĩ rằng bạn sẽ tìm thấy điều này chấp nhận được.

Nếu bạn vẫn không đủ khả năng để mất dữ liệu, bạn có thể thiết kế một số loại phần cứng tùy chỉnh nơi bạn có thể kiểm soát nguồn cung cấp từ PI và cũng có thể theo dõi trạng thái đánh lửa. Nếu đánh lửa bị tắt, bạn xả dữ liệu vào thẻ SD, tắt hệ điều hành và sau đó là bước cuối cùng tắt nguồn điện. Nguồn điện cũng cần được bật khi đánh lửa được bật, để PI bắt đầu lại. Đây là tất cả có thể làm được, nhưng một dự án khá lớn.

Tuy nhiên, nếu bạn thấy có thể chấp nhận mất một số dữ liệu khi tắt máy, tôi sẽ thiết kế trình nền lưu dữ liệu GPS định kỳ vào một tệp theo cách nó thực hiện cuộc gọi fsync sau mỗi lần ghi (để xóa dữ liệu sang SD- Thẻ). Nếu bạn làm điều này cứ sau vài giây (và cũng đang sử dụng hệ thống tệp ext4 ghi nhật ký mặc định) thì điều này có thể có nghĩa là bạn sẽ chỉ mất vài giây cuối cùng ở mỗi lần mất điện.

Xin lưu ý rằng Raspbian (ít nhất là cài đặt của tôi) không đi kèm với một fsck của hệ thống tệp gốc khi khởi động. Bạn phải làm như sau để kích hoạt nó ở mọi mount:

tune2fs -c 1 /dev/mmcblk0p2

Bạn cũng phải thay đổi dòng cuối cùng cho hệ thống tệp gốc trong / etc / fstab để chứa 1, như thế này:

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

Nếu bạn không làm điều này thì thỉnh thoảng hệ thống tệp gốc của bạn có thể không khởi động được, vì vậy nếu bạn đang chạy một hệ thống không đầu, nơi bạn tắt nguồn mà không thực hiện tắt máy có kiểm soát thì điều này là hoàn toàn cần thiết.


1

Điều này có vẻ như là một bổ sung tốt sẽ vệ sinh độc đáo cho xe điện cho pi, và xử lý phát hiện mất đánh lửa xe, cung cấp năng lượng cho pi trong thời gian đó và gửi tín hiệu đến pin GPIO để bảo vệ nó tắt pi an toàn .

Thật không may là dường như hết hàng tại thời điểm này, nhưng bạn có thể đặt hàng trước.


0

Nếu bạn phải đối phó với việc mất điện thường xuyên, lựa chọn cẩn thận các phương pháp khởi động và hệ thống tập tin (chỉ đọc, tạp chí, fsck không giám sát, phục hồi nhanh ..) có thể giúp đảm bảo hệ thống xuất hiện đáng tin cậy.

Về phía ứng dụng, sử dụng một số cơ sở dữ liệu nhất định ( sqlite ?) Sẽ đảm bảo toàn bộ trạng thái ghi hoặc không ghi trên dữ liệu khi mở lại.

Thực sự tốt hơn là cố gắng tránh phải tắt máy trừ khi cần thiết. Với bộ điều khiển nhỏ hơn, bạn thường xem nguồn điện và nếu nó tắt, bạn có một cửa sổ nhỏ để tắt mọi thứ, lưu bất kỳ dữ liệu không dễ bay hơi nào và có thể ngủ hoặc dừng bộ xử lý cho đến khi nguồn được phục hồi. Với bộ xử lý đa năng lớn như PI, điều đó có thể đòi hỏi một khoảng cách khá dài.

Vì vậy, có dự trữ năng lượng trực tuyến và cảnh báo khi nguồn cung cấp chính bị giảm có thể giúp ích. Nếu nó bị trục trặc, bạn có thể cần phân biệt giữa mất điện tạm thời (không viết, nín thở) và tắt máy có thể xảy ra (lưu và dọn dẹp).

Trong xe hơi, bạn sẽ có +12/24 V và PI sử dụng +5 V, vì vậy có tiềm năng (heh) cho một thứ gì đó trong hoặc trước bộ chuyển đổi. Bạn có thể có thể đi -HOẶC một pin 9-12 V có kích thước hợp lý khác trước khi bộ chuyển đổi sẽ tiếp quản khi điện áp giảm, chẳng hạn. Xem xét việc rút điện tương đối nặng, điều đó sẽ cần phải được giữ bằng cách nào đó. Bạn cũng có thể lắp đặt bộ so sánh hoặc màn hình điện áp đặc biệt cho đường dây điện chính và được cảnh báo khi mất điện chính. (Tôi không biết điều gì sẽ là một cách nhanh chóng để báo hiệu PI.)


1
Một câu hỏi về sức mạnh liên quan dường như đã xuất hiện: raspberrypi.stackexchange.com/questions/3778/
mẹo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.