Tick Slayer 3000
← All Documents

build-guides

Guide 1: Bench Testing Electronics

Test every electronic component individually before mounting — Pi, camera, GPS, PWM, ADC, voltage divider

Build Guide 1: Bench Testing Electronics

Type: Build Guide

Before anything goes on the rover, every electronic component gets tested on the bench. This is the most important guide in the series — it's boring, it's methodical, and it will save you hours of frustration later.

What You Need

Parts:

  • Raspberry Pi 4 (4GB)
  • MicroSD card (32-64GB)
  • USB-C power supply (for bench testing the Pi)
  • PCA9685 PWM driver board
  • ADS1115 ADC module
  • u-blox NEO-6M GPS module
  • Raspberry Pi Camera Module 3
  • CSI ribbon cable
  • 0-25V voltage divider module
  • Buzzer module (optional)

Tools:

  • Breadboard
  • Jumper wires (male-to-female and male-to-male)
  • Multimeter
  • USB battery pack (Anker or similar, for later Pi power test)
  • A monitor + micro-HDMI cable (or SSH — covered in Guide 2)

Step 1: Visual Inspection

Unbox everything and look for obvious problems before powering anything on:

  • Pi 4: Check GPIO pins are straight, no bent or missing pins. Check the CSI camera port flap isn't cracked.
  • PCA9685: All 16 channel headers present, no cold solder joints on the screw terminals.
  • ADS1115: 4 analog input pins visible, I2C header clean.
  • GPS module: Antenna connector secure, ceramic patch antenna intact (the square flat piece).
  • Camera Module 3: Ribbon cable connector intact, lens not scratched or dusty.
  • Voltage divider: Input and output terminals clearly labeled.

Set aside anything that looks wrong. Don't power it up.

Step 2: Test the Voltage Divider

This is passive electronics — no power needed, just your multimeter.

  1. Set your multimeter to DC voltage
  2. Connect a known voltage source (a charged battery, or even a 9V battery) to the input side
  3. Measure the output side — it should read proportionally lower
  4. For a 0-25V divider with a ~7.4V LiPo input, expect output around 1.5-2.5V (depends on the specific divider ratio)
  5. The key thing: the output should be under 3.3V for any input voltage you'll use. If it's not, this divider will fry your ADC.

Pass: Output voltage is proportional and under 3.3V for your expected input range. Fail: No reading, or output exceeds 3.3V for your battery voltage. Check wiring, check divider specs.

Step 3: Power Up the Raspberry Pi

We'll do full Pi setup in Guide 2. For now, just verify it boots:

  1. Flash Raspberry Pi OS Lite (64-bit) onto the MicroSD card using Raspberry Pi Imager
    • During imaging, set hostname, enable SSH, set username/password, configure WiFi
  2. Insert the MicroSD, connect a monitor (or just SSH in after a minute), and plug in USB-C power
  3. Wait for the boot sequence — you should see the desktop or a login prompt within 60 seconds
  4. If using SSH: ssh your-username@tickslayer.local (or whatever hostname you set)

Pass: Pi boots, you can log in. Fail: No video output, no SSH. Reflash the SD card. If still nothing, try a different USB-C cable (some are charge-only, no data).

Step 4: Test the Camera Module

