
Handheld sstc
automagicle/handheld-sstc
A handheld SSTC project on PCB, designed for a large magic wand form factor, entirely powered from 8s 18650. Uses direct secondary feedback with gate driver and MOSFETs, and 555 interrupter

Open-source Raspberry Pi vehicle dashboard. Reads CAN (J1939), OBD-II, Megasquirt/Speeduino, GPS, and GPIO — streams to a canvas-based kiosk frontend with a visual no-code layout editor.
Pi dash input hat is an open-source printed circuit board by outlandfabworks, from the outlandfabworks/overdash repository on GitHub, published under the MIT licence. It is a 2-layer board of 100 × 56.5 mm with 68 parts on 61 nets, routed with 970 tracks and 27 vias.
It is built around the SMAJ15A, DMG2305UX and SB360, with the SMAJ36A among its other parts. Its parts include 25 resistors, 19 diodes, 9 ICs, 4 connectors and 2 capacitors. It belongs with the radio and wireless boards of this library.
Open-source digital dashboard for Raspberry Pi. Most commercial Pi-based dash solutions lock you into a single ECU brand and require paid third-party software licenses. Overdash doesn't: it speaks J1939 CAN, OBD-II K-line, ELM327, CAN OBD, GPS, and GPIO natively, so it works with engine swaps, custom builds, and vehicles that commercial options simply don't support.
A Python async backend reads from any combination of those sources simultaneously and streams everything over WebSocket to a Chromium kiosk frontend. Gauges are rendered on canvas, and the layout is fully editable in-browser with a visual no-code editor. No paid software required.
Built for a TDI-swapped Land Rover Discovery (J1939 engine + CompuShift Sport TCM + ZF4HP22EH), but config-driven; no code changes needed to adapt it to another vehicle.

