Road Avenger

A Valentine One-integrated dashcam powered by Raspberry Pi.
(The project is currently in alpha version; this page contains placeholder content. More details to come soon.)

Road Avenger Project Image 1
Road Avenger Project Image 2
Road Avenger Project Image 3

Features

Hardware

Note: These are Amazon Affiliate links, and I may receive commissions on purchases that you make when you use them.

Build

This section will provide detailed instructions and diagrams on how to assemble the hardware components. Information on 3D printed cases and wiring guides will be available here soon.

Placeholder for build instructions

This project is designed for the Raspberry Pi 4 Model B. While other versions of Raspberry Pi may work, they are considered unsupported. All 3D-printed materials will be designed for the Pi 4 Model B only.

The software is CPU-intensive (a 4-core CPU is a must), and the Pi 4 Model B is the final version that can run on 15 watts power (no special power supply required). This allows it to be used in your car.

Software Setup

Install the latest Raspberry Pi OS Lite (64-bit) to your Micro-SD card, with SSH enabled.

After booting, update/upgrade all packages and disable the swapfile to prepare the OS for use.

From an SSH terminal, setup the environment:


sudo apt-get install ffmpeg
git clone https://github.com/KawaiiFiveO/RPi-V1-Dashcam.git
cd RPi-V1-Dashcam
python -m venv env --system-site-packages
source env/bin/activate
pip install -r requirements.txt
cp config.example config.py
            

You can use the scripts in tests to confirm that your hardware works.

You can configure settings such as recording duration and camera orientation in config.py. Note that you must copy config.example to config.py to prevent your settings from being overwritten by git pull.

Then, once you're ready to try the dashcam:


python main.py
            

See Web Interface for info on how to control the dashcam.

Run Automatically on Boot

If you want it to run automatically on boot, setup the service:


sudo cp service/dashcam.service /etc/systemd/system/dashcam.service
sudo nano /etc/systemd/system/dashcam.service
            

Edit the file with your values, then execute:


sudo systemctl daemon-reload
sudo systemctl enable dashcam.service
sudo systemctl start dashcam.service
            

To stop it from running automatically on boot:


sudo systemctl stop dashcam.service
sudo systemctl disable dashcam.service
            

Updating Software

To get the latest software version from the repo, execute these commands from the repository root:


git pull
sudo systemctl daemon-reload
sudo systemctl restart dashcam.service
            

Web Interface

When your Pi is connected to your home network, you can visit the webpage (at your Pi’s IP and port 5000) in your browser to control the dashcam. The Pi's IP is displayed on the OLED screen.

For example: http://192.168.50.58:5000/

Clean Shutdown

It is recommended to use the Shutdown Pi button before unplugging the dashcam. To enable this feature:


sudo visudo
            

Scroll to the very bottom of the file and add this line (replace myuser with your username):


myuser ALL=(ALL) NOPASSWD: /sbin/shutdown
            

Exit the editor and save the file. This will allow the Shutdown Pi button to function.

Web-Only Mode

To access the files without starting any other dashcam functions (only when the dashcam service is not already running):


python main.py --web-only
            

Creating a Wi-Fi Hotspot

To make the Pi start up its own network so that you can access the web interface when it's not connected to your home network:


nmcli con add type wifi ifname wlan0 con-name Hotspot autoconnect yes ssid V1-Dashcam-Hotspot
nmcli con modify Hotspot 802-11-wireless.mode ap
nmcli con modify Hotspot ipv4.method shared
nmcli con modify Hotspot ipv4.addresses 192.168.4.1/24
nmcli con modify Hotspot wifi-sec.key-mgmt wpa-psk
nmcli con modify Hotspot wifi-sec.psk "MyPasswordHere"
nmcli con modify MyHomeWifi connection.autoconnect-priority 10
nmcli con modify Hotspot connection.autoconnect-priority -10
sudo systemctl restart NetworkManager
            

Replace V1-Dashcam-Hotspot, MyHomeWifi, and MyPasswordHere with your own values.

Post-Processing

While the Web Interface has a Burn-in option, it is extremely slow and not recommended for actual use.

Instead, on a desktop computer with FFmpeg and Python installed, download and execute the process_video script in the standalone folder:


python process_video.py "/path/to/your/video/20250817_131511.mp4"
            

The video needs to have a .csv log file in the same directory with the same name (both obtained from the dashcam). This will stabilize the video and burn-in the overlay to it.

Use the --no-stabilize flag if you do not want stabilization.

Congratulations, your dashcam video is now ready to be edited/uploaded!

License

This project is distributed under the MIT License. See the LICENSE.md file in the source repository for more information.

You are free to use, modify, and distribute this software, provided you include the original copyright and license notice in any copy of the software/source.

This project uses code from Valentine Research's ESP Library, which is distributed under the MIT License. See the ESP-License.md file in the source repository for more information.