PhotoCar Raspberry Pi Zero Bluetooth Integration (v2)

Prepared June 4, 2026. Version 2: this build standardizes the main battery on a single 4S LiFePO4 pack (12.8 V nominal, ~14.6 V full charge) instead of the original two 4S LiPo packs. A 12.8 V LiFePO4 is a near-perfect match for the 12 V wiper motor, removes the series/parallel ambiguity, and is still chargeable on the existing OVONIC X1 Ultra (it supports LiFe 1-6S). The Pi, MD25HV motor driver, enclosure, and signal wiring plan are unchanged. The 3S LiPo (11.1 V) alternative is noted where relevant.

Computer Pi Zero 2 W or Zero WH
Control Bluetooth to GPIO PWM/DIR
Motor Driver Reuse Cytron MD25HV
Battery 4S LiFePO4 12.8 V
12.8 V battery matches 12 V motor No direct motor current through Pi Common signal ground Fused Pi supply on a simple 8-30 V buck Label every connector

Simple Architecture

The Pi should not be part of the high-current drive circuit. It should receive battery power only through a DC-DC buck converter and should talk to the Cytron board through three low-current signal wires.

Two things to confirm before you order parts or cut a wire:
  • Motor lead identification. The drive motor is a wiper-style gear motor with a multi-pin harness (possible park switch/speed taps) plus two thick armature leads. Find the two leads that actually drive the motor; do not connect the park-switch harness to the MD25HV.
  • The existing "30A 8-86VDC" module. Trace its input and output before reusing it. It may be a DC-DC converter, soft-start/inrush limiter, or switch — it is almost certainly not a charger. With a clean single-battery rebuild you may not need it at all; leave it out unless you confirm a purpose.
v2 power plan: a single 4S LiFePO4 pack, 12.8 V nominal, ~14.6 V full charge, 10 Ah. The 12.8 V plateau matches the 12 V motor, so no software voltage cap is needed, and the full bus never exceeds ~14.6 V — well within both the MD25HV (7-58 V) and a common 8-30 V buck converter. One pack also removes the series/parallel guesswork of the original two-LiPo setup. Buy a pack with a balance lead so the OVONIC X1 Ultra can balance-charge it in LiFe 4S mode.
Size the pack for current, not just runtime: the wiper motor draws ~6 A running and can spike toward 15-20 A at stall. 10 Ah keeps the running load near 0.6C with headroom for stall peaks; a 5 Ah pack sits at ~1.2C and a BMS-protected one may trip and cut power mid-drive. Choose a pack whose BMS is rated for at least 20 A continuous discharge (or a bare RC LiFePO4 with a high C-rating).
Keep power current and control signals separated 4S LiFePO4 12.8 V nominal, 10 Ah Main Fuse / Switch existing or upgraded MD25HV motor power input Motor 12 V gear motor 2 A Fuse Pi branch only 5 V Buck 3 A or higher Pi Zero Bluetooth GPIO PWM / DIR / GND only low-current connectorized signal harness
Main safety rule: never connect the motor, motor battery, or charger output to a Raspberry Pi GPIO pin. GPIO is a 3.3 V signal interface. Motors stay on the MD25HV screw terminals; the Pi only sends PWM and direction signals.

Complete Parts List

This list is intentionally conservative. It includes the small wiring and mounting parts that usually get missed.

Reuse From The Existing Car

Part Qty Use Notes
Cytron MD25HV motor driver 1 visible Motor power stage Keep its existing motor and battery screw-terminal wiring if it already runs the motor correctly.
OVONIC X1 Ultra charger, XT60 leads, and power distribution existing Charging and wiring The charger supports LiFe 1-6S, so it charges the new 4S LiFePO4 pack. Reuse the XT60 connectors and distribution hardware. The old 4S LiPo packs are retired from this build (keep them for other RC use).
12 VDC gear motor and existing motor connector existing Drive motor Leave motor wiring as heavy current wiring. Do not move motor current into small GPIO harnesses.
Enclosure, cable glands/pass-throughs, Wago-style lever connectors, wire loom existing Mounting and service wiring Reuse where practical. Add strain relief where wires leave the box.

Buy / Add

Part Qty Minimum spec Why it is needed
4S LiFePO4 battery pack 1 12.8 V nominal (14.6 V full), 10 Ah, with balance lead; BMS rated ≥20 A continuous discharge, or a bare RC LiFePO4 with high C-rating Main power. 12.8 V matches the 12 V motor; 10 Ah keeps the ~6 A motor near 0.6C with stall headroom. Get XT60 (or adapt to the existing leads).
Raspberry Pi Zero 2 WH, or Raspberry Pi Zero 2 W plus soldered 40-pin male header 1 Bluetooth/BLE onboard, 40-pin header available Zero 2 W is the better current choice. WH saves soldering. A Zero W/WH also works but has less CPU headroom.
microSD card 1 16-32 GB, reputable brand Raspberry Pi OS and control program.
5 V DC-DC buck converter 1 Input range covering at least 8-20 V; output 5.1 V; 3 A or higher Powers the Pi from the 12.8 V battery (max ~14.6 V). Any common 8-30 V module (LM2596, MP1584, etc.) works. Do not rely on the MD25HV 5VO output for the Pi.
Inline fuse holder and fuse for Pi branch 1 ATO/ATC, mini blade, or similar; 2 A fuse to start Protects the small electronics branch if the buck converter or Pi wiring shorts.
Panel or inline power switch for Pi branch 1 Rated above battery voltage and branch current Lets the Pi be powered down separately from the motor system for service.
Pre-crimped female 1-pin Dupont/JST-style leads 20-40 22-26 AWG, 2.54 mm compatible for Pi header side User preference: each conductor starts as a pre-crimped 1-pin lead, then gets loaded into housings.
2.54 mm connector housings assortment 1x2, 1x3, 1x4, 2x2, 2x3, plus spare 1x1 Build keyed groups from single leads: one Pi power plug, one motor-control plug, and optional camera/status plugs.
2-position lever connectors or small terminal block 2-4 Rated for the branch current Cleanly taps battery positive/negative into the buck input and gives service points.
18 AWG red/black wire 6-10 ft Stranded copper Battery branch to fuse, switch, and buck input.
20-22 AWG red/black wire 3-6 ft Stranded copper Buck 5 V output to Pi power connector.
22-26 AWG signal wire or pre-crimp leads 3-6 ft Blue/yellow/green/black preferred PWM, DIR, GND, and optional status signals.
Ferrules or fork/spade terminals for screw terminals as needed Match wire gauge and terminal style Prevents loose strands at buck converter, terminal blocks, and power taps.
Heat shrink tubing assortment 2:1 or 3:1, small and medium sizes Insulates splices, labels connector tails, and reinforces harness exits.
Adhesive cable tie mounts and small zip ties 10-20 Indoor electronics grade Strain relief and separation between power wiring and signal wiring.
Plastic standoffs, M2.5 screws/nuts, or adhesive Pi mount 1 set Non-conductive mounting preferred Mounts Pi above the enclosure floor so solder joints cannot short on debris or hardware.
Labels: heat-shrink labels, tape flags, or paint marker 1 set Readable after installation Label both ends of every new connector: PI-PWR, MOTOR-A-CTRL, BUCK-IN.
Multimeter 1 DC voltage and continuity Required for checking buck output before connecting the Pi.

Optional PhotoCar Add-ons

Part Qty Use Include when
Raspberry Pi Camera Module plus Zero camera ribbon cable 1 Photos/video Needed if the car should capture images. The Pi Zero uses the small CSI connector, so get the Zero-style cable.
USB OTG adapter or micro-USB hub 1 Setup/service Useful for keyboard, USB serial, or Wi-Fi/Bluetooth debugging.
Low-voltage buzzer or LED status module 1 Status feedback Use through a resistor or transistor driver. Do not power high-current indicators from GPIO directly.

Budget Amazon Parts List

Prices below are budget target prices for Amazon US searches on June 4, 2026. Amazon prices and sellers move constantly, so verify the live price, shipping, reviews, and delivery date before ordering. Prefer listings shipped by Amazon or a reputable electronics seller for the Raspberry Pi itself.

Budget strategy: buy the real Raspberry Pi from a trustworthy listing, then save money on generic wiring, housings, heat shrink, standoffs, fuse holders, and buck converters. Do not save money by removing the Pi fuse, using an undersized 5 V regulator, or powering the Pi from the MD25HV 5 V output.

Minimum Cart