# Clone
git clone https://github.com/outlandfabworks/overdash.git
cd overdash
# Create a virtual environment and install dependencies
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
# Test with the mock vehicle source (no hardware required)
.venv/bin/python -m backend.main configs/vehicles/mock.yaml
# Open http://localhost:8080 in a browserFor full installation on a Raspberry Pi (CAN setup, systemd service, Chromium kiosk), see INSTALL.md.
backend/
main.py Entry point: wires sources, processors, servers
data_bus.py In-memory signal store with asyncio pub/sub
config.py YAML loader
sources/
base.py Abstract DataSource
can_j1939.py J1939 PGN/SPN decoder (python-can)
can_compushift.py CompuShift Sport TCM CAN messages
can_obd.py OBD-II over CAN (ISO 15765-4)
obd_kline.py ISO 9141-2 / KWP2000 K-line poller
elm327.py ELM327 USB/Bluetooth OBD adapter
megasquirt.py Megasquirt 1/2/3 and Speeduino USB serial
gps_nmea.py GPS via NMEA serial stream
analog_adc.py Analog voltage/sensor via SPI ADC (MCP3xxx)
frequency_counter.py RPM/frequency via GPIO pulse counting
gpio_inputs.py Overdash Input HAT (turn signals, lights, reverse)
mock_vehicle.py Simulated signals for dev/testing
processors/
odometer.py Integrates vehicle_speed → odometer + trip signals
server/
websocket.py WebSocket broadcast server (30 Hz)
http_api.py HTTP API + frontend file serving (port 8080)
frontend/Hardware → Source._read_loop() → DataBus.publish(name, value, unit)
│
OdometerProcessor (vehicle_speed → odometer/trip)
│
WebSocketServer (batches at 30 Hz)
│
Browser WSClient
│
LayoutManager.update(signals)
│
Gauge.draw(value) → <canvas>frontend/js/gauges/my_gauge.js extending BaseGauge, implement draw(value).index.html: GaugeRegistry.register('my_gauge', MyGauge)."type": "my_gauge".backend/sources/my_source.py extending BaseSource, implement _read_loop().backend/main.py: _SOURCE_TYPES['my_source'] = MySource.type: my_source.| Signal | Source | Notes |
|---|---|---|
engine_rpm | J1939 PGN 61444 SPN 190 | EEC1 |
coolant_temp | J1939 PGN 65262 | ET1 |
intake_map | K-line PID 0x0B | Absolute kPa (doubles as boost) |
vehicle_speed | J1939 PGN 65265 | CCVS1 |
trans_current_gear_label | CompuShift CAN 0x3E0 | P/R/N/D/3/2/1 |
trans_tcc_lockup | CompuShift CAN 0x3E0 | 0 = open, 1 = locked |
trans_temp | CompuShift CAN 0x3E1 | °C |
battery_voltage | J1939 PGN 65271 | VEP1 |
odometer | Processor | Persisted lifetime km |
trip | Processor | Resettable trip km |
Default map derived from community reverse-engineering (Sport firmware ≥ 2.x).
Override via messages: in the vehicle YAML if your TCM uses different IDs.
| CAN ID | Content |
|---|---|
| 0x3E0 | Current gear, target gear, TCC status, shift mode |
| 0x3E1 | Trans temp |
| 0x3E2 | Line pressure, error codes |
MIT. See LICENSE. Third-party license notices in THIRD_PARTY_LICENSES.md.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 1k | R_0805_2012Metric | R17, R18, R19, R20, R21, R22, R23, R24, R25 |
| 8 | 10k | R_0805_2012Metric | R9, R10, R11, R12, R13, R14, R15, R16 |
| 8 | 560 | R_0805_2012Metric | R1, R2, R3, R4, R5, R6, R7, R8 |
| 8 | LED_GRN | LED_THT:LED_D3.0mm | D9, D10, D11, D12, D13, D14, D15, D16 |
| 8 | PC817 | Package_DIP:DIP-4_W7.62mm | U1, U2, U3, U4, U5, U6, U7, U8 |
| 8 | SMAJ15A | Diode_SMD:D_SMA | D1, D2, D3, D4, D5, D6, D7, D8 |
| 6 | MountingHole_2.7mm_M2.5 | MountingHole:MountingHole_2.7mm_M2.5 | H1, H2, H3, H4, H5, H6 |
| 1 | 100u/3A | L_Radial_D10.0mm_P5.00mm_Fastron_07P | L1 |
| 1 | 12V_PWR_IN | PhoenixContact_MSTBA_2,5_2-G-5,08_1x02_P5.08mm_Horizontal | J3 |
| 1 | 2.5A_Poly | R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | F1 |
| 1 | 220u/10V | CP_Radial_D8.0mm_P3.50mm | C2 |
| 1 | 220u/35V | CP_Radial_D8.0mm_P3.50mm | C1 |
| 1 | DMG2305UX | SOT-23 | Q1 |
| 1 | GPIO_2x20 | Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_Vertical | J2 |
| 1 | LED_GRN | LED_D3.0mm | D19 |
| 1 | LM2596-5.0 | TO-220-5_Vertical | U9 |
| 1 | Molex_MicroFit3_9pin | Connector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_Vertical | J1 |
| 1 | SB360 | D_SMA | D18 |
| 1 | SMAJ36A | D_SMA | D17 |
| 1 | Sensor_Connector | PinHeader_2x05_P2.54mm_Vertical | J4 |

automagicle/handheld-sstc
A handheld SSTC project on PCB, designed for a large magic wand form factor, entirely powered from 8s 18650. Uses direct secondary feedback with gate driver and MOSFETs, and 555 interrupter

MoElashmawi/Flyback-AC-DC-Converter
Flyback AC-DC Converter (230V AC to 12V DC) — Full SMPS design using VIPer22A PWM Controller. Schematic, PCB layout & 3D render in KiCad.



dridri/bcflight
Raspberry Pi based drone flight controller and remote control

jyg9/microduck-community-kit
补充microduck缺少的硬件电路和固件,另外配套一些测试工具。imu_to_dxl;banana_pcb;microduck复刻


Brendanofawesome/SimpleFOC-DualESC
High-performance dual BLDC motor driver with FOC (Field-Oriented Control) algorithm support, designed for applications requiring precise motor control with simultaneous dual-motor operation.
It measures 100 × 56.5 mm and has 2 copper layers, 1.6 mm thick.
68 parts, built around the SMAJ15A, DMG2305UX, SB360 and SMAJ36A. 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 outlandfabworks/overdash repository on GitHub, at the commit this page was made from: the board is hardware/pi-dash-input-hat/pi-dash-input-hat.kicad_pcb and its schematic hardware/pi-dash-input-hat/pi-dash-input-hat.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).