Raspberry Pi projects: Modern solutions require more modern solutions!
This week, we’re bringing you some very modern Raspberry Pi projects!
Ever seen the meme that goes like “Modern problems require modern solutions?”
Well, what happens if your modern solutions create some modern problems?
Well then, you need a modern solution.
Hence, modern solutions require modern solutions.
Sometimes, though, these problems are so minor that manufacturers won’t bother creating a solution for you.
Luckily, as Raspberry Pi enthusiasts, our ingenuity is endless.
Disable engine auto start stop
Gas mileage is pretty important these days with gas prices going off the charts.
To their credit, car manufacturers have created a solution which stops the engine when it detects that the car is idling. This really helps your car save gasoline when stopped.
But some people prefer to not have it on and I can see why.
A while ago I was in a modern rental car. I found with the auto-stop-start system enabled, I had to “plan” my brake pressure so I could start the engine before the light turned green.
Sometimes I would forget and then sit at a green for longer than I would like. I would compensate by stepping harder on the gas. Not recommended.
Some car manufacturers don’t give you a choice in disabling the auto stop-start feature. If you want to disable it, you have to press the button every time you drive.
Not anymore!
Project outline
What you’re seeing in the video above is a commercial product, but it can be easily accomplished with a Raspberry Pi Pico and a SG90 servo. Power for the Raspberry Pi Pico can be supplied by the car’s USB ports.
The basic MicroPython code is this and assumes you plugged the signal line of the servo into GPIO 16.
from time import sleep
from machine import Pin
from machine import PWM
pwm = PWM(Pin(16))
pwm.freq(50)
pwm.duty_ns(2000000)
sleep(0.5)
pwm.duty_ns(500000)
There are a few challenges to this:
First, you need to adjust the angle of the servo. This is adjusted by the valued passed into pwn_duty_ns, which is in nanoseconds.
2 million nanoseconds (2,000,000) equals a full rotation and 500,000 is a full rotation in the opposite direction.
In the end, I only used 1,000,000 to 2,000,000 nanoseconds, rather than the full range of the servo.
Secondly, you need to know how to deactivate your car’s start-stop feature. Some require you to press and hold and so you will need to put adjust the sleep length.
Thirdly, you only want this to operate when the engine is on, and not when you start the radio. This is probably the biggest challenge because there’s no easy way to tell the Pico when the engine is on.
But the same project — operating a servo with the Raspberry Pi Pico can actually be very beneficial for many other projects, such as a switch toggle. I use this exact method to stay in bed and turn off the bedroom lights.
Or it can be used to stop a screensaver by pressing a random button (like INSERT).
OpenMower: GPS robotic lawn mower
“Robotic lawn mowers suck!”
That’s what Clemens Elflein, the creator of OpenMower says.
His gripe is that these robomowers are too dumb.
“Basically all of these bots drive in a random direction until they hit the border of the lawn, rotate for a randomized duration and repeat. I think we can do better!”
So, instead of a randomized lawn mowing method, Clemens sought something more precise by integrating GPS. The benefit here is that the robomower can also autonomously navigate to the backyard and mow grass there!
A robomower is a modern solution to reduce the repetitive task of mowing a lawn. But it’s not good enough.
Remember why you’re reading this… modern solutions require more modern solutions!
Project goals
Clemens used a commercial product called the YardForce Classic 500 and installed a Raspberry Pi 4 and Raspberry Pi Pico.
As stated on his Github, these are his goals:
Autonomous Lawn Mowing: Obviously, the device should be able to mow the lawn automatically.
- Good Safety: The device must be safe, e.g. emergency stop if lifted or crashed.
- No Perimeter Wire Needed: We want to be flexible and support multiple mowing areas.
- Low Cost: It should be cheaper than a mid range off-the-shelf product
- Open: I want to share knowledge and enable others to build an OpenMower as well.
- Nice to Look At: You should not be ashamed to have an OpenMower mowing your lawn.
- Avoid Obstacles: The mower should detect obstacles and avoid them during mowing.
- Rain Detection: The device should be able to detect bad weather conditions and pause mowing until they improve.
Can you do it?
Clemens has created a Discord group and people are participating daily.
He does not recommend you do it unless you know what you are doing.
He makes it real obvious with a disclaimer that if anything goes wrong, don’t come knocking on his door.
Join OpenMower’s Discord or see their GitHub.
No poop, Sherlock: overengineering how to get rid of dog poop in yard
Caleb Olson has a corgi that leaves droppings all over his yard.
Initially, he designed a system that marks out where his dog, Twinkie, drops poop and marks it on an image. A modern solution.
But the modern solution proved to be “way too much work” as he has to refer to his phone to get an idea of where the locations are.
So what did he do? He installed a robot arm with a laser that points out where the poop is.
Modern solutions require more modern solutions.
Computer vision is crucial to this task as it starts the poop laser guidance. By crossing his arms, the computer starts the guidance system by pointing to the first poop spot.
Then, as he bends down to pick it up, OpenCV detects that and moves him to the next poop spot.
Y’all got any of them… projects?
I comb Reddit, Twitter and other websites daily to find interesting projects to feature in the PiCockpit Newsletter.
You can also check our Paragon Projects series here.
If you know of an interesting project, leave a comment below 👇
If you like this series, subscribe to our newsletter below 👇