Mobiltelefoner är en revolutionär uppfinning av seklet. Det var främst utformat för att ringa och ta emot samtal och textmeddelanden, men det har blivit hela världen efter att smarttelefonen kommer in i bilden. I det här projektet bygger vi ett hemautomationssystem, där man kan styra hushållsapparaterna med den enkla GSM-baserade telefonen, bara genom att skicka SMS via sin telefon. I det här projektet behövs ingen smarttelefon, bara den gamla GSM-telefonen kommer att fungera för att slå på och stänga av elektroniska hemapparater, var som helst. Du kan också kolla några fler trådlösa hemautomationsprojekt här: IR fjärrstyrd hemautomation med Arduino, Bluetooth-styrd hemautomation tillsammans med DTMF-baserad hemautomation, PC-styrd hemautomation med Arduino.
Arbetsförklaring
I detta projekt används Arduino för att styra hela processen. Här har vi använt GSM trådlös kommunikation för att styra hushållsapparater. Vi skickar några kommandon som "# A.light on *", "# A.light off *" och så vidare för att styra AC-apparater. Efter att ha mottagit givna kommandon av Arduino via GSM, skickar Arduino signal till reläer, för att slå PÅ eller AV hushållsapparaterna med en relädrivrutin.
Kretskomponenter:
- Arduino UNO
- GSM-modul
- ULN2003
- Relä 5 volt
- Glödlampa med hållare
- Anslutande ledningar
- Brödbräda
- 16x2 LCD
- Strömförsörjning
- Mobiltelefon
Här har vi använt ett prefix i kommandosträngen som är “#A.”. Detta prefix används för att identifiera att huvudkommandot kommer bredvid det och * i slutet av strängen anger att meddelandet har avslutats.
När vi skickar SMS till GSM-modulen via Mobile, tar GSM emot det SMSet och skickar det till Arduino. Nu läser Arduino detta SMS och extraherar huvudkommandot från den mottagna strängen och lagrar i en variabel. Efter detta jämför Arduino denna sträng med fördefinierad sträng. Om matchning inträffar skickar Arduino signal till relä via relädrivrutinen för att slå PÅ och AV hushållsapparaterna. Och det relativa resultatet skrivs också ut på 16x2 LCD med lämpliga kommandon.
Här i det här projektet har vi använt 3 noll watt glödlampa för demonstration som indikerar fläkt, ljus och TV.
Nedan är listan över meddelanden som vi skickar via SMS för att slå på och stänga av fläkt, ljus och TV:
S.nr. |
Meddelande |
Drift |
1 |
# A.fan på * |
Fläkt PÅ |
2 |
# A.fan av * |
Fläkt AV |
3 |
# A.ljus på * |
Ljuset på |
4 |
# A.ljus av * |
Ljus AV |
5 |
# A.tv på * |
TV PÅ |
6 |
# A.tv av * |
TV av |
7 |
# A.all på * |
Allt PÅ |
8 |
# A.avstängd * |
Alla |
GSM-modul:
GSM-modulen används i många kommunikationsenheter som är baserade på GSM-teknik (Global System for Mobile Communications). Den används för att interagera med GSM-nätverk med hjälp av en dator. GSM-modulen förstår bara AT-kommandon och kan svara därefter. Det mest grundläggande kommandot är "AT", om GSM svarar OK fungerar det bra annars svarar det med "ERROR". Det finns olika AT-kommandon som ATA för att svara på ett samtal, ATD för att ringa ett samtal, AT + CMGR för att läsa meddelandet, AT + CMGS för att skicka sms etc. AT-kommandon ska följas av Carriage return dvs. \ r (0D i hex), som “AT + CMGS \ r”. Vi kan använda GSM-modulen med följande kommandon:
ATE0 - För eko av
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = ”mobilnummer”
>> Nu kan vi skriva vårt meddelande
>> Efter att ha skrivit meddelande
Ctrl + Z skicka meddelandekommando (26 i decimal).
RETUR = 0x0d i HEX
Den SIM900 är en komplett Quad-band GSM / GPRS-modul som levererar GSM / GPRS 850/900 / 1800 / 1900MHz prestanda för röst, SMS och data med låg strömförbrukning.
Kretsbeskrivning
Anslutningar av denna GSM-baserade hemautomationskrets är ganska enkla, här används en flytande kristallskärm för att visa status för hushållsapparater som är direkt ansluten till arduino i 4-bitars läge. Datapinnar på LCD, nämligen RS, EN, D4, D5, D6, D7 är anslutna till arduino digitala stift nummer 6, 7, 8, 9, 10, 11. Och Rx och Tx-stift på GSM-modulen är direkt ansluten till Tx och Rx pin av Arduino respektive. Och GSM-modulen drivs med en 12-voltsadapter. 5 volt SPDT 3-reläer används för att styra LIGHT, FAN och TV. Och reläer är anslutna till arduino-stift nummer 3, 4 och 5 via relädrivrutinen ULN2003 för att styra LIGHT, FAN respektive TV.
Kodbeskrivning
Vid programmering av en del av detta projekt, först och främst inom programmering, inkluderar vi bibliotek för flytande kristallvisning och sedan definierar vi data och kontrollstift för LCD och hushållsapparater.
#omfatta
Efter detta initieras seriekommunikation med 9600 bps och ger riktning till den använda pin.
ogiltig installation () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); pinMode (Fan, OUTPUT); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
För att ta emot data seriellt har vi använt två funktioner, den ena är Serial.available som kontrollerar om någon seriell data kommer och den andra Serial.read som läser de data som kommer seriellt.
medan (Serial.available ()) {char inChar = Serial.read ();
Efter att ha tagit emot data seriellt har vi lagrat det i en sträng och sedan väntar på Enter.
ogiltig serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); fördröjning (1000); digitalWrite (led, LOW); medan (Serial.available ()) {char inChar = Serial.read (); str = inChar; om (inChar == '*') {temp = 1; lämna tillbaka; }
När Enter kommer startar programmet att jämföra mottagen sträng med redan definierad sträng och om sträng matchas utförs en relativ operation med lämpligt kommando som ges i kod.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); fördröjning (200); } annars om (! (strncmp (str, "tv av", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); fördröjning (200); }