GPS Toy / On board computer
This is something I’ve been working about a month now. It’s a little handheld GPS / on board computer that shows altitude, current course, synced satellites, speed, time and date, distance between saved point and current point (and its course and corrdinates) and total trip distance.
At first I wanted a speed-o-meter for my bike but you know, coding it’s free and could stop adding functions.
I managed to get some cheap serial GPS receptor, a tiny OLED display and an Arduino Mini Pro and started to code. First I knew I would need some big font and so I made my own using paint, each character 24×32 (96bytes). This is the complete parts list:
- Ebay I2C SSD1306 based OLED display, 128×64, 0.96″ and 5V.
- Ebay Arduino Mini Pro (ATMEGA328p), 5V 16Mhz
- Sparkfun DC-DC step-up voltage converter (5V).
- Adafruit MPC73833 LiPo battery charger.
- Savaged iPod Nano 1st gen battery.
- Dealextreme EM-411 GPS 5V receiver.
- Savaged momentary buttons, resistors and wires.
I had to code some method to print own big fonts in the display and the moment I managed to control all the display functions as I wanted I started to code the methods to print GPS gathered data in the display. This is an earlier slowed display test that didn’t worked well:
The first prototype had just speed mode, was assembled with double tape and had no battery charger. It’s purpose was to see how speed meter worked testing it in my car.
Then I dismantled firts prototype and assembled second prototype, this time no double tape, just boards soldered togheter. This is the schematic:
And so I began building:
The actual prototype looks like a tiny packed devices cube with front display and momentary switches (best view on 720p). Here is a video with functions explanation:
I’m not a coder so code is pretty much ugly. Sketch it’s downloable from here. It uses TinyGPS library from Mikal Hart, custom new software serial to disable interrupts in pin ports and PinChangeInt, an Arduino library to handle buttons interrupts.
If you would like to contribute with functions or code fixes please feel free to contact me either in the comments or in my email address (at the bottom of the page).
Miércoles, Junio 6th 2012 at 3:01 pm
[...] for his bike. Feature creep makes fools of us all, so after a month of work [Karman] had a GPS-enabled cube that tells him his current latitude and longitude, current time, course, direction and [...]
Miércoles, Junio 6th 2012 at 3:29 pm
[...] for his bike. Feature creep makes fools of us all, so after a month of work [Karman] had aGPS-enabled cube that tells him his current latitude and longitude, current time, course, direction and [...]
Miércoles, Junio 6th 2012 at 6:28 pm
where can i find the OLED display for delivery to the uk?
Miércoles, Junio 6th 2012 at 7:38 pm
Great build! What’s the battery life like for this device?
Miércoles, Junio 6th 2012 at 9:02 pm
@ Brendan: this is the one I bought: http://www.ebay.es/itm/I2C-0-96-OLED-display-module-compatible-Arduino-/130566448551?pt=LH_DefaultDomain_0&hash=item1e665de5a7
Photo is old, but screen module is newer and blue instead red.
@Kyle: 1 hour 45 min. Battery is really old, but used that one because it’s perfect fitting size.
Miércoles, Junio 6th 2012 at 9:42 pm
Nice work! Great workmanship, love the schematic, very nicely laid out.
Miércoles, Junio 6th 2012 at 9:48 pm
what are the pin names/numbers that connect the arduino and the oled display? I can’t tell exactly from the schematic
Miércoles, Junio 6th 2012 at 10:29 pm
@Luke: Thanks! The schematic was made using paint and pasted photos.
@Ethan: Analogs 4 and 5, the usual ones for I2C bus. You can check it at the arduino mini pro layout.
Jueves, Junio 7th 2012 at 7:43 am
[...] for his bike. Feature creep makes fools of us all, so after a month of work [Karman] had a GPS-enabled cube that tells him his current latitude and longitude, current time, course, direction and [...]
Jueves, Junio 7th 2012 at 8:08 am
[...] szczegółów znajdziecie tutaj : LINK Powiązane wpisy:MicroFly – projekt Quadrocopter`aElektroniczny klucz CW w 5 [...]
Viernes, Junio 8th 2012 at 1:51 am
Excellent project. It’s beautifully done to get it into a nice tight cube. You should have a custom pcb made so it can be even smaller.
Sábado, Junio 9th 2012 at 3:06 pm
is it possible to switch the mini for a nano ?
Sábado, Junio 9th 2012 at 3:24 pm
Nice build.
There was something I was wondering. It’s usually recommended to have the GPS pointed up, towards the sky. Have you run into any performance issues because the GPS is pointed down?
Sábado, Junio 9th 2012 at 8:55 pm
@Tibo: works exactly but is bigger.
@Mr. Cruz: maybe in first fix but not usually.
Martes, Junio 12th 2012 at 6:13 am
[...] toe. Vergeet ook niet het OLED-display van 128×64 en een ATMEGA 328p microcontroller. Om alle specifieke onderdelen bij elkaar te vinden, zul je een beroep moeten doen op je [...]
Viernes, Junio 22nd 2012 at 12:21 pm
I just got in the display from ebay and tried to compile the code using Arduino 1.0.1 but get these errors. Can you help? I’m using the Mini Pro..
GPS_Toy:12: error: variable or field ‘updateScreen’ declared void
GPS_Toy:12: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:12: error: ‘gps’ was not declared in this scope
GPS_Toy:13: error: variable or field ’saveActualLoc’ declared void
GPS_Toy:13: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:13: error: ‘gps’ was not declared in this scope
GPS_Toy:15: error: variable or field ‘udpateTrip’ declared void
GPS_Toy:15: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:15: error: ‘gps’ was not declared in this scope
GPS_Toy:16: error: variable or field ‘printCourse’ declared void
GPS_Toy:16: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:16: error: ‘gps’ was not declared in this scope
GPS_Toy:17: error: variable or field ’sendDistanceBetwen’ declared void
GPS_Toy:17: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:17: error: ‘gps’ was not declared in this scope
GPS_Toy:23: error: variable or field ‘print_date’ declared void
GPS_Toy:23: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:23: error: ‘gps’ was not declared in this scope
GPS_Toy:41: error: ‘TinyGPS’ does not name a type
GPS_Toy.cpp: In function ‘void setup()’:
GPS_Toy:111: error: ‘PCintPort’ has not been declared
GPS_Toy:112: error: ‘PCintPort’ has not been declared
GPS_Toy.cpp: In function ‘void loop()’:
GPS_Toy:212: error: ‘gps’ was not declared in this scope
GPS_Toy:212: error: ’saveActualLoc’ was not declared in this scope
GPS_Toy:243: error: ‘gps’ was not declared in this scope
GPS_Toy:330: error: ‘gps’ was not declared in this scope
GPS_Toy:330: error: ‘updateScreen’ was not declared in this scope
GPS_Toy:333: error: ‘gps’ was not declared in this scope
GPS_Toy:333: error: ‘udpateTrip’ was not declared in this scope
GPS_Toy.cpp: In function ‘void interrupt_button()’:
GPS_Toy:339: error: ‘PCintPort’ has not been declared
GPS_Toy:341: error: ‘PCintPort’ has not been declared
GPS_Toy.cpp: In function ‘void reset_display()’:
GPS_Toy:376: error: ‘gps’ was not declared in this scope
GPS_Toy:376: error: ‘updateScreen’ was not declared in this scope
GPS_Toy.cpp: At global scope:
GPS_Toy:382: error: variable or field ‘updateScreen’ declared void
GPS_Toy:382: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:382: error: ‘gps’ was not declared in this scope
Viernes, Junio 22nd 2012 at 6:43 pm
I have no clue about ‘declared void’. In the other hand the gps errors comes from not having the TinyGPS library.
Lunes, Junio 25th 2012 at 9:04 pm
can you please send me a copy of the code? i’m unable to open the file from the link you provide me……..gracias
me podrias enviar una copia del code? no puedo abrir el file que tienes para hacerlo bajar de la internet….gracias
Martes, Junio 26th 2012 at 8:58 am
Please use Winrar, it should open tgz files.
Miércoles, Julio 4th 2012 at 9:08 am
Hey guys,
thanks a lot for the project idea. I build the same thing with a other SSD1306 display (http://bit.ly/LwP6Jq).
With the display you can use the libraries of adafruit (http://bit.ly/N84qhZ) and don’t need any self construction ;)
I will post on my blog (zauberstuhl.de) in the next days more information and the code :)
Thanks and hf,
Lukas
Miércoles, Julio 4th 2012 at 11:07 pm
Nice work!
But I get these errors, what I do wrong?
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:28: multiple definition of `TinyGPS::TinyGPS()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:28: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:28: multiple definition of `TinyGPS::TinyGPS()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:28: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::stats(unsigned long*, unsigned short*, unsigned short*)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:102: multiple definition of `TinyGPS::stats(unsigned long*, unsigned short*, unsigned short*)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:102: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::from_hex(char)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:113: multiple definition of `TinyGPS::from_hex(char)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:113: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::parse_decimal()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:123: multiple definition of `TinyGPS::parse_decimal()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:123: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::parse_degrees()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:142: multiple definition of `TinyGPS::parse_degrees()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:142: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::gpsatol(char const*)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:278: multiple definition of `TinyGPS::gpsatol(char const*)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:278: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::gpsstrcmp(char const*, char const*)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:286: multiple definition of `TinyGPS::gpsstrcmp(char const*, char const*)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:286: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::cardinal(float)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:339: multiple definition of `TinyGPS::cardinal(float)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:339: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::f_altitude()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:393: multiple definition of `TinyGPS::f_altitude()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:393: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::f_course()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:398: multiple definition of `TinyGPS::f_course()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:398: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::f_speed_knots()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:403: multiple definition of `TinyGPS::f_speed_knots()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:403: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::f_speed_mph()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:406: multiple definition of `TinyGPS::f_speed_mph()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:406: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::f_speed_mps()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:412: multiple definition of `TinyGPS::f_speed_mps()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:412: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::f_speed_kmph()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:418: multiple definition of `TinyGPS::f_speed_kmph()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:418: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::get_datetime(unsigned long*, unsigned long*, unsigned long*)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:357: multiple definition of `TinyGPS::get_datetime(unsigned long*, unsigned long*, unsigned long*)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:357: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::crack_datetime(int*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned long*)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:374: multiple definition of `TinyGPS::crack_datetime(int*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned long*)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:374: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::get_position(long*, long*, unsigned long*)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:348: multiple definition of `TinyGPS::get_position(long*, long*, unsigned long*)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:348: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::f_get_position(float*, float*, unsigned long*)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:365: multiple definition of `TinyGPS::f_get_position(float*, float*, unsigned long*)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:365: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::course_to(float, float, float, float)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:319: multiple definition of `TinyGPS::course_to(float, float, float, float)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:319: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::distance_between(float, float, float, float)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:294: multiple definition of `TinyGPS::distance_between(float, float, float, float)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:294: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::term_complete()’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:164: multiple definition of `TinyGPS::term_complete()’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:164: first defined here
TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::encode(char)’:
C:\Documents and Settings\Gebruiker\Mijn documenten\Arduino\libraries\TinyGPS/TinyGPS.cpp:59: multiple definition of `TinyGPS::encode(char)’
TinyGPS.cpp.o:C:\DOCUME~1\GEBRUI~1\LOCALS~1\Temp\build5425500241782305192.tmp/TinyGPS.cpp:59: first defined here
TinyGPS\TinyGPS.cpp.o:(.rodata._ZN7TinyGPS19GPS_INVALID_F_ANGLEE+0×0): multiple definition of `TinyGPS::GPS_INVALID_F_ANGLE’
TinyGPS.cpp.o:(.rodata._ZN7TinyGPS19GPS_INVALID_F_ANGLEE+0×0): first defined here
TinyGPS\TinyGPS.cpp.o:(.rodata._ZN7TinyGPS22GPS_INVALID_F_ALTITUDEE+0×0): multiple definition of `TinyGPS::GPS_INVALID_F_ALTITUDE’
TinyGPS.cpp.o:(.rodata._ZN7TinyGPS22GPS_INVALID_F_ALTITUDEE+0×0): first defined here
TinyGPS\TinyGPS.cpp.o:(.rodata._ZN7TinyGPS19GPS_INVALID_F_SPEEDE+0×0): multiple definition of `TinyGPS::GPS_INVALID_F_SPEED’
TinyGPS.cpp.o:(.rodata._ZN7TinyGPS19GPS_INVALID_F_SPEEDE+0×0): first defined here
Martes, Julio 10th 2012 at 4:53 pm
Is it possible to run this on an 8 Mhz mini at 5 volts? In the mySoftwareSerial.cpp library I see the line: #if F_CPU == 16000000
Jueves, Julio 12th 2012 at 9:29 pm
@Gustav: seems you included twice the TinyGPS lib.
@Mike: I think there should be no problems as the most important part is the mySoftwareSerial, and it supports 8Mhz (I think). In the same file there is a #elif F_CPU == 8000000, so it should run nice :D
Lunes, Julio 16th 2012 at 8:11 pm
What software did you use to create the logo that generated hex code? I would like to create my own.
Lunes, Julio 16th 2012 at 10:05 pm
@Mike: from the OLED seller on ebay I got his example programs: http://www.wide.hk/download/i2c_OLED.rar
That rar contains i2c oled simple example and LCDAssistant.exe. It takes a bmp file as input and drops the hex array as output. Make sure to use a monochrome bmp sized to your display.
Sábado, Septiembre 29th 2012 at 8:57 pm
Hiya i am reciving this error. can you help me.
GPS_Toy.cpp: In function ‘void setup()’:
GPS_Toy:111: error: ‘PCintPort’ has not been declared
GPS_Toy:112: error: ‘PCintPort’ has not been declared
GPS_Toy.cpp: In function ‘void interrupt_button()’:
GPS_Toy:339: error: ‘PCintPort’ has not been declared
GPS_Toy:341: error: ‘PCintPort’ has not been declared
Regards
Brendan
Sábado, Septiembre 29th 2012 at 9:26 pm
ignore my last comment i worked it out
Thanks it works great
:D
Miércoles, Octubre 17th 2012 at 6:56 pm
Great build! But I have big problems with the software. I use Adruino 1.0 and get a lot of errors. Has anyone solved the problems and can help me? The best way will be to send me the complete packing list
Lunes, Octubre 22nd 2012 at 3:35 pm
You probably are missing some library. Check you have all needed libraries (TinyGPS and PinChangeInt)
Viernes, Octubre 26th 2012 at 8:10 am
With the help of Lukas I solved my problems. Put the GPS-Toy file into the files of the Skathbook . All the others (TinyGPS and PinChangeInt) into the libraries of arduino. I am running a 8MHz board. Wokes fine. Thank you.
Viernes, Diciembre 28th 2012 at 7:38 pm
Hi. Nice project! what are the pin names/numbers that connect the arduino and the gps module? It seems only vin, GND and the grey one to arduino pin 4. Is’nt it a serial module?
Miércoles, Enero 16th 2013 at 11:11 am
Hello brunialti,
Indeed is a serial port but GPS doesn’t need to be initialited or configured so is not needed to conect tx from arduino to GPS rx.
Jueves, Febrero 14th 2013 at 9:39 pm
Hello! What a great project!! JUST LOOOOOVE IT!!! And thank you for putting out the code! I am playing with it but don’t know how to code a Skylab SKM53 GPS on it… It irritates me! Any one has a clue? Please help!
Miércoles, Marzo 20th 2013 at 6:58 pm
Hi, I was looking for a tracking device for my bike… do you think we could add a gsm port something to send the position to another phone or server? Then we could hide it into some part of the bike…
The solution avaiable out there are too expensive…
Didn’t u think about it?
Jueves, Abril 25th 2013 at 7:50 am
What kind of changes did you make on mysoftware serial? I cannot get any readings from the Skylab skn53 GPS module! :(
Sábado, Mayo 4th 2013 at 1:47 pm
My modifications are just to disable interrupts on unsued port. Should work if you’re attaching your TX-RX GPS on same pins.
Lunes, Agosto 19th 2013 at 2:10 pm
How quickly does it give you your speed and how accurate is the speed it is giving you? is it only based on GPS or do you have another way to measure that you are moving?
Miércoles, Agosto 21st 2013 at 11:45 am
The ultimate prototype has 0.5 km/h acuracy, acording to GPS manufacturer. About the speed, I think is about 0.5s for display refresh.
This speed is given because atmega is busy reading the serial port. It can be speed up by connecting the GPS to the built in serial port instead of using softwareserial.
Viernes, Septiembre 27th 2013 at 2:48 pm
hello
I am very interested in your project .
My intention is to choose one of 6 points( lat-long) that would be stored
in the box ( how?) then the gps give the direction to that point
ie: heading, distance, and time according to the speed .
My problem is how to store and retrieve the point
many thanks
michel
Viernes, Noviembre 22nd 2013 at 10:02 am
This is what I need but only speed and maybe clock. I want it for my motor cycle helmet so I’d need the gps mounted on outside of helmet and all other pieces next to each other to hide behind foam except screen. This would be an awesome thing to post on Instructables.com if you’d write up for speedometer only I know lots of motorcycle guys who would love this.
Domingo, Febrero 9th 2014 at 8:35 pm
Hello, i have a question about this GPS.
Is it possible to have a 5Hz or 10Hz refresh rate ?
I need to measure max speed of some RC Offshore, 1Hz is not very accurate.
Thank you.
Lunes, Febrero 10th 2014 at 1:02 pm
Hello 189886,
The GPS Module allows up to 10Hz but unfortunally the arduino Serial Library doesn’t work very well with speeds over 4800 in 328p 8MHz, so it’s not possible at the moment :(
Lunes, Febrero 10th 2014 at 8:44 pm
Thank you for this information, one day perhaps.
Miércoles, Marzo 12th 2014 at 11:16 am
Hello, confratulations, great project I also want to make swatch for runners with gps to improve skills in my football team;) so i have question if you can sent me your schamatics, and C – code if it is not problem for you. Best regards, Maciej!
Miércoles, Marzo 12th 2014 at 11:40 am
Everything is in the post :D
Martes, Marzo 18th 2014 at 11:45 pm
I too and receiving this error when trying to compile.
GPS_Toy:48: error: variable or field ‘updateScreen’ declared void
GPS_Toy:48: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:48: error: ‘gps’ was not declared in this scope
GPS_Toy:49: error: variable or field ’saveActualLoc’ declared void
GPS_Toy:49: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:49: error: ‘gps’ was not declared in this scope
GPS_Toy:51: error: variable or field ‘udpateTrip’ declared void
GPS_Toy:51: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:51: error: ‘gps’ was not declared in this scope
GPS_Toy:52: error: variable or field ‘printCourse’ declared void
GPS_Toy:52: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:52: error: ‘gps’ was not declared in this scope
GPS_Toy:53: error: variable or field ’sendDistanceBetwen’ declared void
GPS_Toy:53: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:53: error: ‘gps’ was not declared in this scope
GPS_Toy:59: error: variable or field ‘print_date’ declared void
GPS_Toy:59: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:59: error: ‘gps’ was not declared in this scope
GPS_Toy:42: error: ‘TinyGPS’ does not name a type
GPS_Toy.ino: In function ‘void setup()’:
GPS_Toy:113: error: ‘PCintPort’ has not been declared
GPS_Toy:114: error: ‘PCintPort’ has not been declared
GPS_Toy.ino: In function ‘void loop()’:
GPS_Toy:214: error: ‘gps’ was not declared in this scope
GPS_Toy:214: error: ’saveActualLoc’ was not declared in this scope
GPS_Toy:245: error: ‘gps’ was not declared in this scope
GPS_Toy:332: error: ‘gps’ was not declared in this scope
GPS_Toy:332: error: ‘updateScreen’ was not declared in this scope
GPS_Toy:335: error: ‘gps’ was not declared in this scope
GPS_Toy:335: error: ‘udpateTrip’ was not declared in this scope
GPS_Toy.ino: In function ‘void interrupt_button()’:
GPS_Toy:341: error: ‘PCintPort’ has not been declared
GPS_Toy:343: error: ‘PCintPort’ has not been declared
GPS_Toy.ino: In function ‘void reset_display()’:
GPS_Toy:378: error: ‘gps’ was not declared in this scope
GPS_Toy:378: error: ‘updateScreen’ was not declared in this scope
GPS_Toy.ino: At global scope:
GPS_Toy:384: error: variable or field ‘updateScreen’ declared void
GPS_Toy:384: error: ‘TinyGPS’ was not declared in this scope
GPS_Toy:384: error: ‘gps’ was not declared in this scope
Jueves, Marzo 27th 2014 at 12:39 pm
Hey Chris,
You just need to download and install the tinygps library.
Lunes, Marzo 31st 2014 at 3:34 pm
Yes, I have it, I included the files into the arduino folder, do I have to enable or uncomment something in the code?
Thank you for your time!
Martes, Abril 1st 2014 at 9:33 pm
Please, ensure that the library is properly installed by opening any included sample sketches and trying to compile them.
Viernes, Julio 25th 2014 at 7:58 am
Hello,
Great GPS! I want to make a same for an HUD glasses for skiing!
I have buy all components! Please can you send me your program for arduino?
Thanks and best regards
Alexandre Mavilia
Martes, Julio 29th 2014 at 8:22 pm
http://karman.cc/blog/descargas/gps_code.tgz
Martes, Noviembre 11th 2014 at 6:33 pm
Hey Karman.
Built on off you cubes, and everything works… but my display is off by 4 pixels to one side !?!?
Where can i modify code som that Oled shows the right pictures ??
My Oled is 1.3″ but still 128×64 I2C
Thanks
Sábado, Noviembre 15th 2014 at 9:30 am
Would someone kind help me.!
When I compile the one I get the following message:
Arduino: 1.0.6 (Windows 7), Board: “Arduino Nano w/ ATmega328″
GPS_Toy.ino: In function ‘void interrupt_button()’:
GPS_Toy:340: error: ‘arduinoPin’ is not a member of ‘PCintPort’
GPS_Toy:342: error: ‘arduinoPin’ is not a member of ‘PCintPort’
Thank you very much
David
Miércoles, Noviembre 19th 2014 at 4:25 pm
Hi there,
it was a hard fight to awake the hardware and to upload the software code!
Now it is “syncing” … someone an ides, how long this could take?
(GPS is green / blue blinking).
Is there somewhere an IOM how to operate the GPS toy?
BR
Addu-me
Martes, Noviembre 25th 2014 at 9:46 am
Hello,
This GPS works well, but the date remains to zero (00/00/0000), can it be fixed ?
Thanks,
Regards,
Maxime
Martes, Noviembre 25th 2014 at 10:00 am
Hello,
the date is given,
you have to wait a bit for it to appear.
Regards,
Maxime
Martes, Diciembre 2nd 2014 at 8:21 pm
where is your math for the km/h? I would like to convert this instead to mp/h, because in USA we are still behind on the times, hahaha
Jueves, Diciembre 4th 2014 at 4:41 pm
Would someone kind help me.!
When I compile the one I get the following message:
Arduino: 1.0.6 (Windows 7), Board: “Arduino Nano w/ ATmega328″
GPS_Toy.ino: In function ‘void interrupt_button()’:
GPS_Toy:340: error: ‘arduinoPin’ is not a member of ‘PCintPort’
GPS_Toy:342: error: ‘arduinoPin’ is not a member of ‘PCintPort’
Thank you very much
David
Jueves, Diciembre 4th 2014 at 4:48 pm
Please help me. !!
I try to comply the code many many times, but I keep getting the following compilation errors.
——————————————-
GPS_Toy.ino: In function ‘void interrupt_button()’:
GPS_Toy:340: error: ‘arduinoPin’ is not a member of ‘PCintPort’
GPS_Toy:342: error: ‘arduinoPin’ is not a member of ‘PCintPort’
——————————————-
I am using the following HW and compiler
Arduino: 1.0.6 (Windows 7), Board: “Arduino Nano w/ ATmega328″
Please help me
Thank you very much
David
Lunes, Diciembre 8th 2014 at 3:03 pm
Please help me. !!
Q1) What Arduino ID version should I use ?
Q2) What PinChangeInt version should I use ?
I try to comple the code many many times, but I keep getting the following compilation errors.
——————————————-
GPS_Toy.ino: In function ‘void interrupt_button()’:
GPS_Toy:340: error: ‘arduinoPin’ is not a member of ‘PCintPort’
GPS_Toy:342: error: ‘arduinoPin’ is not a member of ‘PCintPort’
——————————————-
I am using the following HW and compiler
Arduino: 1.0.6 (Windows 7), Board: “Arduino Nano w/ ATmega328″
Please help me
Thank you very much
David
Martes, Diciembre 9th 2014 at 7:30 am
Hello
For those who successfully compiled the code, would you please answer the following two simple question.
Q1) What “Arduino ID” version should I use ?
Q2) What “PinChangeInt” library version should I use ?
David
Domingo, Marzo 1st 2015 at 5:27 pm
Hello,
I am really impressed by the GPS Toy.
I have a problem when compiling as follows:
This report would have more information with
“Show verbose output during compilation”
enabled in File > Preferences.
Arduino: 1.0.6 (Windows XP), Board: “Arduino Nano w/ ATmega328″
gps_toy:2: error: integer constant is too large for ‘long’ type
gps_toy:5: error: integer constant is too large for ‘long’ type
gps_toy:288: error: integer constant is too large for ‘long’ type
gps_toy:317: error: integer constant is too large for ‘long’ type
In file included from gps_toy.ino:349:
D:\Arduino\libraries\data/data.h:1: error: stray ‘\357′ in program
D:\Arduino\libraries\data/data.h:1: error: stray ‘\273′ in program
D:\Arduino\libraries\data/data.h:1: error: stray ‘\277′ in program
D:\Arduino\libraries\data/data.h:1: error: stray ‘#’ in program
gps_toy:1427: error: integer constant is too large for ‘long’ type
gps_toy:1953: error: integer constant is too large for ‘long’ type
In file included from d:/arduino/hardware/tools/avr/lib/gcc/../../avr/include/avr/pgmspace.h:80,
from D:\Arduino\hardware\arduino\cores\arduino/Arduino.h:27,
from gps_toy.ino:1:
D:\Arduino\libraries\inttypes/inttypes.h:299: error: expected initializer before ‘__MINGW_NOTHROW’
D:\Arduino\libraries\inttypes/inttypes.h:301: error: ‘__CRT_INLINE’ does not name a type
D:\Arduino\libraries\inttypes/inttypes.h:304: error: expected initializer before ‘__MINGW_NOTHROW’
D:\Arduino\libraries\inttypes/inttypes.h:308: error: expected initializer before ‘__MINGW_NOTHROW’
D:\Arduino\libraries\inttypes/inttypes.h:310: error: expected initializer before ‘__MINGW_NOTHROW’
D:\Arduino\libraries\inttypes/inttypes.h:313: error: expected initializer before ‘__MINGW_NOTHROW’
D:\Arduino\libraries\inttypes/inttypes.h:315: error: expected initializer before ‘__MINGW_NOTHROW’
gps_toy:2: error: expected ‘,’ or ‘…’ before ‘&’ token
gps_toy:2: error: ISO C++ forbids declaration of ‘T’ with no type
gps_toy:3: error: ‘T’ has not been declared
gps_toy:9: error: variable or field ‘updateScreen’ declared void
gps_toy:9: error: ‘TinyGPS’ was not declared in this scope
gps_toy:9: error: ‘gps’ was not declared in this scope
gps_toy:10: error: variable or field ’saveActualLoc’ declared void
gps_toy:10: error: ‘TinyGPS’ was not declared in this scope
gps_toy:10: error: ‘gps’ was not declared in this scope
gps_toy:12: error: variable or field ‘udpateTrip’ declared void
gps_toy:12: error: ‘TinyGPS’ was not declared in this scope
gps_toy:12: error: ‘gps’ was not declared in this scope
gps_toy:13: error: variable or field ‘printCourse’ declared void
gps_toy:13: error: ‘TinyGPS’ was not declared in this scope
gps_toy:13: error: ‘gps’ was not declared in this scope
gps_toy:14: error: variable or field ’sendDistanceBetwen’ declared void
gps_toy:14: error: ‘TinyGPS’ was not declared in this scope
gps_toy:14: error: ‘gps’ was not declared in this scope
gps_toy:20: error: variable or field ‘print_date’ declared void
gps_toy:20: error: ‘TinyGPS’ was not declared in this scope
gps_toy:20: error: ‘gps’ was not declared in this scope
gps_toy:1: error: expected constructor, destructor, or type conversion before ‘/’ token
gps_toy:287: error: expected constructor, destructor, or type conversion before ‘/’ token
In file included from gps_toy.ino:295:
D:\Arduino\libraries\EEPROM/EEPROM.h:32: error: ‘EEPROMClass’ does not name a type
gps_toy.ino: In function ‘int EEPROM_writeAnything(int, const T&)’:
gps_toy:303: error: ‘EEPROM’ was not declared in this scope
gps_toy.ino: In function ‘int EEPROM_readAnything(int, T&)’:
gps_toy:312: error: ‘EEPROM’ was not declared in this scope
gps_toy.ino: At global scope:
gps_toy:316: error: expected constructor, destructor, or type conversion before ‘/’ token
In file included from gps_toy.ino:336:
C:\Documents and Settings\Jean Pierre\Mes documents\Arduino\libraries\EEPROMAnything/EEPROMAnything.h:31: error: redefinition of ‘template int EEPROM_readAnything(int, T&)’
gps_toy:307: error: ‘template int EEPROM_readAnything(int, T&)’ previously declared here
C:\Documents and Settings\Jean Pierre\Mes documents\Arduino\libraries\EEPROMAnything/EEPROMAnything.h: In function ‘int EEPROM_readAnything(int, T&)’:
C:\Documents and Settings\Jean Pierre\Mes documents\Arduino\libraries\EEPROMAnything/EEPROMAnything.h:41: error: ‘EEPROM’ was not declared in this scope
In file included from gps_toy.ino:349:
D:\Arduino\libraries\data/data.h: At global scope:
D:\Arduino\libraries\data/data.h:1: error: ‘pragma’ does not name a type
In file included from gps_toy.ino:358:
D:\Arduino\libraries\PinChangeInt/PinChangeInt.h: In constructor ‘PCintPort::PCintPort(int, volatile uint8_t&)’:
D:\Arduino\libraries\PinChangeInt/PinChangeInt.h:104: error: ‘((PCintPort*)this)->PCintPort::portInputReg’ cannot be used as a function
gps_toy.ino: In function ‘void loop()’:
gps_toy:468: error: ‘logo’ was not declared in this scope
gps_toy:531: error: ’saveActualLoc’ was not declared in this scope
gps_toy:649: error: ‘updateScreen’ was not declared in this scope
gps_toy:652: error: ‘udpateTrip’ was not declared in this scope
gps_toy.ino: In function ‘void reset_display()’:
gps_toy:695: error: ‘updateScreen’ was not declared in this scope
gps_toy.ino: In function ‘void updateScreen(TinyGPS&)’:
gps_toy:709: error: ‘print_date’ was not declared in this scope
gps_toy:714: error: ‘printCourse’ was not declared in this scope
gps_toy:720: error: ’sendDistanceBetwen’ was not declared in this scope
gps_toy:721: error: ‘printCourse’ was not declared in this scope
gps_toy:731: error: ‘print_date’ was not declared in this scope
gps_toy.ino: In function ‘void init_OLED()’:
gps_toy:1419: error: ‘logo’ was not declared in this scope
gps_toy.ino: At global scope:
gps_toy:1426: error: expected constructor, destructor, or type conversion before ‘/’ token
gps_toy:1483: error: expected constructor, destructor, or type conversion before ‘;’ token
gps_toy:1487: error: expected initializer before ‘table’
All libraries seem to be in appropriate folder.
I am a bit confused wth teh first line like :
GPS_Toy/
0000755 0000765 0000765 00000000000 11763500076 011665 5
ustar karman karman
GPS_Toy/data.h
0000644 0000765 0000765 00000044140 11762754205 012756 0
ustar karman karman
What are they used for ?
Can someone help ?
Viernes, Agosto 5th 2016 at 7:48 pm
Nice Build
But i have a problem when I take off 5v. and start once again on the Arduino. then the LCD screen does not turn on only after a clear EEPROM and a new upload. does anyone know how this could have an OLED 1306, the same as you build.
and have tried several Arduinos but always the same
Jueves, Diciembre 1st 2016 at 3:04 pm
Hi.
I tried to do this nice project but i have problems.
After i upload firmware and switch off power on the LCD no image.
Can you help me?
Viernes, Diciembre 2nd 2016 at 10:18 am
it seems i have problems like Steef.
Author, help please.
Viernes, Diciembre 16th 2016 at 5:15 am
i have a problem. after upload the sketch all is running. but if i disconnect the power and power it up again (the time between off and on doesnt matter) the display will show nothing. what did i wrong ?
Martes, Agosto 22nd 2017 at 8:35 pm
To all that are having trouble after rebooting, try to change the ‘eeprom magic number’:
static const byte settings_version = B00000001;
Have in mind that the variable is a byte in binary format so it must have a total of 8 random 1 and 0 like this:
static const byte settings_version = B10110100;
Sábado, Marzo 31st 2018 at 9:43 pm
Hello Karman, please help
Built on off you cubes, and everything works… but my display is off by 4 pixels to one side ??
Where can i modify code som that Oled shows the right pictures ??
My Oled is 1.3″ but still 128×64 I2C
Thank you for the advice
Martes, Julio 17th 2018 at 5:09 pm
Hi, I have trouble when try to reset and I change magic number and now after boot I see the screen with speed ( time an data ). I dont have posibility to go in other screen menu no matter whitch button pressed. Appears GPS logo and after that http://www.karman…then speed menu again.I check and recheck the schematic of the buttons but everything seems to be ok. Have you any ideea ? (This problem is before changing the eeprom number).
PS. Nice project !!!
Lunes, Julio 30th 2018 at 12:57 pm
Emil sounds like a random reboot. Try looking for some program to erase the eeprom then flashing again.
Domingo, Agosto 4th 2019 at 7:42 am
Hi, i build one, it’s work perfectly but the hours and minutes are reversed juste on screen watch (minute to the left and hour to the right) ….