With the Pi powered off:

  1. Lift the CSI port flap on the Pi (gently — it's fragile)
  2. Insert the ribbon cable — blue/contacts side facing the USB ports
  3. Close the flap to lock it
  4. Boot the Pi

Test with:

# Quick capture test
rpicam-still -o test.jpg

# If that works, try a preview (requires monitor)
rpicam-hello -t 5000

Pass: test.jpg exists and contains a recognizable image. Fail: "No camera detected" — reseat the ribbon cable. Make sure the contacts face the right direction. Check that the cable isn't creased or torn.

Step 5: Test the GPS Module

Wire the GPS to the Pi on a breadboard:

GPS PinPi PinNotes
VCC3.3V (Pin 1)Some modules accept 5V — check yours
GNDGND (Pin 6)
TXGPIO 15 / RXD (Pin 10)GPS TX → Pi RX
RXGPIO 14 / TXD (Pin 8)GPS RX → Pi TX

Before reading data, disable the Pi's serial console so it doesn't interfere:

sudo raspi-config
# Interface Options → Serial Port
# "Login shell over serial?" → No
# "Serial port hardware enabled?" → Yes
sudo reboot

Then read raw NMEA data:

cat /dev/serial0

You should see lines starting with $GPGGA, $GPRMC, etc. streaming in.

Important: GPS needs a clear view of the sky for a fix. If you're testing indoors, you'll see NMEA sentences but the fix fields will be empty (zeros). That's normal. Take it near a window or outside to confirm a real fix — the LED on the module will blink when it has one (solid = searching, blinking = fix acquired).

Pass: NMEA sentences streaming, and a real fix when outdoors (non-zero lat/lon in $GPGGA). Fail: No data at all — check TX/RX aren't swapped, check baud rate (default is usually 9600).

Step 6: Test the PCA9685 PWM Driver

Wire the PCA9685 to the Pi via I2C:

PCA9685 PinPi Pin
VCC3.3V (Pin 1)
GNDGND (Pin 6)
SDAGPIO 2 / SDA (Pin 3)
SCLGPIO 3 / SCL (Pin 5)

Enable I2C on the Pi:

sudo raspi-config
# Interface Options → I2C → Enable

Verify the board is detected:

sudo apt install -y i2c-tools
i2cdetect -y 1

You should see address 0x40 in the grid — that's the PCA9685's default address.

Do NOT connect any servos or the ESC yet. We just want to confirm the board talks to the Pi.

Pass: 0x40 shows up in i2cdetect. Fail: Nothing detected — check wiring, make sure I2C is enabled, check for bent pins.

Step 7: Test the ADS1115 ADC

Wire the ADS1115 to the Pi (it shares the I2C bus with the PCA9685 — you can have both connected):

ADS1115 PinPi Pin
VCC3.3V (Pin 1)
GNDGND (Pin 6)
SDAGPIO 2 / SDA (Pin 3)
SCLGPIO 3 / SCL (Pin 5)

Run i2cdetect again:

i2cdetect -y 1

You should now see two addresses: 0x40 (PCA9685) and 0x48 (ADS1115 default).

Quick read test — connect the voltage divider output to ADS1115 channel A0, apply a known voltage to the divider input:

import board
import busio
import adafruit_ads1x15.ads1115 as ADS
from adafruit_ads1x15.analog_in import AnalogIn

i2c = busio.I2C(board.SCL, board.SDA)
ads = ADS.ADS1115(i2c)
chan = AnalogIn(ads, ADS.P0)

print(f"Voltage: {chan.voltage:.3f}V")
print(f"Raw: {chan.value}")

(We'll install the Python libraries properly in Guide 2. For now, if you want to run this: pip install adafruit-circuitpython-ads1x15)

Pass: Reads a voltage that makes sense for your input. Fail: Import errors (install the library), I2C errors (check wiring), nonsense voltage (check voltage divider connections).

Step 8: Test the USB Battery Pack

This is your Pi's power source on the rover:

  1. Unplug the USB-C wall power from the Pi
  2. Connect the Anker battery pack via USB-C (or USB-A to USB-C cable)
  3. Pi should stay running or boot back up

Key things to verify:

  • The Pi runs stable for at least 5 minutes on battery power
  • The battery doesn't go into "low current sleep" mode (some packs shut off when current draw is too low — the Pi should draw enough, but verify)
  • No random reboots or undervoltage warnings (a yellow lightning bolt on the desktop, or vcgencmd get_throttled returns non-zero)
vcgencmd get_throttled
# 0x0 = all good
# Anything else = power issues

Pass: Stable operation for 5+ minutes, no throttling. Fail: Reboots or throttling — try a different USB cable (short, thick cables are better), or a different battery pack.

Helpful Resources

Checklist

Before moving on, confirm:

  • Voltage divider outputs safe voltage (under 3.3V)
  • Pi boots and you can SSH in
  • Camera captures an image
  • GPS streams NMEA data (fix confirmed outdoors)
  • PCA9685 detected at 0x40 on I2C
  • ADS1115 detected at 0x48 on I2C
  • Pi runs stable on USB battery pack

Everything passing? On to Guide 2: Raspberry Pi Setup to build out the software environment.