When faced with the option of buying something to fit his needs or building it himself, Anker Berg-Sonne chose to take the DIY route.
One of our goals this year is to get to know more about the awesome things people are creating with our products, so we’ve started collecting stories from our community and will be sharing them here.
First up is Anker Berg-Sonne, who, when faced with the option of buying something to fit his needs or building it himself chose to take the DIY route.
While pursuing his passion of autocross, Berg-Sonne found himself in need of an inexpensive, high precision and upgradable data logger. To fit his needs, he turned to the SparkFun GPS Breakout - Chip Antenna, SAM-M8Q (Qwiic).
Continue reading his story to find out how his current data logger design works, as well as revisions he has planned for the future.
We've got a page just for you! We'll walk you through the basics of how GPS works, the hardware needed, and project tutorials to get you started.
I’m working on something similar - a solo data logger with GPS, IMU, analog input (steering and throttle input), and digital input (brake and clutch). I’m upgrading to Teensy 4.1 from last season’s Redboard Artemis for speed. In preliminary testing on the 4.1 I’m seeing about 50Hz for 16 digital inputs using the SparkFun SX1505 writing each sample to the microSD card. By buffering to memory and writing to the microSD at the end, I can bump the speed up to around 250Hz. For solo applications, a minute or so of data will fit in RAM. This is faster than I really need, but it will give me time to sample the analog channels, IMU, GPS and still have decent throughput. The goal is 10Hz for GPS data, 100Hz for everything else (10x faster that the Artemis version)
BTW, to get the high rates from the SX1505, I made the readWord function in the library public to get all 16 channels in one call. That was an order of magnitude speed improvement. Highly recommend if you need fast samples.
Full design uses (all QWIIC) SX1505 for digital, ADS1015 for analog, ZOE-M8Q GPS, BNO080 IMU, serial LCD for driver control unit. Distributed through the car using CAT5 and PCA9615 Differential I2C breakout for reliable connections in a noisy environment.
Just a thought for Anker Berg-Sonne: If you start running into the speed of writing to the SD card as a limiting factor, you might look into using FRAM (Ferroelectric RAM), though this would likely add another step to the process (rather than just popping the SD card out of the tracker and into a PC). FWIW, Adafruit has a couple of breakout boards, though they're pretty small in terms of how much RAM they have (32 KBytes for the I2C one and only 8KBytes for the SPI one). DigiKey lists some up to about 1MBytes but they're "bare chips", and are SMDs so not as easy to work with.
I should mention that FRAM is non-volatile (meaning it "remembers" even when power is off), and is very fast. It works based on a different physics phenomenon than "flash" memory or EEPROM. Whereas "flash" (as in SD cards) only has a "lifetime" of typically less than 100k write cycles (I have killed the EEPROM in an Arduino UNO by overuse), FRAM has on the order of 10 trillion cycles. Also, the "write cycle" (down at the memory cell level) for FRAM is much closer to that for SRAM, so it's a lot faster than that for flash or EEPROM.
I put in a product suggestion for a FRAM breakout board (a few years ago) and to use with microcontrollers that needed it for program memory space. Unfortunately, it never really grabbed traction... I was told (at the time) that the amount of people who would want the speed or the write cycles, represented a small fraction of the community (aka demand was too low).
Nice!! Where does on give this a thumbs up? This is the application that got me started down this sordid DIY path.
The closest is the heart button under the title of the blog post. ;D
If sd card speed is an issue you could use something like teensy 4.2 which has high speed sd access. Not to mention enough it has enough ram you may be able to simply write run after it's over. And enough cpu speed for insane amount of calculations if needed.