Home Automation System Using Arduino and SIM900 GSM Module




Posted in TechnologyArduino

Introduction: Home Automation System Using Arduino and SIM900 GSM Module

Hi there! As I've almost finished my studies at Faculty of Engineering, I had to make a graduation project and my thought was to make a jaw-dropping thing (I know that's hilarious :D ) to show everybody that I'm a good prototype maker and I can turn ideas into real and useful things.

I know GSM controlled home automation systems are widely used and can be found easily on internet, but as we all know, the prices are very prohibitive for general consumers. This is why I've tried to build some sort of device based on open-source knowledge that can be replicate by all the hobbyists, even if they are amateurs or professionals.

So I begun to think what kind of basic home appliances could be remote controlled via GSM network and nothing else? We all know, that you can control lights, heating, multimedia system and so on, but I've tried to make my project closer for my basic needs: lighting and heating (optional - garage doors, but it's not my case because I live on a 3rd floor apartment).

I mention that the finished prototype, seen in the photo, can be used safely (with a bit of tweaks, of course) on any kind of building with or without garage (the garage door relay can be repurposed for any other activity)

For this project I've used:

1. An Arduino clone
3. Relay module
4. 2x16 LCD Display
5. DS18B20 temperature sensor
6. Push button
7. Some Dupont wires
8. A led module (this is optional, if you have a chinese relay module with built in LEDs)
9. Some nuts and bolts to mount everything in place
10. A wooden chopping board or other kind of wooden board for propper display of the components

The costs?... The gsm shield was about 40$ from eBay, LCD...2$, DS18B20...1.5$, Dupont wires another 2 bucks, push button...few cents, the relay module 2-3$ to make and the Arduino clone was less than 10bucks to make...
Conclusion: you can build your own basic GSM home automation with less than 100$!

If you like this instructable please feel free to vote it on each contest it is subscribed! Thanks! :)

Step 1: Making the Arduino Clone

For this project I wanted to make a stand-alone Arduino board because I only have one Arduino UNO and I'm using it for my random project, so the need for a clone board was huge. I've managed to modify a schematic provided by my good friend Nicu Florica, which is derived from Nanino project and for my application I've added few pins to facilitate the connection of other devices (sensors, relays, etc) when a shield is attached on the main mother connectors.

The method used to make the PCB is just p'n'p using Oracal 641 paper, an 8 years old HP LaserJet 1018 printer, a clothes iron, ferric chloride etchant, some kind of dissolvent to clean out the toner traces after etching process and obviously a copper-covered board ready to be turned into a PCB.

After etching and cleaning the finished PCB, I've drilled all the holes for components and connectors, I've soldered them all, I've checked for short circuits and the result can be seen on the last photo.

The BOM is:

- ATmega328P-PU
- 16MHz Quarz
- 2 x 22pF caps
- 3 x 100uF caps
- 1 x 10uF cap
- 1 x 47uF cap
- 2 x 10k resistors
- 1 x 1k resistor
- 1 x 1N4007 diode
- 2 x 5mm LEDs
- 1 x 7805
- 1 x barrel power connector
- 1 x push button
- some male and female pin headers

Because I don't think that the etching and soldering processes are important, I've only made few pictures of the critical parts of the building.

Step 2: Making the Relay Board

Another friend of mine (Vlad) made a PCB schematic for the relay module because I have been busy with some exams and programming. He's actually a master in Altium Designer so he made the schematic in no time. As you can see, the relays are 5V ones, each one controlled by its own BC639 NPN transistor and also equipped with its own anti-parallel diode to prevent the destruction of transistors.

The BOM of this module is:

- 4 x Omron G5LA-14
- 4 x BC639 NPN transistors
- 4 x 1N4002
- 4 x 1k resistors
- 4 x screw connector
- 1 x 6pins male header

Step 3: GSM Shield

That's not much to say about this shield... I purchased it from ebay for about 35$ and it works just fine. The sad part of using it is you cannot add interrupt features to the project because it uses pin D2 and D3 for software serial communication and those pins are also used by internal interrupts system of the microcontroller. Also pins D7, D8 and D9 of the Arduino are reserved for incoming call presence, software power up and software reset of the GSM shield.

Step 4: Testing the Schematic

After putting almost everything together, I've made a test using each of the component to see if it works well or not, but I realized that the PIR sensor sucks. My second idea was to implement some security features in the code, but I've seen that PIR sensors turns high randomly even if the potentiometer from the top of it are turned or not. That's shame...

Step 5: Making Some Sort of Breakout Board for DS18B20

In the pictures you can see that the DS18B20 sensor is powered in parasitic mode, but after a lot of testings with bad results (-127degree C error), I've switched to direct powering and everything was just fine.

Step 6: Putting Everything Together...

For the base, I used a wooden chopping board that I've drilled some holes on it to fix all the components in place with bolts. Also for the finishing touch I've used some black spray paint to make the board a little bit sexy. :D

So if you ask for connections between Arduino clone and other components this is the order:

1. LCD Display is connected through i2c using arduino's A4 (SDA) and A5 (SCL)
2. Relay module is connected on digital pins 6, 10, 11 and 12. Note that I've didn't used digital pins 7, 8 and 9 because are used by the GSM shield
3. DS18B20 is connected to the A0 pin
4. The button is connected to A2 pin

Step 7: Sending Text Messages and Receiving Feedback

This is an example with sms commands and the feedback received from the system... Sadly I only did that in romanian language, but you get the picture of the whole thing. :)

Step 8: And a Short Demo...

I've made a short demo with this system, but because of lack of time I only made this in my native language, romanian. You don't need to understand what I'm saying, just watch carefully and don't forget to vote if you like this Instructables! Thanks alot guys and if you want some advices or you have some advices I'll be happy to read your comments.


Please do not send any requests for the code on the comment section or on private messages. As I said before, the code will be soon available to be purchased for few $ via PayPal because I really need money to finance my future projects. Please understand that it took me a week or two of hard labor just to put everthing together you've seen in this project and I cannot take back that spent time. Thanks!



    • Woodworking Contest

      Woodworking Contest
    • Casting Contest

      Casting Contest
    • Make it Move Contest

      Make it Move Contest

    We have a be nice policy.
    Please be positive and constructive.


    2 Questions





    Hola, has hecho este proyecto hace años, quisiera saber si tenes el código para programarlo y si puedes ayudarme a elegir el módulo GSM en ML de mi país Argentina.
    Desde ya muchas gracias! Tus proyectos siempre me han gustado y varios he llevado a cabo gracias a ti.


    i have the code you can get it for just 10 USD.

    feel free to contact: rzeeshan565@gmail.com

    Hello sir,

    I know that you wrote "don't ask for code", but its an emergency for an education purpose...

    Can you send me the code (GSM sim900 based home Automation using Arduino Uno) and circuit diagram


    hi Engineer

    how r u .plz give me a GSM (sim900) based home automition control using Arduino uno circuit diagram and code send me a email on


    Hello sir,

    I know that you wrote "don't ask for code", but its an emergency for an education purpose...

    Can you send me the code sir?

    email : n.ntentei@gmail.com

    Thank you in advance!

    Hi engineer

    would you send me the schematic and source project and code for arduino

    send mail: thodo57@gmail.com



    Good Day,
    Please does anyone have the code for Home Automation System Using Arduino and SIM900 GSM Module please i need it before Monday please send it to ebohchinemelum@ymail.com

    plz send me source code. Thanks pakto.sekiel.rambe@gmail.com

    Hi , very goods project , plz send me source code. Thanks

    Hi engineer
    would you send me the schematic and source project

    nice project, would you send email the code to me, my email is bedhore07@gmail.com, thanks

    Mi mandate con paypal il codice.

    salut! Marfa proiectul felicitari!

    Ma intereseaza ce ai folosit pt Android, ce aplicatie pentru mesaje si codul sursa de la GSM 900 !

    Felicitari si multumesc anticipat!


    buenas tardes, me podrian enviar el codigo porfa, dapzzz@gmail.com

    I want to work with SIM 900 but which simcard i should use

    i tried fido, chatr, rogers but none of them are working

    anybody please reply fast as i have my project due in a week

    i need code of this project pls send it my mail id my mail id kapilavarman@gmail.com

    I have a problem with your code, I was try with both codes but has much errors. I was modified code, software serial (7, 8), software on is on pin 9 on my sim900 shield. But have more errors.

    This is a error:

    This report would have more information with

    "Show verbose output during compilation"

    enabled in File > Preferences.

    Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"

    FGLFC5MHY5Y3H1U:9: error: 'NEGATIVE' was not declared in this scope

    FGLFC5MHY5Y3H1U:30: error: 'OneWire' does not name a type

    FGLFC5MHY5Y3H1U:32: error: 'DallasTemperature' does not name a type

    FGLFC5MHY5Y3H1U.ino: In function 'void loop()':

    FGLFC5MHY5Y3H1U:171: error: 'sensors' was not declared in this scope

    2 replies

    hie did you manage to solve the errors can you pliz send me the code at flintisaac@gamil.com

    hie did you manage to solve the errors can you pliz send me the code at flintisaac@gamil.com

    nice project can you please send me the code at flintisaac@gmail.com