예측할 수없는 전원 공급 장치를 다루는 전략


15

자동차에 Pi를 설치하고 GPS 데이터를 기록하는 데 사용하고 싶습니다. SD 카드에 쓸 때 정전으로 인한 문제를 최소화하기 위해 어떤 프로그램 (프로그램에서)을 따라야합니까?

지금까지 나는 생각할 수 있습니다 :

  • 데이터 저장 및 간헐적으로 만 쓰기
  • 차량 속도가 0에 가까울 때만 기록하십시오 (즉, 시동을 끄려고 함).
  • 내가 손상을 입힐 수있는 임시 파일에 기록 한 다음 매번 유지하십시오.

나는 있는지 궁금합니다

  • 갑작스러운 종료에도 불구하고 대부분의 시간 동안 머무를 수있는 파일 시스템 모드
  • 보다 신뢰할 수있는 쓰기 작업을 수행하는 동안 전원 차단으로부터 복구하는 방법

분명히 일부 데이터 손실은 피할 수 없지만 어떻게 최소화 할 수 있습니까?

답변:


3

공급 측면에는 두 가지 옵션이 있습니다 (적어도).

  • 많은 자동차에는 이제 점화로 전환되지 않는 액세서리 소켓이 있습니다 ... 차에 자동차가 있으면이를 사용하십시오 (그러나 사용하지 않을 때는 플러그를 뽑아야합니다!). 크 랭킹)
  • 자체 전력 변환기를 설계하는 경우 차량 스위치를 끈 후에도 전원 공급 장치가 충분히 오래 유지 될 수 있도록 충분한 저수지 커패시터를 추가하십시오. GPIO의 차량 꺼짐 (차량 공급이 임계 값 아래로 떨어짐)을 감지 할 수도 있습니다. 전원을 끈 후 쓰기를 시작하지 마십시오

2

Windows Embedded에는 Enhanced Write Filters라는 개념이 있습니다. 전원 손실 등으로 인한 데이터 손실을 피하기 위해 사용합니다. OS는 RAM 오버레이에 데이터를 씁니다. 전원이 끊길 때 파일 시스템이 손상되지 않으며 원하는 경우에만 데이터를 메모리에 "커밋"할 수 있습니다.

마찬가지로 Linux 운영 체제에는 파일 시스템을 그대로 유지하는 기술이 있으며 원하는 경우에만 SD 카드에 쓸 수 있습니다. 이 질문 은 읽기 전용 파일 시스템을 구축하는 방법을 설명하고 원하는 경우에만 변경 사항을 저장할 수 있습니다. 이것은 당신이 옵션 3 : "임시 파일에 쓰고 필요할 때 지속"을 사용한다는 것을 의미합니다. 이 질문은 또한 "읽기 전용 파일 시스템을 구축하는 방법"기사를 가리 킵니다. 아마도 그게 처음 시작일지도 모릅니다!


누구든지이 기사를 PI에서 다루려고 했습니까? 많은 적응이 필요할 것 같습니다
GuySoft

2

모두 풀려고 준비된 데이터의 양에 따라 다릅니다. 느슨하게 풀 수 없다면 PI를 배터리에 직접 연결하는 방법 (물론 퓨즈 사용)을 찾아 점화가 꺼 졌을 때 꺼지지 않도록해야합니다.

다시 말하지만 일반적인 자동차 배터리는 약 80 Ah이며 PI는 500-1200mA (모델 A 또는 B인지에 따라 다름) 사이에서 소비하므로 2 일에서 6 일 사이에 자동차 배터리가 방전 될 수 있습니다. 그래서 나는 당신이 이것을 받아 들일 것이라고 생각하지 않습니다.

여전히 데이터를 잃을 여유가 없다면 PI의 전원 공급 장치를 제어하고 점화 상태를 모니터링 할 수있는 일종의 사용자 지정 하드웨어를 설계 할 수 있습니다. 점화가 꺼져 있으면 데이터를 SD 카드로 플러시하고 OS를 종료 한 다음 마지막 단계에서 전원 공급 장치를 끕니다. 점화가 켜져있을 때 전원 공급 장치를 켜서 PI를 다시 시작해야합니다. 이것은 모두 가능하지만 상당히 큰 프로젝트입니다.

그러나 종료시 일부 데이터를 잃어 버릴 수 있다면 GPS 데이터를 주기적으로 파일에 저장하는 데몬을 디자인 할 때마다 매번 쓰기 후 fsync 호출을 실행하는 방식으로 데이터를 SD로 플러시합니다. 카드). 이 작업을 몇 초마다 수행하고 기본 저널링 ext4 파일 시스템을 사용하는 경우 각 전원 손실시 마지막 몇 초만 느슨하게 할 수 있습니다.

Raspbian (적어도 나의 설치)은 부팅시 루트 파일 시스템의 fsck와 함께 제공되지 않았습니다. 모든 마운트에서 활성화하려면 다음을 수행해야합니다.

tune2fs -c 1 /dev/mmcblk0p2

또한 / etc / fstab에서 루트 파일 시스템의 마지막 행을 다음과 같이 1로 변경해야합니다.

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

이 작업을 수행하지 않으면 루트 파일 시스템이 때때로 부팅되지 않을 수 있으므로 제어 된 종료를 수행하지 않고 전원을 끄는 헤드리스 시스템을 실행하는 경우 반드시 필요합니다.


1

이것은 파이에 대한 자동차 전기를 멋지게 소독하고 자동차 점화 손실 감지를 처리하고 그 동안 파이에 전원을 공급하며 파이를 안전하게 종료하도록 GPIO 핀에 신호를 보냅니다. .

불행히도 현재 재고가없는 것 같지만 선주문 할 수 있습니다.


0

전력 손실을 자주 처리해야하는 경우 파일 시스템 및 부팅 방법 (읽기 전용, 저널, 무인 fsck, 빠른 복구 등)을 신중하게 선택하면 시스템이 안정적으로 작동하는 데 도움이 될 수 있습니다.

응용 프로그램 측에서 특정 데이터베이스 ( sqlite ?)를 사용하면 다시 열 때 데이터에 대한 전체 쓰기 또는 쓰기 상태가 없어야합니다.

더 나은는 것이 참으로 필요한 경우를 제외하고 종료하는 것을 피하기하려고합니다. 더 작은 컨트롤러를 사용하면 전원 공급 장치를 자주 볼 수 있으며 전원이 꺼지면 사물을 종료하고 비 휘발성 데이터를 저장하며 전원이 복구 될 때까지 프로세서를 절전 모드 또는 중지 할 수있는 작은 창이 있습니다. PI와 같은 큰 범용 프로세서를 사용하면 꽤 긴 간격이 필요할 수 있습니다.

따라서 온라인 전원 예비 및 주 전원 공급 중단시 경고가 도움이 될 수 있습니다. 고장이 나면 일시적인 전력 손실 (쓰기 금지, 숨 참기) 및 종료 가능성 (저장 및 정리)을 구별해야 할 수도 있습니다.

자동차에는 + 12 / 24V가 있고 PI는 + 5V를 사용하므로 컨버터 내부 또는 외부에 무언가 가능성이 있습니다 (heh). 예를 들어 전압 강하시 인계 할 수있는 컨버터 전에 합리적으로 크기가 다른 9-12V 배터리 를 다이오드 또는 OR 할 수 있습니다 . 상대적으로 높은 전력 소비를 고려하면 어떻게 든 충전 상태를 유지해야합니다. 주 전원 라인에 대한 비교기 또는 특수 전압 모니터를 조작하고 주 전원이 꺼지면 경고를받을 수도 있습니다. (PI에 신호를 보내는 가장 빠른 방법이 무엇인지 알 수 없습니다.)


1
이와 관련된 전력 문제는 팝업 것 같습니다 : raspberrypi.stackexchange.com/questions/3778/...
XTL에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.