Amazon search / part Qty Target price Budget pick notes
4S LiFePO4 12.8 V 10 Ah pack (with balance lead) 1 $35-60 The main battery. Confirm it is 4S LiFePO4 (12.8 V), has a balance/JST-XH lead for the OVONIC charger, and a BMS rated ≥20 A continuous (or a bare RC LiFePO4 with high C-rating). Add an XT60 pigtail if it does not match the existing lead.
Raspberry Pi Zero 2 WH 1 $28-40 Best simple choice because the 40-pin header is already soldered. If Zero 2 WH is overpriced, buy Zero 2 W plus a 40-pin header, but only if you are comfortable soldering.
32 GB microSD card 1 $5-8 SanDisk, Samsung, Kingston, or Micro Center house brand are fine. Avoid the absolute cheapest no-name card.
5 V 3 A adjustable buck converter (LM2596 or MP1584) 1 pack $7-12 The 12.8 V LiFePO4 bus peaks at ~14.6 V, so any common 8-30 V module works (LM2596 and MP1584 are both fine). A 2-pack or 5-pack is cheaper per module. Set output to 5.1 V before connecting the Pi.
Inline mini blade fuse holder plus 2 A fuses 1 pack $6-10 Many packs include 14 AWG pigtails and assorted fuses. Use a 2 A fuse for the Pi branch first; keep larger included fuses for other projects.
12 V DC inline or panel rocker switch 1 $5-8 Use for the Pi electronics branch. It does not need to switch motor current, only the fused buck converter branch.
2.54 mm Dupont pre-crimped wire and housing kit 1 kit $11-18 Look for a kit that includes individual pre-crimped female leads plus 1P, 2P, 3P, and 4P housings. This is the key kit for the requested connector style.
Lever connector assortment 1 small pack $8-13 Only buy if the existing Wago-style connectors are not enough. Get 2-port and 3-port connectors rated for stranded wire.
18 AWG red/black stranded wire 1 roll pair $9-14 For the battery-to-fuse-to-buck input branch. Silicone wire is nicer but PVC hookup wire is cheaper and fine inside the enclosure.
22 AWG stranded hookup wire assortment 1 kit $8-12 Useful for signal extensions, labels by color, and optional LED/button wiring. The pre-crimp kit may cover this if its leads are long enough.
Heat shrink tubing assortment 1 kit $6-9 Use at connector exits, splices, and label flags. Adhesive-lined is better for strain relief but costs more.
Adhesive cable tie mounts and small zip ties 1 pack $6-10 For harness routing. Clean the plastic enclosure with alcohol before sticking mounts down.
M2.5 nylon standoff kit 1 kit $6-9 Mount the Pi above the enclosure floor. Nylon is preferred because it will not short anything if hardware loosens.
Estimated minimum Amazon total $129-206 Includes the new 4S LiFePO4 pack. Assumes you already have the motor driver, charger, enclosure, main motor wiring, and basic tools.

Tools And Consumables To Buy Only If Missing

Amazon search / part Target price When to buy
Basic digital multimeter $10-18 Required if you do not already have one. You must verify buck output before connecting the Pi.
Wire stripper/cutter $7-12 Buy if you only have scissors or a knife. Clean stripped ends matter for screw terminals and lever connectors.
Ferrule crimping tool kit $16-25 Optional but good for buck converter screw terminals. Skip if you will use lever connectors and already have clean stranded-wire terminations.
Cable labels or label maker tape $5-12 Buy if you do not have masking tape and a marker. Label both ends of every new connector.

Optional PhotoCar Add-ons

Amazon search / part Target price Why it is optional
Raspberry Pi camera module plus Zero camera ribbon $15-35 Needed only if the car must capture photos/video. Make sure the ribbon cable is the narrow Pi Zero CSI cable.
Micro-USB OTG adapter $4-7 Useful for setup and rescue access. Not needed once Bluetooth/network setup is stable.
GPIO LED module or low-current status LED kit $5-9 Useful for boot/control status. Keep it low current and use a resistor or module designed for GPIO.
Amazon listing filter: avoid listings that bundle many unrelated parts just to look cheap. For this build, the most important listing details are a genuine 4S LiFePO4 pack (not LiPo) with a balance lead and a BMS rated ≥20 A, the 5 V regulator current rating, pre-crimped female leads, 2.54 mm housings, and real Pi Zero 2 W/WH branding.

GPIO And Connector Plan

