Book Image

Robotics at Home with Raspberry Pi Pico

By : Danny Staple
Book Image

Robotics at Home with Raspberry Pi Pico

By: Danny Staple

Overview of this book

The field of robotics is expanding, and this is the perfect time to learn how to create robots at home for different purposes. This book will help you take your first steps in planning, building, and programming a robot with Raspberry Pi Pico, an impressive controller bursting with I/O capabilities. After a quick tour of Pico, you’ll begin designing a robot chassis in 3D CAD. With easy-to-follow instructions, shopping lists, and plans, you’ll start building the robot. Further, you’ll add simple sensors and outputs to extend the robot, reinforce your design skills, and build your knowledge in programming with CircuitPython. You’ll also learn about interactions with electronics, standard robotics algorithms, and the discipline and process for building robots. Moving forward, you’ll learn how to add more complicated sensors and robotic behaviors, with increasing complexity levels, giving you hands-on experience. You’ll learn about Raspberry Pi Pico’s excellent features, such as PIO, adding capabilities such as avoiding walls, detecting movement, and compass headings. You’ll combine these with Bluetooth BLE for seeing sensor data and remotely controlling your robot with a smartphone. Finally, you’ll program the robot to find its location in an arena. By the end of this book, you’ll have built a robot at home, and be well equipped to build more with different levels of complexity.
Table of Contents (20 chapters)
1
Part 1: The Basics – Preparing for Robotics with Raspberry Pi Pico
7
Part 2: Interfacing Raspberry Pi Pico with Simple Sensors and Outputs
12
Part 3: Adding More Robotic Behaviors to Raspberry Pi Pico

Connecting two distance sensors

We have wired in two sensors, each on a separate set of pins. Create the read_2_sensors.py file. The imports look identical:

import time
import board
import busio
import adafruit_vl53l1x

When we come to set up the sensors, we first need to set up two I2C buses on the different pins and then use them:

i2c0 = busio.I2C(sda=board.GP0, scl=board.GP1)
i2c1 = busio.I2C(sda=board.GP2, scl=board.GP3)
vl53_l = adafruit_vl53l1x.VL53L1X(i2c0)
vl53_r = adafruit_vl53l1x.VL53L1X(i2c1)

We can also apply the same configuration settings for both sensors:

vl53_l.distance_mode = 1
vl53_l.timing_budget = 100
vl53_r.distance_mode = 1
vl53_r.timing_budget = 100

The main loop starts in the same way, with both sensors going into ranging mode:

vl53_l.start_ranging()
vl53_r.start_ranging()
while True:

And in this case, we will check for ready data from both sensors before printing:

    if vl53_l.data_ready and vl53_r.data_ready:...