
Sub
google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards

Self-driving car
Cuttlefish carrier is an open-source printed circuit board by Ezhkin-Kot, from the Ezhkin-Kot/cuttlefish repository on GitHub. It is a 2-layer board of 87.5 × 63 mm with 15 parts on 39 nets, routed with 103 tracks and 0 vias.
It belongs with the AVR (ATmega, ATtiny) boards of this library.
|
Cuttlefish is an autonomous RC car platform built around an Orange Pi 3B single-board computer and an Arduino Nano microcontroller. The vehicle uses a camera as its primary sensor. Video is processed by an autopilot running on the Orange Pi, which generates steering and motor commands. An Arduino Nano handles low-level motor and servo control. The project combines custom 3D-printed mechanics, dedicated power and interconnection electronics, embedded firmware, and computer vision software. |
| Component | Status |
|---|---|
| Mechanical platform | Complete |
| Power electronics | Complete |
| Interconnection PCB | Complete |
| Arduino firmware | Prototype |
| Camera and video streaming | Complete |
| Orange Pi control software | In development |
| Autonomous navigation | Planned |
The system is divided into two main computing units, each responsible for a separate layer of control.
Orange Pi 3B
┌───────────────────┐
Camera ─────►│ Video acquisition │
│ ↓ │
│ Scene processing │
│ ↓ │
│ Autopilot │
│ ↓ │
│ Control commands │
└─────────┬─────────┘
│ USB Serial
│ 115200 baud
▼
Arduino Nano
┌───────────────────┐
│ Command parsing │
│ Motor PWM control │
│ Servo control │
└────┬─────────┬────┘
│ │
TB6612FNG MG90S
│ │
DC motor SteeringThe SBC handles high-level operations:
The MCU handles low-level hardware operations:
This separation allows autonomous driving algorithms to be developed independently of the low-level hardware implementation.
| Component | Description |
|---|---|
| Chassis | Custom 3D-printed platform |
| Drive motor | 12 V geared DC motor |
| Steering | MG90S servo with Ackermann steering linkage |
| Motor driver | TB6612FNG |
| Microcontroller (MCU) | Arduino Nano |
| Single-board computer (SBC) | Orange Pi 3B (2 GB RAM) |
| Camera | OV2710 GXIVISION, 2 MP, 1080p, 30 FPS, 100° FOV |
| Battery | 3 × 18650 Li-ion cells (3S) |
| Main DC-DC converter | MP1584, 12 V to 5 V, 3 A |
| SBC DC-DC converter | XL4015E, 12 V to 5 V, 4 A |
The vehicle is powered by a 3S 18650 Li-ion battery pack.
3S Battery Pack
(~11.1 V)
│
Power Switch
│
┌────────────┼────────────┐
│ │ │
TB6612FNG VM MP1584 XL4015E
│ │ │
DC Motor 5 V rail 5 V rail
│ │
Arduino Nano Orange Pi
+ TB6612FNG VCC
+ ServoThe two DC-DC converters provide separate 5 V power rails for the control electronics and the single-board computer.
The battery cells are removable and charged using an external charger.
Battery protection is not yet implemented. The current prototype does not include a BMS or automatic undervoltage cutoff. Battery voltage must therefore be monitored manually. Avoid discharging individual cells below approximately 3.0 V.
The vehicle uses a dedicated interconnection PCB as part of its power and electronics assembly. Two 470 µF / 16 V electrolytic capacitors are mounted on the board to help stabilize the power supply.
The KiCad project is available in hardware/schemas/. It includes:
cuttlefish-carrier.kicad_sch — schematic.cuttlefish-carrier.kicad_pcb — PCB layout.gerber/ — manufacturing files.cuttlefish-carrier.csv, cuttlefish-carrier.xlsx — bills of materials.cuttlefish-carrier-all-pos.csv — component placement data.| Arduino Pin | Function |
|---|---|
| D9 | Steering servo signal |
| D3 (PWM) | TB6612FNG PWMA |
| D2 | TB6612FNG AIN1 |
| D4 | TB6612FNG AIN2 |
| D5 | TB6612FNG STBY |
| USB | Serial communication with Orange Pi |
The current implementation uses USB Serial communication at 115200 baud. Hardware UART communication is a possible future alternative.
Note: Arduino Nano uses 5 V logic, while Orange Pi GPIO uses 3.3 V logic. Direct UART connections require appropriate logic-level conversion.
The chassis is designed in Fusion 360 and manufactured using 3D printing.

