A completed 15hz BLE GPS using TTGO T-Display ESP32 and BN-357

edited August 2022 in DIY builds
I'm at the point now where data analysis could probably help improve my driving, but previous attempts with my phone's internal GPS proved useless and the price of a worthwhile external GPS that works with iOS (Racebox Mini) was too much to swallow before seeing if it has any benefit for me.
But then I found out I could make my own for cheap.

I use an iPhone though, which limits my options.
Using an HM-10 as a simple bluetooth passthrough for the GPS worked fine with an old android phone, but using a second device was inconvenient.
Using wifi with the bonogps project mentioned below worked well and would've been the next easiest choice, but I was already using it for OBD2 data. Switching to bluetooth for that is another expense and probably won't get me the same refresh rate I have with wifi.
So implementing BLE was my only option.

I had a TTGO T-Display ESP32 board and a lipo battery lying around, the only thing I didn't have was a GPS module and for that I got a u-blox M8 based Beitian BN-357.
The main board has a built-in battery connector and charger, a screen that I use as a battery indicator and 2 buttons that I'm using to turn the screen off to reduce power (one broke off on mine). It's a really nice all in one solution.
The only other component I added was a switch to disconnect the battery, as the power consumption of the board even in deep sleep with the GPS off is not very good (>5mA). In use, it's around 125mA with the screen on and 100mA with it off. The battery I'm using is 850mAh, so good enough for a whole day.
I then designed and 3D printed a case for the whole package.

All in all, I'm really happy with how it turned out and the whole project could probably be replicated for under 50$.
From initial tests I did just driving on the streets it seems to work well, but my first real test on track will be in 2 weeks.

Source code and files for the project available at : https://github.com/APatenaude/rc-diy-gps-tdisplay
The GPS configuration using u-center is probably the part with the least amount of clear and concise documentation available, but I found this project to be of great help : https://github.com/renatobo/bonogps
For the RaceChrono specific BLE implementation, I mostly copied a previous project I found on this forum :


  • edited August 2022
    I love it. M8 supports Galileo, right? If so, it will be very accurate too. I think I'll order parts. What motherboard are you using? It's not listed in your parts list.

    Also, please add a nice IMU to it too. I can write an API for it.
  • The GPS does support Galileo. From the little testing I did it seems accurate enough to notice lane changes when looking at the map view so I have high hopes for it at the track.
    The GPS comes on it's own board and the T-Display is the motherboard. It includes the esp32, the screen and everything else on a single board.

    The IMU would be really interesting if I was riding a bike but I drive a car so I have little use for that data.

Sign In or Register to comment.