{"id":63,"date":"2012-08-05T20:51:00","date_gmt":"2012-08-05T20:51:00","guid":{"rendered":"https:\/\/blafaselblub.wordpress.com\/2012\/08\/05\/garage-door-remote-for-real"},"modified":"2018-01-08T11:36:32","modified_gmt":"2018-01-08T10:36:32","slug":"garage-door-remote-for-real","status":"publish","type":"post","link":"https:\/\/blog.alexander-tuxen.de\/index.php\/2012\/08\/05\/garage-door-remote-for-real\/","title":{"rendered":"Garage door remote for real"},"content":{"rendered":"<p>(featuring my first real factory made PCB)<\/p>\n<p>It&#8217;s been a while since I built the <a href=\"http:\/\/blog.arles-electrique.de\/2012\/07\/it-all-started-with-garage-door-remote.html\" target=\"_blank\" rel=\"noopener noreferrer\">garage-door-proof-of-concept-remote<\/a>. As stated in the according post, the &#8220;industrial design&#8221; part of the PoC managed to be flimsy and clunky at the same time. So there was some room for improvement.<\/p>\n<p>Back when I still thought the original remote was using 434 MHz, I bought two little &#8220;<a href=\"http:\/\/www.solidremote.com\/products\/4-remote-control-duplicator-for-garage-doors-gates-fixed-code-self-learning-clone-433mhz-sr-rcd-m1.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">cloning remotes<\/a>&#8221; or at least so I thought. I was eager to save a few Euros, so I got mine from some shady Chinese eBay-shop, and sure enough the ones I bought were far from capable of cloning anything. Instead they just sent out fixed codes, no matter what I tried. Well, at least they did <i>something<\/i>.<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_221304.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-180\" src=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_221304-1024x765.jpg\" alt=\"\" width=\"640\" height=\"478\" srcset=\"https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_221304-1024x765.jpg 1024w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_221304-300x224.jpg 300w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_221304-768x574.jpg 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">The enclosure.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>But even if I had gotten the &#8220;real&#8221; ones, it wouldn&#8217;t have helped a bit, because those still would only work with 434 MHz and I needed 868 MHz.<\/p>\n<p>So there I was with my homemade (but working) remote and my two Chinese knockoffs. Even though those were useless, I still liked the enclosure and started wondering if I could just use that and design my own PCB to put inside. I could even harvest a few parts of the original PCBs, like the buttons and the blue LED.<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a style=\"margin-left: auto; margin-right: auto;\" href=\"http:\/\/4.bp.blogspot.com\/-UMkSnMlpJMk\/UB2BnWMmgOI\/AAAAAAAAAVw\/gkWZArhs4aQ\/s1600\/garage_remote_orig.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/4.bp.blogspot.com\/-UMkSnMlpJMk\/UB2BnWMmgOI\/AAAAAAAAAVw\/gkWZArhs4aQ\/s400\/garage_remote_orig.png\" width=\"400\" height=\"270\" border=\"0\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">The disassembled remote and the original PCB. They use a 12V battery for the 434 MHz transmitter.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The first thing I did was to take measurements of the original PCB and transfer that to a simple <a href=\"http:\/\/www.cadsoftusa.com\/eagle-pcb-design-software\/product-overview\/?language=en\" target=\"_blank\" rel=\"noopener noreferrer\">Eagle<\/a> layout. After quintuple checking the positions of every hole, notch, button and the LED I locked their positions so that I wouldn&#8217;t accidentally move them out of place later in the process.<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a style=\"margin-left: auto; margin-right: auto;\" href=\"http:\/\/3.bp.blogspot.com\/-wA25gAPm6Kg\/UB5r1qiiEaI\/AAAAAAAAAXA\/ZeWdVv6SKpk\/s1600\/old_keyfob_scan2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/3.bp.blogspot.com\/-wA25gAPm6Kg\/UB5r1qiiEaI\/AAAAAAAAAXA\/ZeWdVv6SKpk\/s320\/old_keyfob_scan2.png\" width=\"211\" height=\"320\" border=\"0\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">The back of the board on a scanner.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a style=\"margin-left: auto; margin-right: auto;\" href=\"http:\/\/4.bp.blogspot.com\/-BodDsC4ocwA\/UB5r4Jg5ReI\/AAAAAAAAAXI\/GNp4DCcizX0\/s1600\/old_keyfob_scan3.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/4.bp.blogspot.com\/-BodDsC4ocwA\/UB5r4Jg5ReI\/AAAAAAAAAXI\/GNp4DCcizX0\/s320\/old_keyfob_scan3.png\" width=\"263\" height=\"320\" border=\"0\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">And the front. At first I tried to take measurements from the scan, but I soon realized I would have to get a caliper.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The problem with my layout was that it would not work with the kind of PCBs I could make on the CNC router at the\u00a0<a href=\"http:\/\/blog.attraktor.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Attraktor<\/a>\u00a0because the board would have to be double sided and I&#8217;ve tried to make a double sided board before and failed miserably. So I had to have the board for this project manufactured in a real fab house. The problem with that is that it&#8217;s really expensive for low volumes. If I had the board made on my own in Germany it would have cost me about $50. So that wasn&#8217;t an option.<\/p>\n<p>By chance a friend told me about the\u00a0<a href=\"http:\/\/oshpark.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">dorkbot PCB-service (now called OSHPark)<\/a>. This is an extremely cool service run by a guy who started out collecting PCB layouts for his local hackerspace and put them all together on a big panel to reduce manufacturing cost. To fill up the panels quicker he opened his service to the public, so that is where I went.<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a style=\"margin-left: auto; margin-right: auto;\" href=\"http:\/\/2.bp.blogspot.com\/-z7ai2RnGN3s\/UB-WO8vVBuI\/AAAAAAAAAXg\/2zHVr136xWQ\/s1600\/garage_remote_short1.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/2.bp.blogspot.com\/-z7ai2RnGN3s\/UB-WO8vVBuI\/AAAAAAAAAXg\/2zHVr136xWQ\/s400\/garage_remote_short1.png\" width=\"400\" height=\"221\" border=\"0\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">My Idea of a garage door remote in Eagle. Except for the antenna on the right I was really lazy and let Eagle autoroute most of the traces, which wasn&#8217;t too brilliant.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Having the boards made and shipping them across half the globe takes about 4-6 weeks, so after a long wait I finally had these in the mail:<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120723_114658.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-182\" src=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120723_114658-1024x765.jpg\" alt=\"\" width=\"640\" height=\"478\" srcset=\"https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120723_114658-1024x765.jpg 1024w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120723_114658-300x224.jpg 300w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120723_114658-768x574.jpg 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">I had round edges and a little notch on the &#8220;Dimension&#8221; layer. The notch is there but the round edges aren&#8217;t. I&#8217;ll have to remember to sort that out before I order the next batch.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>And when I finally held them in my hands, it wasn&#8217;t long until I discovered the first fundamental design fault:\u00a0There are a bunch of vias (gold plated, even!) right where the negative terminal of the battery would go. These I would have to insulate somehow.<\/p>\n<p>Later that night one of the boards looked like this:<\/p>\n<p>&nbsp;<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003731.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-184\" src=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003731-1024x765.jpg\" alt=\"\" width=\"640\" height=\"478\" srcset=\"https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003731-1024x765.jpg 1024w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003731-300x224.jpg 300w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003731-768x574.jpg 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">The ATMega is facing the wrong way. Ignore that.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>I soldered the TQFP part using the solder wick technique shown at about 6:25 in <a href=\"http:\/\/www.youtube.com\/watch?v=3NN7UGWYmBY\" target=\"_blank\" rel=\"noopener noreferrer\">this video<\/a> (and probably many others).<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003815.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-185\" src=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003815-1024x765.jpg\" alt=\"\" width=\"640\" height=\"478\" srcset=\"https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003815-1024x765.jpg 1024w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003815-300x224.jpg 300w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120724_003815-768x574.jpg 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">I left out the LED and the accompanying resistor on this board. Also note that I left out the notches on the sides of the board. I figured that it would be easier to just cut the enclosure to fit instead. Which worked.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>I insulated the vias under the battery clip with <a href=\"http:\/\/uk.farnell.com\/kontakt-chemie\/plastik-70-200ml\/lacquer-plastik-70-200ml\/dp\/800960\" target=\"_blank\" rel=\"noopener noreferrer\">this stuff<\/a>\u00a0and I also put a lot of solder on the sqaure pad in the middle to raise its level above that of the vias.<\/p>\n<p>The ISP connector is done with the pads on the left. Now I had to find a connector to fit. A PCI connector should fit, or maybe an old floppy drive connector. Too bad I didn&#8217;t have any of those around. All I could find was an old connector for a C64 datasette port, if anyone still remembers those.<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_233831.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-186\" src=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_233831-765x1024.jpg\" alt=\"\" width=\"640\" height=\"857\" srcset=\"https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_233831-765x1024.jpg 765w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_233831-224x300.jpg 224w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_233831-768x1028.jpg 768w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120804_233831.jpg 1936w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">My barely working ISP Plug.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The pitch was totally off but it was the only thing I could find, so I used it. It was a royal pain in the ass but at least <i>sometimes<\/i>\u00a0it worked.<\/p>\n<p>Not that night, though&#8230; The programmer wouldn&#8217;t even find a controller to talk to. After checking all of the connections were good, I finally found it: The ATMega was facing the wrong way. Nice work.<\/p>\n<p>De-soldering a TQFP part is no fun but it can be done. You have to add <i>lots<\/i>\u00a0of solder, so that all pins are covered, and heat all four sides in a swift procession. The trick is to have the fourth side heated while the first is still hot. You&#8217;ll have to go around the chip for a few times but eventually it&#8217;ll come loose and you can just wipe it off the board. The major rule is:\u00a0Patience &gt; Violence.<\/p>\n<p>After having this fixed I could flash the controller but the damn thing still wouldn&#8217;t work. I had to get out the logic analyzer.\u00a0Luckily the connection between the ATMega and the RFM12B is an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Serial_Peripheral_Interface_Bus\" target=\"_blank\" rel=\"noopener noreferrer\">SPI<\/a> connection, which is basically the same as the <a href=\"http:\/\/en.wikipedia.org\/wiki\/In-system_programming\" target=\"_blank\" rel=\"noopener noreferrer\">ISP<\/a> connection for the programmer, and it also uses the same pins (mostly). So I could connect all but one of the analyzer probes to the programming connector. With help of the analyzer I could see that the controller was talking to the RFM12B on the MOSI line but wasn&#8217;t getting an answer on the MISO line. This meant that the RFM12B wasn&#8217;t working properly for whatever reason, most probably a short circuit somewhere on the board.<\/p>\n<p>After poking around with the multimeter for another while I found it. Or, more precisely, I found out which nets were shorted out, but I had no idea where.<\/p>\n<p>By now I had a little practice in de-soldering larger SMD parts, but even after removing the ATMega and the RFM12B (the de-soldering trick described for the ATMega works with that, too), the short was still there. It was between the SEL signal of the RFM12B and VCC, i.e. the positive terminal of the battery. But since these two nets virtually never cross paths or even come close to one another it had to be somewhere else. And here it was:<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a style=\"margin-left: auto; margin-right: auto;\" href=\"http:\/\/1.bp.blogspot.com\/-IJoBazYqa2M\/UB5E6wdOv5I\/AAAAAAAAAWQ\/RqYGMGT75YE\/s1600\/garage_remote_short.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/1.bp.blogspot.com\/-IJoBazYqa2M\/UB5E6wdOv5I\/AAAAAAAAAWQ\/RqYGMGT75YE\/s400\/garage_remote_short.png\" width=\"300\" height=\"400\" border=\"0\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">The SEL trace of the RFM12B crossing the drawing of the battery clip on the &#8220;Dimension&#8221; layer. Looks perfectly innocent in Eagle.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This is what it looks like in real life:<\/p>\n<table class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120805_120823.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-187\" src=\"http:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120805_120823.jpg\" alt=\"\" width=\"849\" height=\"633\" srcset=\"https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120805_120823.jpg 849w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120805_120823-300x224.jpg 300w, https:\/\/blog.alexander-tuxen.de\/wp-content\/uploads\/2012\/08\/IMG_20120805_120823-768x573.jpg 768w\" sizes=\"(max-width: 849px) 100vw, 849px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">Not so much in real life. The metal of the battery clip cut through the soldermask somehow and shorted out VCC with SEL.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>After gently bending the battery clip everything worked like a charm. Well, at least the hardware did.<\/p>\n<p><b>The software:<\/b><br \/>\nThe <a href=\"http:\/\/blog.arles-electrique.de\/2012\/07\/it-all-started-with-garage-door-remote.html\" target=\"_blank\" rel=\"noopener noreferrer\">PoC<\/a> didn&#8217;t have a real program logic at all. As soon as you connected the power, it would transmit away. For this project I wanted something slightly more elegant. In addition to just sending the garage opening signal, the buttons should send something I could use around the house, like a unique ID, that I could process in projects to come. Also I had to do something about the current consumption. Both, the ATMega328p and the RFM12B have ultra low power sleep modes and I needed to utilize those to make the coin cell last more than a few hours. Again I had lots of help from the internets, particularly <a href=\"http:\/\/www.sparkfun.com\/tutorials\/309\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>\u00a0and <a href=\"http:\/\/jeelabs.org\/tag\/lowpower\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>\u00a0somewhere near the bottom. After some tweaking I had the\u00a0standby power consumption down to under 1 \u00b5A.<\/p>\n<p>At this point I&#8217;d like to praise the Internet. I couldn&#8217;t do shit without it.<br \/>\nThe only problem with the code was that it wasn&#8217;t very stable, and I couldn&#8217;t really fix that.<\/p>\n<p>(The PCB design actually reflects how little trust I had in my own coding skills: I put in a little solder jumper to be able to use one of the keys as a reset button for the AVR. But that was planned as a last resort in case I really couldn&#8217;t get the code to run properly.)<\/p>\n<p>Luckily, for cases just like this, the ATMega (and probably other microcontrollers as well) has a watchdog timer, that will reset the whole controller if you don&#8217;t reset the timer before it runs out. After implementing that, everything is running smoothly for several days now.<\/p>\n<p><b>Conclusion:<\/b><br \/>\nI&#8217;ve learned quite a few things about PCB design doing this project:<\/p>\n<ul>\n<li>Don&#8217;t trust the autorouter of your PCB design software. Better yet, on a project as simple as this, don&#8217;t even use it.<\/li>\n<li>Think 3D! It&#8217;s hard to imagine a<br \/>\nreal life PCB just from an Eagle layout. There are 3D rendering plugins for Eagle and other software with this functionality built in, but I found it the easiest to just print out the PCB layout on a piece of paper and place the parts on it.<\/li>\n<li>Only use parts in your design that are actually available to you. I have \u00a0yet to find a correctly pitched edge connector for the ISP connection.<\/li>\n<\/ul>\n<p><b>Total cost of the project:<\/b><\/p>\n<ul>\n<li>PCB: 3.30 \u20ac<\/li>\n<li>ATMega328p: 1.80 \u20ac<\/li>\n<li>RFM12B: 4.00 \u20ac<\/li>\n<li>Chinese fake-cloning-remote: 2.50 \u20ac<\/li>\n<\/ul>\n<p>Makes a total of 11.60 \u20ac or US $ 14.35 at the time of writing. All prices include tax and shipping and all items were purchased in low volumes.<br \/>\n<b><br \/>\n<\/b><b>Files:<\/b><br \/>\nAll design files as well as the source code for the controller are available at my github repository:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/alibenpeng\/keyfob\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/alibenpeng\/keyfob<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/alibenpeng\/keyfob_hardware\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/alibenpeng\/keyfob_hardware<\/a><\/li>\n<\/ul>\n<p><b>Update:<\/b><br \/>\nAs it turned out, the watchdog timer (or rather the way I implemented it) didn&#8217;t really help, actually it made matters worse! After a long and tedious debugging process I finally think I&#8217;ve got it right. Read about it <a href=\"http:\/\/testblog.arles-electrique.de\/2012\/11\/debugging-garage-door-remote.html\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(featuring my first real factory made PCB) It&#8217;s been a while since I built the garage-door-proof-of-concept-remote. As stated in the according post, the &#8220;industrial design&#8221; part of the PoC managed to be flimsy and clunky at the same time. So &hellip; <a href=\"https:\/\/blog.alexander-tuxen.de\/index.php\/2012\/08\/05\/garage-door-remote-for-real\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,6,3,7],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/posts\/63"}],"collection":[{"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/comments?post=63"}],"version-history":[{"count":2,"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/posts\/63\/revisions"}],"predecessor-version":[{"id":188,"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/posts\/63\/revisions\/188"}],"wp:attachment":[{"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/media?parent=63"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/categories?post=63"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alexander-tuxen.de\/index.php\/wp-json\/wp\/v2\/tags?post=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}