I've made an iButton garagedoor opener and logger.

On a Dutch (kind of) eBay (www.marktplaats.nl) I found some iButtons and readers very cheap. I had no idea what to do with them, but I bought them anyway.
My garage opens with a push on a button, so it must be possible to get that working with the iButton.
I also found some really cheap (0,50 euro) displays, so it would be nice if I also can make a screen to show me who entered when.
The project is now existing in three parts:

  1. The iButton opening the door
  2. A clock keeping track of times and dates
  3. A screen showing the information
So to keep things understandable I try first to figure out the three parts separately.

Step 1: You will need

  • iButton(s)
  • iButton reader
  • Arduino
  • 2 push buttons
  • power supply
  • 2 10 kOhms resistors
  • 220 Ohms resistor
  • 2,2 kOhms resistor
  • 10 kOhms potmeter
  • LCD-display with HD44780 controller
  • NPN transistor
  • relais
  • 1N4001 diode
  • some wire
  • PCB

  • soldering iron
  • solder
  • snips
  • breadboard
  • computer with Arduino software
  • a LED

<p>Very cool mod. Have you see the iHued cable? For $30 you can open garage from anywhere in the world and see it on the webcam in real time too. Here check out ★<a href="http://www.ihued.com/" rel="nofollow">http://www.iHued.com</a>★</p>
Thanx. That is a really smart solution.
Can you simplify it? I want to see just the code that give me iButton.
Which part of this code I need to copy in my sketch for i can read the iButton?
This should do the job:<br> <blockquote> <p> #include &lt;OneWire.h&gt;<br> <br> OneWire&nbsp; ds(12);<br> byte addr[8];<br> int but[6] = {0,149,107,48,13,0};<br> String keyStatus=&quot;&quot;;<br> <br> void setup(void) {<br> &nbsp; Serial.begin(9600);<br> &nbsp; pinMode(13, OUTPUT);<br> &nbsp;<br> }<br> <br> void loop(void) {<br> &nbsp; getKeyCode();<br> <br> Serial.println(&quot;&quot;);<br> &nbsp; if(keyStatus==&quot;ok&quot;){<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte i;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( i = 5; i &gt;0; i--) {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial.print(&quot; : &quot;);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial.print(addr[i], DEC);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(addr[1] == but[1] &amp;&amp; addr[2] == but[2] &amp;&amp; addr[3] == but[3] &amp;&amp; addr[4] == but[4]){<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; digitalWrite(13, HIGH);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delay(500);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; digitalWrite(13, LOW);}<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {digitalWrite(13, LOW);}<br> &nbsp; }<br> &nbsp; else if (keyStatus!=&quot;&quot;) { Serial.print(keyStatus);}<br> &nbsp;<br> &nbsp; delay(1000);<br> }<br> <br> void getKeyCode(){<br> &nbsp; byte present = 0;<br> &nbsp; byte data[12];<br> &nbsp; keyStatus=&quot;&quot;;<br> &nbsp;<br> &nbsp; if ( !ds.search(addr)) {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.reset_search();<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br> &nbsp; }<br> <br> &nbsp; if ( OneWire::crc8( addr, 7) != addr[7]) {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keyStatus=&quot;CRC invalid&quot;;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br> &nbsp; }<br> &nbsp;<br> &nbsp; if ( addr[0] != 0x01) {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keyStatus=&quot;not DS1990A&quot;;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br> &nbsp; }<br> &nbsp; keyStatus=&quot;ok&quot;;<br> &nbsp; ds.reset();<br> }</p> </blockquote>
What iButton reader you used?
The reader is a really simple thing. It is just one wire touching the side and one the front of the ibutton. There are no electronics or anything in the reader.
We've been needing to do some <a href="http://a1garageservicegilbertaz.com" rel="nofollow">garage door repair in Gilbert, az</a> and I think this would be so cool to do. How long does it take? Thanks for the inspiration.
one question what's a ibutton
Hi, A iButton is a kind of electronic key, that looks like a button-battery. You can see them in the picture above. Every iButton has an unique number that is written in a chip inside. The communication with the iButton goes trough the 1-Wire protocol and uses, you guessed it, only one wire. See also the site off the manufacturer: <a href="http://www.maxim-ic.com/products/ibutton/ibuttons/">Maxim</a>
thanks :)
Nice job! Sure wish I had all those tools, but I&acute;ll settle for a translator.
Where oh where did you find LCD displays for less than a buck??
On &quot;www.marktplaats.nl&quot; that's a Dutch kind of Ebay. I was really lucky with them.
Nice project and a very good instructables.
Amazing project... Nice integration and great 'ible

About This Instructable


50 favorites


Bio: I'm a social-worker, working with 12 - 23 year-olds. I used to be a printer and I worked voluntarily in Romania for a couple of ... More »
More by kenyer: Let's make collective toilet art Pinewood Derby Race Pimp your Medicine Cabinet
Add instructable to: