Skocz do zawartości

Arduino i wysyłanie SMS, tabele numerów


Chester11-86

Pomocna odpowiedź

Witam Wszystkich,

Bardzo zainteresował mnie artykuł na forum na temat alarmu przy użyciu Arduino UNO. Rozbudowałem go sobie o swoje czujniki, oraz chciałem dodać wysyłanie SMS. Tutaj wszystko działa bardzo dobrze, według założeń ale... zapragnąłem wysyłać smsy do kilku odbiorców i tutaj zaczynają się schody. Przeszukując internet napotkałem na informację aby użyć tablicy, w której będą zapisane numery telefonów. 

Niestety nie mogę zrozumieć troszkę działania takiego programu i może dlatego raz to działa, natomiast innym razem nie.

Napisałem prosty program do wysyłania smsów, proszę o pomoc i podpowiedź gdzie popełniłem błąd, lub co źle interpretuje. Problem polega, że po uruchomieniu programu dostaje smsy na dwa numery telefonu a innym razem tylko na pierwszy wpisany numer telefonu.

#include <SoftwareSerial.h>
SoftwareSerial telefon(2, 3); //piny do których podłączamy moduł telefonu TX/RX

char*numery[2]={"123456789","987654321"};
int i=0;


void setup() {
 
pinMode(7, INPUT_PULLUP); //przycisk
telefon.begin(9600);

}
 
void loop(){
 

if (digitalRead(7) == LOW){     //jeżeli wciśnięto przycisk

for(i=0;i<2;i++)

telefon.write("AT+CMGF=1\r\n"); //przejście w tryb SMS
delay(150);
telefon.write("AT+CMGS=\""); //nr odbiorcy
delay(150);
telefon.write(numery[i]);
telefon.write("\"\r\n");
delay(150);
telefon.write("ALARM ALARM ALARM\r\n");//treść sms'a
delay(150);
telefon.write((char)26);         //koniec wiadomości
delay(150);
}

}

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Proszę bardzo 🙂 w taki sposób uzupełniłem kod:

#include <SoftwareSerial.h>
SoftwareSerial telefon(2, 3); //piny do których podłączamy telefon

char*numery[2]={"509168576","694377440"};
int i=0;


void setup() {
 
pinMode(7, INPUT_PULLUP); //pin diody wbudowanej w arduino
telefon.begin(9600);

}
 
void loop(){
 

if (digitalRead(7) == LOW){     //jeżeli wciśnięto przycisk

for(i=0;i<2;i++) {
telefon.write("AT+CMGF=1\r\n"); //przejście w tryb SMS
delay(150);
telefon.write("AT+CMGS=\""); //nr odbiorcy
delay(150);
telefon.write(numery[i]);
telefon.write("\"\r\n");
delay(150);
telefon.write("ALARM ALARM ALARM\r\n");//treść sms'a
delay(150);
telefon.write((char)26);         //koniec wiadomości
delay(150);

    }
  }
}

 

Link do komentarza
Share on other sites

(edytowany)
Dnia 29.09.2019 o 18:38, Chester11-86 napisał:

Siedzę i siedzę i nic mi nie wychodzi, podsunie ktoś jakąś podpowiedź? 🙂 

Może trochę upłynęło czasu - ale nie widzę odpowiedzi..

Nie wiem co to za dziwna mania z tymi opóźnienieniami..

Wysyłasz AT+CMGS z numerem i czekasz na odpowiedź "> ". Wtedy wysyłasz wiadomość zakończoną kodem 0x1A. I znowu czekasz na "OK". Wcześniej pojawi się jeszcze "+CMGS: xx". I dopiero wtedy wysyłasz następny SMS. Czas oczekiwania na "OK" to nawet 2 sekundy.

Edytowano przez mguc
Korekta informacji
  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.