• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino UNO + SIM900A
#7
Dzięki Panowie trochę z każdego kodu wykorzystałem i powstało coś takiego Smile
Coraz bliżej celu Cool
I coraz więcej się ucze Smile

Kod:
#define LED_R 4
#define LED_G 5
#define czujnik 12
#include <AltSoftSerial.h>

AltSoftSerial altSerial;

String textMessage; //Zmienna do przechowywania wiadomosci tekstowej

volatile byte stanAlarmu = 0;
bool czySMS = false;
String numer = "xxxxxxxxx";
String message = "";

void setup()
{
  Serial.begin(9600);
  Serial.println("---------- START SYSTEMU -----------");
  altSerial.begin(9600);
  altSerial.print(F("AT+CMGF=1\r")); // ustawienie gsm na text mode
  delay(100);
  altSerial.print(F("AT+CNMI=2,2,0,0,0\r"));
  delay(100);

  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT);
  pinMode(czujnik, INPUT);

  digitalWrite(LED_R,LOW);
  digitalWrite(LED_G,LOW); 

}

void loop()
{
  unsigned long ms = millis();    
  char c;
  while (Serial.available()) {
    c = Serial.read();
    altSerial.write(c);
  }
  altSerial.flushOutput();

  while (altSerial.available()) {
    c = altSerial.read();
    textMessage = altSerial.readString();
    textMessage.toUpperCase();
    Serial.print(c);
    Serial.print(textMessage);
    }
      
  if(textMessage.indexOf(F("ALARM_ON"))>=0){
    Serial.println(F("Alarm ON"));
    textMessage = "";
    stanAlarmu = 1;
  }
  if(textMessage.indexOf(F("ALARM_OFF"))>=0){
    Serial.println(F("Alarm OFF"));
    textMessage = "";
    stanAlarmu = 0;
  }
  if(textMessage.indexOf(F("STAN"))>=0){
    Serial.println(F("Sprawdzanie stanu alarmu"));
    switch (stanAlarmu) {
      case 0:
      message = "Alarm jest OFF";
      break;
      case 1:
      message = "Alarm jest ON";
      break;
    }  
    sendSMS(numer,message);  
    textMessage = "";
  }

  switch (stanAlarmu) {
    case 0: //czuwanie wylaczone
    Serial.println("Alarm wylaczony - brak czuwania");
    digitalWrite(LED_G,LOW);
    digitalWrite(LED_R,LOW);
    czySMS = false;
    break;

    case 1: //czuwanie wlaczone
    Serial.println("Alarm wlaczony - czuwanie");
    digitalWrite(LED_G,HIGH);
    digitalWrite(LED_R,LOW);
    czySMS = false;
    if (digitalRead(czujnik) == HIGH) {
        stanAlarmu = 2;
    }   
    break;

    case 2: // ALARM
    Serial.println("ALARM !!!");
    digitalWrite(LED_G,LOW);
    digitalWrite(LED_R,HIGH);
    if (czySMS == false){
      sendSMS(numer,"ALARM!!!");
      czySMS = true;
    }
    break; 
  }
}


void sendSMS(String phone, String message)
{
  altSerial.print("AT+CMGF=1\r\n");                        // komenda AT do wysyłania SMS
  delay(1000);
  altSerial.println("AT+CMGS=\"+48" + phone + "\"\r\n");  // numer telefonu w formacie +48xxxxxxxxx
  delay(1000);
  altSerial.println(message);                             // wiadomość
  delay(1000);
  altSerial.println((char)26);                            // komenda AT z końcem linii a ^Z, ASCII code 26
  delay(1000);
  altSerial.println();
  delay(100);
}
 
Odpowiedź
  


Wiadomości w tym wątku
Arduino UNO + SIM900A - przez hugobossbb - 11-03-2020, 21:54
RE: Arduino UNO + SIM900A - przez MERASerwis - 12-03-2020, 11:31
RE: Arduino UNO + SIM900A - przez hugobossbb - 12-03-2020, 13:21
RE: Arduino UNO + SIM900A - przez MERASerwis - 12-03-2020, 14:17
RE: Arduino UNO + SIM900A - przez hugobossbb - 15-03-2020, 16:14
RE: Arduino UNO + SIM900A - przez Agregacik - 15-03-2020, 19:13
RE: Arduino UNO + SIM900A - przez hugobossbb - 18-03-2020, 15:59

Skocz do:


Przeglądający: 1 gości