eGospodarka.pl
wiadomość od św. Mikołaja

eGospodarka.plGrupypl.misc.elektronika › Arduino, SIM900A, SMS
Ilość wypowiedzi w tym wątku: 35

  • 1. Data: 2018-11-25 16:59:51
    Temat: Arduino, SIM900A, SMS
    Od: "Michal M. Lechanski" <m...@d...eu>

    Dzień dobry,

    Może ktoś z Was podpowie mi co robię źle.

    Hardware: Arduino Uno, moduł GSM SIM900A, zasilacz 5V 3.6A
    Software jak poniżej. W plikach Arduino SoftwareSerial.h i
    HardwareSerial.h zmieniona wielkość bufora RX do 256.

    Objawy - wysyłanie smsów działa (choć przyznam, że nie sprawdzałem ile
    maksymalnie znaków mogę wysłać), odbieranie działa ale odebrana
    wiadomość jest ucinana do kilkunastu znaków (poniżej przykład).
    Wysyłam dla przykładu 1234567890 powtórzone pięć razy i w msgBuffer
    otrzymuję:

    +CMT: "+XXXXXXXXXXXX","","18/11/25,15:36:19+00"
    12345678901237

    czasem ostatnia cyferka jest inna, czasem jej w ogóle nie ma, czasem
    jest jedna więcej - żadnej prawidłowości.

    Kod (właściwie to copy&paste z internetowych poradników):

    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(5, 6);

    void SendMessage(String rcpNumber, String sendMsgBody)
    {
    mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
    delay(1000); // Delay of 1000 milli seconds or 1 second
    mySerial.print("AT+CMGS=\"");
    mySerial.print(rcpNumber);
    mySerial.println("\"\r");
    delay(1000);
    mySerial.println(sendMsgBody);// The SMS text you want to send
    delay(100);
    mySerial.println((char)26);// ASCII code of CTRL+Z
    delay(1000);
    }

    void setup() {
    Serial.begin(115200);
    delay(2000);
    mySerial.begin(57600);
    delay(30000);
    mySerial.println("AT+CMGF=1");
    mySerial.println("AT+CNMI=2,2,0,0,0");
    delay(1000);
    Serial.print("End of setup");
    SendMessage("+XXXXXXXXXXXX", "End of setup");
    }

    void loop() {
    msgDetails();
    }

    void msgDetails() {
    String msgBuffer = readSIM900A();
    if (msgBuffer.startsWith("\r\n+CMT: ")) {
    Serial.println(msgBuffer);
    }
    }

    String readSIM900A() {
    String msgBuffer;
    while (mySerial.available() > 0) {
    char c = mySerial.read();
    msgBuffer.concat(c);
    delay(10);
    }
    return msgBuffer;
    }

    Pomożecie? Z góry bardzo dziękuję.

    --
    Michał


  • 2. Data: 2018-11-25 19:21:45
    Temat: Re: Arduino, SIM900A, SMS
    Od: Zbych <a...@o...pl>

    Michal M. Lechanski wrote on 25.11.2018 16:59:
    > Dzień dobry,
    >
    > Może ktoś z Was podpowie mi co robię źle.
    >
    > Hardware: Arduino Uno, moduł GSM SIM900A, zasilacz 5V 3.6A
    > Software jak poniżej. W plikach Arduino SoftwareSerial.h i
    > HardwareSerial.h zmieniona wielkość bufora RX do 256.
    >
    > Objawy - wysyłanie smsów działa (choć przyznam, że nie sprawdzałem ile
    > maksymalnie znaków mogę wysłać), odbieranie działa ale odebrana
    > wiadomość jest ucinana do kilkunastu znaków (poniżej przykład).

    Po pierwsze podłącz oscyloskop albo lepiej analizator stanów logicznych
    na linie RxD/TxD i zweryfikuj co faktycznie leci po drutach, łącznie z
    czasami trwania bitów.
    Może masz odrobinę skopaną prędkość transmisji i po kilku bajtach ci się
    rozjeżdża synchronizacja?
    Zwłaszcza jeśli używasz software'owego UARTa. Jeśli masz też włączone
    inne przerwania (timery?, inne uarty?), to na bank nie będzie to
    działało dobrze.
    AVR nie ma priorytetów przerwań i jedyne co możesz w tej sytuacji zrobić
    to zmiana procka na model z 2 UARTami.

    PS. Pamiętam też że ktoś już kiedyś skarżył się na grupie na modem
    SIMxxx, że cześć radiowa zakłócała mu komunikację po RSie, ale to
    sprawdził po upewnieniu się, że z programem jest wszystko w porządku.


  • 3. Data: 2018-11-25 19:33:54
    Temat: Re: Arduino, SIM900A, SMS
    Od: "Michal M. Lechanski" <m...@d...eu>

    W dniu 25.11.2018 o 18:21, Zbych pisze:

    > Po pierwsze podłącz oscyloskop albo lepiej analizator stanów logicznych
    > na linie RxD/TxD i zweryfikuj co faktycznie leci po drutach, łącznie z
    > czasami trwania bitów.

    Pięknie dziękuję, ale przeceniasz mnie :-)

    > Może masz odrobinę skopaną prędkość transmisji i po kilku bajtach ci się
    > rozjeżdża synchronizacja?

    Zapomniałem napisać - sprawdzałem dla różnych kombinacji prędkości i
    albo nie dostawałem nic, albo jakieś krzaczki. Ustawienia Serial i
    prędkość w okienku terminala na 115200 wydają się działać dla różnych
    prędkości SoftwareSerial. Nie wpływa to jednak na to co dostaję w msgBuffer

    > po upewnieniu się, że z programem jest wszystko w porządku.

    Jak pisałem poprzednio - mój "program" to w zasadzie copy&paste z (wielu
    różnych) internetowych poradników. Trudno mi uwierzyć, żeby wszyscy
    autorzy publikowali to bez sprawdzenia.

    Jeszcze raz bardzo dziękuję za zainteresowanie.

    --
    Michał


  • 4. Data: 2018-11-25 19:50:23
    Temat: Re: Arduino, SIM900A, SMS
    Od: Zbych <a...@o...pl>

    Michal M. Lechanski wrote on 25.11.2018 19:33:
    > W dniu 25.11.2018 o 18:21, Zbych pisze:
    >
    >> Po pierwsze podłącz oscyloskop albo lepiej analizator stanów logicznych
    >> na linie RxD/TxD i zweryfikuj co faktycznie leci po drutach, łącznie z
    >> czasami trwania bitów.
    >
    > Pięknie dziękuję, ale przeceniasz mnie :-)

    Tzn. nie masz 20...40zł na narzędzie, które pozwoli ci zweryfikować co
    się dzieje na drutach?
    https://allegro.pl/listing?string=Saleae
    https://www.aliexpress.com/w/wholesale-logic-analyze
    r.html?spm=2114.search0104.0.0.8205740boSXdhk&initia
    tive_id=SB_20181125104744&site=glo&groupsort=1&SortT
    ype=price_asc&SearchText=logic+analyzer

    >> Może masz odrobinę skopaną prędkość transmisji i po kilku bajtach ci się
    >> rozjeżdża synchronizacja?
    >
    > Zapomniałem napisać - sprawdzałem dla różnych kombinacji prędkości i
    > albo nie dostawałem nic, albo jakieś krzaczki. Ustawienia Serial i
    > prędkość w okienku terminala na 115200 wydają się działać dla różnych
    > prędkości SoftwareSerial. Nie wpływa to jednak na to co dostaję w msgBuffer

    Jeśli problemem jest programowy Uart, to tylko maksymalne obniżenie
    prędkości transmisji może cię ratować. Ale i tak najpierw musisz z
    prędkością 115200 wysłać do SIM900 komendę zmieniającą prędkość na np. 9600.


  • 5. Data: 2018-11-25 20:06:06
    Temat: Re: Arduino, SIM900A, SMS
    Od: "Michal M. Lechanski" <m...@d...eu>

    W dniu 25.11.2018 o 18:50, Zbych pisze:
    > Michal M. Lechanski wrote on 25.11.2018 19:33:
    >> W dniu 25.11.2018 o 18:21, Zbych pisze:
    >>
    >>> Po pierwsze podłącz oscyloskop albo lepiej analizator stanów logicznych
    >>> na linie RxD/TxD i zweryfikuj co faktycznie leci po drutach, łącznie z
    >>> czasami trwania bitów.
    >>
    >> Pięknie dziękuję, ale przeceniasz mnie :-)
    >
    > Tzn. nie masz 20...40zł na narzędzie, które pozwoli ci zweryfikować co
    > się dzieje na drutach?

    Nie w narzędziu problem ale w umiejętności skorzystania z takiego
    urządzenia lub interpretacji uzyskanych pomiarów.

    > Jeśli problemem jest programowy Uart, to tylko maksymalne obniżenie
    > prędkości transmisji może cię ratować. Ale i tak najpierw musisz z
    > prędkością 115200 wysłać do SIM900 komendę zmieniającą prędkość na np. 9600.

    To wydaje mi się ważne - nie pomyślałem że zadeklarowanie prędkości w
    kodzie może nie być wystarczające i że trzeba jeszcze zmienić ustawienia
    modemu... Poczytam, spróbuję.
    Dzięki za dodatkowy trop, bez względu na to dokąd mnie doprowadzi :-)

    --
    Michał


  • 6. Data: 2018-11-25 21:12:42
    Temat: Re: Arduino, SIM900A, SMS
    Od: Marek <f...@f...com>

    On Sun, 25 Nov 2018 19:21:45 +0100, Zbych <a...@o...pl> wrote:
    > PS. Pamiętam też że ktoś już kiedyś skarżył się na grupie na modem
    > SIMxxx, że cześć radiowa zakłócała mu komunikację po RSie, ale to
    > sprawdził po upewnieniu się, że z programem jest wszystko w
    > porządku.

    To ja pisałem. Faktycznie zakłócenia były tak silne, że musiałem
    prędkość obniżyć do 9600, natomiast nigdy nie udało mi się tym
    modulem (w sensie chińskiej płytki z modułem) uzyskać 100% transmisji
    bez błędów.
    A tak z ciekawości pytanie do inicjatora wątku, z jakiego zrodla
    pochodzi ten Twój sim900A? O ile pamiętam sim900a był wyłącznie na
    rynek azjatycki z simlockiem. Sam go flashowales by chodził u nas?

    --
    Marek


  • 7. Data: 2018-11-25 21:17:19
    Temat: Re: Arduino, SIM900A, SMS
    Od: "Michal M. Lechanski" <m...@d...eu>

    W dniu 25.11.2018 o 20:12, Marek pisze:

    > A tak z ciekawości pytanie do inicjatora wątku, z jakiego zrodla
    > pochodzi ten Twój sim900A? O ile pamiętam sim900a był wyłącznie na
    > rynek azjatycki z simlockiem. Sam go flashowales by chodził u nas?

    Kupiony na eBay więc pewnie z Chin, choć dostawa była z UK. I tutaj
    działa, tyle że narowiście... Czy sprzedawca coś z nim robił? Nie mam
    pojęcia.

    --
    Michał



  • 8. Data: 2018-11-25 22:48:36
    Temat: Re: Arduino, SIM900A, SMS
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sun, 25 Nov 2018 15:59:51 +0000, Michal M. Lechanski napisał(a):

    > void msgDetails() {
    > String msgBuffer = readSIM900A();
    > if (msgBuffer.startsWith("\r\n+CMT: ")) {
    > Serial.println(msgBuffer);
    > }
    > }
    >
    > String readSIM900A() {
    > String msgBuffer;
    > while (mySerial.available() > 0) {
    > char c = mySerial.read();
    > msgBuffer.concat(c);
    > delay(10);
    ^^^^^
    > }
    > return msgBuffer;
    > }

    wstaw delay(1), albo wywal kompletnie/przerob.

    Teraz ci grozi cos takiego, ze znaki stracisz, bo sie bufor przepelni.

    J.


  • 9. Data: 2018-11-25 23:10:32
    Temat: Re: Arduino, SIM900A, SMS
    Od: "Michal M. Lechanski" <m...@d...eu>

    W dniu 25.11.2018 o 21:48, J.F. pisze:
    > Dnia Sun, 25 Nov 2018 15:59:51 +0000, Michal M. Lechanski napisał(a):

    >> delay(10);
    > ^^^^^

    > wstaw delay(1), albo wywal kompletnie/przerob.
    >
    > Teraz ci grozi cos takiego, ze znaki stracisz, bo sie bufor przepelni.

    Dziękuję bardzo! Znacząca poprawa - po usunięciu delay(10), zamiast
    kilkunastu znaków z wysłanych 50, dostałem 47...

    --
    Michał


  • 10. Data: 2018-11-26 09:30:22
    Temat: Re: Arduino, SIM900A, SMS
    Od: Marek <f...@f...com>

    On Sun, 25 Nov 2018 20:17:19 +0000, "Michal M. Lechanski"
    <m...@d...eu> wrote:
    > Kupiony na eBay więc pewnie z Chin, choć dostawa była z UK. I tutaj
    > działa, tyle że narowiście... Czy sprzedawca coś z nim robił? Nie
    > mam
    > pojęcia.

    Możesz pokazać jak wygląda, jakiś link do aukcji?

    --
    Marek

strony : [ 1 ] . 2 ... 4



Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo:

Ok, rozumiem Strona wykorzystuje pliki cookies w celu prawidłowego jej działania oraz korzystania z narzędzi analitycznych, reklamowych, marketingowych i społecznościowych. Szczegóły znajdują się w Polityce Prywatności. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie. Jeśli nie chcesz, aby pliki cookies były zapisywane w pamięci Twojego urządzenia, możesz to zmienić za pomocą ustawień przeglądarki.