Donkey Car Self-Driving RC Platform
This lab guides students through the electromechanical assembly, wiring integration, and software deployment of a vision-based autonomous scale robotic vehicle using the open-source Donkey Car platform. Students convert a hobby-grade radio-controlled chassis into an edge-computing autonomous vehicle by mounting a Raspberry Pi single-board computer, a wide-angle camera module, and a PCA9685 16-channel PWM driver board. Learners analyze and implement dual-rail power distribution to electrically isolate noisy motor drive currents from sensitive digital logic, calibrate pulse-width modulation signals for proportional steering and throttle control over I2C, and establish headless remote access in an embedded Linux environment. Working through the full machine learning workflow, students manually pilot the vehicle to record synchronized video and telemetry datasets, train a convolutional neural network behavioral cloning model using TensorFlow or PyTorch, and deploy the lightweight autopilot model back onto the onboard hardware for real-time, closed-loop track navigation.
Uploaded by demo on 2026-09-03 · ready · Electronics · Original source ↗
Files: build_hardware_guide.html · donkeycar_README.md · pyproject.toml
Readiness checks
-
complete 2026-09-03 03:10 🛡 Cybersecurity: Do not place on an open network · 5 findings 29 searches · 21 pagesview · PDF
Latest report — 2026-09-03 03:10
Readiness: Donkey Car Self-Driving RC Platform
Verdict: Ready with caveats · 2026-09-03 · est. parts cost $420–$580 (required items; 3D-printed parts and the optional LiPo kit excluded) Cybersecurity — software & network: Do not place on an open network
This is the cold check for this lab — there is no previous report, so the prices and stock levels below establish the baseline that future checks will measure drift against. Every part on the required bill of materials can be bought today and nothing is obsolete, but two of the three most expensive lines have moved away from what the lab's own build page assumes. The specified chassis (Exceed Magnet 1/16 Truck / HSP-94186) returned no US retail listing in two separate shopping passes, and the Donkey Car build page itself says these cars are "often ... out of stock" and that the HSP-94186 "can be found on AliExpress but takes about a month to get to the US" — a documented alternative, the WL Toys 144010, is plentiful but costs more and needs 3D-printed body-post adapters. The Raspberry Pi 5 8GB is in deep stock (17,329 pcs at DigiKey) but at $175.00 against the $60 the build page budgets, and no ECIA-authorized distributor shows stock against the snapshot's order code SC1112. Everything else — the PCA9685 driver, the wide-angle camera, jumper wires, power bank, SD card and fasteners — is readily available at sensible prices. Plan on a chassis decision and roughly double the documented budget.
Action required
| Part | Problem | Recommended action |
|---|---|---|
| RC Car Chassis (Exceed Magnet 1/16 / HSP-94186) | No US retail listing found in two shopping passes; the project's own docs say it is often out of stock and ships from AliExpress in about a month | Switch to the documented WL Toys 144010 alternative (see Substitutes) and budget a printed body-post adapter pair, or accept a ~1 month import lead time on the specified car |
| Raspberry Pi 5 Model B 8GB (SC1112) | In stock but $175.00 at DigiKey against the $60 the build page budgets (~2.9×); ECIA shows 0 authorized distributors with stock for SC1112 and rates supply-chain risk Med | Order early and budget $175 per car; the snapshot lists the Raspberry Pi 4B as a compatible fallback (not priced this run) |
| Optional LiPo balance charger | The mains-powered CC/CV charger the snapshot specifies (100–240 V AC) was not matched; the search returned balance boards and USB-powered chargers | If the LiPo upgrade is used, verify the input type on the specific charger before ordering — see Substitutes |
Cybersecurity — software & network
Do not place on an open network — The driving interface is an unauthenticated web service exposing a camera stream and vehicle control to everyone on the subnet, and the project offers no authentication to switch on - only network isolation.
| Component | Version | How known | Support status |
|---|---|---|---|
| Raspberry Pi OS (Debian 13 Trixie, 64-bit) | 13 | inferred (The snapshot records Debian 13 Trixie as stated in the lab documentation; no fetched project file pins an OS version.) | supported until 2028-08-09 |
| CPython | 3.13 | inferred (pyproject.toml sets requires-python = ">=3.12.0,<3.14"; the snapshot documents Python 3.13 as the Raspberry Pi OS runtime, so 3.13 is the version the car actually runs.) | supported until 2029-10-31 |
| donkeycar (core application) | not determined | not determined (pyproject.toml declares dynamic = ["version"] with version = {attr = "donkeycar.version"}, so the release version is resolved from source at build time and is not readable from the manifest.) | — |
| uv (Astral environment and package manager) | not determined | not determined (Installed by piping https://astral.sh/uv/install.sh into a shell; no version is recorded in the snapshot or any fetched file.) | — |
| tornado (Donkey Car web controller) | not determined | unpinned (pyproject.toml lists "tornado" under project.dependencies with no version constraint.) | — |
| numpy | 1.26.0 | inferred (pyproject.toml, project.dependencies, declares the range "numpy>=1.26.0" rather than a pinned version; 1.26.0, the lower bound, is the version checked against OSV this run.) | — |
| torch (optional torch autopilot stack) | 2.11.0 | inferred (pyproject.toml, project.optional-dependencies.torch, declares the series constraint "torch==2.11.*" rather than a pinned version; 2.11.0, the base of that series, is the version checked against OSV this run.) | — |
| torchvision | 0.26.0 | inferred (pyproject.toml, project.optional-dependencies.torch, declares "torchvision==0.26.*"; 0.26.0, the base of that series, is the version checked against OSV this run.) | — |
| torchaudio | 2.11.0 | inferred (pyproject.toml, project.optional-dependencies.torch, declares "torchaudio==2.11.*"; 2.11.0, the base of that series, is the version checked against OSV this run.) | — |
| tensorflow (PC and macOS training extras) | 2.19.0 | inferred (pyproject.toml, project.optional-dependencies.pc and .macos, declare "tensorflow==2.19.*"; 2.19.0, the base of that series, is the version checked against OSV this run.) | — |
| tf-keras | 2.19.0 | inferred (pyproject.toml, project.optional-dependencies.pc and .macos, declare "tf-keras==2.19.*"; 2.19.0, the base of that series, is the version checked against OSV this run.) | — |
| tensorflow-metal | 1.2.0 | read from project (pyproject.toml, project.optional-dependencies.macos ("tensorflow-metal==1.2.0") - the one fully pinned dependency in the manifest; auto-checked against OSV in code.) | — |
| ai-edge-litert (Raspberry Pi inference runtime) | 2.1.4 | inferred (pyproject.toml, project.optional-dependencies.pi, declares the range "ai-edge-litert>=2.1.4" rather than a pinned version; 2.1.4, the lower bound, is the version checked against OSV this run.) | — |
| python3-libcamera and python3-picamera2 (apt) | not determined | not determined (Installed with apt per the lab README; the version is whatever the Raspberry Pi OS release ships and is not recorded anywhere in the sources.) | — |
| Component | Finding | Severity | Fix available? |
|---|---|---|---|
| torch (optional torch autopilot stack) | PyTorch 2.11.0, the base of the ==2.11.* series this project pins for its optional PyTorch autopilot, can suffer memory corruption through torch.jit.script; it affects the computer used to train models rather than the car, and only if the PyTorch extras are installed. — GHSA-rrmf-rvhw-rf47 | low | No — project pins ==2.11.* |
| Donkey Car web controller (tornado, TCP 8887) | The snapshot records the Donkey Car web controller as an embedded Tornado server on TCP 8887 that serves a virtual joystick and a live camera stream to any browser on the local subnet, and records no authentication step for it, so anyone on the same network can drive the car and watch what its camera sees. | posture | Mitigation only — run the car on an isolated network segment or its own access point and never expose port 8887 to a shared campus network |
| Python dependencies (pyproject.toml) | Dependencies unpinned: 46 of 47 in pyproject.toml, tornado - the web server students reach over the network - among them, so the versions that actually get installed have no checkable security state and two identical builds a month apart can differ. | posture | Mitigation only — pin versions / use the lockfile |
| Remote access (OpenSSH TCP 22, VNC TCP 5900) | The lab instructs students to enable SSH on port 22 and optionally a VNC server on port 5900, with each student choosing the credentials during OS imaging and no password requirement recorded in the sources. | posture | Mitigation only — require strong per-student credentials at imaging time, prefer SSH keys over passwords, and leave VNC switched off unless a graphical session is genuinely needed |
| uv (Astral installer) | The environment manager is installed by piping a script fetched over the network straight into a shell (curl -LsSf https://astral.sh/uv/install.sh | sh), so whatever that URL serves at install time runs with the student's privileges and no version is ever recorded. | posture | Mitigation only — download the installer, read it, and install a specific uv release rather than piping the live script into a shell |
What this means for your lab
Treat the car as an open device on whatever network you join it to. Donkey Car's driving interface is a small web server on port 8887 that hands out a virtual joystick and a live camera feed, and nothing in the lab's materials asks anyone to log in first - so any person on the same Wi-Fi can open it in a browser, watch the camera, and steer the vehicle. The car also has SSH switched on, and optionally a remote-desktop (VNC) service, protected only by whatever password each student typed while writing the SD card. The software itself is in reasonable shape: the operating system (Debian 13) and Python 3.13 are both still supported, and the versions this check could pin down came back clean apart from one low-severity PyTorch issue that only touches the machine you train models on. The bigger practical problem is that the project fixes almost none of its dependency versions, so what a student installs today and what they install next month may differ, and neither can be checked in advance. Practical steps: put these cars on their own network segment or a dedicated access point rather than the campus network, insist on strong individual passwords at imaging time (SSH keys are better), leave VNC off unless a student actually needs a desktop, and talk to campus IT before connecting the cars to anything shared.
Not checked
- donkeycar (core application): Version is dynamic in pyproject.toml (version = {attr = "donkeycar.version"}), so no release version could be read from the manifest to check.
- uv (Astral): No version stated in the snapshot or any fetched file; installed from a live install script.
- tornado and 44 other unpinned PyPI dependencies (pillow, requests, pandas, matplotlib, opencv-contrib-python, kivy, paho-mqtt, pyserial and the rest): Declared in pyproject.toml with no version constraint, so there is no version to check against OSV.
- matplotlib and pandas: The snapshot recorded pins of 3.7.* and 2.0.*, but pyproject.toml as fetched this run declares both with no version constraint, so the snapshot's versions were not checked - the manifest has changed since the snapshot was written.
- python3-libcamera, python3-picamera2 (apt): Unpinned apt packages whose version comes from the Raspberry Pi OS release; no version stated in the sources.
- Raspberry Pi OS package inventory: Only the two apt packages the lab names were considered; the OS image's own package set was not enumerated.
- setuptools / wheel (build backend): build-system.requires lists both with no version constraint.
Parts
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| 1. RC Car Chassis — Exceed Magnet 1/16 Truck / HSP-94186 | 1/16 hobby RC truck, brushed 380/390 motor, discrete ESC with 5 V BEC, 3-wire steering servo | hard to obtain | — | — | No US seller found; Stirlingkit lists the HSP 94186 with matching specs but no price or stock |
| 2. Single Board Computer — Raspberry Pi 5 Model B 8GB (SC1112) | 85 × 56 mm SBC, 40-pin GPIO, 5.0–5.2 V USB-C, 3.3 V logic | available but overpriced | 17,329 | $175.00 | DigiKey, listed as SC1432 ("SBC 2.4GHZ 4 CORE 8GB PI 5", 85.60 × 56.50 mm) — Active |
| 3. 16-Channel 12-Bit PWM I2C Breakout — Adafruit 815 (PCA9685) | 62.5 × 25.4 mm breakout, 2.54 mm headers, I2C 0x40 default, 3.3 V VCC | readily available | 488 (Mouser), 334 (DigiKey) | $14.95 | Adafruit; also stocked at Mouser and DigiKey at $14.95 (ECIA: lifecycle risk Low, supply-chain risk Low) |
| 4. Wide-Angle Camera Module — Raspberry Pi Camera Module 3 Wide | 120° wide lens, MIPI CSI-2 FPC, libcamera/picamera2 compatible | readily available | 7,262 | $35.00 | DigiKey SC1224 ("RASPBERRY PI CAMERA 3 WIDE") — Active |
| 5. USB Power Bank — Anker 10,000 mAh | 5 V USB output, ≥ 3.0 A continuous, fits under the top plate | readily available | — | $25.99 | Target; range $20.79–$44.99 across Target, Best Buy, Newegg, eBay. Output current is not stated in any listing — check it |
| 6. MicroSD Card — SanDisk SDSQUA4-064G-GN6MA, 64GB | microSDXC, Class 10 / UHS-I, A1/A2 preferred | readily available (retail only) | — | $16.00 | Wired Watts; $12.32–$50.99 across Newegg, PC Richard, Best Buy, Micro Center. No authorized distributor lists this exact SKU (retail part) |
| 7. Jumper Wires — Adafruit 266, female-to-female | 40 × 6" (150 mm), 28 AWG, 0.1" (2.54 mm) sockets | readily available | 264 (DigiKey), 79 (Mouser) | $3.95 | Adafruit; same price at DigiKey and Mouser (ECIA: lifecycle risk Low, supply-chain risk Low) |
| 8. Board Mounting Fasteners — M2.5 × 12 mm screws, nuts, washers (4 each) | M2.5 × 0.45 mm, 12 mm; nylon or steel with insulating washers | readily available (commodity) | — | $20.78 | 240–300 pc M2/M2.5/M3 assortment (Asia Sell); kits run $3.06–$127.48. The McMaster-Carr SKU 92000A105 is not a distributor catalog number — not checked |
| 9. Roll Cage Structural Screws — M3 × 10 mm (3) | M3 thread, 10 mm, pan or button head; #6 SAE acceptable | readily available (commodity) | — | covered by the same assortment kit | McMaster-Carr SKU 92000A120 not checked (not a distributor catalog number) |
| 10. Small Mechanical Fasteners — M2 × 6 mm (8) | M2 thread, 6 mm; M2.2/M2.3/#4 SAE acceptable | readily available (commodity) | — | covered by the same assortment kit | McMaster-Carr SKU 92000A012 not checked (not a distributor catalog number) |
| 11. 3D-Printed Top Plate and Roll Cage | FDM, black PLA, 0.2–0.3 mm layers, 0.5 mm nozzle, no supports | not checked | — | — | Thingiverse thing:2566276 and the Donkey Car Store both downloaded but returned no readable text (JavaScript-rendered) |
| 12. Optional Drive Battery Upgrade — Turnigy 1800 mAh 2S 20C LiPo | 7.4 V nominal, 1500–2200 mAh, ≥ 20C, Deans/T or Tamiya lead, JST-XH balance | readily available (class) | — | $14.99 | SpeedyFPV — Turnigy 1800 mAh 2S 30C w/ XT60 (see Substitutes); 20C packs from Spektrum/Dynamite at $25.19–$29.00 |
| 13. Optional LiPo Balance Charger | 100–240 V AC in, CC/CV 8.4 V at 0.8–1.5 A, JST-XH port | available in class, exact type not matched | — | $9.99 | Buddy RC — ISDT UC2, USB-powered not mains (see Substitutes); the rest of the results were balance boards, $3.90–$18.99 |
| 14. Optional LiPo Safety Guard Bag | Fire-resistant pouch, approx 185 × 75 × 60 mm, hook-and-loop | readily available | — | $7.95 | Best Buy (Aries Lipo Safe); $3.49–$23.99 across Tenergy, iFlight, ProTek, HobbyTown |
| 15. Optional Chassis Adapters (Desert Monster / Blaze / Short Course) | 3D-printed body-post adapter brackets | not checked | — | — | Thingiverse returned no readable text; the build page confirms adapters can be printed or bought from the Donkey Car Store |
Substitutes
| For part | Substitute | Differences | Verified | Judgment |
|---|---|---|---|---|
| 1. RC Car Chassis | WL Toys 144010 — $159.18 (Banggood) | Sellers list it as 1/14 rather than 1/16 — inside the snapshot's stated 1/16-to-1/10 latitude. Brushless motor instead of the specified brushed 380/390: electrically fine (the lab only needs a discrete ESC and a 3-wire 50 Hz servo) but faster, and the build page warns it "takes some getting used to for beginners". Not a drop-in mechanically — the build page says the adapters for this car must be printed from Thingiverse or ordered from a print service. Costs $149.80–$254.60 against the $92 the build page budgets for the Magnet. | Verified: availability and price (Google Shopping, this run); scale and brushless motor (seller listing titles); documented-alternative status and the adapter requirement (donkeycar.com build page, fetched this run); latitude band (snapshot). Not verified: that this specific car ships with a discrete hobby ESC and a standard 3-wire steering servo — the snapshot warns the sibling 144011/144001 need both replaced. Body-post adapter geometry not verified (Thingiverse unreadable this run). | Acceptable with caveats — the practical way forward for a US purchaser today, at extra cost and one extra printed part |
| 1. RC Car Chassis | HSP 94186 Kidking via Stirlingkit | The exact specified car through a specialist importer rather than a US retailer. Specification matches the snapshot line for line: 1/16 scale, RC380 carbon brushed motor, brushed waterproof 03058 ESC, 7.2 V 1100 mAh NiMH included, 174 mm wheelbase. No adapters needed. | Verified: specification match to the snapshot (Stirlingkit product page, fetched this run). Not verified: price, stock, shipping time — the page carried none of them. | Plausible, unverified — the listing exists and matches, but nothing in the evidence shows it is purchasable or at what price |
| 13. Optional LiPo Balance Charger | ISDT UC2 1S/2S balance smart charger — $9.99 (Buddy RC) | JST-XH 2.54 balance port and 1S/2S LiPo CC/CV charging match the snapshot's substitution latitude. The one real difference: it is USB-powered, not the 100–240 V AC mains dock the snapshot's electrical constraints specify, so it needs a USB supply the lab probably already has. Charge current is not stated, so the 0.8–1.5 A requirement is unconfirmed. | Verified: JST-XH balance port, 1S/2S LiPo, USB input (shopping result title, this run). Not verified: charge current, CC/CV profile detail, AC-mains operation (it is not mains-powered). | Plausible, unverified — meets the written substitution latitude, but confirm the input type and charge rate before ordering |
Verify any substitute against its own datasheet or product page before ordering — the comparisons above are only as good as the evidence gathered on the date of this report.
Other dependencies
- Donkey Car documentation portal (
https://docs.donkeycar.com) — live; the full build page was fetched this run and still documents the parts list, print settings and PCA9685 wiring the snapshot records. - Donkey Car source repository (
https://github.com/autorope/donkeycar) — live; repository root listed this run (13 entries, default branchmain). - Donkey Car documentation repository (
https://github.com/autorope/donkeydocs) — live; README fetched this run. - Thingiverse model thing:2566276 (top plate, roll cage and chassis adapter STLs) — not checked; the page downloaded but returned no readable text (JavaScript-rendered), so the model's continued availability could not be confirmed automatically. Verify by hand before a class relies on it.
- Donkey Car Store (
https://donkeycar-701334.square.site) — not checked; downloaded but no readable text, so pre-printed part availability is unconfirmed. - NitroRCX Exceed vehicle catalog (
https://www.nitrorcx.com/1rcelca.html) — not checked; downloaded but no readable text. - DIY Robocars Waveshare PiRacer Pro guide — live, fetched this run; it quotes the pre-assembled PiRacer Pro at $268 and warns it ships with outdated Donkey Car software.
- DIY Robocars 1/28-scale build guide — live, fetched this run; quotes a complete 1/28 build at "less than $150".
- Mini RC Hat store page (
https://diyrobocars.myshopify.com/products/mini-rc-hat-for-raspberry-pi-zero-2-w) — live and in the catalog at $24.00 (needed only for the 1/28-scale variant). - Raspberry Pi camera documentation (
https://www.raspberrypi.com/documentation/accessories/camera.html) — not checked; the fetch was blocked. - Astral uv installer (
https://astral.sh/uv/install.sh) — not checked this run. - Fabrication — FDM printing in PLA only (0.2–0.3 mm layers, 0.5 mm nozzle, no supports, roll cage printed inverted); post-processing means re-drilling the M2, M2.5 and M3 through-holes and clearing the roll-bar side slots. No custom PCB gerbers exist for this build, so there is no board-fab dependency.
Watch list
- The chassis. This is the line most likely to break the lab. The specified Exceed Magnet / HSP-94186 already has no US retail presence, and the substitute (WL Toys 144010) is a different manufacturer on a different product cycle. Re-check both before every cohort, and keep printed adapters on hand.
- Raspberry Pi 5 8GB pricing. At $175 against a documented $60, and with zero authorized-distributor stock on the SC1112 order code, this is the single biggest cost risk. Watch whether the DigiKey price moves and whether other distributors restock.
- The wide-angle camera cable. The Pi 5 uses a 22-pin 0.5 mm FPC while the Pi 4 uses a 15-pin 1.0 mm one; which cable ships in the Camera Module 3 Wide box was not verified this run. Confirm before a bulk order.
- Power bank output current. No listing stated a continuous output rating. The Pi 5 wants 5 V at 3–5 A, and several cheap Anker 10,000 mAh units are USB-C input only. Verify the specific model each time.
- 3D model hosting. Thingiverse and the Donkey Car Store could not be read automatically two ways this run. If the model ever disappears, the whole mechanical build stops — keep a local copy of the STLs.
Snapshot What the lab depended on when it was uploaded — the baseline the readiness checks research against.
This lab constructs the Donkey Car Self-Driving RC Platform, an autonomous 1/16-scale (or indoor 1/28-scale) vision-guided robotic vehicle controlled by a deep-learning convolutional neural network autopilot executing on an onboard Linux single-board computer (Raspberry Pi 5 Model B 8GB). The vehicle integrates two isolated electrical power and signaling domains: a high-current motor/actuator drive system powered by a dedicated RC vehicle battery (a stock 7.2 V NiMH pack or an upgraded 7.4 V 2S LiPo pack) with an Electronic Speed Controller (ESC) whose internal Battery Eliminator Circuit (BEC) generates a regulated 5.0 V DC output to power the steering servo and the PCA9685 servo driver output rail; and a compute/logic subsystem powered by an independent 5.0 V DC USB battery power bank (supplying 3.0 A to 5.0 A via USB-C to the Raspberry Pi 5). The Raspberry Pi communicates with an NXP PCA9685 16-channel 12-bit PWM breakout board over a 3.3 V I2C bus (VCC fed from the SBC 3.3 V rail on GPIO Pin 1, common ground on Pin 9, SDA on Pin 3, SCL on Pin 5), while steering and throttle PWM commands are delivered via standard 3-pin hobby servo interfaces from PCA9685 channels 0 and 1.
Bill of Materials
RC Car Chassis Identity: Exceed Magnet 1/16 Truck or HSP-94186 1/16-scale 4WD brushed RC truck. Documented alternatives include WL Toys 144010 (brushless motor), WL Toys 144011 / 144001 (requires replacing stock combined electronics with discrete ESC and servo), Exceed Short Course Truck, Exceed Blaze, Exceed Desert Monster, Waveshare PiRacer Pro (Raspberry Pi 4 pre-built platform), or a 1/28-scale chassis using a Donkey Car Mini RC Hat. Quantity: 1 unit. Footprint/package: 1/16-scale hobby RC truck chassis with four vertical body mount posts. Electrical constraints: Powered by a 7.2 V NiMH or 7.4 V 2S LiPo drive battery. Contains an integrated brushed DC traction motor (380/390 size), a 3-wire analog/digital steering servo (4.8 V to 6.0 V operating range), and an Electronic Speed Controller (ESC) providing a 5.0 V BEC output on its 3-pin receiver lead capable of supplying 1.0 A to 3.0 A to the steering servo. Substitution latitude: Any 1/16-scale to 1/10-scale RC car chassis with standard hobby-grade discrete electronics (separate ESC and 3-wire steering servo accepting 50 Hz PWM input pulses). Proprietary toy-grade vehicles with integrated all-in-one receiver/ESC boards cannot be substituted unless the receiver, ESC, and servo are replaced with discrete hobby components. Exceed Blaze, Short Course Truck, and Desert Monster variants require 3D-printed body post adapter brackets. Student-operated control: No physical control during driving; power switch on ESC is turned on prior to operation. Sourcing plan: retail shopping search: Exceed Magnet 1/16 Truck or HSP-94186 RC car
Single Board Computer (SBC) Identity: Raspberry Pi 5 Model B 8GB RAM (Raspberry Pi part SC1112). Documented alternatives: Raspberry Pi 4B, NVIDIA Jetson Nano, or Raspberry Pi Zero 2 W (for 1/28-scale builds). Quantity: 1 board. Footprint/package: Single-board computer form factor (85 mm x 56 mm), four M2.5 mounting bosses on 58 mm x 49 mm rectangular spacing, 40-pin GPIO male header (2.54 mm pitch), dual 4-lane MIPI CSI/DSI 22-pin 0.5 mm pitch FPC connectors, USB Type-C power receptacle. Electrical constraints: Operating supply voltage 5.0 V to 5.2 V DC via USB-C (minimum current 3.0 A without peripherals; 5.0 V @ 5.0 A recommended to prevent throttling). GPIO logic level is strictly 3.3 V DC (maximum 16 mA per pin, combined 3.3 V rail current budget 50 mA). Substitution latitude: Raspberry Pi 4B is physically and electrically compatible with identical 40-pin pinout (uses 15-pin 1.0 mm CSI cable instead of 22-pin 0.5 mm). NVIDIA Jetson Nano is electrically supported via 40-pin header but requires a legacy software stack (Python 3.8 / JetPack). Raspberry Pi Zero 2 W is supported only on 1/28-scale builds. Student-operated control: No. Sourcing plan: distributor lookup: Raspberry Pi SC1112
16-Channel 12-Bit PWM I2C Breakout Board Identity: NXP PCA9685 16-Channel 12-Bit PWM Driver Breakout Board (Adafruit Product ID 815 or direct generic functional equivalent). Quantity: 1 board. Footprint/package: Breakout PCB (approx 62 mm x 25 mm) with 6-pin 2.54 mm pitch logic header (VCC, GND, SDA, SCL, OE, V+), 2-pin screw terminal block for external servo power, and 16 3x4 0.1-inch (2.54 mm) male pin header banks for channels 0 through 15. Four corner mounting holes sized for M2.5 hardware. Electrical constraints: Logic supply voltage VCC: 3.3 V DC (powered from Raspberry Pi GPIO Pin 1). Logic threshold: 3.3 V I2C bus compatible. Actuator rail (V+ / middle row of servo pins): 5.0 V to 6.0 V DC powered via back-feed from ESC BEC connector on Channel 0. The breakout V+ power must never be connected to the Raspberry Pi 5V rail. Fixed hardware default I2C address: 0x40. Substitution latitude: Must be based on the NXP PCA9685 controller IC to remain compatible with the Adafruit_PCA9685 I2C driver library. Any commercial PCA9685 breakout board with 2.54 mm pin headers and default I2C address 0x40 is an exact plug-and-play substitute. Student-operated control: No. Sourcing plan: distributor lookup: Adafruit 815
Wide-Angle Camera Module Identity: Raspberry Pi Wide Angle Camera Module (Raspberry Pi Camera Module 3 Wide or OmniVision OV5647 160° FoV wide-angle breakout module). Quantity: 1 module. Footprint/package: PCB module (approx 25 mm x 24 mm) with wide-angle M12 or integrated lens, connected via 15-pin 1.0 mm pitch (Pi 4) or 22-pin 0.5 mm pitch (Pi 5) flat flex ribbon cable (FPC). Electrical constraints: 3.3 V DC power and MIPI CSI-2 serial data lanes supplied directly via Raspberry Pi camera flex port. Substitution latitude: Must be compatible with Raspberry Pi OS
libcameraandpicamera2software drivers. A wide-angle field of view (≥ 120° diagonal) is functionally necessary so the camera mounted atop the chassis can see lane boundaries directly in front of the vehicle. Student-operated control: No (focus ring adjusted once during initial bench assembly). Sourcing plan: retail shopping search: Raspberry Pi wide angle camera module CSI cableUSB Power Bank (Compute Battery Subsystem) Identity: Anker 10,000 mAh Portable Charger (Anker PowerCore series or equivalent USB battery pack). Quantity: 1 unit. Footprint/package: Handheld battery enclosure (maximum dimensions approx 105 mm x 65 mm x 25 mm to fit underneath the 3D-printed top plate between chassis body mounts). Electrical constraints: Output voltage 5.0 V DC via USB-A or USB-C port; continuous output current rating ≥ 3.0 A (5.0 V @ 3.0 A minimum, 5.0 V @ 5.0 A preferred for Pi 5). Power bank must not have an aggressive low-current sleep shutoff that drops power under low CPU loads. Substitution latitude: Any 5 V USB battery pack with capacity ≥ 5,000 mAh and continuous 3.0 A output that fits within the physical underside dimensions of the Donkey Car top plate. Student-operated control: Yes; student presses the external pushbutton on the power bank to initiate power delivery and boot the single-board computer. Sourcing plan: retail shopping search: Anker 10000mAh portable charger USB-C power bank
MicroSD Card (Operating System & Data Storage) Identity: 64GB MicroSDXC Flash Memory Card, Class 10 / UHS-I / U1 or U3 rated. Quantity: 1 card. Footprint/package: Standard MicroSD / TF card (15 mm x 11 mm x 1 mm). Electrical constraints: 3.3 V DC SPI/SDIO interface. Sustained random write speed rating A1 or A2 recommended for telemetry logging (Tub v2 image and sensor recording). Substitution latitude: High latitude; any reputable brand (SanDisk, Kingston, Samsung) MicroSD card with ≥ 32 GB capacity (64 GB specified) rated Class 10 / UHS-I. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): SanDisk SDSQUA4-064G-GN6MA
Jumper Wires Identity: Female-to-Female Dupont jumper wires, 2.54 mm (0.1 inch) pitch. Quantity: 4 wires minimum (1 red, 1 black, 2 signal colors). Footprint/package: Single-pin 2.54 mm female Dupont crimp housings on multi-strand 26 AWG to 28 AWG wire, length 10 cm to 20 cm. Electrical constraints: Operating at 3.3 V DC logic and power; carrying < 50 mA continuous current. Substitution latitude: High latitude; any female-to-female 2.54 mm pitch interconnect wires or a keyed 4-pin 0.1-inch wiring harness. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): Adafruit 266
Board Mounting Fasteners (M2.5 Machine Screws, Nuts, and Washers) Identity: M2.5 x 12 mm pan-head or socket-head machine screws with matching M2.5 hex nuts and flat washers. Quantity: 4 screws, 4 hex nuts, 4 washers. Footprint/package: Metric M2.5 x 0.45 mm pitch thread, 12 mm nominal length. Electrical constraints: None (mechanical fastener). Non-conductive nylon or standard steel with insulating washers to prevent shorting copper traces surrounding SBC mounting bosses. Substitution latitude: High latitude; screws pass downward through the SBC mounting holes, through the 3D-printed top plate bosses, and fasten with nuts on the underside. Any M2.5 hardware between 10 mm and 14 mm in length can be substituted. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): McMaster-Carr 92000A105
Roll Cage Structural Screws (M3 Screws) Identity: M3 x 10 mm self-tapping or machine screws. Quantity: 3 screws. Footprint/package: Metric M3 thread, 10 mm length, pan or button head. Source documentation notes #6 SAE screws (approx 1/2 inch) are an acceptable alternative. Electrical constraints: None (mechanical). Substitution latitude: High latitude; fastens the 3D-printed roll cage to the top plate. Any M3 self-tapping screw or #6 SAE screw between 8 mm and 12 mm length works. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): McMaster-Carr 92000A120
Small Mechanical Fasteners (M2 Screws) Identity: M2 x 6 mm machine or self-tapping screws. Quantity: 8 screws. Footprint/package: Metric M2 thread, 6 mm length. Source documentation notes M2.2, M2.3, or #4 SAE screws can be substituted. Electrical constraints: None (mechanical). Substitution latitude: High latitude; used for securing peripheral brackets, camera mounts, or chassis adapters. Student-operated control: No. Sourcing plan: distributor lookup (representative example — sources give spec only): McMaster-Carr 92000A012
3D-Printed Top Plate and Roll Cage Identity: Donkey Car 3D-Printed Structural Frame (Thingiverse model thing:2566276 or Donkey Car Store kit). Quantity: 1 set (1 top plate and 1 roll cage). Footprint/package: Custom FDM-printed structural components matching the 1/16-scale RC chassis body post locations. Top plate includes integrated mounting bosses for the Raspberry Pi, PCA9685 breakout, camera slot, and roll cage mating points. Electrical constraints: None (dielectric mechanical structure). Substitution latitude: Can be 3D printed locally in PLA, PETG, or ABS, or purchased pre-fabricated from the Donkey Car Store. Must strictly match the CAD geometry of thing:2566276 to align mounting holes with the chassis pins and Raspberry Pi 5 bosses. Student-operated control: No. Sourcing plan: general web research: Thingiverse thing:2566276 Donkey Car 3D print STL files or Donkey Car Store
Optional Drive Battery Upgrade (2S LiPo Battery) Identity: Turnigy 1800mAh 2S 20C LiPo Pack (Turnigy part 1800mAh-2S-20C or Amazon B0072AERBE). Quantity: 1 pack (optional replacement for stock 7.2 V NiMH battery). Footprint/package: 2S lithium polymer battery pack (approx 105 mm x 34 mm x 17 mm) with heavy-gauge discharge leads terminating in a Deans/T-connector or standard Tamiya connector, and a 3-pin JST-XH balance connector. Electrical constraints: Nominal voltage 7.4 V DC (8.4 V peak when fully charged, 6.0 V cutoff threshold). Minimum continuous discharge rating 20C (36 A continuous at 1800 mAh capacity). Substitution latitude: Any 2S (7.4 V) LiPo battery pack with capacity between 1500 mAh and 2200 mAh and ≥ 20C continuous discharge capability that fits into the vehicle chassis battery tray. Student-operated control: No. Sourcing plan: retail shopping search: Turnigy 1800mAh 2S 20C LiPo pack
Optional LiPo Balance Charger Identity: 2S/3S LiPo Compact Balance Charger (e.g. B3 Pro 2S-3S balance charger or SkyRC e3). Quantity: 1 unit (required if LiPo battery upgrade is selected). Footprint/package: Compact AC mains wall-powered balance charging dock with 3-pin JST-XH (2S) and 4-pin JST-XH (3S) balance charging ports. Electrical constraints: Input 100 V to 240 V AC, 50/60 Hz. Output: CC/CV 8.4 V DC balance charging across 2 cells at 0.8 A to 1.5 A charging current. Substitution latitude: Any dedicated CC/CV 2S lithium polymer balance charger equipped with a JST-XH balance port. Student-operated control: Yes; student connects the balance lead and monitors multi-color charging status LEDs. Sourcing plan: retail shopping search: 2S LiPo balance charger JST-XH
Optional LiPo Safety Guard Bag Identity: Fire-Resistant LiPo Battery Charging and Storage Bag. Quantity: 1 bag (required safety accessory if LiPo battery is used). Footprint/package: Woven fiberglass flame-retardant pouch (approx 185 mm x 75 mm x 60 mm) with heavy hook-and-loop closure flap. Electrical constraints: None (passive fire and thermal mitigation enclosure). Substitution latitude: Any commercially certified fireproof LiPo charging and storage sack. Student-operated control: No. Sourcing plan: retail shopping search: LiPo battery safe charging bag
Optional Chassis Adapters (Desert Monster / Blaze / Short Course) Identity: 3D-printed body post adapter brackets for Exceed Desert Monster, Blaze, or Short Course Truck chassis. Quantity: 1 pair (2 adapters). Footprint/package: Custom printed plastic bracket replacing original chassis body posts to accept the standard Donkey Car top plate. Electrical constraints: None (mechanical). Substitution latitude: Mandatory only when using an Exceed Desert Monster, Blaze, or Short Course Truck chassis; not needed for the standard Exceed Magnet 1/16 or HSP-94186 chassis. Student-operated control: No. Sourcing plan: general web research: Desert Monster chassis adapter STL 3D print Donkey Car
Software and network dependencies
- Operating System: Raspberry Pi OS (Debian 13 Trixie, 64-bit). Version: Debian 13 Trixie, stated in documentation. Check plan: support-status lookup: Debian 13 Trixie.
- Python Runtime: CPython. Version:
>=3.12.0,<3.14pinned inpyproject.toml(project.requires-python). Specifically documented as Python 3.13 on Raspberry Pi OS and Python 3.12 on macOS/PC. Check plan: support-status lookup: Python 3.13. - Environment & Package Manager:
uv(Astral). Version: not stated (installed viacurl -LsSf https://astral.sh/uv/install.sh | shindonkeycar_README.md). Check plan: not checkable: unpinned version. - Python System OS Packages (installed via apt in
donkeycar_README.md):python3-libcamera: Version not stated. Check plan: not checkable: unpinned apt package.python3-picamera2: Version not stated. Check plan: not checkable: unpinned apt package.
- Donkey Car Core Application:
donkeycar. Repository:https://github.com/autorope/donkeycar. Version: dynamic attributedonkeycar.__version__defined in source, declared inpyproject.toml. CLI entry point:donkey(donkeycar.management.base:execute_from_command_line). Check plan: not checkable: version dynamic in build manifest. - Python Core Dependencies declared in
pyproject.toml(manifest path:pyproject.tomlunderproject.dependencies):numpy: Version>=1.26.0, pinned inpyproject.toml. Check plan: vulnerability lookup: numpy / PyPI / 1.26.0.pillow: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.docopt-ng: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.tornado: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.requests: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.PrettyTable: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.paho-mqtt: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.simple_pid: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.progress: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pyfiglet: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.psutil: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pynmea2: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pyserial: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.utm: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pandas: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pyyaml: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.
- Raspberry Pi Hardware Target Extras declared in
pyproject.tomlunderproject.optional-dependencies.pi(installed viauv pip install donkeycar[pi]):Adafruit_PCA9685: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.adafruit-circuitpython-ssd1306: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.adafruit-circuitpython-rplidar: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.adafruit-circuitpython-mpu6050: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.adafruit-circuitpython-bno055: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.gpiozero: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.ai-edge-litert: Version>=2.1.4, pinned inpyproject.toml. Check plan: vulnerability lookup: ai-edge-litert / PyPI / 2.1.4.opencv-contrib-python: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.matplotlib: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.kivy: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.kivy-garden.matplotlib: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pandas: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pandas-stubs: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.plotly: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.albumentations: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.
- NVIDIA Jetson Nano Extras declared under
project.optional-dependencies.nano:Adafruit_PCA9685: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.adafruit-circuitpython-ssd1306: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.adafruit-circuitpython-rplidar: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.Jetson.GPIO: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.numpy: Version1.23.*, pinned inpyproject.toml. Check plan: vulnerability lookup: numpy / PyPI / 1.23.0.matplotlib: Version3.7.*, pinned inpyproject.toml. Check plan: vulnerability lookup: matplotlib / PyPI / 3.7.0.kivy: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.kivy-garden.matplotlib: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.plotly: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.pandas: Version2.0.*, pinned inpyproject.toml. Check plan: vulnerability lookup: pandas / PyPI / 2.0.0.
- PC / Training Host Extras declared under
project.optional-dependencies.pc:tensorflow: Version2.19.*, pinned inpyproject.toml. Check plan: vulnerability lookup: tensorflow / PyPI / 2.19.0.tf-keras: Version2.19.*, pinned inpyproject.toml. Check plan: vulnerability lookup: tf-keras / PyPI / 2.19.0.matplotlib,kivy,kivy-garden.matplotlib,pandas,plotly,albumentations: all unpinned inpyproject.toml. Check plan: not checkable: unpinned version.
- Apple Silicon Mac Extras declared under
project.optional-dependencies.macos:tensorflow: Version2.19.*, pinned inpyproject.toml. Check plan: vulnerability lookup: tensorflow / PyPI / 2.19.0.tf-keras: Version2.19.*, pinned inpyproject.toml. Check plan: vulnerability lookup: tf-keras / PyPI / 2.19.0.tensorflow-metal: Version1.2.0, pinned inpyproject.toml. Check plan: vulnerability lookup: tensorflow-metal / PyPI / 1.2.0.matplotlib,kivy,kivy-garden.matplotlib,pandas,plotly,albumentations: all unpinned inpyproject.toml. Check plan: not checkable: unpinned version.
- PyTorch Autopilot Stack declared under
project.optional-dependencies.torch:torch: Version2.11.*, pinned inpyproject.toml. Check plan: vulnerability lookup: torch / PyPI / 2.11.0.pytorch-lightning: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.torchvision: Version0.26.*, pinned inpyproject.toml. Check plan: vulnerability lookup: torchvision / PyPI / 0.26.0.torchaudio: Version2.11.*, pinned inpyproject.toml. Check plan: vulnerability lookup: torchaudio / PyPI / 2.11.0.fastai: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.ipython: Version unpinned inpyproject.toml. Check plan: not checkable: unpinned version.
- Developer & Testing Dependencies declared under
project.optional-dependencies.dev:pytest,pytest-cov,responses,mypy,black: all unpinned inpyproject.toml. Check plan: not checkable: unpinned version.
- Build Backend:
setuptools.build_metawithwheel(build requirements pinned inpyproject.tomlunderbuild-system.requires = ["setuptools", "wheel"], exact versions unpinned). Check plan: not checkable: unpinned version. - Network Exposure:
- Physical Interface: Joins local Area Network via Wi-Fi (802.11ac/ax) or Ethernet (10/100/1000 Mbps RJ45) configured via Raspberry Pi Imager /
raspi-configas documented indonkeycar_README.md. - Open Services & Ports:
- SSH daemon (OpenSSH) on TCP port 22: Documentation explicitly instructs students to enable and connect via SSH for remote command-line access (
donkeycar_README.mdsection "What do you need to know before starting?"). - VNC server on TCP port 5900: Documentation instructs students to optionally enable and start a VNC session for remote graphical desktop access (
donkeycar_README.md). - WebUI Application Server (Tornado HTTP web server): Donkey Car runs an embedded Tornado web server (typically binding to TCP port 8887, serving HTML, static assets, and WebSocket streams) that provides a virtual joystick controller and real-time camera video stream accessible from any browser on the local subnet (
pyproject.tomlanddonkeycar_README.md"Modify your car's behavior").
- SSH daemon (OpenSSH) on TCP port 22: Documentation explicitly instructs students to enable and connect via SSH for remote command-line access (
- Default Credentials: Not stated in the sources; credentials are generated by the student during OS imaging using the Raspberry Pi Imager utility.
- Physical Interface: Joins local Area Network via Wi-Fi (802.11ac/ax) or Ethernet (10/100/1000 Mbps RJ45) configured via Raspberry Pi Imager /
Downloads and External URLs
- Thingiverse 3D Model Repository:
https://www.thingiverse.com/thing:2566276(hosts 3D CAD STL models for roll cage, top plate, and chassis adapters). - Donkey Car Commercial Store:
https://donkeycar-701334.square.site(commercial supplier for pre-printed plastic parts and roll cage kits). - Donkey Car Main Documentation Portal:
https://docs.donkeycar.comorhttp://docs.donkeycar.com. - Donkey Car GitHub Source Repository:
https://github.com/autorope/donkeycar. - Donkey Car Documentation Source Repository:
https://github.com/autorope/donkeydocs. - Astral UV Installer Script:
https://astral.sh/uv/install.sh. - DIY Robocars Community Resource Guides:
- Waveshare PiRacer Pro Setup Guide:
https://www.diyrobocars.com/2025/06/28/tips-for-installing-donkeycar-on-the-waveshare-piracer-pro/. - 1/28 Scale Car Build Guide:
https://www.diyrobocars.com/2026/01/06/running-donkeycar-on-a-128-scale-car/. - Mini RC Hat Store Page:
https://diyrobocars.myshopify.com/products/mini-rc-hat-for-raspberry-pi-zero-2-w.
- Waveshare PiRacer Pro Setup Guide:
- Raspberry Pi Foundation Official Camera Documentation:
https://www.raspberrypi.com/documentation/accessories/camera.html#connect-the-camera. - NitroRCX Exceed RC Vehicle Catalog:
https://www.nitrorcx.com/1rcelca.html.
Fabrication Specifications
- 3D Printing Parameters (Structural Top Plate, Roll Cage, and Chassis Adapters):
- Fabrication Method: Fused Deposition Modeling (FDM) additive manufacturing.
- Filament Material: Polylactic Acid (PLA), black color specified.
- Layer Height: 0.20 mm to 0.30 mm layer resolution.
- Nozzle Diameter: 0.50 mm extrusion nozzle (or standard 0.40 mm equivalent).
- Infill & Support Structures: No support material required; roll cage CAD geometry is specifically designed to be sliced and printed inverted (upside down).
- Post-Processing: Manual removal of plastic stringing; through-holes must be cleaned and re-drilled to clear M2, M2.5, and M3 fasteners; side slots on the roll bar must be cleared to allow standard RC body retaining clips to latch onto the chassis posts.
- Assembly Orientation: Top plate alignment nubs must face inward toward the roll cage so that the electronics plate seats flat against the roll bar structure. SBC must be oriented with USB and RJ45 Ethernet ports facing forward to ensure unobstructed access to the rear MicroSD card slot and allow proper alignment of the camera FPC ribbon cable.
- Printed Circuit Board Fabrication:
- No custom PCB gerber files are provided in the source files for the standard build; all electronics rely on commercial off-the-shelf breakout modules (Raspberry Pi 5 SBC and PCA9685 breakout board) interconnected with point-to-point female-to-female jumper leads.