Use BCM numbering in software and physical pin numbers for building the connector. The chosen pins avoid reserved ID pins and use GPIO18 for PWM because it has a common hardware PWM function.

Recommended Pi Header Assignments

Signal BCM GPIO Physical pin Wire color
Motor A PWM GPIO18 12 Blue
Motor A DIR GPIO23 16 Green
Signal GND GND 14 Black
Pi 5 V power 5 V 2 and/or 4 Red
Pi power ground GND 6 and/or 9 Black
Optional status LED GPIO24 18 Yellow

Housing Groups Built From 1-Pin Pre-Crimps

Connector Housing Loaded pins
J1 PI-PWR 1x4 female housing on the Pi header's right column Physical pin 2 = 5 V, pin 4 = 5 V, pin 6 = GND, pin 8 = empty orientation cavity. This avoids spanning both GPIO rows with a small power plug.
J2 MOTOR-A-CTRL 1x4 female housing on the Pi header's right column Physical pin 10 = empty orientation cavity, pin 12 = PWM, pin 14 = GND, pin 16 = DIR. The empty pin 10 cavity helps prevent accidental offset insertion.
J3 BUCK-IN 1x2 lever/terminal connector Battery branch positive after fuse/switch, battery negative.
J4 AUX 1x3 female housing 3.3 V, GPIO24, GND for an optional low-current LED board or button. Do not connect this to 5 V devices.
Connectorize the Pi side as small serviceable harnesses Raspberry Pi Zero 40-pin header edge 2 4 6 8 J1 PI-PWR, right-column 1x4 10 12 14 16 J2 MOTOR-A-CTRL, 1x4 5 V Buck Output 5.1 V and GND only MD25HV Screw Terminal GND, 5VO, PWM, DIR Build these from individual pre-crimped 1-pin leads inserted into housings, then label both ends.
Connector orientation: plain Dupont housings are not truly keyed, and an offset or reversed J1 PI-PWR plug can put 5 V onto a GPIO pin and kill the Pi. Prefer keyed/polarized housings (JST-XH or similar) for the power plug. If you must use Dupont, put a paint mark on pin 1, use matching heat-shrink labels, leave one intentionally empty cavity, and before plugging into the Pi use a multimeter to confirm 5 V and GND land on the correct cavities. Avoid a 2x2 housing directly on the Pi header unless it is part of a keyed adapter, because it can accidentally span the wrong row.
Logic levels and PWM: the Pi's GPIO is 3.3 V and the MD25HV accepts that directly, so no level shifter is needed. Drive PWM in the roughly 1-20 kHz range (GPIO18 hardware PWM); this stays well under the driver's input limit and keeps motor whine low. The MD25HV control terminal is the green 4-position screw block (GND, 5VO, PWM, DIR) — land signal wires there with ferrules, and do not use the 5VO pin to power the Pi.

Detailed Wiring Plan

Power Wiring

  1. Disconnect all batteries before changing wiring.
  2. Choose a battery positive/negative tap point after the existing main switch/fuse if available. The Pi should turn off when the car is made safe, unless you intentionally want a separate electronics service mode.
  3. Run 18 AWG red from the positive tap to a 2 A inline fuse, then to the Pi branch switch, then to buck converter VIN+.
  4. Run 18 AWG black from the battery negative/common ground bus to buck converter VIN-.
  5. Double-check VIN polarity before energizing. Most buck modules have no reverse-polarity protection; a reversed input can destroy the module instantly. Adding a series Schottky diode or a polarity-protection MOSFET on the buck input is cheap insurance.
  6. Set the buck converter output to 5.1 V with a multimeter before plugging in the Pi. Set it under the actual battery voltage you will use, not on a bench 12 V supply, so the output holds at full pack voltage.
  7. Run buck VOUT+ to Pi physical pins 2 and 4, and buck VOUT- to Pi physical pin 6 using the J1 PI-PWR housing. Leave the physical pin 8 cavity empty as an orientation cue.
  8. Mount the buck converter away from loose motor wiring and leave air space around it.

Signal Wiring

  1. Confirm the motor's two armature leads first. The wiper motor's multi-pin connector may include a park-switch or speed tap; only the two main drive leads belong on the MD25HV motor output. If the existing two-wire drive already works, leave that wiring alone.
  2. Run Pi physical pin 12 / GPIO18 to the MD25HV green screw terminal PWM position.
  3. Run Pi physical pin 16 / GPIO23 to the MD25HV DIR position.
  4. Run Pi physical pin 14 / GND to the MD25HV GND position. This common ground is required so the driver can interpret the Pi's PWM and direction voltage. Keep this signal ground separate from the high-current motor return path; do not route motor current through the Pi GND wire.
  5. Do not connect MD25HV 5VO to the Pi's 5 V pin when the buck converter is installed. The MD25HV 5 V output is limited to about 250 mA — fine for tiny logic/reference loads but not enough for a Pi Zero 2 W and accessories.
  6. Route the signal harness along the enclosure wall, not across battery terminals or motor screw terminals.
  7. If signal wires must cross motor wires, cross at roughly 90 degrees and keep the run short.
Inside the enclosure: route power low, route signals high top view of existing plastic electronics box Battery / XT60 MD25HV Motor Exit heavy current zone: short, thick, fused, strain-relieved Pi Fuse / Switch 5 V Buck Pi Zero signal zone: thin, bundled, labeled

Wire Gauge And Connector Rules

Circuit Recommended wire Connector style Concern
Main battery to MD25HV and motor Keep existing heavy wire if it is intact; otherwise size for motor current, typically 12-14 AWG for short runs in this build class Existing XT60, screw terminals, insulated crimp terminals High current, heat, loose strands, vibration, and accidental shorts.
Battery branch to buck input 18 AWG stranded Inline fuse, switch, ferrules/terminal block Must be fused near the tap point because it is fed by a large battery.
Buck output to Pi 20-22 AWG stranded 1x4 right-column housing at Pi; screw/ferrule at buck Voltage drop and connector looseness. Keep short and mechanically supported.
Pi GPIO to MD25HV 22-26 AWG pre-crimp leads 1x4 housing at Pi side; individual Dupont or screw terminal/ferrule at driver side as needed Noise pickup, reversed connector, no common ground.

Assembly Steps

1. Bench-test the Pi before installing it

Configure software before the Pi goes into the car microSD Raspberry Pi OS Pi Zero pair Bluetooth test GPIO program Ready to install

Install Raspberry Pi OS Lite and enable Bluetooth.

Pair the controller or phone while on USB bench power.

Test GPIO output with LEDs or a meter before touching the car wiring.

2. Mount the Pi and buck converter

Mount low-current electronics away from battery terminals Battery area MD25HV Pi on standoffs service loop beside it 5 V Buck Use non-conductive standoffs. Keep the Pi antenna area clear of metal and large wire bundles.

Vacuum debris from the enclosure before mounting electronics.

Mount the Pi with standoffs or an insulated carrier plate.

Place the buck converter close enough to keep 5 V leads short.

3. Add the fused buck branch

Branch to the Pi through its own small fuse Battery Bus existing 2 A Fuse near tap Switch Pi branch 5 V Buck VIN+ / VIN- Negative returns to common battery ground. Positive is fused before it travels.

Install the fuse close to the battery tap, not next to the Pi.

Verify buck input polarity before connecting batteries.

Set buck output to 5.1 V before plugging into J1 PI-PWR.

4. Build the GPIO harness from 1-pin pre-crimp leads

Load individual pre-crimp leads into a grouped housing 1-pin leads blue / green / black E PWM GND DIR 1x4 housing Labeled harness J2 MOTOR-A-CTRL Tug-test each lead after insertion. If a crimp backs out, replace that lead. Do not solder loose wires directly to the Pi header for this build; serviceable connectors are safer.

Insert pre-crimped leads into the housing in the same order as the wiring table.

Use the spare cavity as a visual orientation cue.

Label the harness before plugging it into the Pi.

5. Connect to the MD25HV control pins only

Only three wires go from the Pi to the motor driver Pi Zero GPIO18, GPIO23, GND MD25HV PWM, DIR, GND PWM DIR GND Do not connect motor output to GPIO

Use the MD25HV green 4-position control screw terminal (GND, 5VO, PWM, DIR), not the heavy motor screw terminals.

Keep the existing motor screw-terminal wiring intact.

After plugging in, check continuity from Pi GND to MD25HV GND.

Plain Checklist

  1. Bench-test Pi OS, Bluetooth pairing, and GPIO output.
  2. Disconnect all batteries and verify zero voltage before working inside the car.
  3. Mount the Pi on non-conductive standoffs and mount the buck converter nearby.
  4. Add a fused, switched battery branch to the buck converter input.
  5. Set buck output to 5.1 V with a multimeter.
  6. Build J1 PI-PWR and J2 MOTOR-A-CTRL from individual 1-pin pre-crimped leads.
  7. Connect Pi GPIO18 to MD25HV PWM, GPIO23 to DIR, and Pi GND to MD25HV GND.
  8. Tie and label every harness so nothing can rub on screw terminals, XT60 plugs, motor shafts, or enclosure edges.
  9. Power the Pi branch with the MD25HV disconnected or motor disabled first. Confirm the Pi boots cleanly.
  10. Reconnect motor power and test at very low PWM duty cycle with the car lifted so wheels cannot drive away.

Software Control Notes

The simplest software design is a small Python service: Bluetooth input sets a target speed and direction, and the service outputs PWM on GPIO18 (1-20 kHz) plus direction on GPIO23. Add a command timeout so the motor stops if Bluetooth drops.

No software voltage cap needed in v2: the 12.8 V LiFePO4 bus matches the 12 V motor, and the ~14.6 V full-charge peak is within normal range for a 12 V motor (a car's electrical system runs 13.8-14.4 V). You can use the full 0-100% PWM range. Still confirm motor current with a meter during the first low-duty runs to make sure nothing is binding.
Required behavior

On boot, set PWM duty cycle to 0 before enabling any movement. On Bluetooth disconnect, command PWM to 0. On program crash, use a systemd restart policy but keep the default GPIO state safe.

Recommended first test

Run motor tests with the car lifted and limit PWM to 10-20% until direction, braking, and stop behavior are confirmed.

Motor Logic

Pi output MD25HV meaning Build note
PWM low / 0% duty Brake/stop Use this as fail-safe output.
PWM active, DIR low Forward, depending on motor polarity If physical direction is backward, swap motor terminals or invert DIR in software.
PWM active, DIR high Backward, depending on motor polarity Test slowly with wheels off the ground.
Bluetooth is not an emergency stop. Keep a physical main power switch or battery disconnect reachable. Software stop is useful, but the high-current motor path still needs a hardware way to be made safe.
LiFePO4 safety: LiFePO4 is much more thermally stable than LiPo, but it is still a lithium battery. Charge it in LiFe 4S mode on the OVONIC charger (not LiPo mode — the cell voltages differ) and use the balance lead. Fuse the pack close to its output, keep an accessible hardware disconnect, and unplug the pack for any wiring work inside the enclosure. LiFePO4 tolerates being stored at partial or full charge, but still avoid deep discharge below ~2.5 V/cell and stop using any pack that is swollen or damaged.

Final Inspection Before Driving

Power

Main pack fuse present close to the battery output, Pi branch 2 A fuse close to its tap, buck output verified at 5.1 V, buck input polarity confirmed (reverse-polarity protection if added), an accessible hardware main disconnect/e-stop, no exposed positive terminals, battery wires cannot pull loose, and charger wiring kept separate from runtime Pi power.

GPIO

GPIO connector orientation marked, no 5 V on signal pins, Pi ground and MD25HV ground common, spare connector cavities labeled.

Mechanical

Pi is mounted on standoffs, harnesses have service loops, wires are tied away from motor shafts and enclosure edges, lid can close without pinching wires.

Troubleshooting

Symptom Likely cause Check
Pi will not boot from car power Buck output wrong, fuse open, voltage sag, reversed connector Measure 5.1 V at the Pi connector before plugging in. Check fuse and polarity.
Motor does not respond but Pi runs No common ground, wrong MD25HV input pin, PWM not running Continuity from Pi GND to MD25HV GND; meter GPIO18 while commanding speed.
Motor runs opposite direction Motor polarity or DIR convention reversed Invert DIR in software or swap MD25HV motor outputs MA/MB.
Pi reboots when motor starts Buck converter sag/noise, shared weak connector, power branch too close to motor wiring Shorten 5 V leads, use a higher quality 5 V 3 A buck, improve ground and routing, keep signal/power separated.
Bluetooth disconnects inside enclosure Antenna blocked by battery/wire bundles or noisy power Move Pi so the antenna end is not buried under battery leads; test with lid open and closed.

Sources Checked