Interface an ultrasonic sensor and a camera with raspberry pi
First things first, if you have not checked out my previous blog about how to interface the L298N H-bridge with a raspberry pi, then have a quick read this blog.
So far we have interfaced L298N H-bridge motor driver with raspberry pi and thanks to that, our robot has legs (wheels, more preciously). Next we need some eyes for our guy.
In general, there can be many sensors to perceive the environment.
2. Ultrasonic sensors
For this robot, I have chosen
a) A camera
b) An ultrasonic sensor
Other sensors can be added and will be added once there is a MVP for this robot. Interfacing a camera with raspberry pi is extremely simple, therefore, I will be covering in the later section. First up is the ultrasonic sensor.
a) Interfacing an ultrasonic sensor with raspberry pi
I am using a standard HC-SR04 ultrasonic sensor. This sensor is special in it’s own way. It comes from a category of sensors which operate at a different a logic level (5V) than the pi’s GPIO pins(3.3V). So unless you despise your pi, do not directly connect your pi with the ultrasonic sensor. But seriously, DON’T DO IT.
If not, then how can these type of sensors be interfaced with the raspberry pi?
Worry not, seeker. Here comes your best friend, a logic level shifter or a level shifter. It literally does what it says in the name, shift the logic level from high to low. Therefore, we will include a level shifter between the sensor and the raspberry pi.
Is there any other way to connect a 5V sensor to raspberry pi? Yes there is, use a good old resistor to divide the voltage as explained in this query.
5V sensor to Raspberry PI
If I have a sensor which has 5V ouptut: I can't plug it directly to Raspberry PI, right? If so, what would I need to do…
Let’s continue to the last and the tricky part of interfacing: the connections. Follow the instructions below:
1) Connect RPi 3.3V Pin to LV on LLS.
2) Connect RPi 5V (Pin2) to HV on LLS and to VCC on sensor. (opposite to 3.3v on LLCside) (soldered wire from pi to 2 wires)
3) Connect RPi GND (Pin 9) to GND on the L-side of the LLS.
4) Connect RPi pin GPIO18 (Pin 12) for triggering to TRIG pin on sensor, directly.
5) Connect RPi GPIO 25 (Pin 22)for echo signal to LVx (eg LV1) on LLS.
6) Connect sensor ECHO pin to HVx on LLS. (ie to HV1 if you connected the RPi — GPIO 25 (Pin 22) to LV1 — this is the signal you want to shift) .
7) Connect sensor GND to GND on the H-side of the LLS.
Moment of truth, let’s test this sensor. Code for testing this sensor is available at my repository below.
This repository contains code required to get meaningfull data from camera, IMU and how instructions are sent to Motor…
Time for some action. (ignore the camera resting on the top ;p)
Phew, that was a good amount of work and it paid off well. But the job is still not done. There’s still our camera module which is waiting to be interfaced with the raspberry pi.
b) Interfacing a raspberry pi camera module with raspberry pi
Raspberry pi has a dedicated camera port. Good, it makes our job easy. It’s almost plug and play. Yeah, almost.
Before the camera module is plugged in, raspberry pi need to be reconfigured such that it recognizes an external camera module. Follow the steps below to configure the pi:
- Run the following command to start the raspberry configuration tool.
2. Select no. 5 which says Interfacing options.
3. Select and enable the camera.
4. Now reboot the raspberry pi.
5. Once pi is fired up, run the following command. This clicks a picture.
raspistill -o sample.png
Now, we have a sample.png image.
Camera is now ready to be utilized.
Now, the robot has four wheels, a camera and an ultrasonic sensor. Where do we go from here? Heaven, oh wrong blog, sorry ;p. Surely, there will be some other exciting stuff I will be sharing with you in another blog and hopefully things will work.
Thanks for reading this long blog. We did cover good ground and if you like this blog, please clap.