I set out to make a buggy that would Follow Me aRound (hence the name FMR). Basically what I set out to do was convey my GPS location from my smart phone to the arduino uno on the buggy and use another arduino uno board along with a GPS module itself to calculate the buggy's current position and from the difference decide on course to steer and head that way towards minimising the error to zero (ideally).
I have to be honest that I did not get the buggy to work fully to the expected levels of satisfaction and the reason I mention that upfront is because if any of you chose to stop reading this is where you should !!
Still here......? Okay the reason I decided to post this all the same is because primarily for me
(a) it was a quantum jump from all my previous projects and there were times when I questioned myself as to whether I had bitten a bit more than I could chew and
(b) there was a lot of learning up to do along the way which in itself was very rewarding.
So without much ado let me take you down my developmental path which stretched over 4 months.
Step 1: Bill of Materials
The essential list of items required for this project are :-
(a) A chassis with some arrangement with 4 wheels. two of the four wheels naturally have to be connected to DC motors to get the buggy to move. As I am based out of India I picked the chassis is most commonly available in the hobby stores (and I am sure you would have seen this being used by my compatriots in their projects too)
(b) Two arduino Uno boards - one to process the GPS information being received from my phone and the other to process the Buggy's onboard GPS data
(c) HC-05 module to transmit between my phone and the arduino board receiving the signals on the buggy through blue tooth. For this I used the Bluetooth GPS Output app (for android phones https://play.google.com/store/apps/details?id=com... and I have to say their customer support were all too helpful in assisting me figure out how to connect the phone to the arduino). Special thanks to Jennifer at Meowsbox for all the help.
(d) GPS module NEO6MV2 NEO-6M to calculate the buggys GPS position
(e) 16x2 LCD driver along with 16x2 display. (This is really not required but is useful to see what data is being transmitted and received etc at the debug stage).
(f) BO Motor 100 RPM (2 Pcs) + BO Wheel (2 Pcs) + BO Motor Clamp + Nuts Bolts ( 8 Sets)
(g) wires and breadboards as required
(h) Arduino Ultrasonic Range Finder Module Sensor
Step 2: Getting Phone App Set Up and Receiving the GPS Data
For ease of distinguishing I decided to use the FMRGPS to denote the GPS that received my GPS position transmitted from my phone. Therefore this section is all about receiving the GPS data from my phone through the HC-05 module into the FMR arduino board to process the data.
As mentioned in the previous section I used the Bluetooth GPS output app from Meowsbox and I went in for the licensed version. I configured the HC-05 (which was something new I learnt along the way) to work as a master so that as soon my phone was in the vicinity it would automatically pair.
The relevant files for renaming the HC05 module and configuring it as a master are attached.
Next I required to decipher the message that was being received by the HC05 module
Step 3: Deciphering the GPS Data Received Through HC05 Module
This file is basically responsible for receiving the GPS data from the master's (my) phone through the HC05 module and stripping it to meaningful data that I could use.
Part of the program also involves serial transferring similar GPS data received from the on board GPS module by the other arduino board (OBGPS board) and stripped into meaningful and useful data.
Step 4: Deciphering the GPS Data Received by the Onboard GPS Module
This file deals with deciphering the GPS data received by the onboard GPS module and processed by the OBGPS arduino board. Much of it is self explanatory.
Step 5: The Finished Product and Its Various Stages of Development
I got overly ambitious to power the whole buggy using solar. While it worked, the weight was a bit too heavy for the solar cell to drive it as well as I would have liked it.
So I borrowed a power bank and that added some more juice into the system.
Looking back, I realise that the were a number of factors that could have made this attempt rather unsuccessful:-(a) The motors I used were not powerful enough
(b) The rubber wheels kept slipping (even on a rough floor). Perhaps some unevenness in the chassis also ensured that the two driving wheels did not make proper contact with the ground at all times
(c) Weight and balance was another tricky issue (especially positioning the solar panel and the power banks took a bit of playing around)
(d) The GPS data from my phone and the GPS data received by the arduino compatible GPS module did not come up with the same values when the buggy and I were in the same spot (i.e with me holding the buggy). This in itself was a source of errors.
(e) Considering the GPS used were not military grade, it was accurate only upto a circle radius of a few feet. This coupled with the errors mentioned in (d) above made things worse.
Notwithstanding all that, as I mentioned at the very beginning it was interesting learning experience to work with the GPS module, set up serial communication between the two arduino boards and a host of other things.
Please get back to me with constructive criticism or suggestions as to how could have done this better.