Close
0%
0%

TKIRV - A Solar Internet Rover

TKIRV is an attempt to build a land vehicle that can operate indefinitely while being remotely controlled over the mobile network.

TKTK
Similar projects worth following
I've always been into RC cars, and growing up I always dreamed of putting a camera on a car and driving it as far as I could possibly go. Now it's 2016 and technology is reaching a point where I can make this a reality. The goal with TKIRV is to build a vehicle that can not only be remotely controlled anywhere there's mobile signal, but to have it operate indefinitely through the use of solar panels and smart power strategies.

TKIRV (TK Internet Remote Vehicle) is a project I've wanted to do for a long time now. The idea is first and foremost to build a remote control car that can be controlled over the mobile network. Throw together a webcam and a Raspberry Pi and we should be in business. But it's more than that, too. The idea is to leverage solar power and smart power strategies in order to allow the device to operate out in the field for an indefinite period of time, potentially allowing the vehicle to traverse great distances over time.

TKIRV is built around an early 2000s Radio Shack RC car. It's got four wheel drive, suspension, and handles urban terrain like concrete, asphalt and grass pretty well. There's plenty of room to lace it with a Raspberry Pi for control, an Arduino for power management, and a webcam for vision. At about 500mm long by 300mm wide, it's a good size and pretty much the perfect platform for what we want to do.

By remaining dormant during the day, TKIRV will spend the sunlight hours charging its batteries, before switching on its Raspberry Pi brain and mobile data connection at night. This will then allow TKIRV to be remotely controlled over the internet and driven around. After carrying out its night mission, TKIRV will then be parked in a hopefully inconspicuous area, to charge up during the daylight hours once more before recommencing its mission after sundown.

Through the use of this power strategy, it is hoped that it will give TKIRV an indefinite operation capability, without it needing to return home to charge its lithium batteries. This would allow TKIRV to carry out operations over long distances, travelling a small amount each night and stopping to charge during the day, getting ever further out into the field.

Stage 1 of the project will involve getting the car to the point where it can be remotely controlled over the internet and can send back a video feed from an onboard camera. Stage 2 will then involve the implementation of solar panels and the power management systems. Stage 3 will then wrap things up by adding extra features - a GPS for navigation and headlights to make night driving easier.

