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

Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino

tadeusz11-11 10 Gru 2017 12:21 4284 39
REKLAMA
  • #1 16880735
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Witam.
    Zbudowałem sterownik urządzenia, a konkretnie pieca CO (chociaż można tu podłączyć dowolne urządzenie a nawet samochód) poprzez telefon GSM. Pomysł nie jest mój. Korzystałem z tego pomysłu:
    voulios.blogspot.com/2016/03/sim800l-evb-arduino-nano-diagram-alarm.html
    Dodatkowo dla pomiaru temperatury użyłem kodu ze strony:
    akademia.nettigo.pl/ds18b20/
    Oczywiście programy przerobiłem dla swoich potrzeb.
    Urządzenie w formie stykowej
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
    Sprawiało mi wiele problemów. Były to problemy z logowaniem się do sieci. Jak się już zalogowało to były problemy z transmisją na UART-ie.
    W monitorze zamiast czytelnych znaków pojawiały się "krzaczki" czyli inne znaki ASCII.
    Pomiar temperatury też był nieraz całkowicie zamazany bo czujnik pokazywał temperaturę -273C.
    Projekt odłożyłem na pół roku.
    Dopiero teraz wróciłem do niego z silnym postanowieniem rozwiązania problemu.
    Zbudowałem urządzenie na PCB uniwersalnym.
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
    Poświęciłem trzy weekendy aby rozwiązać problem.
    Otóż przyczyną wszystkich problemów były zakłócenia EMI.
    Pracowałem na dwu różnych laptopach. Jeden z nich miał "uszkodzony" zasilacz. Zasilacz ów po podłączeniu do laptopa wprowadzał takie zakłócenia
    że nawet dioda LED trzymana dowolną elektrodą w ręku a drugą przyłożona do jego masy świeciła.
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
    Po wyeliminowaniu wadliwego zasilacza wszystko działa OK.
    I jeszcze jedno. Urządzenie pracuje normalnie na zasilaniu z USB . Ja jak widać na załączonym foto kupiłem zasilacz 5V 3A bo wszędzie wszyscy informują o potrzebie zapewnienia wydajności prądowej rzędu 2A. Więc informuję że u mnie urządzenie pracuje na zasilaniu z USB (via FT232RL) plus kondensator 470uF na płytce urządzenia.
    Acha na koniec info o resetowaniu urządzenia. Gdy urządzenie nie jest podpięte do usb i odłączymy zasilanie to potrzebny jest reset arduino.
    Można to wykonać ręcznie ale ja zastosowałem układ MCP 130-300 w celu automatyzacji. (Próbowałem kondensatorów ale próby nie zdały egzaminu).
  • REKLAMA
  • #2 16880813
    czasnagli
    Poziom 18  
    Posty: 684
    Pomógł: 19
    Ocena: 105
    Dobrze, że poradziłeś sobie ze wszystkimi problemami. Podpowiem Ci, że to samo, a nawet więcej można zrobić na jednym module gsm. Układ wtedy będzie prostszy i mniej awaryjny.
  • #3 16881587
    Konto nie istnieje
    Konto nie istnieje  
  • #4 16881859
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Wiem że Ameryki nie odkryłem. Ale gdybyś TY był w temacie to wiedział byś że sprzedawcy w/w modułów informują że w pierwszej kolejności sprawdzić wydajność prądową zasilania:
    Cytat:
    ZASILANIE: Moduł GSM do poprawnej pracy potrzebuje napięcie 5V o wydajności prądowej ok 2A. Tak duży prąd jest pobierany tylko chwilowo, np w momencie logowania się do sieci GSM, przy normalnej pracy układ zadawala się kilkudziesięcioma mA, a w trybie uśpienia nawet 1mA.. Dlatego jeżeli układ nie będzie odnajdywał sieci, bedzie miał problem z zalogowaniem, lub sam się resetował, w pierwszej kolejności należy sprawdzić zasilanie. Niestety żaden moduł ARDUINO zasilany z portu USB lub przez złącze zasilacza zewnętrznego, nie jest w stanie dostarczyć prądu na poziomie 2A. Dlatego zaleca się zasilanie modułu GSM z zewnętrznego źródła, do uzyskania odpowiedniego napięcia mogą być pomocne regulowane przetwornice DC/DC, np dostępny na naszych aukcjach moduł przetwornicy LM2596. . W przypadku zasilania modułu z osobnego źródła, należy pamiętać o wspólnej masie z układem który jest podłączony przez interfejs UART ( RX, TX), np ARDUINO

    Dlatego ja kupiłem nawet mocniejszy zasilacz. Ale moją intencją było poinformowanie że nie jest to warunek konieczny.

    Dodano po 3 [minuty]:

    czasnagli napisał:
    Dobrze, że poradziłeś sobie ze wszystkimi problemami. Podpowiem Ci, że to samo, a nawet więcej można zrobić na jednym module gsm. Układ wtedy będzie prostszy i mniej awaryjny.

    W którym fragmencie postu napisałem o dwóch modułach GSM ? Tak tylko sobie z ciekawości pytam?
  • #5 16882189
    czasnagli
    Poziom 18  
    Posty: 684
    Pomógł: 19
    Ocena: 105
    tadeusz11-11 napisał:
    W którym fragmencie postu napisałem o dwóch modułach GSM ? Tak tylko sobie z ciekawości pytam?
    Pisząc o jednym module gsm miałem ma myśli to, że taki sam projekt można zrobić używając tylko modułu gsm. Przekaźnik, termometr i inne peryferia podłączysz bezpośrednio do modułu gsm. ATmega wówczas nie będzie potrzebna.
  • #6 16882215
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #7 16882323
    czasnagli
    Poziom 18  
    Posty: 684
    Pomógł: 19
    Ocena: 105
    R-MIK napisał:
    Tylko jak chcesz coś zapamiętać w pamięci nieulotnej (np stan przekaźnika) to musisz się nakombinować.
    Nie jest to skomplikowane. Zrobiłem to zgodnie z Twoją podpowiedzią w innym temacie.
  • #8 16882512
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Ciekawe. .... Ja użyłem modułu GSM SIM800L EVB który komunikuje się z otoczeniem przez UART komendami AT. Proszę o info opisu jak można podłączyć do tego peryferia (bez konieczności użycia mikrokontrolera) i wymusić wysyłanie SMS-ów oraz zmianę stanu przekaznika w odpowiedzi na SMS wysłany z konkretnego mojego numeru .
  • #10 16886010
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Dzięki za to info. Fajny moduł, ale chyba w tej chwili jeszcze do eksperymentów. Więc ja jeszcze poczekam na bardziej rozwinęty soft.
  • #11 16886072
    krzysiek_krm
    Poziom 40  
    Posty: 4612
    Pomógł: 716
    Ocena: 599
    Jakby co, jest jeszcze:
    https://www.tme.eu/pl/details/g510-q50-00-ope...elte/fibocom/gsm-g510-q50-00-opencpu-version/
    który udostępnia użytkownikowi część zasobów procesora do dowolnych celów.
    Są do niego dostępne narzędzia: kompilator, itp.
    Czas jakiś temu, ktoś prezentował na elektrodzie urządzenie z tym modułem, ale był to jakiś komercyjny projekt.
  • #12 16886350
    czasnagli
    Poziom 18  
    Posty: 684
    Pomógł: 19
    Ocena: 105
    tadeusz11-11 napisał:
    Dzięki za to info. Fajny moduł, ale chyba w tej chwili jeszcze do eksperymentów. Więc ja jeszcze poczekam na bardziej rozwinęty soft.

    I tu się za Tobą nie zgodzę, ponieważ moduł ten od wielu lat używany jest w komercyjnych projektach. Dodatkowo posiada dużo gotowych skryptów.
  • #13 16888448
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    No tak, ale w linku który podałeś mi do forum o tym module jest taka informacja z 30 paź 2017 r.
    Cytat:
    Szkoda ze gosc ktory opanowal czujnik ds18b20 sie nie odezwal

    A ja go po prostu używam w moim urządzeniu i docelowo chciałbym mieć trzy na "one-wire".
    I w przypadku arduino nie ma z tym najmniejszego problemu.
  • #14 16888521
    Konto nie istnieje
    Konto nie istnieje  
  • #15 16889466
    czasnagli
    Poziom 18  
    Posty: 684
    Pomógł: 19
    Ocena: 105
    tadeusz11-11 napisał:
    No tak, ale w linku który podałeś mi do forum o tym module jest taka informacja z 30 paź 2017 r.
    Cytat:
    Szkoda ze gosc ktory opanowal czujnik ds18b20 sie nie odezwal

    A ja go po prostu używam w moim urządzeniu i docelowo chciałbym mieć trzy na "one-wire".
    I w przypadku arduino nie ma z tym najmniejszego problemu.

    Do 1-wire trzeba napisać skrypt, ale do i2c jest gotowiec. Pod i2c możesz podłączyć kilka czujników. Dane z czujników mogą być wysyłane po mqtt do smartfona.
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
  • #16 16953538
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Witam ponownie.
    Rozwijając program napotkałem problem z polskimi znakami w odpowiedziach modułu na wysłany SMS. Próbowałem polecenia AT UCS2 ale moduł ignorował te polecenie. Może użyłem złego formatu tego polecenia? Ktoś to jakoś uruchomił? Oczywiście tak naprawdę to łatwo ominąć stosując zamiast "włączony" -- "uruchomiony" i "wyłączony"-- "zatrzymany". Ale zostaje jakiś niedosyt.
  • #17 16953746
    Jaca
    Poziom 32  
    Posty: 1332
    Pomógł: 239
    Ocena: 217
    Odpytaj moduł o dostępne zestawy znaków poprzez:

    AT+CSCS=?

    a potem spróbuj:

    AT+CSCS="UCS2"

    lub

    AT+CSCS="PCCP"
  • #18 16953857
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #19 16953870
    Jaca
    Poziom 32  
    Posty: 1332
    Pomógł: 239
    Ocena: 217
    R-MIK napisał:
    Pamiętaj, że kodowanie znaków spowoduje czterokrotne spuchnięcie SMS.


    Dwukrotne ;-) dla kodowania 16-bit w trybie tekstowym.
  • REKLAMA
  • #20 16953894
    Konto nie istnieje
    Konto nie istnieje  
  • #21 16953925
    Jaca
    Poziom 32  
    Posty: 1332
    Pomógł: 239
    Ocena: 217
    Z pewnością telefon masz ustawiony na tryb "HEX".
  • #22 16953928
    Konto nie istnieje
    Konto nie istnieje  
  • #23 16956198
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Próbowałem wszystkich opcji. Ale wynik jest negatywny. Wypróbowane chyba wszystkie warianty w poleceniu CSCS są to GSM,UCS2,HEX,IRA,PCCP,PCDN,8859-1,i brak linni z poleceniem CSCS.
    W załączonych fotkach widać odpowiedź modułu SMS-em o zawartości "Format (wariant w poleceniu CSCS np,=GSM lub PCCP ) Zażółć"(słowo z polskimi znakami).
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie ArduinoProblemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
    Przy opcji UCS2 moduł wogóle nie wysyła SMS-ów.
    Przy opcji HEX wyświetla óF=!(znak funta)3/O(z dwoma kropkami)N=S

    Jakieś pomysły?
  • Pomocny post
    #24 16956292
    Jaca
    Poziom 32  
    Posty: 1332
    Pomógł: 239
    Ocena: 217
    Zrób test:

    1. Ustaw format na PDU (AT+CMGF=0)
    2. Ustaw kodowanie na UCS2
    3. Zakoduj numery telefonów, flagi i treść zawierającą polskie znaki przy użyciu dowolnego (de)kodera PDU online
    4. Wyślij przygotowany ciąg na smartfona lub na modem (wyśle sam do siebie) i zdekoduj odebrany ciąg PDU.

    Są polskie ogonki ?
  • #25 16957174
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Pomogło. Dzięki . Błąd był taki że w instrukcji komend AT do modułu SIM800 w sekcji "Send SMS using Chinese characters" przed nr. telefonu nie ma plusa.
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
    Gdy go dopisałem t.j. w UCS2 ciąg 002B to urządzenie wysyła SMS z polskimi znakami diakrytycznymi.
  • #26 16957264
    czasnagli
    Poziom 18  
    Posty: 684
    Pomógł: 19
    Ocena: 105
    tadeusz11-11 napisał:
    Gdy go dopisałem t.j. w UCS2 ciąg 002B to urządzenie wysyła SMS z polskimi znakami diakrytycznymi.

    Ten "+" dopisałeś w "UCS2", czy w "CMGS"?
    Czy w "CSCS" też można wybrać alfabet rosyjski, chiński lub arabski? Pytam, ponieważ mam problem w innym temacie --> https://www.elektroda.pl/rtvforum/topic3406674.html
  • #27 16958060
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Tak jak napisałem brak było "+" przed numerem telefonu. Czyli w poleceniu (jak widać na fotce ) AT+ CMGS=" 00310033 i.t.d. powinno być AT+CMGS="002B00310033i.t.d..
    Linia AT+CSMP=17,167,2,25 w moim programie czy była czy nie, nie zmieniała formatu wiadomości.
    Po wybraniu w komendzie AT+CSCS =UCS2 nie wybierasz alfabetów tylko zestaw 65tysięcy znaków zaczynającysię na 0020(spacja) a kończący FFFF (unknow) zawierający znaki różnych alfabetów. Wpisz w google frazę "UCS2 Code chart" a poznasz wszystkie kody.




































    '
  • #28 16958307
    czasnagli
    Poziom 18  
    Posty: 684
    Pomógł: 19
    Ocena: 105
    tadeusz11-11, dzięki za info. W przypadku wysyłania kodu USSD chyba nie ma możliwości ustawienia kodowania zwrotnego, aby wiadomość nie była po chińsku.
  • #29 16984022
    tadeusz11-11
    Poziom 10  
    Posty: 24
    Pomógł: 3
    Ocena: 3
    Witam ponownie .
    Właśnie dotarł do mnie nowy zakup z aliexpres
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
    Oczywiście według rad niektórych "fachowców" zakupiłem konwerter poziomów logicznych do tego modułu. " Bo inne wartości napięcia na UART-cie mogą doprowadzić do uszkodzenia w/w modułu podczas pracy z Arduino".
    I tu moja uwaga. Nie ma możliwości podłączenia takiego konwertera.(teoretycznie jest ale nakład pracy jest nieadekwatny do korzyści)
    Łatwiej jest bezpośrednio podłączyć dane wysyłane z modułu (TX) bezpośrednio do Arduino (RX), a odbierane w module (RX) przez dzielnik
    napięcia do wysyłanych z Arduino (TX). Dzielniki to na ogół 1do 2 ,znalezione w internecie to 1k do 2k lub 4,7k do 10k ohm. Nie testowałem tego.
    Użyłem innej opcji.
    Problemy z logowaniem SIM 800L do sieci i transmisją UART w projekcie Arduino
    Zastosowałem Arduino 3,3 V. Można je nabyć w cenie nawet niższej niż Arduino 5V.
    Do zasilania układu użyłem ogniwa 18650 o pojemności 2200mAh podłączonego do pinu "RAW" Arduino i pinu "VCC" modułu SIM800L.
    UART-y podłączyłem bezpośrednio RX->TX i TX->RX.
    Układ na oprogramawomaniu dedykowanym SIM800l EVB działa bezproblemowo.
    Moje uwagi: Układ rozpoczął działanie przy napięciu z ogniwa 4,29V. Odebrał 8 SMS-ów i wysłał 10 SMS-ów w ciągu 35 godzin.
    Ale niestety przy spadku napięcia na ogniwie do 3,9V po upływie 35 h moduł utracił połączenie z siecią. Potwierdziły to dwie próby z podobnym rezultatem.
    Po wymianie baterii na naładowaną funkcje wracały do normy.
    Moje wnioski:
    Zalecane zasilanie =5V modułu SIM 800l przez diodę na której nastąpi spadek napięcia o 0,7V do wartości 4,3V. (tak jest w niektórych projektach)
    Dane które informują że układ SIM800l działa przy napięciu 3,6V okazały się w tym przypadku niesprawdzone.
    I lepiej jest zastosowć Arduino 5V niż 3,3V ale z dzielnikiem napięcia na linii TX(Arduino)->RX (SIM) gdy jest możliwość zasilania z sieci.
  • #30 16986215
    Jaca
    Poziom 32  
    Posty: 1332
    Pomógł: 239
    Ocena: 217
    tadeusz11-11 napisał:
    Moje uwagi: Układ rozpoczął działanie przy napięciu z ogniwa 4,29V. Odebrał 8 SMS-ów i wysłał 10 SMS-ów w ciągu 35 godzin.
    Ale niestety przy spadku napięcia na ogniwie do 3,9V po upływie 35 h moduł utracił połączenie z siecią. Potwierdziły to dwie próby z podobnym rezultatem.
    Po wymianie baterii na naładowaną funkcje wracały do normy.
    Moje wnioski:
    Zalecane zasilanie =5V modułu SIM 800l przez diodę na której nastąpi spadek napięcia o 0,7V do wartości 4,3V. (tak jest w niektórych projektach)
    Dane które informują że układ SIM800l działa przy napięciu 3,6V okazały się w tym przypadku niesprawdzone.
    I lepiej jest zastosowć Arduino 5V niż 3,3V ale z dzielnikiem napięcia na linii TX(Arduino)->RX (SIM) gdy jest możliwość zasilania z sieci.


    No wcale się nie dziwię, że moduł przestaje pracować prawidłowo przy spadku napięcia na akumulatorze jeśli używasz do zasilenia modułu "kilometrów" przewodu o przekroju 0.35 mm2 lub mniej. Skróć je do niezbędnego minimum i zwiększ przekrój przewodów a moduł będzie pracował do 3.4 V. Przeczytaj w dokumentacji rozdział: "Power supply (VBAT voltage drop during transmit burst)" a wszystko stanie się jasne.

Podsumowanie tematu

✨ Użytkownik zbudował urządzenie do zdalnego sterowania piecem CO za pomocą modułu GSM SIM800L, napotykając problemy z logowaniem do sieci oraz z transmisją UART, co skutkowało nieczytelnymi danymi. Po długim okresie przerwy, wrócił do projektu, zmieniając na PCB uniwersalne. W dyskusji poruszono kwestie zasilania, filtracji, a także problemy z kodowaniem polskich znaków w SMS-ach. Użytkownicy sugerowali różne rozwiązania, w tym użycie konwerterów poziomów logicznych oraz testowanie różnych ustawień kodowania. Ostatecznie, problem z zawieszaniem się modułu po 21 dniach działania został rozwiązany po wymianie karty SIM.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA