Open TIMing CONtrol is a hardware part of a sport timing system based on Arduino, MRFC522 and DS3231 RTC
fter waiting for a cheap timing system for extreme sports with check points, I decided to make one. I'm an avid ARDF runner, and we often use orienteering gear for our sport.
In a sport with check points there is a need of marking (somehow) that a racer came to each of the needed checkpoints. It's much easier to do it in a race where the track is predefined, like distance running, but it's much harder in a place where runners are free to chose their own path.
Orienteers have several systems in hand: SportIdent and Emit are the most popular. But the price of one electronic box on a check point is over 100 euros, and it stayed the same around a decade. Even if the price of a box is justified, the price of an RFID chip used to save the time isn't - it's usually over 20 euros. There is a Russian SFR system which disrupted the prices a little, but they remain constant.
Don't get me wrong, the systems are great, they are tested and proven for more than 15 years. But as an engineer, I knew that it can be done better.
My first attempt used iButtons, and I made it after some careful considerations. I called it OPORCON - you can look at my site about the information and the story and ideas how I got there. It's based around PIC16F628, written in mikroe's MikroBasic, and it was build around Europe by fellow ARDF runners.
My second attempt was fixing the problems in OPORCON, just to realize that I'm using an old technology.
It had to fulfill several ideas:
- the hardware should be as easy as possible. If complex, use an easily obtainable board.
- it must be cheap. RFID cards are several times cheaper than iButton memory, so the box can be pricier but not for much. Fortunately a cheap RFID reader/writer is all over eBay.
- it must be easy to build and easy to use.
- it must be interesting for hacking in the makers community.
The solution was to use:
- an Arduino based board. And use only Arduino functions, with as little of chip/board specific code as possible. The code for OTIMCON is tested and developed on Atmega 328 (Pro Mini clone boards), but should work with small modifications on any Arduino compatible chip or board. The only chip specific code is sleep code.
- cheapest RFID reader/writer which works. Fortunately, MFRC522 has a nice set of libriaries and examples.
- a GOOD RTC. Tested DS1302 due to price. Nice, but has a big drift. Tested DS1307 due to price and availablity. Nice, but still has a big drift. In the end I chose DS3231 which has a really nice boards, and a really small drift. On the boards there is also an EEPROM chip, which is also used.
The system was written in one afternoon as an proof of concept, and it was based on code by Rudy Schlaf over at makecourse.com . It worked, so I continued the development.
In the hardware & software sense, it's almost finished. There are some touches to the sleep code, and I still need to find a smart way to power it (currently it uses the integrated 3.3V regulator, which is not the ideal solution (it's not LDO so a LiIon cannot be used, and it quiescent current is too high)).
Check out the github, and I'll try to explain how everything works in the next post.