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

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

43,054 views

52 favorites

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: Static Shock (absorber) Discharger to Never Get Shocked by Static Again. Mindstorms Sumo Ring (Dohyo) 10VAC Adapter for LEGO RCX Mindstorms
Add instructable to: