SimpleBot

From Bespoke Robot Society
Jump to navigation Jump to search
SimpleBot
SimpleBot - BRS's first robot design
Use Case Educational robot for learning line following, optical odometry, and basic robotics
Microcontroller Raspberry Pi Pico or Raspberry Pi Pico W
Sensors Infrared Line Detector, 2× Optical Encoders (custom), optional MPU6050 IMU, optional nRF24L01 radio
Power 4× AA batteries (6V nominal) via MP1584 buck converter (3.3V output)
PCB BRS Differential Drive Robot Control Board (through-hole assembly)
Est. Cost Under $20 (with batteries)
Repository GitHub Repository

SimpleBot is the Bespoke Robot Society's original robot design, created for students, educators, and cost-conscious makers. It's a fully functional differential drive robot that demonstrates core robotics concepts including motor control, sensor integration, and autonomous navigation.

Design Goals

SimpleBot was designed with BRS's core mission in mind:

  • Enable Real-World Use Cases - SimpleBot is a demonstrator for dead reckoning and line maze problems, required study for all entry-level roboticists.
  • Design and build custom robots - 3D-printed chassis with modular sensor mounts
  • Lower the barrier to entry - Under $20 total cost with Optical odometry and line following sensors included.
  • Teach robotics fundamentals - Every component serves an educational purpose

Overview

SimpleBot is based on commonly available "Arduino Smart Car" components (motors, wheels, battery holder) combined with a custom 3D-printed chassis and optional custom PCB. The robot can be built three ways:

  1. Breadboard Version - Wire everything on a breadboard (fastest to prototype)
  2. Protoboard Version - Solder components to perfboard (more permanent)
  3. Custom PCB Version - Use the BRS Differential Drive Robot Control Board (most compact)

All three versions run the same code and have identical functionality.

Capabilities

Line Following

Two infrared line detectors mounted under the chassis track a black line on a white surface (or vice versa). The robot adjusts its motor speeds to stay centered on the line.

Optical Odometry

Custom encoder circuits use LEDs and photoresistors to count pulses from slotted wheels attached to the motors. This allows the robot to measure distance traveled and perform dead reckoning.

Motor Control

The TB6612FNG dual H-bridge provides independent speed and direction control for both wheels via PWM signals from the Pico.

Expansion Ready

The PCB includes headers for:

  • MPU6050 6-axis IMU (accelerometer + gyroscope) via I²C
  • nRF24L01 2.4 GHz radio module via SPI
  • 4× sensor headers for additional sensors (3.3V + GND + GPIO)
  • Analog/digital breakout headers for custom additions

Hardware

Base Components

Component Description Qty Est. Cost
Arduino Smart Car Kit 2× TT motors with wheels, encoder discs, battery holder, power switch, caster wheel 1 $6
Raspberry Pi Pico Microcontroller board (or Pico W for Wi-Fi) 1 $4
TB6612FNG Module Dual H-bridge motor driver 1 $3
MP1584 Module Buck converter (6V → 3.3V) 1 $1
Infrared Line Detector Line following sensors 2 $1
LM393 IC Dual comparator for optical encoders 1 $0.25
Resistors, LEDs, photoresistors Encoder circuit components Set $1
4× AA Batteries Power supply (1.5V each = 6V total) 4 $2
3D Printed Parts Chassis, motor mounts, sensor mounts Set $2 (filament)
Total ~$20

PCB Options

Mechanical Design

SimpleBot uses a modular 3D-printed chassis with several key features:

Chassis Modules

  • Main Chassis Plate - Central platform with mounting points for all modules
  • Battery Block - Secures 4× AA battery holder with velcro strap retention
  • Caster Assembly - Front-mounted caster wheel with adjustable height
  • Motor Mounts - Dovetail attachment system for easy motor positioning
  • Sensor Rail - Underside mounting for adjustable line sensors

All STL files and the FreeCAD source are available in the GitHub repository.

Assembly

See the detailed SimpleBot Assembly Guide (or GitHub version) for step-by-step mechanical assembly instructions with images.

Electronics

Circuit Design

The electronics integrate:

  • Power regulation (6V battery → 3.3V via buck converter)
  • Motor control (TB6612FNG dual H-bridge)
  • Optical encoder circuits (LM393 comparators)
  • Sensor interfaces (line detectors, IMU, radio)
  • GPIO expansion (analog and digital headers)

PCB Design

See the detailed SimpleBot PCB Guide (or GitHub version) for:

  • Full schematic
  • PCB layout views
  • Component placement
  • Assembly instructions
  • Gerber files for manufacturing