Source files and printable models are available inhardware/3d-models/:
cuttlefish.f3d — parametric Fusion 360 model.cuttlefish.stl — printable chassis model.The software is split between the Arduino firmware and the Orange Pi application.
Source code: mcu-firmware/
The current firmware implements basic manual control over Serial communication.
| Command | Action |
|---|---|
w | Move forward |
s | Move backward |
x | Stop the motor |
a / d | Start steering left / right |
e / q | Stop steering left / right |
c | Immediately return steering to center |
Current steering parameters:
The current firmware is a prototype intended for manual control. A more advanced command protocol with numerical steering and motor speed values, telemetry, and a communication watchdog is planned.
The Orange Pi application is planned in Rust and will serve as the main interface between the camera, autopilot, and microcontroller.
Planned functionality:
The target operating system is Armbian (Debian 13).
The camera is an OV2710-based USB UVC device that provides MJPEG video without requiring software-side encoding.
A working video streaming prototype is available in software/cam-test/.
It is implemented in Rust using:
axum for the HTTP server and WebSocket communication.v4l for camera access through V4L2.The application captures MJPEG frames and forwards them to connected clients over WebSocket. A browser-based interface displays the video stream along with FPS and bandwidth statistics.
Supported camera modes:
| Resolution | Frame rate |
|---|---|
| 1920 × 1080 | 30 FPS |
| 1280 × 1024 | 30 FPS |
| 1280 × 960 | 30 FPS |
| 1280 × 720 | 30 FPS |
| 1024 × 768 | 30 FPS |
| 800 × 600 | 30 FPS |
| 640 × 480 | 30 FPS |
| 352 × 288 | 30 FPS |
| 320 × 240 | 30 FPS |
Building and running:
Install the required dependencies:
sudo apt install -y build-essential libclang-dev clang v4l-utilsBuild the application:
cd cam-test
cargo build --releaseRun the video server:
./target/release/cam-test /dev/video4 1280 720 30 8080Arguments:
[device] [width] [height] [fps] [port]Open the following address in a browser:
http://<orange-pi-ip>:8080/The camera exposes separate video and metadata device nodes. Their /dev/videoN numbers may change between system boots.
For reliable device selection, use a persistent path from /dev/v4l/by-id/.
Build note: libclang-dev is required by v4l2-sys-mit for bindgen. The application must be built in a Linux environment with the required V4L2 headers.
The project is intended to support multiple autonomous driving approaches through a modular autopilot interface.
Two approaches are currently considered:
An OpenCV-based pipeline without machine learning:
A neural network that predicts steering and potentially motor speed directly from camera frames.
One possible approach is behavioral cloning, where the model is trained using camera footage paired with control commands recorded during manual driving.
This requires a dataset collection pipeline and an appropriate training workflow.
Both approaches are intended to support two execution modes.
| Aspect | Onboard | Remote |
|---|---|---|
| Computation | Orange Pi 3B | External computer |
| Video processing | Local | Remote |
| Network dependency | None | Wi-Fi |
| Latency | Lower | Includes network and streaming overhead |
| Computing resources | Limited by RK3566 and 2 GB RAM | Depends on external hardware |
The remote mode uses WebSocket communication to transmit camera frames to an external computer and receive control commands in return.
The Orange Pi acts as a bridge between the network and the Arduino.
The Orange Pi 3B is based on the Rockchip RK3566 and provides an NPU rated at approximately 0.8 TOPS.
Hardware acceleration through the RKNN toolkit is a potential option for neural network inference. Integration with the Rust application is yet to be investigated.
cuttlefish/
├── hardware/
│ ├── 3d-models/ # Fusion 360 source and printable models
│ └── schemas/ # KiCad schematics, PCB, Gerber files and BOM
├── mcu-firmware/ # Arduino Nano firmware
├── README.md # Project documentation
└── software/
└── cam-test/ # Rust-based camera streaming prototypeAdditional software components will be added as development progresses.
The following improvements are planned:
The platform is also intended to serve as a reproducible hardware base for educational events and robotics hackathons.
Cuttlefish consists of hardware and software components distributed under separate open-source licenses.
| Component | License |
|---|---|
Hardware designs (hardware/) | CERN-OHL-S-2.0 |
MCU firmware (mcu-firmware/) | GPL-3.0-only |
Software (software/) | GPL-3.0-only |
See the respective LICENSE files in each directory
for the full license texts.
Third-party components remain under their respective licenses.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 470uF_16V | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C1, C2 |
| 1 | Arduino_Nano_v3.x | Module:Arduino_Nano_Socket_2x15 | Arduino Nano1 |
| 1 | Battery_Socket | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | BATTERY1 |
| 1 | Motor_Socket | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | MOTOR1 |
| 1 | SBC_Socket | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | SBC1 |
| 1 | SW_SPST | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | SWITCH1 |
| 1 | Servo_Socket | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Horizontal | SRV1 |
| 1 | ~ | Connector_PinSocket_2.54mm:TB6612FNG_PinSocket | TB6612FNG1 |
| 1 | ~ | Connector_PinSocket_2.54mm:MP1584_PinSocket | MP1584 |
| 1 | ~ | Connector_PinSocket_2.54mm:XL4015E_PinSocket | XL4015E1 |
The 11 most common of 15 parts.
It measures 87.5 × 63 mm and has 2 copper layers, 1.6 mm thick.
15 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Ezhkin-Kot/cuttlefish repository on GitHub, at the commit this page was made from: the board is hardware/schemas/cuttlefish-carrier.kicad_pcb and its schematic hardware/schemas/cuttlefish-carrier.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Ezhkin-Kot before reusing the design.

google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards

hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

mntmn/amiga2000-gfxcard
MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

kenp-io/not-for-airpods-repairs
The content of this repository is licensed under the WTFPL License. Please have a close look at the terms before using this material.

Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

Chrismettal/EleLab_v2
Cheap DIY lab system for hobbyists and the tinkering folk
