In this Instructable we'll show you hot to make a GSM Access Control System for your hackerspace/garage/house/bedroom/dormroom/laboratory just like the one we built for eLab Hackerspace. We only used some scavenged parts but they can be replaced with similar parts with minor changes.

Here's a video showing it working:

This system allows you to control who can access the space where it is used by keeping a list of authorised members phone numbers and also keeps an online log of entrances on Google Spreadsheets, so that you can check it out whenever you want and from wherever you are :)
It also allows you to choose which music should be played when a certain member enters the space! :)

Our main idea was to make a system that would allow anyone to open the hackerspace door using any cell phone just by ringing a phone number :)

For this instructable you will need the following parts:
- Siemens C55 cell phone / GSM modem / other cell phone with support for AT commands
- Data cable for cell phone or GSM modem
- Old computer / Raspberry Pi / BeagleBone Black / other single board computer
- PIC16F88 microcontroller / Arduino / other microcontroller
- ATX power supply / other 12V/5V power supply
- cables
- connectors
- DC geared motor
- screws
- MDF board / Acrylic Board
- Solder
- Hot Glue
- Discrete electronic components (resistors, capacitors, LEDs.... )
- Audio speakers

And the following tools:
- Side cutters
- Pliers
- Screwdriver
- Soldering Iron
- Hot Glue gun

This instructable has 7 main steps:
1 - Door opening mechanism
2 - Preparing the parts to be assembled
3 - Siemens C55 working as a GSM modem
4 - RS232, TTL and LVTTL serial communications board
5 - PIC16F88 board
6 - PIC16F88 programming
7 - Python application to send data to Google spreadsheets

This instructable has all the necessary information to make a similar system. However, if you are interested in more details and seeing better quality pictures check the original post on: http://www.thebitbangtheory.com/2013/11/elab-hackerspace-gsm-access-control-system/

Step 1: Door opening mechanism

The door of eLab Hackerspace is an aluminium door with an emergency exit lever. We weren't allowed to drill or modify the door in any way, so we tried to find a way of using the lever to open the door. We engineered a way of using a geared DC motor to pull it to open the door and also found a way of attaching the motor to the door without any drilling or glueing. We attached the motor to a piece of metal and then used the silicone frame of the aluminium door to hold it in place. It turned out to be surprisingly easy to put the motor in place. To pull the lever, we placed an off-centered pin in a gear that was attached to the motor's axle and then used a small piece of a pulley taken from an old printer to attach the off-centered pin to the lever. It's basically the same type of mechanism used in car pistons. In case your door does not have an opening lever, you can use any other mechanism to open it either using an electronic lock,  or by using a gear motor to open the door in any other way. You just have to be creative :)

We also added a switch that would be triggered by the rotating gear when the lever was in the "open" position. After the mechanics of the system were done, we designed a simple board with a PIC16F88 microcontroller (more details about the board on step 5) based on the PIC16F88 prototyping board that we had previously designed for us to use at the hackerspace. We also did some simple programming of the PIC16F88 just to test the door opening mechanism: when a button was clicked, it would turn on the motor until the "open" switch was activated, then wait three seconds, and then turn on the motor again until the "open" switch stopped being activated, which meant that the lever was in the "closed" position. However, we ran into our first problem: the motor was so noisy that it was generating voltage spikes in the pin that was supposed to read the switch. We tried putting the noise filtering capacitors in the motor's pins, tried using a more stable power supply, but we weren't being able to filter it using hardware. After some time trying to fix the problem using hardware, we remembered a simple and clever way that worked like a charm: implement a software mechanism that would ignore isolated voltage spikes. We simply implemented a counter and defined a counting threshold: the PIC16F88 would count every time that the pin read a logic 1 but would only consider that button as being activated when the threshold value was reached, The counter would increase its value with the voltage spikes, but when the switch was actually activated, the counting value would increase extremely fast, reaching the threshold value. Having the opening/closing mechanism ready, it was time to start  assembling all the control system and work on the GSM part of the system.
any ideas on boosting signal power on a phone that uses gsm signals
<p>Hmm.. we can only remember two options. The first one is to find the antenna traces on the phones' PCB, cut them and solder some wires for an external antenna with a higher gain for the GSM frequency that the phone should operate on (some older phones even have a connector to plug an external antenna). In case the phone uses a chip antenna you may just desolder it and solder the nem one. For better performance the new antenna's impedance should match the impedance of the phone's antenna. The second option would be similar, but instead of just replacing the antenna you might try to find a GSM signal booster like these ones: http://bit.ly/1dpwjBi and connect it to the antenna output of the phone. However, we never tried such things :)</p>
Great work guys, cool hack :)
<p>Thanks a lot aldricnegrier! :) </p>
looks like a 486 system to me . but i could be rong tho.
Hi! It's an old computer, but not that old :) It is a Intel(R) Pentium(R) 4 CPU 1.50GHz with only 256MB of RAM :) An interesting thing about the computer is that the CPU heatsink mounting piece was broken and now the CPU heatsink is kept in place with zip ties :)
have u tried double sided thermal tape. or copper plumber expoxy. it does have some conductivity as well.
No, we didn't try that. We just applied thermal paste and tried using the zip ties. Since it worked perfectly, we followed the worldwide known rule: &quot;it it's working, let it be!&quot; :P
OK. so this keeps track of how many people go in and out?
Hi! This system opens the door and registers who gets in and when someone gets in and publishes it to a Google Spreadsheet which is then published on a webpage so that we can see who is at eLab Hackerspace at any moment :)
Awesome! Keep the good work ;)
Thank you for your comment isma14 :)
Amazing! good work! very smart! (voces s&atilde;o todos brasileiros por acaso;;) abc bro!!
Thanks for your comment! :) (falamos a mesma l&iacute;ngua mas n&atilde;o somos brasileiros, somos v&aacute;rios portugueses e um espanhol :) Abra&ccedil;o! )
since the software is based in linux can it also work in raspberry pi?
Hi deqwer! Yes, the software is 100% compatible with the raspberry pi. You just need to have python installed and install the other packages that we mention on the instructables :) We have plans to replace the old computer with a Raspberry Pi as soon as we get some money to buy one :)
wow thats clever :)
Thanks! gregory77 :)
I want it in my house door! :D
You can make it by following the tutorial :) If you have any questions just ask us :)
Really cool project and very well explained. Thanks. Keep going with the good work.
Thank you very much fmartins87! :)
very cool!
Thanks a lot pedrorito!
Good Work!
Very good explanation, very detailed. <br>One of the best projects i ever seen in instructables. <br>I'll do it in my garage for sure :)
Thanks! If you need any further help replicating the system, just let us know :)
Great stuff. Keep up the good work. :)
Thanks abelguinha! :)
Great project, excelent detailed explanation.
Thanks! We're glad you liked it! :)
Wow! Awesome stuff!
Thank you for your appreciation! :)
Pretty cool project! Very well explained :P
Thanks joaoduarte! :)
that is so cool!
Thanks for liking our project! :)

About This Instructable