OpenDrift Pdb is an open-source printed circuit board by doublej380-pixel, from the doublej380-pixel/OpenDriftRC repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 29.1 × 44 mm with 12 parts on 25 nets, routed with 67 tracks and 12 vias.
It is built around the TPS62162DSG. Its parts include 6 connectors, 4 capacitors, 1 IC and 1 inductor.
OpenDrift is an open source drift gyro for RC drift cars, built around the Waveshare ESP32-S3 Touch AMOLED 1.64 board. It reads steering, throttle, and optional gain channels from a receiver, mixes driver steering with gyro correction, outputs steering and optional throttle signals, and exposes tuning through both the onboard touch UI and a WiFi web configurator.
OpenDrift v1.0 uses a dedicated selectable-rate control task, a single gyro filter, continuous yaw prediction, throttle-informed load-change prediction, and non-accumulating quiet-drift reference feedback. The goal is to make gyro setup less of a black box while keeping the active control path small enough to reason about.
See the current Technical Tuning Reference for the setup order, symptom table, surface-profile workflow, and findings from real track testing. The public tuning guide provides the shorter trackside workflow.
Developers and AI assistants can start with the
project context and handoff, covering the
development history, architecture, validated findings, safety constraints,
current local work, and deferred investigations. It is a dated summary, not
a verbatim chat archive; verify it against the current source.
Install Firmware
Visit opendriftrc.com for the project overview, wiring reference, and Open Beta firmware. The browser installer provides current AMOLED images with either PWM or CRSF receiver support, without an account, source compilation, or command-line tools. Historical round-display releases remain available but are frozen.
Current Features
ESP32-S3 firmware using PlatformIO and Arduino.
280 x 456 AMOLED touch UI with swipeable pages and a permanent built-in
background fallback.
Up to 16 persistent custom AMOLED backgrounds, selectable from the display
or web configurator. JPG, PNG, and WebP images can be converted locally at
opendriftrc.com/backgrounds.
Persistent AMOLED theme engine with light/dark text, seven accent palettes,
and background-aware translucent control panels, based on work contributed
by J3vb.
Dedicated 250 Hz or 333 Hz IMU/control/steering task isolated from UI, WiFi, and logging work.
Continuous yaw-acceleration prediction with throttle-informed look-ahead.
Quiet-drift reference feedback that yields to driver steering and throttle changes.
Receiver steering input.
Optional receiver throttle sensing with automatic Performance Mode behavior.
Receiver gyro gain input.
Selectable GPIO 18 gyro-gain input or throttle passthrough output.
Servo output with center, reverse, and travel settings.
Servo quiet band for direct-drive steering buzz.
Physical servo endpoint calibration for max left, center, and max right.
Separate radio steering travel limit.
Separate servo reverse and gyro reverse.
Gyro tuning:
gain
deadband
maximum correction
smoothing
Drift Memory and limit
Hold Assist
Prediction
Countersteer Assist
Transition Speed
Driver Priority
Anti Wobble
Up to 12 persistent named surface/driving profiles.
Scrollable trackside profile selection on both displays.
Do-nothing signal-loss behavior when steering input is lost.
WiFi access point.
Browser-based web configurator.
Non-blocking PSRAM blackbox logging with controller, prediction, throttle, notch, chassis-motion, and correction telemetry.
Parked blackbox archiving to sequential CSV files on AMOLED microSD, with an
internal-flash fallback when no card is installed.
Persistent settings stored in ESP32 preferences.
Transition Speed adjustment centered at the neutral baseline of 50.
Driver Priority adjustment that yields fast direct gyro gain as steering input increases; default 0 preserves the established response.
Phase-aware Anti Wobble notch with a track-tested default of 50.
Separate PWM and full-duplex CRSF targets for Waveshare AMOLED V1 and V2.
Full-duplex CRSF steering, throttle, gain, link statistics, parameter
telemetry, neutral failsafes, and EdgeTX tuning.
CRSF channel routing to accessory PWM outputs: GPIO 1–8 on AMOLED V1 and
GPIO 3–8 on AMOLED V2.
Hardware Routing
Supported Boards
The Waveshare ESP32-S3 Touch AMOLED 1.64 is the final and primary OpenDrift hardware target. New development, UI work, and release testing target this board.
Waveshare ships V1 and V2 revisions that require different firmware. V1 has its version silkscreen at the top of the PCB and uses LCD_CS on GPIO 9. V2 has the silkscreen beside the right-side pin headers and uses LCD_CS on GPIO 46. Select the exact revision in the web flasher.
The older Waveshare 1.28-inch round display build is deprecated and frozen. Its PlatformIO environment and implementation remain in the repository for experimentation, but no new firmware releases or feature-parity work are planned.
AMOLED V1 and the Round board use this PWM pinout:
Signal
GPIO
Direction
Notes
Receiver steering / servo in
15
Input
Standard RC PWM input
Receiver throttle / throttle in
16
Input
Throttle sensing and blackbox input
Steering servo / servo out
17
Output
Stabilized steering command
Gain input / throttle output
18
Selectable
Gain-channel input by default, or throttle passthrough output
GPIO 18 cannot provide throttle output and read receiver gain at the same time.
To keep throttle sensing and gain adjustment, split the receiver throttle
signal to GPIO 16 and the ESC rather than plugging the ESC into OpenDrift.
Make sure the receiver, ESP32 board, and servo power system share ground.
AMOLED V2 keeps receiver steering on GPIO 15 and throttle on GPIO 16, but moves steering output to GPIO 1 and the switchable gain/throttle connection to GPIO 2. Do not use GPIO 17/18 for OpenDrift signals on V2; Waveshare connects those pins to IMU_INT2 and TP_INT.
CRSF targets repurpose the receiver pins:
Signal
GPIO
Direction
Notes
CRSF receiver TX
17
Input
Native CRSF channel and link frames
CRSF receiver RX
18
Output
Full-duplex parameter telemetry
Steering servo / servo port
15
Output
Selectable 250/333 Hz servo PWM
ESC throttle / throttle port
16
Output
Standard 50 Hz ESC PWM with active-neutral failsafe
AMOLED V2 instead uses GPIO 1 for CRSF RX and GPIO 2 for CRSF TX while retaining GPIO 15 steering-servo output and GPIO 16 ESC output. All CRSF targets use the same full-duplex implementation and the
separate OpenDriftCRSF settings namespace and do not overwrite a PWM tune.
CRSF builds can also mirror any receiver channel to accessory outputs from the
WiFi web configurator. AMOLED V1 exposes GPIO 1–8; AMOLED V2 exposes GPIO 3–8
because GPIO 1/2 carry CRSF. Each enabled pin emits standard 50 Hz receiver PWM
and returns to 1500 microseconds when the CRSF link is lost. These are 3.3 V
signal outputs only: power lights and accessories separately and share ground.
Throttle sensing is not required for basic stabilization, but it is strongly recommended. With the throttle signal connected, OpenDrift can release settled-drift features during power changes instead of inferring those events from yaw alone. Treat it like a sensored-motor cable: the fallback works without it, while Performance Mode has substantially better phase awareness.
The servo should be powered from a suitable BEC or ESC receiver rail. Do not rely on the ESP32 board to power a steering servo. A DIY installation must feed the display/development board regulated 5 V, never an unregulated or 6 V-plus BEC output. The OpenDrift daughter boards under development include an onboard regulator. ESP32-S3 GPIOs are 3.3 V signal pins and are not 5 V tolerant.
Build And Upload
The firmware project is in:
OpenDrift/
Custom AMOLED Backgrounds
OpenDrift keeps the built-in galaxy image in firmware and can additionally
store up to 16 user backgrounds in the board's FFat partition. Custom images
must be 456 x 280 raw RGB565 files; the browser-based
background converter creates the exact
format locally from JPG, PNG, or WebP files.
To install one, join the gyro's OpenDrift WiFi network, open
http://192.168.4.1, and use the AMOLED Backgrounds card. Uploaded images
can be selected or deleted there, and can also be selected from the
Backgrounds page on the AMOLED display. Keep the car stationary while an
image is being written to flash. Leaving the selection on Built-in uses the
factory background and consumes no additional storage.
Build with PlatformIO:
sh
pio run
The default environment is waveshare_amoled_164. Build or upload it explicitly with:
sh
pio run -e waveshare_amoled_164
pio run -e waveshare_amoled_164 -t upload
The custom PlatformIO board definition is included at OpenDrift/boards/waveshare_amoled_164.json.
AMOLED V2 uses separate targets:
sh
pio run -e waveshare_amoled_164_v2
pio run -e waveshare_amoled_164_v2_crsf
CRSF builds are intentionally separate:
sh
pio run -e waveshare_amoled_164_crsf
Both supported targets enable full-duplex CRSF, GPIO 16 ESC output, and neutral-hold arming. Telemetry uses GPIO 18 on AMOLED V1 and GPIO 2 on AMOLED V2.
Main dependencies are managed in OpenDrift/platformio.ini:
SensorLib
LovyanGFX
ESP32Servo
First Power-On
On boot, OpenDrift initializes:
Display
Settings
IMU
Servo output
Receiver inputs
Touch
Gyro calibration
WiFi, if enabled
UI
Keep the car still during startup so gyro calibration can capture a clean yaw-rate offset.
Onboard UI Pages
Swipe left/right to move between pages.
Main
Shows the current gyro gain and provides:
- / +: adjust stored gain when radio gain input is not overriding it.
CAL: recalibrate gyro offset. Use this when the car is sitting still and the gyro seems biased.
Core
Primary correction limits:
Deadband: yaw-rate zone ignored around zero.
MAX CORRECTION: maximum gyro movement across the full calibrated endpoint-to-endpoint steering span. 50% equals center-to-endpoint authority; 100% can override one endpoint to the other.
GYRO REV: reverses only the gyro correction direction.
Use GYRO REV when normal steering direction is correct, but the gyro counter-steers the wrong way.
Response
Fast controller behavior:
SMOOTHING: the software yaw low-pass; 0.00 bypasses it completely.
GYRO LPF: QMI8658 hardware filtering at 24 Hz, lower-latency 120 Hz, or Off for controlled testing.
SERVO QUIET: suppresses very small physical servo-command changes.
Assistance
Slow quiet-drift behavior:
COUNTERSTEER: chooses how much additional steady countersteer OpenDrift carries. Zero preserves the driver-led base response; higher values reduce the steering load on the driver without increasing fast yaw damping.
HOLD ASSIST: controls how firmly the quiet-drift reference is retained.
DRIFT MEMORY: feedback for deviation from a learned quiet-drift reference.
The Drift Memory limit remains available in the web configurator as an advanced limit.
Tail Response
TAIL SPEED is tuned separately from the core v1.0 controls:
50 is the Open Beta baseline response.
Below 50 adds damping during deliberate entries and transitions.
Above 50 releases some damping so the chassis can rotate faster.
The effect is reduced in a settled drift and cannot reverse gyro correction.
Keep it at 50 unless deliberately collecting same-car experimental A/B data.
SMOOTH is intentionally inverted from raw filter math: higher numbers mean more smoothing and slower gyro response.
Deadband is applied as a soft deadband. Small yaw noise is still ignored, but correction fades in from zero instead of jumping as soon as yaw crosses the deadband value.
Conservative first-power values:
Setting
Start
Gain
1.50
Deadband
4.0
Max correction
100%
Smoothing
0.01
Countersteer Assist
100
Driver Priority
0
Drift memory
0.00
Memory limit
80
Hold Assist
0
Prediction
0
Tune symptoms:
Symptom
Try
Weaves left/right driving straight
Increase deadband or lower gain
Initial response is strong but runs out of authority
Raise Max Correction carefully
Fast response overshoots
Add Prediction in steps of 5
Prediction makes transitions nervous
Lower Prediction
Car is stable but the driver carries too much countersteer
Raise Countersteer Assist in steps of 10
Gyro feels too hands-on during a settled drift
Lower Countersteer Assist
High gain feels restrictive near full steering
Add Driver Priority in steps of 5; start below 20
Long drift slowly wanders
Add Hold Assist, then minimal Drift Memory
Transition carries the old drift
Lower Hold Assist or Drift Memory
Mid-drift wheel oscillation
Lower gain first; verify servo and chassis
Feels slow or lazy
Lower smoothing slightly or raise gain
Radio
Live receiver monitor:
Steering pulse and signal state.
Gain pulse and signal state.
Current gain value.
Calibration values.
Position bars for steering and gain.
Use this page to confirm the receiver is connected and moving through a sensible range.
In a CRSF build the monitor shows channel 1 steering, channel 2 throttle, and
channel 3 gain decoded from the digital link.
Steering
Steering output setup:
TRV: scales driver steering input without reducing gyro correction authority.
REV: reverses physical servo direction.
Swipe once more to open the dedicated Physical Endpoints page.
Physical Servo Endpoints
The calibration page uses three large capture buttons. Each button starts red
and turns green after it has captured the servo's actual physical PWM position:
MAX LEFT: position the wheels at their safe physical left stop, then capture it.
CENTER: capture the transmitter at neutral.
MAX RIGHT: position the wheels at their safe physical right stop, then capture it.
OpenDrift saves the calibration after all three physical positions are captured
on opposite sides of center. The saved endpoints become the final asymmetric
servo map and hard clamp, so neither the driver nor gyro can push through them.
CRSF users can perform the same three captures from the EdgeTX OpenDrift.lua
tool. Calibration state is persistent and shared: completing it on the radio
turns the AMOLED buttons green, while completing it on the display updates the
radio's Endpoints status to YES.
Suggested calibration flow:
Set servo direction first, then use steering/transmitter endpoint adjustment to position the wheels at the safe physical left stop and tap MAX LEFT.
Release steering to neutral and tap CENTER.
Position the wheels at the safe physical right stop and tap MAX RIGHT.
Confirm all three buttons are green and the page says SAVED - TAP TO RESET.
Return to Steering and verify the wheels remain inside both saved physical stops.
Changing REV, Servo Center, or Servo Travel after calibration deliberately
clears the saved calibration because those changes alter the physical output map.
Servo reverse and gyro reverse are separate on purpose:
Use REV on the Steering page when driver steering moves the wheels backward.
Use GYRO REV on the Gyro page when driver steering is correct but gyro correction is backward.
Physical endpoint calibration and steering travel are separate on purpose:
Use MAX LEFT, CENTER, and MAX RIGHT to set the servo's physical output limits.
Use TRV to scale driver steering without reducing gyro authority.
Use Max Correction to select how much of the calibrated physical range the gyro may command.
WiFi
Shows WiFi state and connected client count.
WIFI ON/OFF: toggles the access point.
When WiFi is enabled, connect to the OpenDrift network and open:
http://192.168.4.1/
System
Basic firmware/system information. Tap the GPIO 18 mode button to switch between GAIN INPUT and THROTTLE OUT.
Profiles
The Profiles page lists the driving profiles created in the web configurator. Tap a profile to activate its complete driving tune. Swipe vertically when more than four profiles exist; the list supports up to 12 profiles.
Profiles save gain, deadband, max correction, smoothing, Prediction, Countersteer Assist, Driver Priority, Hold Assist, Drift Memory and its limit, and radio steering travel. Trackside adjustments automatically save back to the active profile.
Hardware and installation settings remain global, including gyro/servo direction, physical steering endpoints, servo center and travel, WiFi, logging, and GPIO mode. Switching surfaces therefore cannot disturb the car's physical setup.
Control and servo rate
OpenDrift defaults to 250 Hz for broad digital-servo compatibility. 333 Hz reduces the output interval from 4 ms to about 3 ms and can sharpen a fast supported servo, but it must only be used when the servo manufacturer explicitly rates the servo for 333 Hz operation. An unsupported update rate can cause heat, buzzing, erratic steering, or servo damage.
The setting is global and appears on the AMOLED System page, in the web configurator, and in the CRSF/EdgeTX parameter list. Restart OpenDrift after changing it so both the control task and steering PWM start at the selected rate.
Web Configurator
When WiFi is enabled, OpenDrift starts a web configurator at:
http://192.168.4.1/
Current web settings:
Create named driving profiles from the current tune
Activate or delete existing profiles
Gyro gain
Channel 3 gain minimum / maximum (0.00-6.00)
Deadband
Reverse gyro correction
Max correction
Smoothing
Prediction strength
Transition Speed
Driver Priority
Anti Wobble
Drift memory
Memory limit
Hold Assist
Servo reverse
Servo center
Servo travel
Servo quiet band
Steering max left / center / max right
Radio steering travel
Gain channel low / high
GPIO 18 gain-input or throttle-output mode
WiFi enabled on boot
WiFi auto-off timeout
Blackbox logging enabled
Raw pitch, roll, acceleration, and surface-disturbance telemetry for chassis analysis
The web page also shows the active profile, live receiver pulse values for steering, throttle, and gain, plus the active GPIO 18 mode.
Use the web configurator when you want to make several changes quickly. Use the onboard UI when tuning trackside without a phone or laptop.
Onboard Blackbox Log
OpenDrift records fixed-size blackbox samples into a 4 MB circular PSRAM buffer at about 20 Hz while steering receiver signal is present.
Blackbox logging is disabled by default. Enable Onboard logging in the web configurator only when you want to collect data, then save settings.
No flash or filesystem writes occur while driving. Once the circular buffer is
full, the oldest records are overwritten so the newest behavior remains
available. Park the car before saving the RAM log to persistent storage.
On AMOLED hardware, an installed microSD card is preferred and each dump is
saved as a new CSV (opendrift-blackbox-0001.csv, 0002, and onward). Existing
sessions are preserved and numbering continues after reboot. Without an SD
card, OpenDrift stores one compact binary archive in internal flash and converts
it to CSV when downloaded through the web configurator.
The dedicated AMOLED Blackbox page shows the current RAM records, used and
available space, captured duration, archive destination, saved-log statistics,
and dump progress. It also provides logging, dump, and RAM-clear controls.
For acquisition/wobble testing, the web configurator's Control diagnostics
card captures up to 45 seconds at control-loop rate. Start it before driving.
With an SD card, the ordinary dump action also saves a matching numbered
opendrift-diagnostics-0001.csv beside the blackbox CSV. Wait until dump
completion before powering off. Without SD, download the timing CSV over WiFi
before restarting; internal-flash dumps do not include this RAM-only capture.
See IMU diagnostics and
screen performance testing.
AMOLED USB maintenance and boot recovery
All AMOLED V1/V2 PWM/CRSF builds, including the private GPIO8 target, support
USB maintenance. No SD card is required for firmware updates. Hold USB
MODE on the System page for 1.5 seconds while parked. The board restarts into
an isolated mode with steering, throttle, and controller tasks inactive.
Connect a data-capable USB cable and copy the correct build's application
firmware.bin onto the firmware-update drive. Wait for Update Complete
and automatic reboot; do not disconnect during writing. An inserted SD card
appears separately as a read-only log drive. The maintenance restart button
disconnects the volumes before returning to normal operation.
The SD-ready indication reports device-side readiness, not completion of the
computer's filesystem mount. USB SD reads now use up to the existing 4 KB
buffer with event-driven completion instead of per-sector polling. See
USB SD performance testing if the
drive appears but takes a long time to open; hardware validation is still
required to measure the improvement.
For official builds previously using the single-app partition layout, install
the full factory image once through the webflasher or perform a normal full
PlatformIO upload: an app-only USB update
cannot install a new partition table. The new layout keeps NVS and FFat at
their existing addresses, but back up your tune/logs before upgrading. USB
serial ports may re-enumerate after the switch to native TinyUSB. Do not erase
the whole chip as part of the normal upgrade.
After three consecutive unfinished boots across software/watchdog resets,
the next boot enters USB recovery before the IMU, outputs, and controller are
started. Automatic recovery skips SD mounting so a bad card cannot block the
updater. Successful normal startup clears the RTC failure audit after 15
seconds. Intentional USB-mode changes are excluded. Cold power loss/brownout
starts a fresh audit; corrupt apps/bootloaders still require hardware BOOT
recovery. The headless private Matrix builds retain their existing USB serial
configuration; this AMOLED maintenance interface is not enabled on Matrix.
The web configurator shows the current log size and provides:
Download CSV
Clear RAM Log
Dump RAM Log to SD card or internal flash, according to available storage
Download saved CSV
Log rows include:
Time
Raw yaw rate
Filtered yaw rate
Roll and pitch gyro rates (gyro_x_dps, gyro_y_dps)
Raw X/Y/Z acceleration in g
Total acceleration magnitude and high-frequency acceleration delta
A filtered surface_disturbance score from 0.0 to 1.0
Requested gyro correction before Max Correction
Limited gyro correction after Max Correction
Applied gyro correction after the driver/gyro steering mix
Correction saturation state
Steering input and calibrated steering command
Servo output
Servo quiet band
Throttle input
Gain input and active gain
Active deadband, max correction, smoothing, Prediction, Countersteer Assist, Driver Priority, Hold Assist, Drift Memory, and memory limit
Driver Priority scale and effective live direct gain
Anti Wobble notch depth, isolated residual, tracked notch frequency, transition-authority blend, and throttle-lift blend
Steering/throttle/gain signal state and GPIO 18 mode
Suggested test workflow:
Connect to the OpenDrift WiFi network.
Open http://192.168.4.1/.
Enable onboard logging if it is off, then save settings.
Tap Clear RAM Log.
Drive the car.
Stop and leave the car parked for two seconds.
Dump the RAM log from the AMOLED Blackbox page, EdgeTX tool, or web
configurator.
Download the saved CSV over WiFi, or remove/read the SD card later.
The CSV can be pasted into a spreadsheet or plotted to see whether the car spun because of delayed correction, overcorrection, max correction saturation, noisy yaw, or steering/radio behavior.
surface_disturbance still combines sudden acceleration-vector changes, roll/pitch rate, and low-g unloading indicators for analysis. OpenDrift v1.0 logs it but does not currently apply terrain correction.
Gyro Algorithm Overview
OpenDrift v1.0 runs this path at the selected 250 Hz or 333 Hz rate:
Read receiver steering, throttle, and IMU yaw.
Subtract calibrated gyro offset and apply soft deadband.
Apply the selected hardware gyro LPF and optional software yaw low-pass.
Estimate short-horizon yaw from filtered yaw acceleration.
Extend that horizon when throttle predicts application or a longer off-throttle load change.
Shape damping briefly during deliberate direction changes without changing the hard correction ceiling.
Apply the phase-aware Anti Wobble notch around the tracked 2.5-3.6 Hz wheel-resonance band while preserving slow chassis yaw and useful response outside that band.
Convert predicted yaw directly into correction with Gain.
Learn a slow yaw reference while driver steering and throttle are quiet.
Add optional Countersteer Assist from the slow learned reference only.
Apply Drift Memory only to error from that reference.
Prevent memory from pushing farther into correction saturation.
Limit signed gyro movement to the configured full-span Max Correction
percentage, then mix it with driver steering and clamp the combined command.
Apply the calibrated physical endpoint map as the final hard servo limit.
Driver steering activity and throttle changes make the slow reference yield
immediately. Neither disables the fast direct damping path.
Signal Loss Behavior
The standard PWM builds retain the existing do-nothing behavior: if steering
input disappears, OpenDrift does not send a new servo command.
This leaves the servo at the last commanded position. It is intentionally a simple do-nothing behavior while failsafe strategy is still being evaluated.
The full CRSF build has deterministic behavior because all channels share one
link state. A channel frame older than 50 ms centers steering and commands
neutral throttle. Throttle remains locked until a valid link has held neutral
for 500 ms after boot or reconnection.
Tuning
Use the Technical Tuning Reference rather than tuning every setting at once. The most important lessons from development are:
Establish a mechanically sound car before blaming the gyro.
Set the servo's internal anti-wobble only as high as it can run without buzzing; high servo torque/power can amplify internal oscillation.
Treat Gain as the primary surface-dependent setting and store each surface in a profile.
Tune entries with Gain, Max Correction, and Smoothing before adding slow reference feedback.
Add Prediction in small steps only after the direct response is understood.
Use Hold Assist for sustained-drift reference retention, then add only the minimum Drift Memory required.
Use Countersteer Assist to choose driver-led versus gyro-led settled drifts without retuning Gain.
Connect throttle sensing so OpenDrift can anticipate power and load changes.
OpenDrift v1.0 is the first public controller. Start from the conservative
values in the tuning reference and save proven surface setups as profiles.
Future Work
Servo resonance calibration: add a stationary calibration mode that sweeps a small steering command across a safe frequency range and captures high-rate chassis IMU data. Because the servo is rigidly mounted to the chassis, its buzz and self-oscillation should be measurable without another sensor. The first version should compare vibration energy, dominant resonances, settling, and left/right behavior to help evaluate internal servo anti-wobble, torque, power, and response settings and recommend OpenDrift quiet-band and correction-rate settings. Command shaping or resonance compensation should only follow after repeatable measurements show that it can reduce vibration without adding harmful control-loop delay.
Project Layout
Important folders:
OpenDrift/src/main.cpp: main firmware loop and control mixing.
OpenDrift/lib/GyroController: gyro filtering and correction generation.
LaserProjector V2 is a battery-powered, ESP32-based laser XY scanner using stepper motors to deflect the beam. It has auto-homing functionality, and can be controlled wirelessly (Wi-Fi & Bluetooth).
It measures 29.1 × 44 mm and has 4 copper layers, 1.6 mm thick.
What parts does the OpenDrift Pdb use?
12 parts, built around the TPS62162DSG. 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.
Where can I download the OpenDrift Pdb KiCad files?
From the doublej380-pixel/OpenDriftRC repository on GitHub, at the commit this page was made from: the board is Pcb/OpenDrift Pdb/OpenDrift Pdb.kicad_pcb and its schematic Pcb/OpenDrift Pdb/OpenDrift Pdb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the OpenDrift Pdb design in my own project?
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).