https://github.com/minarox/racecast-emitter
Onboard autonomous IoT project to capture and transmit data and media stream from the race car.
https://github.com/minarox/racecast-emitter
i2c-bus livekit nodejs socat typescript
Last synced: 8 months ago
JSON representation
Onboard autonomous IoT project to capture and transmit data and media stream from the race car.
- Host: GitHub
- URL: https://github.com/minarox/racecast-emitter
- Owner: Minarox
- License: apache-2.0
- Created: 2023-06-02T07:31:46.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-10-17T14:52:54.000Z (9 months ago)
- Last Synced: 2025-10-18T17:29:19.859Z (9 months ago)
- Topics: i2c-bus, livekit, nodejs, socat, typescript
- Language: Go
- Homepage: https://racecast.minarox.fr
- Size: 748 KB
- Stars: 1
- Watchers: 0
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
RaceCast


Onboard autonomous IoT project to capture and transmit data and media stream from a race car.
racecast.minarox.fr »
Table of Contents
## About The Project
> ⚠️ **Important note:**
> This project has a strong dependency on the specific hardware and software configurations used. It is provided for reference only for those who wish to create a similar system.
[Go](https://go.dev/) script for acquiring and transmitting data and media stream from the various sensors mounted on the embedded system from the race car through cellular network.
### Features
- Collecting data from the modem, GPS, and sensors by executing [ModemManager](https://modemmanager.org/) cli commands
- Updating [LiveKit](https://livekit.io/) room metadata at regular intervals when changes are detected
- Creating and controlling an optimized [Chromium](https://www.chromium.org/) instance
- Capturing and sending various streams from [Chromium](https://www.chromium.org/) to the [LiveKit](https://livekit.io/) server
### Tech Stack
- [Go](https://go.dev/)
- [Chromium](https://www.chromium.org/)
- [LiveKit](https://livekit.io/)
- [ModemManager](https://modemmanager.org/)
### Hardware
- [Raspberry Pi 5](https://www.raspberrypi.com/products/raspberry-pi-5/) (8 Go)
- [SixFab 4G/LTE Cellular Modem Kit](https://sixfab.com/product/raspberry-pi-4g-lte-modem-kit/)
- [Battery UPS HAT](https://www.dfrobot.com/product-2840.html?srsltid=AfmBOooD28ApNQEqDY-Vkc-WCCOt0VZ2mOPo3arpIw6eJ0-mFeeHss7Z)
- MPU6050 sensor
- Various UVC Webcam, including Elgato Cam Link 4K
### Configuration
A `.env` file must be created with the information provided in `.env.example`.
All fields are required.
#### ModemManager
Grant the desired user the necessary permissions to partially control [ModemManager](https://modemmanager.org/).
This step is required if you want to use the [Go](https://go.dev/) script without running it with `sudo`.
```bash
sudo nano /etc/polkit-1/localauthority/50-local.d/50-modemmanager.pkla
```
```bash
[Allow mmcli]
Identity=unix-user:username
Action=org.freedesktop.ModemManager1.Device.Control
ResultAny=yes
ResultInactive=yes
ResultActive=yes
[Allow mmcli location]
Identity=unix-user:username
Action=org.freedesktop.ModemManager1.Location
ResultAny=yes
ResultInactive=yes
ResultActive=yes
```
```bash
sudo systemctl restart ModemManager
```
## Author
[@Minarox](https://www.github.com/Minarox)