The PCB uses through-hole components for easy hand-soldering, making it ideal for educational builds and beginners.

Software

SimpleBot runs MicroPython on the Raspberry Pi Pico, making it accessible to beginners while providing full control over hardware.

Programming

  1. Install Thonny IDE or use any MicroPython-compatible editor
  2. Connect Pico via USB
  3. Copy Python files from the repository to the Pico
  4. Edit configuration for your specific hardware
  5. Run and test!

Code Structure

The SimpleBot code is organized into modular files:

  • motor.py - Motor control class with PWM speed control
  • encoder.py - Optical encoder pulse counting
  • line_sensor.py - Line detector interface
  • robot.py - High-level robot control (drive forward, turn, etc.)
  • main.py - Main program loop

Example Code

from robot import SimpleBot
import time

# Initialize robot
bot = SimpleBot()

# Drive forward 30cm using odometry
bot.drive_distance(30)  # cm

# Follow a line
while True:
    left, right = bot.read_line_sensors()

    if not left and not right:
        bot.forward(speed=50)  # Both on white - go straight
    elif left:
        bot.turn_right(speed=40)  # Left on line - turn right
    elif right:
        bot.turn_left(speed=40)  # Right on line - turn left

    time.sleep(0.01)

Full code examples available in the GitHub repository.

Build Paths

Choose the path that matches your skill level and available resources:

Path 1: Buy Everything (Easiest)

Best for: Complete beginners, classrooms

  1. Purchase all components from the bill of materials
  2. 3D print the chassis parts (or use a print service)
  3. Order the pre-assembled PCB (or use breadboard)
  4. Follow assembly guide
  5. Upload code and go!

Time: 2-4 hours assembly + printing time

Path 2: Solder It Yourself (Learning)

Best for: Learning electronics, gaining soldering experience

  1. Purchase components and blank PCB
  2. Order Gerber files from JLCPCB (~$2 for 5 PCBs)
  3. Learn through-hole soldering techniques
  4. Assemble PCB step by step
  5. Integrate into 3D-printed chassis
  6. Upload code and test!

Time: 4-8 hours including soldering practice

Path 3: Design Your Own (Advanced)

Best for: Experienced makers, custom requirements

  1. Use SimpleBot as a reference design
  2. Modify the FreeCAD chassis for your needs
  3. Adapt the PCB design in KiCad
  4. Add custom sensors or actuators
  5. Create your own robot variant!

Time: Unlimited - this is your custom project!

Learning Outcomes

Building and programming SimpleBot teaches:

3D Printing

  • Printing functional mechanical parts
  • Working with heat-set inserts
  • Designing for printability

Electronics

  • Motor control with H-bridges
  • Sensor interfacing (analog and digital)
  • Power regulation with buck converters
  • PCB assembly (through-hole soldering)

Software

  • MicroPython programming
  • PWM for motor speed control
  • Interrupt-driven encoder counting
  • Sensor polling and decision making
  • PID control (optional advanced topic)

Robotics Concepts

  • Differential drive kinematics
  • Optical odometry for position tracking
  • Line following algorithms
  • Dead reckoning navigation
  • Sensor fusion (with IMU)

Variations

SimpleBot Mini

A smaller version designed to fit standard micromouse mazes (under development).

SimpleBot Pro

Enhanced version with additional sensors, faster motors, and ROS integration (future development).

Community Variants

See Build Logs:SimpleBot for community members' custom builds and modifications.

Limitations

SimpleBot is designed as an educational platform, so it has intentional limitations:

  • Speed - Deliberately slow for safety and learning
  • Maze Size - Too large for standard micromouse mazes (see SimpleBot Mini)
  • Terrain - Designed for flat, smooth surfaces only
  • Line Following - Two-sensor configuration is simple but less robust than arrays

These limitations are features, not bugs - they provide opportunities for learning and improvement!

Next Steps After Building SimpleBot

Once you've built and programmed SimpleBot, consider:

  1. Master line following - Optimize your code for speed and accuracy
  2. Add the IMU - Implement heading-based navigation
  3. Add the radio - Control remotely or implement swarm behavior
  4. Design custom sensors - Add ultrasonic, IR distance, or other sensors
  5. Build a maze - Create line-following challenges
  6. Modify the chassis - Add a pen holder for drawing robots
  7. Teach others - Document your build and help newcomers

Resources

See Also

Community

Share your SimpleBot build:

  • Post photos and videos on the Discord
  • Create a build log on the wiki
  • Submit improvements via pull request on GitHub
  • Help answer questions from new builders