[Tod’s] daughter has a habit of forgetting to take a house key along with her, so he was looking for a way to make accessing the house easier in a pinch. He had tried wireless garage door keypads in the past, but their performance was so-so at best. After scouring the market for commercial solutions and checking out the work of other hackers, he decided that he needed to craft a custom solution of his own.
He started shopping around for wireless-enabled microcontrollers and settled on a Roving Networks RN-XV module, which is designed as a drop-in replacement for an XBee. Paired with a 5v to 3.3v power adapter, the RN-XV is nearly all he needed to interface his iPhone with his garage door opener.
The microcontroller has enough GPIO pins to control the garage door, while also monitoring the door’s status using a simple magnet/reed switch combo. A web server in [Tod’s] house takes input from any phone connected to his wireless LAN and relays the open/close commands to the opener. The opener in turn returns status messages to him via the web interface.
We really like the system’s simple design, and as long as [Tod] has turned WPS off at home, he really shouldn’t have to worry too much about unauthorized entry.
[Blaise Jarrett] has been grinding away to get the WebSocket protocol to play nicely with PIC microcontrollers. Here he’s using the PIC 18F4620 along with a Roving Networks RN-XV WiFi module to get the device on the network. He had started with a smaller processor but ran into some RAM restrictions so keep that in mind when choosing your hardware.
This project was spawned after seeing the mBed feature a few days back which combined that board along with a WebSocket library and HTML5 to pull off some pretty amazing stuff. [Blaise] doesn’t have quite as much polish on the web client yet, but he has recreated the data transfer method and improved on that project by moving to the newer version 13 of WebSockets. The protocol is kind of a moving target as it is still in the process of standardization.
The backend is a server called AutoBahn which is written in python. It comes along with client-side web server examples which gave him a chance to get up and running quickly. From there he got down to work with the WebSocket communications. They’re a set of strings that look very much like HTML headers. He outlines each command and some of the hangups one might run into with implementation. After reading what it takes to get this going it seems less complicated than we thought, but it’s obvious why you’ll need a healthy chunk of RAM to pull it off.