Setup Guide
Complete hardware wiring and software installation guide for your Autobowl system.
Step 0: Get the 3D Printed Parts
This project requires the Mini Tabletop Bowling 3D printed automatic pinsetter files from Kickstarter. All mechanical components are 3D printed — no additional hardware needed except the PCA9685 servo driver board.
View Kickstarter ProjectHardware Requirements
The only electronic component you need to purchase separately is the PCA9685 servo driver board. All other components (servos, sensors, LEDs) are included with the Kickstarter kit or are standard Raspberry Pi accessories.
Main Controller
Raspberry Pi 4
- 2GB+ RAM recommended
- MicroSD card (16GB+)
- USB-C power supply (5V 3A)
- HDMI display (optional)
PCA9685 PWM Board
16-channel, 12-bit PWM driver via I2C for reliable servo control
7 Servos
Deck raise, slide, scissors, sweep arms, ball return
Stepper Motor
Turret control with Hall effect sensor for homing
Sensors
IR sensor (pins), ball sensor, Hall effect (turret home)
WS2812B LEDs
300 addressable RGB LEDs for lane lighting effects
Servo Channel Mapping
| Channel | Servo | Function |
|---|---|---|
| 0 | Left Raise | Deck height (left side) |
| 1 | Right Raise | Deck height (right side) |
| 2 | Slide | Deck forward/back movement |
| 3 | Scissors | Pin grab/release mechanism |
| 4 | Left Sweep | Lane sweep arm (left) |
| 5 | Right Sweep | Lane sweep arm (right) |
| 6 | Ball Return | Ball return door |
Wiring Diagrams
Software Setup
Quick Start (Cross-compile from Mac/Linux)
Build without WS2812 LED support for quick testing:
# Clone repository
git clone https://github.com/yourusername/autobowl.git
cd autobowl
# Build for Raspberry Pi 4 (64-bit)
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o autobowl-arm64 .
# Copy to Pi
scp autobowl-arm64 pi@<raspberry-pi-ip>:~/autobowl
# Run on Pi
ssh pi@<raspberry-pi-ip>
./autobowlBuild on Raspberry Pi (with LED support)
WS2812 LED control requires CGO and must be built on the Pi:
# Install dependencies
sudo apt update
sudo apt install -y golang git cmake build-essential
# Build WS2812 library
git clone https://github.com/jgarff/rpi_ws281x.git
cd rpi_ws281x
mkdir build && cd build
cmake .. && make
sudo make install
sudo ldconfig
cd ~
# Clone and build autobowl
git clone https://github.com/yourusername/autobowl.git
cd autobowl
CGO_ENABLED=1 go build -o autobowl .
# Run (requires root for WS2812 DMA access)
sudo ./autobowlEnable I2C on Raspberry Pi
Required for PCA9685 servo board communication:
# Enable I2C interface
sudo raspi-config
# Navigate to: Interface Options → I2C → Enable
# Install I2C tools and verify PCA9685
sudo apt install -y i2c-tools
i2cdetect -y 1
# Should show device at address 0x40Configuration
Servo Calibration
Access the debug page at http://<raspberry-pi-ip>:8080/debug to:
- Adjust servo positions with sliders (0-180°)
- Test stepper motor movement
- Monitor sensor values in real-time
- Trigger LED animations (Strike, Comet, etc.)
Web Interface URLs
/Main scoreboard display/new-gameStart a new game/playersPlayer management/calibrationCamera pin calibration/debugHardware diagnosticsLED Animation Modes
Troubleshooting
PCA9685 Not Detected
- Check I2C is enabled via
sudo raspi-config - Scan I2C bus:
i2cdetect -y 1 - Should show device at address
0x40 - Check SDA/SCL wiring (GPIO2/GPIO3)
- Verify VCC (3.3V) and GND connections
Servos Not Moving
- Verify PCA9685 is detected via I2C
- Check external 5V power supply to V+ on PCA9685
- Ensure common ground between Pi, PCA9685, and power supply
- Test with debug page slider at
/debug - Check logs for "PCA9685 initialized" message
WS2812 LEDs Not Working
- Must run with
sudofor DMA access - Must be built on Pi with
CGO_ENABLED=1 - Check data pin connection (GPIO21)
- Verify 5V power supply capacity (3A+ for 300 LEDs)
- Check logs for "WS2812 initialized" message
Sensors Not Detecting
- Check 3.3V power to sensor
- Verify GND connection
- Use debug page to view raw sensor values
- Sensors use internal pull-ups (active LOW)
- Test sensor output with multimeter