OPORCON is an open source orienteering electronic control. It's current design has many flaws, so this system is OK for training purposes. Flaws and possible improvements are stated. The system is given on Artistic license 2.0 license, so you can do almost everything with it, but all improvements, if you give the system to third party, must be published publicly. Please publish changes even if you're not obliged by license.

Author of OPORCON: Stipe Predanić


I'm an avid ARDF competitor, often a member of Croatian ARDF national team. During the last 15 years, there were some big improvements on analysis of orienteering and ARDF competitions. SportIdent and Emit electronic controls gave us instant electronic results on finish, and software like RouteGadget (married with GPS handheld devices) with its post-competition analysis gives competitors possibility to augment their experience by comparing results to others.

These enhancements were and still are welcomed, but the technology isn't cheap. Many tries were taken to make this available to wider public. The reasons are different - some want to use electronic controls in public areas, where's theft a big problem - expensive controls are a risk. Some want a robust electronic controls, which can survive elements of nature. Some want a cheap control card system which can be easily given away or cheaply bought in quantity.

My first experience with an electronic system was SportIdent on an ARDF competition in 1999. It was cool, it was great, it had everything we all wanted - except price. It was expensive as hell. Second encounter was with a system which used Dallas iButton control cards (chips, dibbers). It was made by Slovenian radio amateurs, put in a big (and I mean big) box, and had a nice addon - every control has an LCD display which gave informations when you "checked-in". In summer 2002, I had an oportunity to test Emit.

Sometime during the 2004, I started playing with micro controllers, Microchip PIC's. Using the experience, I knew the system isn't complicated. Checked the Internet, and found 3 similar systems: one was made as his Masters thesis by a guy at the same college as I was going, Joe Lee's system made in Britain, and Clifford Heath made a system for street orienteering in Australia. I first tried with the local guy, but unfortunately, it was a few years prior and he forgot all of small details. Clifford from down under was great help, he gave me an insight of how he overcame some of the problems. But this project fell in wrong time, and not until 2008 I could came back. We got some PIC protoboards on the job, so I could pursue this project. Even after getting the boards, it took me, working on and off, almost year and a half.

How electronic controls work (or could work)

There are two key elements in electronic scoring: electronic control which is set at the location in the woods/street and an electronic card (often called chip or dibber) which is carried by runner and is used to identify each runner. Important part is the timing system - it can be done either way. In this comparison, timing system is the "smart" part, and the simple systems which just store data are called "dumb".

Smart control and dumb card: Standard SportIdent uses this arrangement, where controls in woods are smart - they are used to calculate time and to store runner IDs. Cards are stupid and used only for storing time and visited controls. OPORCON is also this kind of system. I presume Joe Lee, Slovenian and Clifford Heaths' system are in this category too. Controls are expensive, chips are cheap so the system is easily deployable to many, but theft of the controls is a problem.

Dumb control and smart card: Emit uses this arrangement. Controls are pretty much stupid, and they just identify to cards runner. Cards have internal timing system and memory to record when each control was visited. The system that was made at my college is in this category. Controls are cheap, chips are expensive: system is expensive per user, but setting a course is easy and cheap. Controls can be even left in the woods or streets on permanent courses.

Dumb control and dumb card: Standard punching system. There is no timing, and only thing organizer can know is which controls were visited. There is no sure way to check the order of visiting, unless you're using a GPS system. Dumb/dumb electronic system can have the order of visiting, but without timing - first versions of OPORCON worked this way. Another way of electronic dumb/dumb would be a system which saves data to a control, but then instant results on the finish are impossible. If control sends card (runners) ID over the air (GSM, Wireless), finish results are possible, but that control can't be called dumb. Controls and cards are cheap.

Smart control and smart card: Wireless controls like new Emit and SportIdent controls need a lot of smarts to work properly. Even if they don't have timing in each element, they can be easily incorporated. Controls and cards are expensive, thus not used widely.

To be honest, systems described here are those relevant to OPORCON - similar home made systems, and IOF approved systems. Not described are Chinese systems and Russian SFR but those are not widely available (although they are cheaper than SportIden and Emit).

How OPORCON works

The main idea behind OPORCON is to use smart/dumb system, but making the smart part as cheap as possible. Control is a simple Microchip PIC 16F628 based board. It uses internal cycles of the PIC to calculate time and no additional clock is used. To synhcronize all of the controls, a time card is used. Cards are Dallas iButtons. iButtons are small, battery like devices which serve different roles - memory, temperature loggers, real time clocks. They connect to other device by using 1-wire protocol (in reality, two wires are needed, one is ground which should be the same to iButton and device). In OPORCON's case, cards for runners are

DS1992 and/or DS1993 memory buttons.
DS1992 has 1kBit of memory, and DS1993 is 4 times bigger. Time card for syncronizing controls is real time clock (RTC) button DS1904 . Time button is accurate up to +-2 minutes a month, but OPERCON is even more inaccurate (more on that later).

I made a video to explain how it works for a user:

If you can't understand my english, here's a written review how it works:

iButton adaptor is connected to a computer. iButton adapter can be made by yourself, or it can be a bought from Dallas. After downloading drivers and OneWireViewer demo communication software, course manager can set the accurate time on DS1904. When moved out of the adapter, DS1904 will start to calculate time by itself - DS1904 is a real time clock. Manager can also check that DS1992 (or DS1993) are "empty" (without data), or make them empty - this part is not needed. Course manager can turn on the controls on the table prior to the competition.

Controls have a LED which blinks every 16 seconds to confirm it's working. When controls are turned on, they are not synchronized so the LEDs on controls will blink at different times. When DS1904 is introduced, accurate time is saved in the control, and LEDs will blink at the same time - to be honest, it will be inside half a second. DS1904 is using 32bit UNIX timestamp format, which calculates time in seconds from 1.1.1970 00:00:00. Final time will be in 2038.

When everything checks out, turn off the controls, and take them to the woods. There course manager will have to synchronize every control on the spot - the chip in the control calculate time only when it's on, so data on the table is lost.

Give runners a card, one DS1992 for each, and send them to the woods. When they come to the control and make a connection, the time in the control is saved on the chip. Coming to the finish, DS1992 is read on a iButton adaptor and data is put in the computer.

The software provided here is used to connect to Or . As this system is open, everyone is free to make connection to other programs. this is my version of first OPORCON. Several improvements over this initial version were done by other people, most noticebly David Dean. Look at Update part for more information.

Comparison to current systems (2012)

SportIdent (series 7 and 8 stations) - done in the control, accurate to +-20 s / month, internal clock accurate up to 4 ms. Prior versions had problem in very hot or very cold weather, and the timing was off.
Emit - done in the card. Known to have problems if the card's internal oscillator is malfunctioning.
OPORCON - done in the control. Accurate to +-10 seconds/day. As you can see, it's very inaccurate. Some would argue that this is not enough. After reading several discussions on AttackPoint , I realized that the worst problem is calculating finish results. According to the rules, it should be devised by separate timing systems, not by electronic control system. To make organization easier, many organizers believe in the times controls are giving them. In any case, don't use OPORCON at competitions, but on trainings.
Important: most controls are accurate within +-3 seconds a day, but skews up to to +-10 seconds/day were seen when some of the critical parts in internal clock were faulty or/and under harsh conditions (cold/warm).
Update: David and Bjorn changed internal clock on their controls so they are more accurate. Bjorn states that his controls are now accurate +-1 second a day (he says 1 to 2 seconds in 2 days, therefore the figure of +-1sec/day).

Control and card use
SportIdent: there are several control cards. Latest cards are read and writen in less then 150ms, older are in 330ms range. Controls give audio (sound) and visible (LED) confirmation. Simple to use, card tip is put in a hole on the control. No backup.
Emit: cards are read and written in less then 150ms. Controls give visible (LED) confirmation. Hard to use, card needs to be put on the control exactly as planned. Has paper backup.
OPORCON: cards are read and written in less then 50ms. Controls give visible (LED) confirmation. Easy to use, just put card to the connector. No backup. Some would argue that this system is worst out of all here. But it's the fastest, it's easy to use. OK, no audio confirmation but according to Attackpoint, when there's a heap on a control then it's better not to have audio confirmation as it can confuse. No backup is chosen as Emits paper backup often gets lost.
Update: David Deane added a buzzer for audio confirmation.

Control and card memory:
SportIdent: there are several control cards. Latest cards can have 30 or 60 locations, out of 220 possible controls. Controls save up to 1020 cards (runners).
Emit: cards can save 50 out of 140 possible controls. Controls don't save anything.
OPORCON: cards can save 30 out of 30 possible controls if DS1992 is used or 120 out of 120 possible if DS1993 is used. Controls don't save anything (IOF rules state even if something is saved in the controls, it proves nothing). While others save each control in order, OPORCON uses a simpler system. DS1992 has 1kBit of memory, which is divided in 32 time slots, where each slot is 32 bits. 32 bits are chosen as Unix timestamp format, in which control is working. Each control has it's slot, so maximum number of controls is 32. Slot 0 is for "START" control, and 31 (last one) as "FINISH". DS1993 is 4 times bigger, so it has 128 slots. This system is good enough for trainings because it has good and bad parts: good is that you never need to erase the card (because new visit will save new time), and the bad part is you can't save multiple visits, either by mistake or by intention. Do not use OPORCON in orienteering events with butterfly loops!

Clear & check
SportIdent: Each card needs to go through a clear and check procedure. Clear empties data on card, check checks if it's clear. In newer models it's set in one control.
Emit: Each card needs to go through clear procedure. Clear empties data on card and starts internal clock.
OPORCON: no need for clear procedure, data is stored in UNIX timestamp in comparison to 1.1.1970. Data is overwritten on new course, and on finish it's only needed to read data which is interesting (tha latest data).

Time synchronization
SportIdent: Each control needs synchronization. It can be done by connecting to computer (slow) or by using Time master device (fast). Can be done in the woods, but not suggested. Cards don't use timing.
Emit: No control synchronization. Card must go throgh clear procedure to start internal clock.
OPORCON: control synchronization is done by using appropriate iButton on control. It should be done on the spot - in the woods. Cards don't use timing.

SportIdent: internal battery on control, should be changed in factory (but there are DIY kits available). Battery life is 3-5 years. Cards don't use battery.
Emit: internal battery on both controls and cards. Should be changed in factory. Battery life (nominal) 8-10 years. Changing battery in card can affect timing system.
OPORCON: system board needs 5V, cards don't need power. How you get 5V it's up to you. System uses 2 mA in idle, and up to 5mA while working with card. In my setup, 9V battery is used with 5V voltage regulator (LM7805). Alkaline 9V batteries hold up to 500mAh, so one Duracell battery will be good fo 100 hours.
Update: David Deane runs his controls on 1.5V battery with a step up converter for voltages needed for iButton and PIC.

Control ID
SportIdent: ID of a control can be changed by connecting to a computer and using SI software.
Emit: control ID is hardcoded in the machine by manufacturer. Must be told when ordered.
OPORCON: control ID is hardcoded in the machine when chip is programmed. Chip can be reprogrammed by manufacturer. Possible improvement.
Update: David Deane improved it.

Posibility of wireless communication with finish
SportIdent: there are controls with RS232 output for communication.
Emit: there are controls with RS232 output for communication.
OPORCON: no RS232 output. Chip used in OPORCON has support for serial communication, so this is a possible improvement.

Prices here are for controls and cards only, without equipment for start, finish and synchronization.
SportIdent: price of one control is 80-100 Euros, price per card is 20-50 Euros.
Emit: price per control is 40-90 euro, cards costs 40-90 euro.
OPORCON: price per control 10-15 euro, cards cost 5-10 euro.



Schematic is here. There is no printed circuit board because simple attempts on making a board failed, and in the end we did it "dead bug" style (that works great).
Number 2 on the chip means that it is programmed as control 2. In ARDF useful controls are 1,2,3,4,5 and 6 (beacon) + START + FINISH.


All programs provided here are given on GPL licence. All modifications must be published to the public.

PIC program is written in Mikroelektronika BASIC. It's free to download it and compile programs up to 2kB. As 16F628 has 2kB od memory - there is no problem.

Download BASIC program here, I left to readers how to make a complete project.
Download this Borland Delphi program (project + exe) to connect OPORCON to Or. To be honest, this was a quick hack to Dallas iButton example, so there is no comments in this program and it probably won't work for you as there are some hardcoded constants. I hope to make it universal in the future.
To make this work on your computer, you need to download 1-wire drivers and OneWire viewer from Dallas.

If you make new software for PC, please publish it. If you change PIC program and give the product to others, according to the license, you need to publish it.

What do I need to test this?

You need:
  • at least one control
  • iButton adapter (either made or bought)
  • one DS1904
  • a few DS1992
  • a PC with drivers
If you want to use it regularly, you will probably need to make some program to read the chips.


Several improvements can be made to make OPORCON competitive to commercial products. All of these will change OPORCON controls, as iButtons are proven technology, used commercially in numerous factories for time attendance, metros as e-tickets etc. 

Better timing: by using an RTC in the control, much better accuracy can be achieved. Easiest way is to add 1-wire RTC like DS2417 because OPORCON already has support for 1-wire in it's program. Price of such system will put the price up a few euros, and give accuracy better than +-4 seconds per day (in the worst case without using a timing enhancement system already programmed in OPORCON).
Update: David Deane and  Bjorn Dinse changed the oscillator to get better timing. Achieved accuracy is now +-1 second per day.

Audio signaling: piezo speaker can add audio signaling for the price of few euros.
Update: David Deane added a buzzer.

Programability: current OPORCON system needs per control chip pre-programming, because of timing enhancement system which is dependent on element on the control board. 16F628 used in this system can be programmed when it's on board, by using In-circuit Serial Programming. Change to the schematic can make re-programming of controls easy. This won't put price up, it's a simple rearrangement of elements and one connector.

Control ID change: as with programmability, 
current OPORCON system is preprogrammed with control ID. Using a 5 position DIP switch users could choose from START, 1,2,3,... 30, FINISH controls. Price of DIP switch is a few cents.
Update: David Deane added a DIP switch, so no need for preprogrammed constants in code.

Memory in the controls: by using a memory chip, runner cards ID could be saved locally for each visit. This way there's a backup in controls in case card fails (although, by IOF rules this doesn't mean squat). Easiest way is to use a DS1996 iButton, which can store up to 64kBit of memory. Each iButton has an ID of 48bit, so over 1300 cards could be saved. Reason to suggest DS1996 is easy recovery as no additional hardware or software is needed in OPORCON - DS1996 is another iButton which can be read in iButton adaptor. This would put the price up 10 euros.  

Connector: it this version a home made iButton connector was made to be durable because original Dallas connector didn't look it can handle a lot of users and elements of time. There are 3rd party connector makers, which make durable high-quality connectors. Those are 5-10 euros.

All of these changes would make OPORCON competitive, at the fraction of cost. Normal price is 10 euros, adding timing, piezo speaker, a better connector and memory will put the price up to 30 euros - still 2-3 times cheaper than competition. 

Additional improvements:
emulator box - a box which can read OPORCON iButtons and produce output equal to SportIdent's or Emit's, so existing software can use OPORCON. 

flat card - as iButton uses only 2 wires, a flat card similar to EMIT can be made. Card receptor should have distinctive shape, and two separated lines for connection - maybe one on each side? This way backup can be made in EMIT fashion.

Updates & ideas for V2

Update (2018-01-01):
Please, check out OTIMCON https://github.com/stajp/otimcon - Arduino RFID based open source timing control. It has everything written below, and it's based on cheap components easily bought on eBay and similar websites.

Update (2013-02-28):
OPORCON ver. 2 is under way. After looking at David's nice OPORCON set and his improvements, and some ideas from others, I chose to start on OPORCON 2, to update my current system.
OPORCON2 will still be OPORCON1 compatible. By now, 3 slightly different OPORCON boards (my OPORCON 1, Bjarne's and David's) exist, but the data on chips is compatible in all systems. As I wish to extend my collection, OPORCON2 must (and will be OPORCON1) compatible.
Considerations on OPORCON2:
  • it must have everything David's system has. Buzzer is a must, dip switch selection is a must. Warning system for course settler (when turning the system on) is a must.
  • schematic must be simpler than David's system:
    1. There is no need for switches for whole PORTB (8 bits), if maximum number of controls is 127 (in fact, this is a lie, you can use DS1995 or DS1996, and extend maximum number of controls to 4000 or 16000, but I can't imagine a need for 4000 controls). I'll probably cut it to 32, it should be OK for 99% of trainings and small competitions on ARDF, orienteering, street and MTB-O.
    2. There is no need for additional hardware for buzzer when it can be done in software.
  • if possible, do some of the improvements which are left behind (eg. serial communication).
  • if possible, put in much smaller box than OPORCON 1 (this came after seeing David's system, and iButtonSport)
Ideas to contemplate:
  • change iButton probe: Current probes on OPORCON1 are too big, so a big box was needed. I don't like David's keyfob probes, they look like too much work. Current ideas are:
    1. using standard coin cell battery holder. These are cheap online (already bought 10 pcs for 2US$), and they won't harm iButtons as much. In some test work they behaves excellent, but they look a little bit flimsy, it's hard to imagine them in the woods. Need testing.
    2. using a probe similar to iButtonSport system. iButtonSport is a system developed in Ukraine, which works remarkably similar to OPORCON, but for some reason they chose to use iButtons for controls in the woods, but carry boxes around. First probes had a screw for 1-wire transfer, newer have a flat piece of metal, but the grounding part of probe is done by using a single piece of wire, which wraps around. I tried the idea of using single wire on my adapter, but it didn't work as good as I wanted to that idea was scraped. Maybe it's time to come back to it.
  • use rechargable batteries:
    • initial OPORCON used 9V batteries because they were the simplest way to make it work. I like the KISS (Keep it simple, stupid) idea, and I don't like David's step-up converter to get necessary voltage. His idea is that it will pay off after buying the next AA battery. On the other hand, last year I bough some 9V rechargable batteries for less then 4$ a piece. They aren't true 9V like alkalines, but more of 8.4 batteries. For OPORCON1 it's not even import if it's 10V, 9V or 8V, when there's a 7805 voltage regulator. So, for the price of 4-5 regular batteries + step up converter, I have a KISS 7805 + a NiMH rechargable battery. In the long run, I think this is a better option.
    • Another idea is to use LiIon batteries. Online they cost even less then a PP3 NiMH battery, and give 3.7V. That voltage is (according to datasheets) enough for PIC, and for iButton, and for most buzzers. If 3.7V is enough, no voltage regulators are needed. After few charges it's cheaper than any other system. Must test OPORCON running on voltage regulated power supply, if it works this is a must.
Update (2012-08-28):
Initial work on OPORCON 2 (my version of OPORCON) is finished. Inital data can be found here.
Next, I found out that iButton idea is ancient, at least since 1999 (remember, SportIdent dates back to 1997, Emit in 1995). Too bad it "died", maybe EMIT and SI equipment would be cheaper today. 
And last, there is an product in Ukraine, similar to OPORCON, called iButtonSport. The only difference is that it's not a real time system because runners carry the microcontroller boxes, while iButton chips are the controls. In that system they need to collect all of chips to check what was happening in the woods :D The funniest part is that by small change in their PC software they can get OPORCON functionality, with current hardware. 

Update (2012-03-26):
As I wished, OPORCON is improving. David Deane (in amateur radio world better known with his callsign G3ZOI) took OPORCON and made some of the improvements mentioned in the text. With help from Bjorn Dinse PA4BWD, he upgraded Oporcon with: better timing although still using internal clock, audio signal, control ID change in the box using a DIP switch.  He also made a clean schematic and a PCB, and improved download software!
This system is used regularly on ARDF competitions in Great Britain, without any problems. David was so pleased he made an article for RSGB's (Radio Society of Great Britain) magazine RadCom.
Please check David's page , Bjorn's page (on Dutch, but Google translate can cope with it), David's article (I don't host it and I don't know what's the extent of copyright of it's article) , and Orienteering wiki pages with links on videos of some of the mentioned mods.


Another dead bug picture

Electrical boxes are used for controls. They are cheap, waterproof, big, and they have nice loops so it's easy to fasten them to trees. 9V battery provides energy.

Original iButton connector 

And my connector

My connector is made out of 1" brass garden hose connector, 1 rubber washer which fits in this hose, and a screw. To make a connector: push screw through rubber washer, and connect wire to it (you don't need to solder wire to screw, twisting wire around was good enough). Then push the wire (this one will go to the PIC) through garden hose connector, following with washer and screw. Connect another wire to brass garden hose connector (this one goes to GROUND). Use hot glue to immobilize everything. It works great.

This is home made adaptor connected to USB-RS232 converter. You can buy original Dallas adapter. In the lower left corner you can see an idea for alternate version of connector. It doesn't work :(