logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

SIM800L i Arduino: Wywołanie błędu przy wysyłaniu SMS z użyciem kodu z tutoriala

wprost123 25 Sie 2021 00:17 1080 8
  • #1 19579038
    wprost123
    Poziom 9  
    Posty: 585
    Ocena: 52
    Witam.
    Chciałbym stworzyć układ, sterowany za pomocą SIM800L. W związku z tym, że wiedzę o Arduino mam niewielką, to na początek chciałem zaprogramować układ który wysyła SMS-a na wybrany numer. Posłużyłem się poniższym filmikiem i kodem



    Kod wkleiłem z tej strony[url=] https://techtotinker.blogspot.com/2020/07/tutorial-how-to-use-sim800l-gsm-module.html[/url]
    W kodzie zmieniłem nr. telefonu na który ma być wysyłana wiadomość, na mój numer, z Polskim kierunkowym.
    Niestety SMS-es się nie wysyła. Efekt na monitorze portu jest taki jak na screenie, w porównaniu do efektu jaki uzyskał autor filmiku.
    SIM800L i Arduino: Wywołanie błędu przy wysyłaniu SMS z użyciem kodu z tutoriala

    Kod ze strony z tutorialem.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 19580267
    janek_wro
    Poziom 29  
    Posty: 1281
    Pomógł: 123
    Ocena: 291
    wprost123 napisał:
    Niestety SMS-es się nie wysyła.
    a podajesz mu z terminala duze S i enter? bo mi wygląda że w ogóle nie wykonuje funkcji sendSMS()
  • #3 19580507
    wprost123
    Poziom 9  
    Posty: 585
    Ocena: 52
    janek_wro napisał:
    wprost123 napisał:
    Niestety SMS-es się nie wysyła.
    a podajesz mu z terminala duze S i enter? bo mi wygląda że w ogóle nie wykonuje funkcji sendSMS()


    Po wpisaniu S + Enter też niestety nie wysyła. Poniżej screen z monitora portu.
    Nie wiem, czy SIM800L działa poprawnie- czy łączy się siecią, bo miga 6 razy co pół sekundy, potem ok 2-3 s przerwy i następnie 7 mignięć co ok 1s. Przeczytałem gdzieś, że może to być wynik zbyt słabego zasilacza, ale mój ma 8V, 1,7A, obniżone przez przetwornicę do 3,9V. Gdy wcześniej - przed programowaniem podłączałem SIM800L tylko do zasilania, to dioda migała (po chwili) chyba co ok 2 lub 3 sekundy, czyli tak jak miga po zalogowaniu do sieci.

    SIM800L i Arduino: Wywołanie błędu przy wysyłaniu SMS z użyciem kodu z tutoriala

    Dodano po 33 [minuty]:

    wprost123 napisał:
    mój (zasilacz) ma 8V, 1,7A, obniżone przez przetwornicę do 3,9V.


    Okazało się, że co prawda na wyjściu z przetwornicy było 3,9V ale na stykach przy SIM800L było już tylko 3,2V. Podkręciłem więc potencjometrem przetwornicy tak, że mam na wejściu do Arduino 4,7V a na stykach przy SIM800L ok 3,9V i działa :) Po wpisaniu S + Enter, wysłał się SMS.
    W dalszych planach jest powiadomienie X osób- numerów SMS em gdy nacisnę przycisk przy Arduino. Ma to służyć jako informator o tym, że przyszedł catering. Żeby recepcjonistka nie musiała dzwonić po 10 pokojach, tylko nacisnąć guzik.
  • #4 19580540
    janek_wro
    Poziom 29  
    Posty: 1281
    Pomógł: 123
    Ocena: 291
    wprost123 napisał:
    Okazało się, że co prawda na wyjściu z przetwornicy było 3,9V ale na stykach przy SIM800L było już tylko 3,2V. Podkręciłem więc potencjometrem przetwornicy tak, że mam na wejściu do Arduino 4,7V a na stykach przy SIM800L ok 3,9V i działa
    takimi manewrami to coś zabijesz wcześniej czy później. Zrób tam stabilne połączenia zasilania, lutowane. Żadnych płytek stykowych, breadboardów, itp
  • Pomocny post
    #5 19581332
    Lucek20
    Poziom 6  
    Posty: 593
    Pomógł: 2
    Ocena: 119
    Dodaj kondensator 2200uf lub większy, możesz dolutować go do sim800, obniż napięcie do zalecanego.
  • #7 19599957
    wprost123
    Poziom 9  
    Posty: 585
    Ocena: 52
    Teraz pytanie trudniejsze. Chciałbym, żeby SMS wysyłał się na kilka numerów telefonów. Proszę o podpowiedź jak zmodyfikować kod.
    Najłatwiej to powielić funkcję sendSMS, dodać jej kolejny numer oraz numer telefonu na który ma wysłać SMS-a.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jednak chciałbym, zrobić to jakoś lepiej, nie kopiować np. 10 razy tej samej funkcji. Proszę o podpowiedzi.
    Czy dobrze myślę, że można użyć tu jakoś tablicy z numerami telefonów i pętli for? Sprawdziłem, że program nie potrzebuje znaku + przed numerem telefonu żeby wysłać SMS-a, więc chyba można użyć tablicy i zmiennej typu long- z uwagi na długość numeru tel.

    Tylko jak to zapisać ??
    mySerial.println("AT+CMGS=\"+48.........\"\r");
    W tej linijce chyba nie można wpisać "i" zamiast numeru telefonu (gdzie i odpowiadałoby numerowi tel. z tablicy) bo tutaj chyba musi być już wpisany numer w formie cyfr.
  • #8 19600070
    janek_wro
    Poziom 29  
    Posty: 1281
    Pomógł: 123
    Ocena: 291
    wprost123 napisał:
    Jednak chciałbym, zrobić to jakoś lepiej, nie kopiować np. 10 razy tej samej funkcji. Proszę o podpowiedzi
    funkcje modyfikujesz tak by przyjmowała argument, tj nr tel do wysylki. W ten sposob wywołujesz ją wielokrotnie w pętli, za każdym razem wywołana z innym argumentem.
    wprost123 napisał:
    Czy dobrze myślę, że można użyć tu jakoś tablicy z numerami telefonów i pętli for?
    dokładnie tak.
    wprost123 napisał:
    zmiennej typu long
    można i tak, tylko pamiętaj o konwersji do char[] zanim użyjesz dla serial
  • #9 19601600
    wprost123
    Poziom 9  
    Posty: 585
    Ocena: 52
    Dodałem tablicę z numerami i w funkcji sendSMS() zamiast jednego-stałego numeru, chciałbym mieć kolejny nr. z tablicy.
    Niestety nie działa. Jak powinien poprawnie wyglądać kod z pętlą do wpisywania numerów telefonów?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Oryginalnie fragment kodu z numerem telefonu w funkcji sendSMS () wyglądał tak
    mySerial.println("AT+CMGS=\"48518.......\"\r");

Podsumowanie tematu

✨ Użytkownik próbował skonfigurować moduł SIM800L z Arduino do wysyłania SMS-ów, korzystając z tutorialu. Po wprowadzeniu numeru telefonu i uruchomieniu kodu, SMS-y nie były wysyłane. Problemy z zasilaniem SIM800L, które miało zbyt niskie napięcie, zostały zidentyfikowane jako przyczyna. Po zwiększeniu napięcia do 3,9V, SMS-y zaczęły być wysyłane poprawnie. Użytkownik planuje rozszerzyć funkcjonalność, aby wysyłać SMS-y do wielu numerów, co wymaga modyfikacji kodu. Otrzymał porady dotyczące stabilizacji zasilania oraz optymalizacji kodu poprzez użycie tablicy numerów telefonów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA