eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaArduino, SIM900A, SMSArduino, SIM900A, SMS
  • Data: 2018-11-25 16:59:51
    Temat: Arduino, SIM900A, SMS
    Od: "Michal M. Lechanski" <m...@d...eu> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    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ł

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: