• 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
Informacje w porcie szeregowym arduino
#1
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11,12);  // (Rx,Tx  > Tx,Rx)

char incomingByte;
String inputString;
int relay = 5;// Wyjście do sterowania przekaźnikiem
int relaya = 4;
void setup()
{
     pinMode(2,INPUT);
     pinMode(relay, OUTPUT);
     pinMode(relaya,OUTPUT);
     digitalWrite(relay, LOW); // Stan wyjścia przekaźnikowego po uruchomieniu układu
     digitalWrite(relaya,LOW);
     Serial.begin(9600);
     mySerial.begin(9600);
     attachInterrupt(digitalPinToInterrupt(2),alarm,RISING);
     
    while(!mySerial.available()){
       mySerial.println("AT");
       delay(1000);
       Serial.println("Connecting...");
       }
     Serial.println("Connected!");
    mySerial.write("AT+CMGF=1\r\n");
    delay(100);
   mySerial.write("AT+CMGS=\"+48xxxxxxxx[attachment=3]20180517_163038.jpg[/attachment]\"\r\n");
delay(100);
mySerial.write("START SYSTEMU");
delay(100);
mySerial.write((char)26);
delay(100);
     
     mySerial.println("AT+CMGF=1");  //Ustawiamy SMSy w tryb tekstowy
     delay(1000);  
     mySerial.println("AT+CNMI=1,2,0,0,0");  //Procedura, która obsługuje nadchodzące wiadomości  
     delay(1000);
     mySerial.println("AT+CMGL=\"REC UNREAD\""); // Komdenda odczytu nowych wiadomości
    }
    void alarm(){
mySerial.write("AT+CMGF=1\r\n");
delay(1000);
//wpisujemy numer telefonu pod który nasze urządzenie ma wysyłaś SMS
mySerial.write("AT+CMGS=\"+485xxxxxxxx\"\r\n");
delay(1000);
//treść wiadomości w przypadku alarmu
mySerial.write("ALARM");
delay(1000);
mySerial.write((char)26);
delay(1000);
}

void loop()
{  
 if(mySerial.available()){
     delay(100);

     // Serial Buffer
     while(mySerial.available()){
       incomingByte = mySerial.read();
       inputString += incomingByte;
       }

       delay(10);      

       Serial.println(inputString);
       inputString.toUpperCase(); // Zmiana wszystkich liter na wielkie w odebranej wiadomości

       //turn RELAY ON or OFF
       if (inputString.indexOf("LON") > -1){
         digitalWrite(relay, HIGH);
         }
        if (inputString.indexOf("LOFF") > -1){
         digitalWrite(relay, LOW);
         }          

       delay(50);
        if (inputString.indexOf("WLA") > -1){
         digitalWrite(relaya, HIGH);
         }
        if (inputString.indexOf("WYA") > -1){
         digitalWrite(relaya, LOW);
         }          

       delay(50);

       // Tutaj kasujemy wiadomości w modemie, aby oszczędzać pamięć
       if (inputString.indexOf("OK") == -1){
       mySerial.println("AT+CMGDA=\"DEL ALL\"");

       delay(1000);}

       inputString = "";
 }
}
[/code]
Witam.

Mam złożony układ na podstawie tego tematu

https://majsterkowo.pl/alarm-z-powiadom ... s-arduino/

dodatkowo "dorzuciłem" sterowanie smsem 2 wyjściami z arduino D4 i D5.Za pomocą komend

"WLA" stan wysoki dla D4

"WYL" stan niski dla D4

"LON" stan wysoki dla D5

"LOFF" stan niski dla

Wyjście D4 daje napięcie zasilające na czujnik PIR ma to być taki wyłącz/włącz tego "alarmu"
Wiem ,że kod jest słabiutki bo już były takie opinie ale jak na moje możliwości .....
Układ składa się z SIM800l ,konwerter poziomów logicznych,arduino nano,2 regulatory napięcia i to wszystko zasilane 2 aku Li-Ion.
Problem polega na tym ,że nie zawsze ten układ działa a ja nie wiem o co chodzi.Wgrywam w/w kod do arduino i po chwili otzrymuje smsa "START SYSTEMU
   
Wysyłam komendę np. "WLA" i nic się nie dzieje
   
Ale kiedy np. na arduino wgram jakiś tam inny kod a potem znowu wgram ten w/w no to za którymś tam razem układ DZIALA
   
   
 
Odpowiedź
  


Wiadomości w tym wątku
Informacje w porcie szeregowym arduino - przez gintur - 17-05-2018, 20:10

Skocz do:


Przeglądający: 1 gości