Answers:
这完全取决于您准备释放的数据量。如果您无法承受任何损失,则需要找到一种方法将PI直接连接到电池(当然要有保险丝),以便在点火开关关闭时不会将其关闭。
再说一次,典型的汽车电池将具有约80 Ah的电量,并且PI会消耗500-1200 mA(取决于是A还是B型),因此可能会在2到6天内耗尽您的汽车电池,所以我认为您不会接受这一点。
如果您仍然负担不起丢失数据的费用,则可以设计某种自定义硬件,在其中可以从PI控制电源并监视点火状态。如果点火开关关闭,则将数据刷新到SD卡,关闭操作系统,然后作为最后一步关闭电源。点火开关打开时也需要打开电源,以使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 ^^^^^
如果您不这样做,那么根文件系统可能会不时启动,因此,如果您运行的是无头系统,则在不执行受控关机的情况下关闭电源,这是绝对必要的。
这看起来像是一个很好的添加,可以很好地为pi消毒汽车电气,并处理检测到汽车点火损失的信息,同时为pi提供电源,并向GPIO引脚发送信号以告知其安全关闭pi 。
不幸的是,目前似乎缺货,但您可以预订。
如果您必须经常处理掉电问题,那么仔细选择文件系统和引导方法(只读,日志,无人值守的fsck,快速恢复..)可能有助于确保系统可靠地启动。
在应用程序方面,使用某些数据库(sqlite?)应保证重新打开时对数据的整体写入或不写入状态。
确实最好是避免在必要时除非必须关闭。使用较小的控制器,您通常会观察电源,如果电源出现故障,则有一个小窗口可以关闭设备,保存所有非易失性数据,并可能使处理器休眠或停止,直到恢复供电为止。对于像PI这样的大型通用处理器,可能需要相当长的时间。
因此,具有在线动力储备并在主电源出现故障时发出警告可能会有所帮助。如果出现故障,则可能需要区分暂时断电(不要写,屏住呼吸)和可能的关机(保存并清理)之间。
在汽车中,您将拥有+12/24 V电压,而PI使用+5 V电压,因此转换器内部或之前的电压有可能(heh)。例如,您可以对另一个9-12 V大小合适的电池进行二极管或运算,然后在电压下降时接管转换器。考虑到相对较大的功耗,则需要以某种方式保持充电状态。您还可以为主电源线安装比较器或专用电压监控器,并在主电源关闭时收到警报。(我暂时不知道用什么方法可以快速发送PI信号。)