Arduino schéma - arduino.sk

Otvaranie brany cez GSM

Kompletné projekty s návodom a zdrojovým kódom
Obrázok užívateľa
Príspevky: 43
Registrovaný: Str 25. Feb 2015 22:19:54
Bydlisko: Fintice

Otvaranie brany cez GSM

Poslaťod dzooky » Pon 16. Nov 2015 12:14:56

Moj prvy dokonceny projekt.
Otvaranie brany cez gsm, teda prezvonenim telefonu.
Kod (kniznice) umoznuje kontrolu prichadzajuceho hovoru
Viac pokecu u mna na blogu http://www.dzooky.eu/2015/otvaranie-brany-cez-telefon/

Kód: Vybrať všetko
#include <SoftwareSerial.h>                                     //kniznica pre seriovu komunikaciu
#include "SIM900.h"                                             //zakladna kniznica pre pracu s chipom SIM900
#include "call.h"                                               //kniznica zabezpecujuca telefonovanie

#define RELAY_ON 0                                              //zapnutie
#define RELAY_OFF 1                                             //vypnutie
#define Relay_1 2                                               //zadefinovanie pinu pre rele

CallGSM call;                                                   //trieda pre hovor

//premenne pre GSM modul
char number[10];                                                //tel cislo
char *check_number[]={"0901234567","0902345678"};               //pole telefonnych cisiel
byte stat;                                                      //stav prichadzajuceho hovoru
int call_delay = 500;                                           //dlzka pre hovor

void setup()
  {
    pinMode(Relay_1, OUTPUT);                                   //nastavenie relatka 1 ako vystup
    digitalWrite(Relay_1, RELAY_OFF);                           //vypnutie relatka
   
    Serial.begin(9600);                                         //nastavenie seriovej komunikacie
   
    //spojenie s GSM shieldom
    Serial.println("Spajanie s GSM modulom.");
    if (gsm.begin(2400))                                        //uspesna komunikacia s GSM modulom
      {
        Serial.print("\nStav: spojenie uspesne");
      }
    else
      {
        Serial.print("\nStav: spojenie neuspesne");             //komunikacia s GSM modulom sa nepodarila
      }       
  }

void loop()
  {
    if(call.CallStatus() == CALL_INCOM_VOICE)                   //zistuje ci niekto vola
      {
        for (byte i = 0; i < (sizeof(check_number)/2); i++)     //porovnava cisla
          {
            stat = call.CallStatusNumber(number,check_number[i]);
            if(stat == CALL_INCOM_VOICE_AUTH) break;            //ak sa zhoduju cisla prerusuje
          }
        delay(call_delay);                                      //caka
        call.HangUp();                                          //rusi hovor
        if(stat == CALL_INCOM_VOICE_AUTH)                       //ak volalo povolene cislo
          {
            Serial.print("\nVolalo autorizovane cislo: ");
            digitalWrite(Relay_1, RELAY_ON);                    //spajam kontakt -> otvaram branu
            delay(call_delay);                                  //drzim sekundu
            digitalWrite(Relay_1, RELAY_OFF);                   //odpajam kontakt
          }
        else                                                    //ak volalo nepovolene cislo
          {
            Serial.print("\nVolalo neautorizovane cislo: ");
          }
        Serial.print(number);
        Serial.println("\n#######################");
      }
    else Serial.println("\nZiaden prichadzajuci hovor");
    delay(1000);
  }

Príspevky: 89
Registrovaný: Uto 03. Jún 2014 21:48:35
Bydlisko: Košice Slovakia

Re: Otvaranie brany cez GSM

Poslaťod kosice4 » Uto 17. Nov 2015 19:43:58

@dzooky šikovné, dobrý nápad, niekedy použijem :D

dzooky píše:Moj prvy dokonceny projekt.
Otvaranie brany cez gsm, teda prezvonenim telefonu.
Kod (kniznice) umoznuje kontrolu prichadzajuceho hovoru
Viac pokecu u mna na blogu http://www.dzooky.eu/2015/otvaranie-brany-cez-telefon/

Kód: Vybrať všetko
#include <SoftwareSerial.h>                                     //kniznica pre seriovu komunikaciu
#include "SIM900.h"                                             //zakladna kniznica pre pracu s chipom SIM900
#include "call.h"                                               //kniznica zabezpecujuca telefonovanie

#define RELAY_ON 0                                              //zapnutie
#define RELAY_OFF 1                                             //vypnutie
#define Relay_1 2                                               //zadefinovanie pinu pre rele

CallGSM call;                                                   //trieda pre hovor

//premenne pre GSM modul
char number[10];                                                //tel cislo
char *check_number[]={"0901234567","0902345678"};               //pole telefonnych cisiel
byte stat;                                                      //stav prichadzajuceho hovoru
int call_delay = 500;                                           //dlzka pre hovor

void setup()
  {
    pinMode(Relay_1, OUTPUT);                                   //nastavenie relatka 1 ako vystup
    digitalWrite(Relay_1, RELAY_OFF);                           //vypnutie relatka
   
    Serial.begin(9600);                                         //nastavenie seriovej komunikacie
   
    //spojenie s GSM shieldom
    Serial.println("Spajanie s GSM modulom.");
    if (gsm.begin(2400))                                        //uspesna komunikacia s GSM modulom
      {
        Serial.print("\nStav: spojenie uspesne");
      }
    else
      {
        Serial.print("\nStav: spojenie neuspesne");             //komunikacia s GSM modulom sa nepodarila
      }       
  }

void loop()
  {
    if(call.CallStatus() == CALL_INCOM_VOICE)                   //zistuje ci niekto vola
      {
        for (byte i = 0; i < (sizeof(check_number)/2); i++)     //porovnava cisla
          {
            stat = call.CallStatusNumber(number,check_number[i]);
            if(stat == CALL_INCOM_VOICE_AUTH) break;            //ak sa zhoduju cisla prerusuje
          }
        delay(call_delay);                                      //caka
        call.HangUp();                                          //rusi hovor
        if(stat == CALL_INCOM_VOICE_AUTH)                       //ak volalo povolene cislo
          {
            Serial.print("\nVolalo autorizovane cislo: ");
            digitalWrite(Relay_1, RELAY_ON);                    //spajam kontakt -> otvaram branu
            delay(call_delay);                                  //drzim sekundu
            digitalWrite(Relay_1, RELAY_OFF);                   //odpajam kontakt
          }
        else                                                    //ak volalo nepovolene cislo
          {
            Serial.print("\nVolalo neautorizovane cislo: ");
          }
        Serial.print(number);
        Serial.println("\n#######################");
      }
    else Serial.println("\nZiaden prichadzajuci hovor");
    delay(1000);
  }
Ďakujem za pomoc posjirka, Diego, Xeram a barado :)

Späť na Hotové projekty