Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Przekaźnik kontrolowany SMSem na module SIM800L i Arduino Nano

ghost666 19 Feb 2018 21:31 19053 2
  • Przekaźnik kontrolowany SMSem na module SIM800L i Arduino Nano
    Obecnie, w dobie prostych i niedrogich modułów GSM oraz modułów Arduino bardzo prosto skonstruować jest przekaźnik sterowany SMSem. W poniższym projekcie autor wykorzystał moduł SIM800L do odbierania wiadomości SMS. Całym systemem steruje moduł Arduino Nano V3. Układ wyposażono w jeden przekaźnik, który sterowany jest SMSem, co pozwala na zdalne włączanie i wyłączanie prądu w jakimś obwodzie z pomocą jednego SMSa.

    Spójrzmy najpierw na schemat ideowy układu - to zaledwie garstka elementów dyskretnych, obok dwóch wspomnianych modułów:

    Przekaźnik kontrolowany SMSem na module SIM800L i Arduino Nano


    Układ zasilany jest stabilizowanym napięciem 5 V z zasilacza o wydajności 1 A. Napięcie to zasila płytkę Arduino z mikrokontrolerem, a modem GSM zasilany jest napięciem 4,3 V. Większość modułów SIM800L dostępnych na rynku powinno działać bez problemu z napięciem 3,7 V, jednakże autor odkrył, że jego modem średnio działa z napięciami poniżej 4 V, stąd napięcie zasilania wynoszące 4,3 V.

    Kod programu na Arduino jest bardzo prosty. Modem nie wymaga żadnych dedykowanych bibliotek, a komunikacja z nim odbywa się poprzez prosty interfejs szeregowy. Piny RX i TX skonfigurowane są jako programowy port szeregowy, poprzez który Arduino komunikuje się z modułem SIM800L. Jest to zabieg celowy, ponieważ umożliwia podsłuchiwanie tej transmisji w celu debuggowania kodu.

    Po upewnieniu się, że wszystkie elementy połączone są poprawnie i wgraniu poniższego programu do modułu Arduino można przystąpić do uruchamiania urządzenia. W pierwszej kolejności musimy włożyć do modemu kartę SIM. Po uruchomieniu w kilka sekund karta powinna zarejestrować się w sieci - modem zasygnalizuje to mrugając co kilka (2..3) sekund diodą LED. W tym momencie możemy nacisnąć przycisk reset, aby w pełni uruchomić układ.

    Teraz wystarczy tylko wysłać SMSa na numer karty SIM. Po nadaniu SMSa o treści "ON" przekaźnik załączy się, a z kolei SMS o treści "OFF" wyłączy przekaźnik. Układ nie rozróżnia wielkich i małych liter. Przekaźnik podłączony może być do dowolnego urządzenia, jakim chcemy sterować. Pamiętajmy tylko, by nie przekraczać maksymalnego dopuszczalnego prądu i napięcia styków przekaźnika.

    Kod programu jest bardzo prosty. Oto on:

    Code: c
    Log in, to see the code


    A tak wygląda komunikacja na porcie szeregowym widziana poprzez podłączony do niego monitor w trakcie pracy układu.

    Przekaźnik kontrolowany SMSem na module SIM800L i Arduino Nano


    Przekaźnik kontrolowany SMSem na module SIM800L i Arduino Nano
    Na koniec kilka ważnych wskazówek:

    * Karta SIM włożona musi być w slot tak, aby wystawała ściętym końcem, tak jak pokazano na zdjęciu obok.
    * Moduł SIM800L potrzebuje napięcia zasilania od 3,4 V do 4,4 V i prądu od 1 do 2 A. W module nie ma ani zintegrowanego stabilizatora napięcia, ani układu translacji poziomów sygnałów - te elementy musimy dobudować samodzielnie.
    * Zasilacz musi mieć odpowiednią wydajność prądową. Jeśli napięcie nadmiernie spadnie, modem może niespodziewanie się wyłączyć lub zresetować podczas pracy.
    * Jeśli coś nie działa w przedstawionym systemie, dobrze jest wykonać twardy reset systemu.
    * Kod programu, jakkolwiek działający, wymagać może kilku poprawek itp., więc dobrze jest go prześledzić krok po kroku i ewentualnie wprowadzić własne modyfikacje. Autor (link poniżej) chętnie się dowie, jeśli popełnił w programie jakieś błędy.

    Źródło: http://www.electroschematics.com/13641/sim800l-one-channel-sms-relay/

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11695 posts with rating 9881, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • #2
    czasnagli
    Level 17  
    Dawno temu też zrobiłem podobny projekt, ale miałem dodatkowe zabezpieczenie, aby przekaźnik można było włączać/wyłączać tylko z określonego numeru telefonu. Teraz zrobiłem sterowanie przekaźnikiem w oparciu o moduł gsm Air200. Napisany skrypt umożliwia nie tylko sterowanie włącz/wyłącz, ale także sterowanie czasowe. Posiada zabezpieczenie przed niepowołanym włączeniem/wyłączeniem z innego numeru. Jest też możliwość sprawdzenia aktualnego stanu pinu oraz przywracanie wcześniej ustawionego stanu pinu po zaniku zasilania. O szczegółach można przeczytać na tej stronie https://www.elektroda.pl/rtvforum/viewtopic.php?p=17008021#17008021.

    Przekaźnik kontrolowany SMSem na module SIM800L i Arduino Nano
  • #3
    pico1
    Level 14  
    Złożyłem powyższy układad. Zamiast rezystorów dopasowujących napięcia użyłem konwertera. Wszystko fajnie działa tylko jest problem po odłączeniu napięcia. Po każdorazowym odłączeniu z prądu moduł loguje się do sieci prawidłowo wysyłam sms a układ nie odpowiada przekaźnikiem i trzeba za każdym razem wcisnąć przycisk reset . Po wciśnięciu resetu jest ok do następnego odłączenia z prądu. Można jakoś temu zaradzić ?
    Zrobiłem test odłączając tylko sim800l od napięcia . Arduino cały czas zasilony. Po ponownym zasileniu sim800l trzeba na Arduino wcisnąć reset by sms przychodził i przekaźnik się przełączał
    Zrobiłem następny test. Zasiliłem sim800l i jak się zalogował podałem napięcie na Arduino i wszystko ok.
    Ewidentnie widać że moduł musi być zalogowany przed startem Arduino.
    Tymczasowo dałem na początku kodu 30 sekund zwłoki by moduł zdążył się zalogować i to działa. Po każdym zaniku napięcia wszystko fajnie działa.
    Następny test. Zdjęta antenka modułu . Plus 30 sekund zwłoki w programie w Arduino . Załączenie napięcia. Po minucie dołożona antenka . Moduł loguje się do sieci i układ działa prawidłowo.
    Wniosek taki że moduł nie musi być zalogowany przed startem Arduino.
    Można to jakoś inaczej rozwiązać ?