Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

SIM 800L z Arduino jako sterownik urządzenia.

tadeusz11-11 10 Gru 2017 12:21 747 27
  • #1 10 Gru 2017 12:21
    tadeusz11-11
    Poziom 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
    SIM 800L z Arduino jako sterownik urządzenia.
    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.
    SIM 800L z Arduino jako sterownik urządzenia.
    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.
    SIM 800L z Arduino jako sterownik urządzenia.
    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).

    0 27
  • #2 10 Gru 2017 12:49
    czasnagli
    Poziom 16  

    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.

    0
  • #3 10 Gru 2017 17:33
    22053
    Usunięty  
  • #4 10 Gru 2017 18:52
    tadeusz11-11
    Poziom 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?

    0
  • #5 10 Gru 2017 20:18
    czasnagli
    Poziom 16  

    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.

    0
  • #6 10 Gru 2017 20:27
    22053
    Usunięty  
  • #7 10 Gru 2017 21:02
    czasnagli
    Poziom 16  

    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.

    0
  • #8 10 Gru 2017 21:56
    tadeusz11-11
    Poziom 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 .

    0
  • #10 12 Gru 2017 17:50
    tadeusz11-11
    Poziom 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.

    0
  • #12 12 Gru 2017 20:01
    czasnagli
    Poziom 16  

    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.

    0
  • #13 13 Gru 2017 20:01
    tadeusz11-11
    Poziom 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.

    0
  • #14 13 Gru 2017 20:27
    22053
    Usunięty  
  • #15 14 Gru 2017 10:41
    czasnagli
    Poziom 16  

    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.
    SIM 800L z Arduino jako sterownik urządzenia.

    0
  • #16 11 Sty 2018 21:16
    tadeusz11-11
    Poziom 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.

    0
  • #17 11 Sty 2018 22:29
    Jaca
    Poziom 28  

    Odpytaj moduł o dostępne zestawy znaków poprzez:

    AT+CSCS=?

    a potem spróbuj:

    AT+CSCS="UCS2"

    lub

    AT+CSCS="PCCP"

    0
  • #18 11 Sty 2018 23:16
    22053
    Usunięty  
  • #19 11 Sty 2018 23:23
    Jaca
    Poziom 28  

    R-MIK napisał:
    Pamiętaj, że kodowanie znaków spowoduje czterokrotne spuchnięcie SMS.


    Dwukrotne ;-) dla kodowania 16-bit w trybie tekstowym.

    0
  • #20 11 Sty 2018 23:34
    22053
    Usunięty  
  • #21 11 Sty 2018 23:51
    Jaca
    Poziom 28  

    Z pewnością telefon masz ustawiony na tryb "HEX".

    0
  • #22 11 Sty 2018 23:54
    22053
    Usunięty  
  • #23 12 Sty 2018 23:20
    tadeusz11-11
    Poziom 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).
    SIM 800L z Arduino jako sterownik urządzenia.SIM 800L z Arduino jako sterownik urządzenia.
    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?

    0
  • Pomocny post
    #24 13 Sty 2018 00:12
    Jaca
    Poziom 28  

    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 ?

    0
  • #25 13 Sty 2018 14:50
    tadeusz11-11
    Poziom 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.
    SIM 800L z Arduino jako sterownik urządzenia.
    Gdy go dopisałem t.j. w UCS2 ciąg 002B to urządzenie wysyła SMS z polskimi znakami diakrytycznymi.

    0
  • #27 13 Sty 2018 19:37
    tadeusz11-11
    Poziom 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.




































    '

    0
  • #28 13 Sty 2018 20:42
    czasnagli
    Poziom 16  

    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.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo