Informacje w porcie szeregowym arduino

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Informacje w porcie szeregowym arduino

Post autor: gintur » 17 maja 2018, 19:56

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"

Kod: Zaznacz cały

[[code]
#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]

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"
20180517_163038.jpg
Wysyłam komendę np. "WLA" i nic się nie dzieje
20180517_163140.jpg
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
20180517_172403.jpg
20180517_172457.jpg
W porcie szeregowym pokazuje się info z jakiego nr tel przychodzi sms ,data,godz. oraz komenda która faktycznie steruje wyjściami D4 i D5 ale z racji tego ,że układ jest zasilany akumulatorami przyjdzie czas ich podmiany.Układ traci zasilanie ,nastepuje wymiana akumulatorków i układ przestaje funkcjonować .Musze znowu kombinować ,wgrywać sketch ,resetować arduino itp. aż w końcu układ znowu zacznie działać .
Co może być powodem takiego działania i jak można to poprawić ?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


ODPOWIEDZ

Strony partnerskie: