Part 2 of the series on my development of a Raspberry Pi based dashcam. See this post for part 1
Although I’ve only just posted part 1 I’ve actually made quite a lot of progress towards achieving the objectives (as outlined in part 1.) In this post, I’ll look at the hardware I’ve chosen and show the Software Overview and Pseudo Code for pidashcam daemon
The picture at the top shows the basic hardware sitting on a breadboard for development.
- Raspberry Pi 3 with the UPS Pico HAT sitting on top (including 450mAh battery)
- Breadboard with Adafruit Ultimate GPS (including external antenna because I’m indoors) and the two buttons.
I haven’t got the LEDs on yet.
The one addition is the HDMI Camera Extender I purchased from Tindie. This will allow me to have the camera mounted up near the top of the screen but have the main unit down on the dashboard somewhere: maybe down behind the gear change on my Golf Cabriolet.
PiDashCam Code Overview
The code comprises an installed system daemon with three threads:
1. Main thread
3. Camera thread
4. GPS thread
There are interrupt routines to handle the two buttons and there are several Events to manage signalling between the threads.
Subject to change – I’ll come back and revise this as development progresses
Button A interrupt handler (flush video) Wait for ExtraTime seconds set the flushBuffer event Button B interrupt handler (stop recording) If recording Wait for ExtraTime seconds set the flushBuffer event wait for reset the recording event Else Set the recording event EndIf Camera thread Do until shutDown If recording Initialise Camera While recording start recording into buffer If flushBuffer flush buffer to new file If shutdown is set reset recording event Else update annotation with current date-time, position and speed EndIf wait for 0.2 seconds EndWhile EndIf wait for 1 second EndDo END GPS Thread Initialise connection to gpsd Do until shutDown update current GPS info EndDo END Power failure wait for ExtraTime seconds set flushBuffer set shutdown Main thread Kick off Camera thread Kick off GPS thread reset the flush video flag reset the shutdown flag set the record flag while not shutdown wait for 1 second while LAN is connected and there are videos in the sync folder wait for 1 second Kill threads initiate system shutdown exit