Tutorial: Using Raspberry Pi Pico and HW-488 Infrared Obstacle Avoidance Sensor to Play/Pause a Video on Your PC via USB
In this tutorial, we'll demonstrate how to use the Raspberry Pi Pico and an HW-488 Infrared Obstacle Avoidance Sensor to control video playback on your PC. The setup will allow you to automatically play or pause a video based on your proximity to the sensor. When you are in front of the sensor, the video will play; when you step away, the video will pause.
We'll use CircuitPython to achieve this, as it has built-in support for USB Human Interface Devices (HID), allowing the Pico to act like a USB keyboard.
Prerequisites
Hardware:
- Raspberry Pi Pico
- HW-488 Infrared Obstacle Avoidance Sensor
- Jumper wires
- USB cable for Pico connection to the PC
Software:
- CircuitPython firmware for Raspberry Pi Pico
- Adafruit HID Library for CircuitPython
Step 1: Setup CircuitPython on Raspberry Pi Pico
To begin, we need to install CircuitPython on the Raspberry Pi Pico.
Installing CircuitPython:
- Visit the CircuitPython download page.
- Download the latest
.uf2
file for Raspberry Pi Pico. - Hold the BOOTSEL button on the Pico, then connect it to your computer via USB.
- Release the button once connected. Your Pico should appear as a mass storage device.
- Drag and drop the
.uf2
file onto the Pico's drive. The Pico will reboot, and a CIRCUITPY drive will now appear on your computer.
Step 2: Setup the Adafruit HID Library
To enable the USB keyboard functionality, we need to install the Adafruit HID Library on the Pico.
Installing the Adafruit HID Library:
- Download the Adafruit CircuitPython Library Bundle.
- Extract the zip file, and locate the
adafruit_hid
folder within thelib
directory. - Copy the
adafruit_hid
folder into thelib
directory on the CIRCUITPY drive.
Step 3: Connect the HW-488 Infrared Sensor to Raspberry Pi Pico
Now, let's connect the HW-488 Infrared Sensor to the Pico. This sensor detects obstacles by sending infrared light and measuring reflections.
Wiring:
- VCC (Sensor) → 3.3V (Pico)
- GND (Sensor) → GND (Pico)
- OUT (Sensor) → GPIO 15 (Pico)
Here’s the CircuitPython code that will monitor the sensor and act as a USB keyboard to send the spacebar key (typically used for playing and pausing videos in most media players).
Code:
import board
import digitalio
import time
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
# Set up the sensor and keyboard
sensor = digitalio.DigitalInOut(board.GP15) # Assuming sensor connected to GPIO 15
sensor.direction = digitalio.Direction.INPUT
keyboard = Keyboard(usb_hid.devices)
# Variables to track the state
sensor_active = False
# Delay to prevent multiple triggers
delay_time = 1 # 1 second delay
while True:
if not sensor.value and not sensor_active:
# If the sensor detects an object (like you're in front of it)
print("Object detected, playing video...")
keyboard.press(Keycode.SPACE) # Press space to play/pause
keyboard.release_all()
sensor_active = True
time.sleep(delay_time)
elif sensor.value and sensor_active:
# If no object is detected
print("No object detected, pausing video...")
keyboard.press(Keycode.SPACE) # Press space again to pause
keyboard.release_all()
sensor_active = False
time.sleep(delay_time)
time.sleep(0.1)
Steps:
- Open a text editor or an IDE that supports CircuitPython (such as Mu Editor).
- Copy the code above into the editor.
- Save the file as
code.py
onto the CIRCUITPY drive. This will automatically run the code when the Pico is powered.
Step 5: Test Your Setup
With everything connected and the code uploaded, it’s time to test the setup:
- Run a video: Open a media player on your PC (such as VLC or Windows Media Player) or YouTube
and start playing a video. - Trigger the sensor: Move your hand or body in front of the IR sensor. The video should automatically play when you're in front of the sensor and pause when you move away.
The Raspberry Pi Pico will act as a USB keyboard, pressing the spacebar to control the video playback.
Troubleshooting
- No action when in front of the sensor?
- Check the wiring connections, especially the signal pin (GPIO 15) and make sure the sensor is powered correctly.
- Multiple triggers?
- If the video is rapidly pausing and playing, try increasing the
delay_time
value in the code to debounce the sensor detection.
- If the video is rapidly pausing and playing, try increasing the
- No HID functionality?
- Ensure the
adafruit_hid
folder is correctly copied to thelib
directory on the CIRCUITPY drive.
- Ensure the
Conclusion
Congratulations! You've successfully set up a Raspberry Pi Pico and an infrared sensor to control video playback on your PC. This project showcases how the Pico can be used as a USB HID device, interacting with your computer through sensor inputs. You can modify this setup to perform other tasks like controlling slideshows, presentations, or even creating a touchless control system for media.
Comments
Post a Comment