We have a fairly good idea as to how we'll implement all this functionality, but it is often said that no plan survives first contact with the enemy - and electronics is no exception to this rule. Watch this space to see how TKIRV develops!



  • TKIRV ROAMS FREE - Control over cellular network!

    TK09/15/2016 at 00:49 0 comments

    TKIRV - now controllable over the internet! Because hell yes. Check out the orange wheeled monster in action...

    From the beginning, the goal of this project has been to build an R/C car that can travel far and wide. This necessitated a way of controlling the vehicle remotely at a far greater distance than is normally possible with typical radio control setups. Thankfully, humanity has seen fit to develop high speed cellular internet connections which are perfect for this very purpose. We had a lot of work to do, but we cracked it.

    ccc

    There were issues using a cellular connection, of course. Unfortunately, unless you're using very specific business-grade plans, telecom companies here won't give you a public IP and you'll struggle to get your cellular connection to accept incoming connections. This was a problem for us; TKIRV runs a Python program as a "server", which we connect to from a laptop "client" to issue drive commands. We also need to be able to SSH in to the Raspberry Pi controlling the show. The easiest way around this is to set up a VPN server on your home connection, and have the cellular remote station connect back to it. Then you can work as if both machines are on a local network. I used OpenVPN to achieve this and it was relatively painless. It's very well documented and there's plenty of great guides on how to use it with the Raspberry Pi and also Windows. However I did have problems with the webcam stream later on.

    One basic, yet very important step was to add a USB hub to the Raspberry Pi Zero. We needed to connect a webcam, a mobile internet dongle, WiFi for occasional troubleshooting, and even a keyboard & mouse at times, so we needed more ports. I went for the Stackable Raspberry Pi Zero hub from Makerspot. Four ports, no issues. With some extra polycarbonate mounting hardware I bought, I was able to bolt this up and mount the whole Pi Zero assembly to TKIRV without any problems.


    Next on the agenda was to get a webcam stream up and running on TKIRV. I found a Microsoft Livecam VX-2000 for $7 and that seemed as good a choice as any. Thankfully for me it's got good Linux compatibility and thus works great with the Raspberry Pi. However, I quickly learned that streaming a webcam in the manner I wanted wasn't actually so easy.

    It's easy to get a webcam feed running off virtually any computer these days. Whether you want just a still shot updated every few seconds or if you want video, it's not hard at all. However, we needed to be able to DRIVE using the webcam, and so latency was a huge issue. We needed to be streaming as close to real time as possible. At that point things became a massive headache. After a huge amount of research, I happened across a tool called MJPEGstreamer. It took me a full 10 hours to get it compiled and running properly, and suddenly - huzzah! I had a webcam stream with less than 500ms latency running over a 3G cellular modem. But even that wasn't good enough. For one reason or another, MJPEGstreamer doesn't drop frames when the connection varies in speed. This means that you may start at 500ms latency, but if throughput temporarily drops, it starts cueing up frames for delivery, making sure every last one gets sent - and gets further and further behind live updates. After just a minute or two I was seeing over six seconds latency! I suspect this is due to MJPEGstreamer using TCP over UDP but I can't be sure. All I knew was I needed another solution.

    I then happened across gstreamer. It's an incredibly flexible program, but it's also one of the most complicated and arcane pieces of software I've ever used. That's the price you pay for power, but damn. I think perhaps one of the bigger problems is it's not super well documented as far as I could see; I eventually patched together a working send and receive "pipe" after assembling scraps off different forums from people doing the same as me. The biggest headache I had was getting gstreamer to run over the VPN connection. My laptop base station...

    Read more »

  • TKIRV Rolls Again - Now controllable over WiFi!

    TK07/25/2016 at 08:18 0 comments

    At the end of our last episode, we had steering and drive control through the Raspberry Pi... just. But we'd gained it at the expense of some poor blown transistors and things weren't really going too well.

    It was time for upgrades. In this episode, we replace the original steering box with a servo and reassemble the whole car. Then it's time to try out remote control with our Python code over WiFi... and it works! It's a truly elating feeling getting the thing screaming around the kitchen and bathroom all done wirelessly over the network.


    So what's next for TKIRV? A webcam and cellular internet, of course. Get thirsty. But for now, feel free to read the log.

    First things first, we switched from a Raspberry Pi (original flavour) to a Pi Zero. Why? Well, the long term goals of the project involve solar power and the Pi Zero draws less current than the other models of Raspberry Pi. That, and Alex wanted his Pi back so he could play emulators again. Damn.

    It really was painless going from the original RPi to the Pi Zero - we literally just swapped over the SD card and things booted straight up! I thought that was really impressive. We then got this cute little Protozero "hat" for the Pi Zero. It's basically a protoboard that neatly fits the form factor and allowed us to really tidy up our wiring.

    In Part 2, we'd done a lot of damage to the original car's steering electronics and an absolute hatchet job of fixing them up. I reasoned that maybe it was time to just sub in a big fat servo from Hobbyking. This was great... except I blew up our Pi Zero in the process. Cue a 3 week wait for a replacement to ship. They're not easy to get a hold of.

    The job involved a whole lot of epoxy and special plastic glues to adapt the original steering box's servo saver to fit the new servo, and a bit of hacking away to get everything to fit nicely. But once it was done it was sturdy and neat.

    Now all of a sudden we found ourselves at the point where we had steering, drive... we just needed power and hell, we could drive this thing! I had a hunch a typical 12V 2A USB car charger would operate just fine off the 8 or so volts in our 2 cell lithium battery. I think I was right; initial testing showed it putting out a solid 5.1V under load to run the Pi Zero brains of the operation.

    Then it was time to wrap everything in electrical tape and try it out. Finally.

    I delicately plugged in the batteries and set TKIRV on the floor. Jumping back to my laptop, I SSH'd in to the Pi and ran the Python control program. I felt like a 90s Hollywood computer hacker. It was great. I fired up my remote control program on the laptop and handshakes happened across the WiFi and suddenly... everything was connected.

    My hand hovered above the cursor keys. I drew my breath in anticipation.

    IT WORKED.

    The thing was immediately fantastic. After crashing it into the hallway walls about sixteen times we took the thing for a spin around the kitchen and damn, TKIRV handles, bro. Things might be different when it gets out in the real world with 200ms+ lag on a 3G connection but over WiFi this thing was a dream. Then it was time for some carnage.

    Poor guy never saw it coming.

    It was so great to finally get this thing rolling again after having so many headaches and delays waiting for parts. We've now got a rolling platform we can drive over WiFi; all we need now is to sub in a few more parts and we'll be truly mobile. Till then, enjoy the log and the video... big things are yet to come.

    TK out. ;D

  • TKIRV - Steering and Drive

    TK05/07/2016 at 01:43 2 comments

    I enlisted the help of my friendly local Alex (TM) and we got to work tracing the PCB and figuring out how the car controls steering and drive. Initially we had a lot of luck and I quickly found a way to control steering and drive; these early gains were quickly scuppered as my youthful overexuberance led me to make some wiring errors which let the smoke out. To get the whole story, check out the video! The picture below illustrates the basics of what we did to control the car.

    The motor drive was easy; there's a big fat NPN FET on a heatsink (not pictured; other side of the board) that switches the motor on or off. I found a nice convenient point on the board that triggered this FET when I tied that point to ground, so it was as simple as hooking up a little NPN BJT (BC547) to the Raspberry Pi to control the motor drive. Forward and reverse of the motor is controlled by the relay (not pictured; other side of the board) which swaps the polarity of the motor leads depending on which direction you wish to go. To control this, I cut a trace connecting the coil to ground, and tied the other side of the coil high. I was then again able to pop in a BC547 to switch the relay from the Raspberry Pi.

    At this stage, we have motor drive in both forward and reverse. So far, so good. This is when things started to fall apart.

    I was really excited when I started trying to figure out the steering. From visual inspection of the top of the board, I saw a series of pairs of transistors, three pairs of two in total, that I figured were a little network used to control the steering motor. I then quickly found two pins on the main IC; one went high when I held left on the RC transmitter, the other went high when I held right. When you're not steering, the car self-centers its steering which is great, too. So I figured I could simply try dragging those pins high myself and see if the steering worked. And it did!

    However, I noticed that manually pulling these pins high was drawing 15mA, which was way too much just to switch on a few transistors in the network. I determined that if I cut the traces connecting the steering network to the main IC, I could still activate the steering left or right, but the current draw was much lower. It still self-centered, too. So I was set!

    It all fell apart when I connected these steering pins to the Raspberry Pi with a couple of PNP BJTs (BC557s). First, I still had the transistor's emitters connected to the 2.8V (weird supply voltage right?) line on the RC car's PCB instead of the RPi's 3.3V line. I also forgot to tie the grounds of the RPi and the RC car together, so the transistors were all over the place. And finally, I forgot that PNPs are switched on by pulling the base to ground, the opposite of NPNs, so I was switching both the left and right transistor networks on at the same time. I believe it's a combination of these factors that led to the ensuing tragedy...

    I let the smoke out, and for my folly, a brave PNP died in my arms. After much desoldering and transistor testing, I determined that this was the only verifiably dead transistor, but I replaced a few on the board anyway. These A928As in particular are high current types rated for 2 A, which I replaced with BC557s I had on hand which I think are only rated to something like 100mA. I got the steering twitching again but it still wasn't functioning right. Eventually I decided to rip out the main IC after finding some strange voltages on it, and... success! I could steer left and right again by manually applying voltage to the steering pins. However, I have lost the self-centering capability which was controlled by the main IC reading the steering encoder.


    While I did restore some functionality to the steering after so thoroughly blowing it up, I'm currently torn between two options. I could push on and wire the steering encoder to the RPi and code it to self-center, but I'm at risk of the underspecced replacement transistors burning out and the PCB pads and transistor...

    Read more »

  • Progress & Overview

    TK04/24/2016 at 05:58 0 comments

    Work continues on TKIRV! At this very moment, preliminary work on the Raspberry Pi control system for the car has commenced. We're running things with Python which is a fantastic language in which to build things quickly and efficiently. So far we've got some LEDs flickering over the network which is an important first step towards our goal.


    TKIRV has also been entered into the 2016 Hackaday Prize. We're aiming for the Anything Goes category. The basic features of TKIRV are outlined below.

    The aim of TKIRV is to build a remote vehicle platform capable of indefinite operation by leveraging cellular connectivity, solar energy, and smart power strategies. With this technology, TKIRV will theoretically be able to roam as far as cellular internet access is available, being controlled over the internet from many kilometers away - potentially even from a different country.

    In addition to its camera, TKIRV could be further equipped with sensor payloads to enable it to perform more complex missions. This could range from environmental monitoring (temperature, radiation sensors), mapping (altitude sensors for topographical data + GPS), or packages to enable more autonomous operation (rangefinders, computer vision). This combined with TKIRV's ability to operate for long periods of time through the use of solar power give it many advantages for continuous monitoring applications.


    Keep an eye out for the next update, where we try and figure out how to interface with the RC car's drive and steering systems!

  • Tearing down the base vehicle!

    TK04/09/2016 at 01:52 0 comments

    In this video, I introduce the TKIRV project and what we're looking to achieve. Then I set about tearing down our base vehicle, a Radio Shack RC car from the early 2000s. It's got 4WD, front and rear suspension, and is pretty much the perfect size for the job.

    The wheels come off easy - the car actually shipped with a small tool for undoing the bolts and taking them on and off. Why, I can't possibly imagine - there's nothing to achieve by doing so! Fun though.

    With the body shell removed the car looks quite different. Looking at the bottom of the car here, the suspension linkages and driveshafts are visible, as well as a strange 9V battery compartment you can only open by tearing down the whole car. I have no idea what it's there for, there's no contacts in there or anything, and the car runs off a 7.2V NiMH pack anyway. So strange.

    Next I took a look at the main PCB. I haven't delved too deeply yet but I have a rough idea of what does what. We have our main IC that I presume is responsible for decoding the radio signals from the original controller and controlling the steering and drive motors. We have the power transistor mounted to a heatsink which is most likely to run the main drive motor, a brushed DC unit. I have a hunch the relay is used to reverse the polarity of the motor connection to the power transistor to switch forward and reverse. It's an interesting relay, controlled by a 5V signal instead of the more usual 12V. Then we have a smattering of discrete transistors which I think are probably for helping drive the steering motor and doing other little things here and there. More investigation to come as the project rolls on.


    Last of all we have the steering box. This contains a small brushed DC motor, a geartrain to generate more torque, and an encoder. This allows the car to drive the front wheels back to a straight ahead position after the user stops holding left or right. It could be a bit of a headache to interface with this but I think we'll find a way.


    So next on the agenda is to figure out how to interface with the main PCB to get control over the drive and steering, and to start working on the remote control of the Raspberry Pi that's going to run everything. For more detail on the teardown, watch the video at the top of this post, and keep an eye out for the next update!

