loading

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

Parts
  • 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

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

Advertisement

<p>Any chance you tried this with an ibutton reader that has a LED (4 wires)?</p>
I didn't try it, but I think that the extra 2 wires are just there to light up the LED, so that wouldn't be that different. You probably can even hook it up with just 2 wires and leave the LED for what it is.
<p> ibutton includes 8 numbers.My ibuttons(i bought 10 ibuttons) start first number is 1,not 0.I found the solution.</p><p>Thank you very much.</p>
Ok, I'm glad that you've got it working. I might ask you how when I reinstall my installation the coming week ;)<br>A car drove into my house a couple of weeks ago, so I have to reinstall my system, but I am sure that won't be a problem.
<p> hello,nice project, ibutton reader (ibutton.pde) reads 5 numbers of ibutton</p><p>if(keyStatus==&quot;ok&quot;){</p><p> byte i;</p><p> for( i = 5; i &gt;0; i--) {</p><p> Serial.print(&quot; : &quot;);</p><p> Serial.print(addr[i], DEC);</p><p>,but you wrote 6 numbers of ibutton code for each user </p><p> int but1[6] = {0,149,107,48,13,0}; //*************the code of the iButtton****************</p><p>And last when program check if ibutton code is the right,program check only 4 numbers</p><p>if(addr[1] == but1[1] &amp;&amp; addr[2] == but1[2] &amp;&amp; addr[3] == but1[3] &amp;&amp; addr[4] == but1[4] &amp;&amp; uit1 == 1){welkeBut=1; name = name1;}<br></p><p>,but we read 5 numbers!!! How i know the correct 4 numbers;</p><p>Thank you very much for your help.</p>
This is an very old project for me, but if I remember correctly, the first number is always 0, so I start reading with the second number but1[1]. The first would have been but1[0]<br>But I could be wrong. <br>
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.
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

45,835views

54favorites

License:

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:Pokemon GO Incubator Simple camera slider for on a tripod Wooden Pokemon Pokebox (square Pokeball) 
Add instructable to: