Hello, since Garmin no longer manufactures its Tempe sensor, I thought that one could build something like that themselves. In doing so, I came across the ANT+ libraries from Curtis Malainey cujomalainey (Curtis Malainey) · GitHub. Has anyone here worked with them before? What hardware (radio) is connected how? Does it work with an NRF24L01+ PLUS - 2.4GHz radio module? Does it also run on an ESP32? If a Garmin device (e.g., Edge or Oregon) comes within radio range - does it then connect automatically? Many questions! Maybe someone can help? Thank you very much in advance!!!
Desribe the mission, what this project is supposed to do, in what environment, arranged how?
There are lot of different technologies used. Some works fine in air, gas, some are used in liquids, some attaches well to flat surfaces.
You suggest a solution to some problem. Describe the problem more closely.
It's not that complicated.
The 'Tempe' is a temperature sensor that sends the current air temperature via ANT+ to the tracking device during cycling training or hikes. The values are then stored in the GPS track. I want to replicate this with an ESP32.
Okey. Then temperature measuring is clear.
Why are You locked to ANT? What does that add+.
Distance is a question, clear sight is another. That affects the selection of RF devices.
Again, describe the real situation, not what You belive can be used to solve this, yet, mysterious matter.
Devices, systems mentioned, please give linls to manuals etc. That increases the chance more specialized helpers will pick up the thread.
For me, not much more to add.
Yes, that's exactly why I'm turning to this forum: I'm not an expert in radio technology either. ANT+ is the only protocol that my Oregon understands. I also don't know the difference between ANT and ANT+.
Curtis Malainey has developed an example project on GitHub (URL mentioned above) for exactly my scenario. I asked how I need to connect which hardware to the ESP32 to make it work. He doesn't write anything about that. Maybe I should contact him on GitHub.
Thank you for your inquiries, they have contributed greatly to understanding the problem.
Okey. Posting links to manuals might make other helpers step in. I've not seen any question involving Oregon, or ANT but maybe some other guy can contribute looking into manuals.
Asking GitHub sounds like a good idea.
Did you manage to solve the problem, because I would also like to recreate the functionality of Gamin Tempe
Any updates? I'd also like to make a diy sensor.
ANT+ is a protocol similar to BLE. My research shows it pre-dates BLE and the ANT and ANT+ name is used interchangeably. Its supposed to be lower power, faster and more robust than BLE. A lot of wearables and sports equipment support it, though most newer gear support ant+ and BLE now. I've not been able to find a stand alone ANT+ radio but did find an arduino compatible board that supports ANT+ but haven't gotten it to work yet.
Hey any progress? Would also love to have a sensor to connect to fitness/GPS trackers!
I would suggest to go with the NRF52840 or NRF52832. they are really cheap these days (3$ for a board with USB). They have Arduino support and are used for most of the ANT+ products out there. The Chips itself have a Temp sensor on board, which, after manual calibration, is probably good enough for a small sensor.
Hello, happy to join this conversation.
I am also interested in this issue so I decided to try luck building a "tempe" sensor for myself. I have no idea of electronics, hence... be kind with my ignorance :-)
It is the same scenario, the objective is to have temperature readings along with my workouts with a garmin watch using ANT+ (direct connection to my watch) while having the temp sensor away from body heat.
I've been building on this idea: Sports Wearable Uses ANT+ Protocol - Circuit Cellar with EasyEDA, and with some AI guidance.
I ended up with this schematics, where I basically copy Carlo Tauraso's approach with some new components. The ANT+ device I selected is the ISP1507-AX-JT just because it is listed as available and considering it has an embedded antena if I am not mistaken. For the temperature I chose the TMP117AIDRVR for similar reason (availability, accuracy and size).
The rest is a suggestion from my conversation with some IA: two pull-up resistors, one ceramic capacitor and one diode to prevent damaging the devices in case the CR2032 battery would be inserted in the wrong way.
I then added all components and routed them as follows (with a back copper plate that does not go under the ISP nor the TMP):
So far, the board size is about 3 cm x 2 cm, which is fine to add a simple 3d printed case. I could flatten the design a bit changing the battery carrier though. Any suggestions there?
My question is about the routing. Right now, it goes ike this: VBAT+ (big gray circle centered right) is connected to the diode's anode. Then from the diode's cathode VDD starts. VDD feeds directly the TMP, the ISP, the VDD header pin, the capacitor and the two resistors (R1 and R2). SDL and SDA follow the Rs (which are supposedly in pull-up config) towards the ISP and the TMP. Other than the reset net, everything else is GND to the copper plate.
Do you think this would work?
Ok, so... here is my first (almost) working prototype. Hurray!
What you see is an Holyiot 17095 module wired on top of a board SHT45 (yes I know this sensor is an overkill), in a sandwich mode with a thin plastic layer in between and some black electrical tape keeping the sensor free and far from the chip.
The two naked wires going upwards are the SWDCLK (left) and the SWDIO (rihgt) for programming and debugging with a J-link. The four pins coming out towards the camera are GND, VDD, (needed for programming, orange and black) and SDA, SCL (brown and one cable not visible on this shot; not used with the Jlink).
The soldering part was challenging as I had (have) almost cero experience and the pads of the module are minuscule! Further, my soldering tool is the cheapest and chunkiest on the market and the soldering wire I have around is way to thick for this purpose. I chopped some bits out of the soldering tin using a scalpel and I had to tamper my nerves with some tweezers.
Now, the trick is programming this thing. I had to install:
- nrf Connect for Desktop (for flashing the chip: writing the mbr, the softdevice and the app)
- antware plus II just to test if the chip was alive and sending messages (with an ant+ dongle)
- Segger Embeded Studio (with the J-link v9; for programming the app).
I am now using the example named "ant_message_types" from SES, and with some trial and error I managed to see my device on my garmin watch while searching for sensors on it. I am now cleaning up the code to keep the essentials and to arrange the page data to actually read the temperature, which in previous test with antware I have confirmed the sensor is alive and working. I have veeery limited experience in programming, so I am still fighting with it, but it seems feasible. Any help on the programming side would be much appreciated. Copilot usually falls in "confusion loops", so it provides huge help, but it is not the solution.
If I make any further progress I'll keep you posted. :-)
Best,
You can replicate the Garmin Tempe sensor using an ESP32 with an ANT+ radio module. Use Curtis Malainey’s ANT+ Arduino/ESP32 libraries. The ESP32 sends temperature data over ANT+ in the standard sensor profile. Garmin devices automatically receive the data when in range. NRF24L01+ won’t work, as ANT+ requires a compatible ANT radio. ESP32 handles this fine with an ANT+ shield or module like Motsenbocker’s ANT+ board.
As far as I know, Curtis Maleiney’s ANT+ Arduino/ESP32 libraries are missing the Environment Profile, which is responsible for handling the Tempe sensor. Maybe something has changed recently — that’s the state of things as I knew it about a year ago.
Curtis proposed to build a ”hat” for the HUZZAH32 Feather Board with a D52MxxM8. He is also provideing the Gerberfiles. I was able to operate the Heartrate-Transmission, but not the Envirionment-Parts because the missing environment.cpp
Do you think it is possibe to get it working on a nRF52832 Bluefruit Feather board?
According to the specs out there, the nRF52832 Bluefruit Feather board is capable of ANT+.
Okay, perhaps I’ll give it a try… :-)
Hi geo_elo,
I'm also interested in building a tempe replacement. Could you descripe your currently used hardware and the current blocking points? Do you think that the hardware is working and its "only" a coding issue?
Best regards,
Thomas
Hi Thomas,
I know the hardware is working because I have successfully sent temperature and humidity readings using ANT+, and I have received such readings using an ANT+ usb dongle on my PC. Further, I have been capable of detecting my hardware using my garmin FR935 watch, so it is shown as an ANT+ temperature sensor. What I am missing now is sending the temperature in the appropriate structure. It seems it is all about sending several "pages" or payloads or messages per cycle. So, yes, we are now "only" a few lines of code away of making our real tempe replacement. If I am not mistaken, we could also improve the original sensor by adding some extra data, such as humidity or pressure if we use another sensor board.
The hardware I am using is the following:
- An ANT+ capable chip with an antena. I got the Holyiot 17095 from aliexpress.com. I chose this one for its minuscule size.
- A temperature and humidity I2C sensor : SHT045.
- Some wires to join SCL, SDA, VDD and GND (holyot to sensor) and CLK and IO (holyiot to Jlink, to PC).
- An ANT+ usb dongle to read on my pc the data I send.
- A J-link v.9 to download the code to the chip.
- A soldering tool and some soldering wire.
Best regards,