View all 5 project logs

Enjoy this project?

Share

Discussions

Michael Vowles wrote 04/10/2016 at 09:26 point

Keen to see where this goes! I have seen a couple of the 3G RC cars floating around the interwebs, some people have had good luck using a cheap as chips android phone (maybe even grab a  second hand one) and a IOIO [https://www.sparkfun.com/products/retired/10748], but I think a RPI + 3G modem may be cheaper. 

If you want to squeeze everything out of your solar panels it would be worth looking into MPPT modules (or roll your own), there are a couple examples of this floating around here, I think this may be overkill as this will be extra weight, blah blah blah. 

  Are you sure? yes | no

TK wrote 04/10/2016 at 13:04 point

ah yes, looks like MPPT is something I should look into, good tip!

  Are you sure? yes | no

borazslo wrote 04/09/2016 at 02:05 point

For the webcam I used this with my Raspberry Pi 2B and a Logitech C920: https://github.com/mpromonet/h264_v4l2_rtspserver

  Are you sure? yes | no

borazslo wrote 04/09/2016 at 02:00 point

You can triple the surface of the solar panel by making it folded during the night, and opened out for the day. (Yes it needs more small servos, but you can have much more power.)

  Are you sure? yes | no

TK wrote 04/09/2016 at 02:06 point

That's a neat idea actually... more power is always better on a project like this...

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates