I doff my cap to you on finding a better solution to the one second GPS update delay... I really really like this solution. And here's me thinking of trying two GPS modules and take the average between them as they would possibly not get GPS at the same second :D Excellent work, really liking this. My 1999 Type R needs this kind of dash refresh!
So since writing this code I've been experimenting with the fact that the GT-U7 handles 10Hz, and I can actually confirm it works really reliably and both ESPNow and LVGL seem to handle the polling and rewrites at that pace. It feels a lot more "true" to the speed - for example slamming on the brakes to a stop shows 0 within a fraction of a second rather than around 1-2 seconds afterwards. Definitely the best way forwards. I'll make a followup comparing the refresh rates as I think it's an interesting comparison. One caveat is you need to hook up the PPS pin on the GPS in order to keep the timing pings in sync, but it's super simple.
Something that could be interesting, based on aircraft instruments, would be a simplified digital representation of a roller-counter display. Have the last digit only show 0 and 5, or 0-2-4-6-8. The visual movement of the digit is then a cue - and it looks nice!
I am. I've already released the video doing outside temp and weather, and CANBus sniffing and data extraction basics for the various in car temperatures is in progress and coming probably early next week.
I don't know if you are aware but back when I first used GPS modules (10+ years ag? :-0 ), the newer ones had a 'hot start' mode - they remembered their last postion when powered off so at startup needed fewer satellites and less satellite data to find a fix. This gives you a much faster startup time.
They still do. The cold start only takes like 30 seconds in this example because I'm indoors. When it's on the dashboard it's up and running in probably 2 seconds. Still, in the next part with the weather app I'm going to store the last known location every few seconds so it has it at immediate startup for API polling. Should also double as a locator/tracker too, which will be interesting if I can get that working.
Trying to follow your videos to learn but cannot seem to get the LCD to display anything. Are you able to make a video on how you setup Arduino libraries with you board and display. 😊 Cheers
Hey, @garagetinkering (Andy) -- Stumbled on your channel and subscribed instantly! There's some great stuff here! I've been searching for a way to add a "heads-up" display, mainly for speed, to my 1991 Mercedes-Benz 190E 2.6. I've purchased (and returned) many off-the-shelf GPS-based HUD units from Amazon, eBay, etc., as they were all basically junk. Here's my situation and goal: I have an Atoto S8 Gen2 head unit that already has a GPS receiver feeding data to it. Is there a method that could take that data and feed it to a small screen (similar to what you demonstrated here) that could be "cleanly" mounted somewhere in my line of sight to display my GPS speed? (Remember, it's a 1991 model, so no CAN bus or OBD port to get data from...) Or, perhaps a display similar to the Greddy Sirius Vision "clear, thin-film electro-luminescent displays" would be suitable? Anyway, you seem to have a huge knowledge and understanding of these types of things, so I thought I'd ask. I look forward to your reply -- Your newest follower and fan, Ron [ I followed ValentineAuto here and on Insta, too ;) ]
I'm not sure on retrieving the head unit GPS externally to be honest. Maybe. I'll look into it. Otherwise you could just add an additional GPS receiver and use that and arrive at the same solution
In your sender code in loop you have a timer to send out the parsed data to the receiver, if the gps is set to 1hz you should parse the data as it arrives then send to the receiver in the quiet time after that. If your sender timer and the gps 1hz receive aren’t synchronised you may loose data to be parsed. You should use neogps library, it’s smaller and faster. To get less lag try 5hz update rate if you can configure your gps to run at that speed. What’s the fastest time you can send and receive on the esp? I only dabble in programming and novice compared to your skills but I researched a lot when I made my gps speedo. I would like to try to implement your neat ability to print every number instead of missing any.
So, since doing this video I tried a few things, and when running the speed on the GPS I was able to get it running at 5Hz and it felt nice and accurate, but, it's far too fickle and if it loses connection for some reason you're done for, so I've removed the GPS Speedo element and am now rubbing the speed off the CANBus data, and just using the GPS for some localisation services like weather and traffic reports.
TBH, I'm going to switch this to run off CANBus (filming that today) which updates at around 25ms, so it should become buttery smooth as long as ESPNow can handle that rate (which it hopefully should). Worst case I'll put a 100ms limiter in there and that should be fine.
Why not give PlatformIO a go in VSCode? It used the standard Arduino IDE code style, and thus the compatibility with Arduino focused libraries, and also integrates with relevant VSCode extensions to make the coding workflow nicer.
I do use it in some of these videos. Honestly it depends on the setup of boards I'm using. Some I just find the basic Arduino IDE is simply less trouble. Plus I'm making kinda guides for beginners right now, so makes sense to use stuff people can lookup the libraries for and get using with no adjustment out of the box.
Good question. Truthfully I'm going to use both, and there's a chance I'll flip to CAN at some point, but, generally speaking the GPS is a more true speed reading and doesn't suffer inaccuracies brought it by changes of wheel / tire sizes and the natural buffer built in to car readouts at manufacture.
Love what you're doing. Love the way you're explaining everything and sharing everything. Can't wait for the next video.
Thanks so much. Hopefully filming it tomorrow - almost finished the coding for it!
I doff my cap to you on finding a better solution to the one second GPS update delay... I really really like this solution. And here's me thinking of trying two GPS modules and take the average between them as they would possibly not get GPS at the same second :D
Excellent work, really liking this. My 1999 Type R needs this kind of dash refresh!
So since writing this code I've been experimenting with the fact that the GT-U7 handles 10Hz, and I can actually confirm it works really reliably and both ESPNow and LVGL seem to handle the polling and rewrites at that pace. It feels a lot more "true" to the speed - for example slamming on the brakes to a stop shows 0 within a fraction of a second rather than around 1-2 seconds afterwards. Definitely the best way forwards. I'll make a followup comparing the refresh rates as I think it's an interesting comparison.
One caveat is you need to hook up the PPS pin on the GPS in order to keep the timing pings in sync, but it's super simple.
I love the videos, keep them coming!!
Congratulations! Very interesting series. Thank you very much for all the info that you give us.
This series comes at the right time 👌Was looking to do something like that for my bike
That would be awesome. Maybe on a super small 1.28" screen
Just found your channel, looks fantastic!
Something that could be interesting, based on aircraft instruments, would be a simplified digital representation of a roller-counter display. Have the last digit only show 0 and 5, or 0-2-4-6-8. The visual movement of the digit is then a cue - and it looks nice!
Would be cool from a design perspective, but I fear not accurate enough at a fast glance for safe road use
@GarageTinkering If I get round to demonstrating it (probably for simpit use) I'll ping you 😄
Please do
"It's working. It' wasn't working before." 🤣🤣🤣🤣
Awesome project! Are you planning on doing any temp gauges with this setup too?
I am. I've already released the video doing outside temp and weather, and CANBus sniffing and data extraction basics for the various in car temperatures is in progress and coming probably early next week.
@GarageTinkering awesome, waiting on that one 😎. Cheers
I don't know if you are aware but back when I first used GPS modules (10+ years ag? :-0 ), the newer ones had a 'hot start' mode - they remembered their last postion when powered off so at startup needed fewer satellites and less satellite data to find a fix. This gives you a much faster startup time.
They still do. The cold start only takes like 30 seconds in this example because I'm indoors. When it's on the dashboard it's up and running in probably 2 seconds.
Still, in the next part with the weather app I'm going to store the last known location every few seconds so it has it at immediate startup for API polling.
Should also double as a locator/tracker too, which will be interesting if I can get that working.
Trying to follow your videos to learn but cannot seem to get the LCD to display anything. Are you able to make a video on how you setup Arduino libraries with you board and display. 😊 Cheers
Which screen are you using?
Hey, @garagetinkering (Andy) -- Stumbled on your channel and subscribed instantly! There's some great stuff here! I've been searching for a way to add a "heads-up" display, mainly for speed, to my 1991 Mercedes-Benz 190E 2.6. I've purchased (and returned) many off-the-shelf GPS-based HUD units from Amazon, eBay, etc., as they were all basically junk. Here's my situation and goal: I have an Atoto S8 Gen2 head unit that already has a GPS receiver feeding data to it. Is there a method that could take that data and feed it to a small screen (similar to what you demonstrated here) that could be "cleanly" mounted somewhere in my line of sight to display my GPS speed? (Remember, it's a 1991 model, so no CAN bus or OBD port to get data from...) Or, perhaps a display similar to the Greddy Sirius Vision "clear, thin-film electro-luminescent displays" would be suitable? Anyway, you seem to have a huge knowledge and understanding of these types of things, so I thought I'd ask. I look forward to your reply -- Your newest follower and fan, Ron [ I followed ValentineAuto here and on Insta, too ;) ]
I'm not sure on retrieving the head unit GPS externally to be honest. Maybe. I'll look into it. Otherwise you could just add an additional GPS receiver and use that and arrive at the same solution
In your sender code in loop you have a timer to send out the parsed data to the receiver, if the gps is set to 1hz you should parse the data as it arrives then send to the receiver in the quiet time after that.
If your sender timer and the gps 1hz receive aren’t synchronised you may loose data to be parsed.
You should use neogps library, it’s smaller and faster.
To get less lag try 5hz update rate if you can configure your gps to run at that speed.
What’s the fastest time you can send and receive on the esp?
I only dabble in programming and novice compared to your skills but I researched a lot when I made my gps speedo. I would like to try to implement your neat ability to print every number instead of missing any.
So, since doing this video I tried a few things, and when running the speed on the GPS I was able to get it running at 5Hz and it felt nice and accurate, but, it's far too fickle and if it loses connection for some reason you're done for, so I've removed the GPS Speedo element and am now rubbing the speed off the CANBus data, and just using the GPS for some localisation services like weather and traffic reports.
@GarageTinkering
Were you still reading the gps using the timer or was the gps being read at full speed in loop.
Full speed. ESPNow handles much much faster than that so it wasn't an issue.
You could have a limit on the steps on the speeds to reduce a delay, I'm sure you have thought of this😊
TBH, I'm going to switch this to run off CANBus (filming that today) which updates at around 25ms, so it should become buttery smooth as long as ESPNow can handle that rate (which it hopefully should). Worst case I'll put a 100ms limiter in there and that should be fine.
Why not give PlatformIO a go in VSCode? It used the standard Arduino IDE code style, and thus the compatibility with Arduino focused libraries, and also integrates with relevant VSCode extensions to make the coding workflow nicer.
I do use it in some of these videos. Honestly it depends on the setup of boards I'm using. Some I just find the basic Arduino IDE is simply less trouble. Plus I'm making kinda guides for beginners right now, so makes sense to use stuff people can lookup the libraries for and get using with no adjustment out of the box.
why bother with gps for speed when your speed will come from the CAN?
Good question. Truthfully I'm going to use both, and there's a chance I'll flip to CAN at some point, but, generally speaking the GPS is a more true speed reading and doesn't suffer inaccuracies brought it by changes of wheel / tire sizes and the natural buffer built in to car readouts at manufacture.
"and 10% is.... not."
Though turns out, it also kinda is