Alarm z powiadomieniem SMS (Arduino)

Alarm z powiadomieniem SMS (Arduino)

Posiadam garaż oraz działkę i chciałbym zostać powiadomiony o sytuacji, kiedy ktoś niepowołany znajdzie się w zasięgu czujki ruchu.

Można oczywiście samemu kupić gotowe alarmy w sklepie, ale uważam, że cena oraz możliwości nie idą w parze. Postanowiłem, że stworzę coś takiego sam przy pomocy Arduino. Z uwagi że jest to mój pierwszy projekt, posiada szereg niedociągnięć i umożliwia zastosować wiele poprawek – do czego zresztą zachęcam. To jest projekt wyjściowy, pokazujący pomysł oraz możliwości jakie ma Arduino z kilkoma dodatkowymi modułami.

Możliwości zastosowania tego projektu są ogromnie – od nadzoru nad działką, garażem poprzez zabezpieczenie mieszkania na czas naszej nieobecności, na monitoringu szafki z naszymi skarbami (tam trzymam np. zestawy Arduino). Ogranicza nas tylko wyobraźnia oraz ilość modułów.

Założenia:

  • urządzenie ma pracować TYLKO na baterii
  • ma być energooszczędne i umożliwić pracę do 6 miesięcy
  • ma powiadamiać serią SMS’ów tylko na jeden numer telefonu

Seria wiadomości ma na celu wybudzenie nas np. w nocy. Często jeden SMS możemy zignorować, ale po 30’tym będziemy mieli na tyle przytomni że będziemy mogli podjąć jakieś działania. W takim przypadku, jeśli alarm będzie cały czas aktywny, niezbędne może się okazać dodanie numeru do zablokowanych, aby móc korzystać z telefonu w innych celach. Jest to wada na jaką byłem przygotowany, jeśli ktoś chce otrzymać tylko jedną wiadomość, należy zmodyfikować kod źródłowy.

Niezbędne elementy:

  • Arduino Nano V3
  • moduł SIM800L (najtańszy z dostępnych modułów GSM)
  • czujka ruchu (HC-SR501 PIR)
  • konwerter stanów logicznych
  • aktywna karta SIM
  • dowolny PowerBank (zasilamy całość 5V z USB)

Schemat całego urządzenia:

Podłączyłem już przewód, umożliwiający wykonywanie telefonów – jest to nieużywana w obecnym kodzie funkcja, ale pozostawiam to jako przyszłościowe rozszerzenie. Były o to pytania na grupie FB – czy można sprawić, aby moduł dzwonił do nas, zamiast wysyłał SMS -tak, może. Wystarczy w miejsce wysyłania wiadomości SMS lub obok niej dodać ATD+48xxxxxxx; (nie zapominajmy o znaku ; ponieważ jest on niezbędny). Komenda ATH kończy połączenie (np. po 20 sekundach).

Na samym początku powstał poniższy kod źródłowy:

Jest to bardzo prosty kod (skrytykowany już na grupie FB – jako okropny, brzydki, nieczytelny, wstrętny itd.), wykonujący przedstawione założenia. Wysyła SMS co kilka sekund jeśli czujka jest wzbudzona. Zachęcam mocno do własnoręcznego poprawiania i modyfikacji kodu źródłowego. Tym bardziej, jeśli potraficie programować i posiadanie niezbędną wiedzę oraz umiejętności – rewelacyjnie będzie, jeśli zamieścicie poprawki w uwagach.

Kod można rozbudować o reakcje na zarządzanie, obsługę SMS’ów oraz numerów uprawnionych. Zostało to bardzo fajnie przedstawione w jednym z artykułów – zachęcam do przeczytania i analizy. W moim projekcie, najważniejsza była prostota i możliwość napisania czegoś samemu. Na pewno wraz z czasem i umiejętnościami, całość ulegnie modyfikacji i przekształceniu w długi, piękny oraz funkcjonalny kod.

Czujka ruchu ma możliwość regulacji czułości oraz zasięgu – tutaj dostosujmy jej parametry do naszych potrzeb, raczej już doświadczalnie i w miejscu przeznaczenia. Zamiast czujki ruchu, można użyć innego ‚detektora obecności’.

Samego modułu Arduino Nano nie trzeba prezentować, każda z osób składająca podobne układy miała z nim do czynienia.

Maleństwo, które łączy w sobie prostotę programowania (w przeciwieństwie do Pro Mini) i możliwości UNO. Natomiast wybór modułu GSM był spowodowany jego ceną i dostępnością. Na poniższym zdjęciu coś, co przypomina antenę – choć w przypadku tego projektu i lokalizacji miejsca docelowego, całkowicie wystarczyła aby poprawnie nawiązywać połączenie z siecią GSM.

Jeśli natomiast umieszczać całość będziemy przy słabym zasięgu (np. dom na działce, itp.), zalecam podłączanie zewnętrznej anteny – moduł Sim800L posiada na szczęście takie dedykowane złącze.

Całość zestawu ostatecznie prezentuje się następująco:

Na zdjęciu nie widać użycia konwertera stanów logicznych (5V-3,3V), który jest zabezpieczeniem naszego najdroższego elementu, czyli modułu GSM. Podłączamy go pomiędzy Arduino D11 i D12 a RX i TX modułu Sim800L – inaczej musimy się liczyć z możliwością jego uszkodzenia.

Poniżej zamieszczam kod ostateczny, który usypia moduł i czeka na wzbudzenia go przez czuję ruchu.

Znaczącą różnicę widać na załączonych zdjęciach. Moduł w stanie spoczynku przed modyfikacją kodu źródłowego i użyciem biblioteki Low-Power. Jestem zaskoczony dużą oszczędnością energii, jaką można osiągnąć wyłączając niepotrzebne moduły Arduino.

oraz po modyfikacjach i jego usypianiu:

Na pierwszy rzut oka, nie jest to duża różnica – ale przy zastosowaniu innego czujnika wzbudzającego zamiast czujki ruchu (np. przycisk/czujnik), będzie to wartość w okolicy zera. Wtedy nawet niewielki PowerBank, będzie działał bardzo długi czas.

Użyte części

  • Arduino Nano – 14 zł
  • Sim800L – 32 zł
  • czujka ruchu – 5 zł
  • konwerter stanów logicznych – 4 zł

Całość wyszła w okolicy 55-60 zł

Można oczywiście zastosować jakąś gotową obudowę lub ukryć w miejscu, gdzie nie będzie się rzucało w oczy (diody świecące można zakleić czarną taśmą izolacyjną).

Ocena: 4.92/5 (głosów: 13)
Nettigo - patron działu Elektronika

Podobne posty

95 komentarzy do “Alarm z powiadomieniem SMS (Arduino)

  • Moduł GSM możesz mieć do (nie od, tylko do) 8 zł choćby neoway m590. Ma równiez funkcję wykonywania połączeń, obsługi GPRS i MMS! – jakbyś chciał wysłać fotkę. :)

    Odpowiedz
  • Chyba przekonałeś mnie do zabawy z arduino ! ;)
    Mam tylko jedno małe pytanie… wspomniałeś o konwerterze stanów logicznych, ale nie ma go na schemacie i nie widzę w projekcie. Jak byś dodał go do schematu to dał bym 6 gwiazdek a tak muszę dać tylko 5 ;)
    Pozdr.

    Odpowiedz
    • Projekt działa tak jak jest. Konwerter jest zalecany w innych projektach – więc tym bardziej go zalecam. Niestety do mnie nie doszedł jeszcze :)

      Odpowiedz
    • Odpisałem powyżej. Należy go zastosować – ale w tym schemacie i projekcie go nie użyłem – liczę się z uszkodzeniem modułu. Wtedy będę mógł napisać :) że jest niezbędny bezwzględnie.

      Odpowiedz
    • Jest to mój pierwszy kod napisany w ciągu pierwszej godziny od rozpoczęcia przygody z Arduino.
      Nakładka makro do telefonu 3in1. Używam codziennie do troszkę innych zdjęć.

      Odpowiedz
  • Udało Ci się zrealizować ten punkt „ma być energooszczędne i umożliwić pracę do 6 miesięcy” ?
    Bo przy poborze 0,0293A w uśpieniu nie widzę tego ;/ Odłączaj zasilanie modułu GSM daj przez tranzystor gdy usypiasz całość :)

    Odpowiedz
    • Obawiam się, że coś chyba źle przeliczyłem. Coś mi wychodzi 2-3 tygodnie. No dobra, odpowiednio duuuuży PowerBank. Właśnie dokonałem odzysku pewnej liczby baterii z laptopów :)

      Odpowiedz
  • Jeszcze dodam że pewna sieć (aby nie reklamować powiem tylko #FREEMIUM , jeden minus to trzeba aktywować co 6 miesięcy odnowa) daje za darmo 30 sms za free co miesiąc. Na takie potrzeby jak znalazł :) Ja używam jako 2-gą kartę w telefonie z dualsim.
    Właściwie to może też zamontuje taki alarm na działce; z małym solarem do ładowania baterii ]:)

    Odpowiedz
  • Od dłuższego czasu chciałem swoją działkę wyposażyć w podobne urządzenie. Mam co prawda alarm GSM, ale zachowuje się on czasami dziwnie i niektóre jego funkcje chciałbym zrobić sam… lepiej ;). Jeśli chodzi o wysyłanie smsów po wzbudzeniu czujki, to zalecam dodać dwustopniową weryfikację, tak aby sms był wysyłany jeśli czujka wzbudzi się dwa razy np w przeciągu 30 sekund. W przeciwnym wypadku możesz się spodziewać wielu fałszywych alarmów – chociażby od słońca zachodzącego za chmury – zależy gdzie ta czujka będzie patrzeć. Do zasilania, bo rozumiem, że prądu nie masz na miejscu, możesz rozważyć też mały panel słoneczny z ładowaniem aku.
    Również nie wydaje mi się, aby czujka ruchu ciągnęła 30mA. U mnie w alarmie czujka ruchu z modułem radiowym 433MHz na jednej baterii 9V śmiga ponad rok, więc sama czujka pobiera jakieś mikroampery raczej. Prędzej moduł GSM ciągnie tutaj najwięcej.

    Odpowiedz
    • Alarm był przewidziany do pracy tylko w pomieszczeniach zamkniętych. Jeszcze nie przewidziałem wszystkich możliwych problemów, mam nadzieję że część to Wy zgłosicie i samo możecie to przerobić :) aby działało niezawodnie.
      Tak, moduł GSM pochłania większość prądu – pracuję nad rozwiązaniem.

      Odpowiedz
  • Mam uwagę dot. kodu.

    W pierwszym kodzie uzywasz bezpośrednio nr. pinu do inicjalizacji przerwań:
    ^

    • pinMode(2, INPUT);

    //definiujemy przerwanie, obsługujące alarm
    attachInterrupt(digitalPinToInterrupt(2),alarm,RISING);*
    ^

    Natomiast w drugim podczas wykonania attachInterrupt podajesz bezpośrednio wartość 0, która nie ma w sobie żadnej informacji skąd się wzięła.
    Doszukałem się w dokumentacji, że przerwanie 0 to External Interrupt Request 0 (pin D2) dlatego zgadza się to z nr. pinu 2 zdefiniowanego jako wakeUpPin.
    Wydaje mi się, że dla czytelności kodu w tym miejscu powinieneś jednak użyć digitalPinToInterrupt(wakuUpPin), co oczywiście zostanie przeliczone wewnętrznie na wartość 0, ale ułatwi czytanie kodu.

    Odpowiedz
  • Bardzo ciekawy projekt. Też mam działkę i coś takiego od dawna chodzi mi po głowie. A czy da się to rozbudować o robienie zdjęcia (podłączenie taniej kamerki) i wysyłanie MMSa na zdefiniowany numer?

    Odpowiedz
    • Mam taki zamiar. Kamerka do Arduino ma 640×480 – ale zamówię i dam znać jak wyszło. Najłatwiej będzie zdjęcie zapisywać na kartę SD i dopiero później wysłać MMS.

      Odpowiedz
  • Bawię się właśnie nad usypianiem modułu GSM. Tak jak to wcześniej już zauważyliście – obliczyłem to dla braku poboru modułu GSM, ale naprawię to i dam info jakie rozwiązanie wydaje mi się najciekawsze. Każde Wasze rozwiązanie i pomysł jest inspiracją do dalszej zabawy i poszukiwania.
    Cały projekt był moją pierwszą zabawą z Arduino, dlatego proszę o wyrozumiałość – nie udało się uniknąć błędów, ale za to zabawa z tym jest wyśmienita. Dawno nie rozwiązywałem tak przyziemnych problemów jak zasięg czujki, ile to prądu pobiera – kto się nad tym zastanawia, jeśli wszystko wszędzie jest?
    PowerBank 10000, wytrzymuje do 3 tygodni w takim stanie jak jest – praktyka na razie 1 tydzień i nie jest źle.

    Odpowiedz
      • Tak, dopiero przy 5V działa to dobrze. Ale bez konwertera poziomów logicznych 3,3V/5V :) możesz uszkodzić moduł GSM – ja się z tym liczę. Jak mi przyjdzie zamówiony konwerter, podepnę go pod układ.
        Przy 3,7V-4V układ nie zachowywał się tak jak oczekiwałem, podłączyłem 5V i dopiero można było pracować.

        Odpowiedz
  • Pomyśl o zdalnym sterowaniu systemem. Przykładowo wysyłasz SMS do Arduino, żeby dezaktywować/aktywować alarm, bo pewnie nie chcesz, żeby za każdym razem wysyłał Ci SMS-y gdy wejdziesz do garażu. Albo opcja zdalnego resetu, bo głupio jechać na działkę, żeby się okazało, że alarm wywołała przelatująca mucha, a tak po resecie, jeżeli ponownie Arduino wykryje ruch to wtedy będziesz miał pewność, że coś się dzieje faktycznie, albo mucha dalej lata :).

    Odpowiedz
  • Jeśli chcesz znacznie zejść z poborem prądu to wylutuj LEDy.
    Z samym nano można znacznie zejść z poborem ustawiając częstotliwość 8MHz na wewnętrznym oscylatorze i zasilając 3.3V przez pin 5V (pominięcie regulatora). Nawet przy usypianiu ma to dość spory wpływ.
    Zresztą do takich zabaw najlepiej używać „gołej” atmegi, bo ma mniej zbędnych (w tym przypadku) dodatków, n.p. w/w LEDów czy konwertera serial pod USB.

    Rozważ też zasilenie nano i SIM800 bezpośrednio z ogniw (3,7-4,2), bo ten ostatni jest do tego dedykowany wręcz. Każdy zbędny regulator napięcia to strata prądu.
    SIM800 na tej dedykowanej, małej antence miał u mnie żenujący poziom sygnału, musiałem dawać większe.

    Moje przykładowe pomiary zużycia prądu przez gołą m382p:
    podczas pracy:
    – 16MHz, 5V: 14.8mA
    – 8 MHz, 3.3V: 3.7mA
    – 1 MHz, 3.3V: 1.1mA
    Tryb PWR SAVE (bez ADC i BOD):
    – 16 MHz, 5V: 1.11 mA
    – 8 MHz, 3.3V: 0.25 mA

    Bawiąc się w optymalizacje udało mi się na attiny85 i NRF24L01 udało mi się zrobić urządzenie wysyłające sygnał co 2 sek, które na baterii CR2032 (ok. 210mAh) mogło działać 2-3 miesięcy.

    Odpowiedz
  • Co do aktywacji/dezaktywacji czujki w momencie przebywania na działce, mozesz zaimplementowac regulke, ze po otrzymaniu wiadomosci o danej tresci, czujka sie aktywuje – analogicznie w przypadku dezaktywacji. Na swoj telefon sciagasz sobie program SMS scheduler(android) i ustawiasz moment przeslania odpowiednich wiadomosci.

    Odpowiedz
    • Niestety jeszcze nie jest to wprowadzone – na pewno będzie. Na razie musimy sami odłączyć całość z zasilania :) podczas używania pomieszczenia. Do tego będzie dochodziło sprawdzanie numeru uprawnionego itd. Na razie to była tylko zabawa z Arduino :)

      Odpowiedz
  • Zainteresował mnie bardzo ten projekt. Chciałbym zamontować czujkę w drzwiach garażu. Najlepiej żeby jeszcze aparat robił zdjęcie osobnika i przesłał na telefon. Jestem informatykiem, nie jestem programistą tylko adminem. Kupię niezbędne elementy takie jak :
    Arduino Nano V3
    moduł SIM800L
    czujka ruchu (HC-SR501 PIR)
    aktywna karta SIM
    PowerBank
    Co jeszcze muszę kupić ? Jakie okablowanie ? Co będzie potrzebne aby to zaprogramować? Komputer mam ;).

    Nigdy czegoś takiego nie robiłem :)

    Odpowiedz
  • A mógłbyś dodać moduł aparatu ? żeby robiło np. low res zdjątka i wysyłało sms tez? zaimplemntuj kod
    ja bym dodał powerbank i mała bat słoneczna chociażby panel z tych ogrodowych lampek

    Odpowiedz
      • Kolego HERON mam jeszcze małą prośbę. Zrobiłem sobie już odpowiednie zasilanie, konwerter napięć logiki i wszystko ładnie ruszyło :)
        Niestety po jednym dniu zabawy nagle straciłem zasięg i albo coś przestawiłem w ustawieniach abo zrobiłem jakieś zwarcie do anteny. Prośba moja taka. Możesz mi omomierzem zmierzyć oporność między drutem anteny a masą? u mnie jest 1ohm i to chyba oznacza że coś jest uwalone:/
        Bardzo proszę bo nie mam jak tego sprawdzić

        Odpowiedz
        • Dopiero teraz zobaczyłem pytanie. Przyjdę do domu to sprawdzę.
          Czy modem odpisuje na polecenia? AT co odpisuje?
          Czy jest komunikacja pomiędzy Arduino a Sim800L.

          Kod do zabaw z poleceniami to:

          #include
          SoftwareSerial gsm(11, 12);
          String atCommand;
          void setup()
          {
          Serial.begin(9600);
          while (!Serial) {}
          gsm.begin(9600);
          while (!gsm) {}
          }

          void loop()
          {
          if (gsm.available()) {
          Serial.write(gsm.read());
          }
          while (Serial.available()) {
          delay(10);
          if (Serial.available() > 0)
          { char c = Serial.read();
          atCommand += c;
          }
          }
          if (atCommand.length() > 0)
          {
          gsm.println(atCommand);
          atCommand = „”;
          }
          }

          Odpowiedz
        • Rav – układ masz sprawny, tak to wygląda – i stawiam na problem z zasilaniem. Oporność jest taka sama jak na nowym układzie :) więc ok. Daj znać, czy udało Ci się rozwiązać ten problem.

          Odpowiedz
          • Zasilanie mam cały czas to samo na którym wcześniej ładnie działało. Teraz dioda miga szybko a na polecenie AT+CSQ dostaje +CSQ 0.0 czyli brak zasięgu:/ Dzięki wielkie za sprawdzenie. Czyli będę siedział i próbował.

            Odpowiedz
  • Do tego projektu dodałbym też zakres godzin przy których czujnik będzie aktywny tak żeby np. działał tylko w nocy :)

    Odpowiedz
    • Ha. Projekt tego nie zakładał :) To miało być proste i przyjemne bez ‚wodotrysków’ – połącz, odpal i działaj.
      Ale można, jeśli uznamy ten projekt jako wyjściowy – to zachęcam do modyfikacji i zmian.

      Odpowiedz
  • Robię coś podobnego i napotkałem kilka problemów których Heron chyba nie miał
    ale nie o tym tu.

    Widzę że SIM800L jest podłączony pod pin +5V ?
    Wg spec napięcie zasilania tego modułu to 3.5-4.4V, a chwilowy pobór to 2A.
    Wg danych katalogowych przez Nano nie powinno „przechodzić” więcej niż 500mA.

    Czy nie stwarza to jakichś problemów, działa? Nie grzeje się?

    Odpowiedz
    • Nie miałem z tym problemów. Na razie, podczas testów i zabawa wszystko działa poprawnie.
      Nigdy nawet nie zbliżyłem się do takiego poboru prądu – norma to 40-50mA.
      Układ przy logowaniu do sieci pobrał mi max 110mA – więc znacznie poniżej zaleceń Arduino.
      Zachęcam do testów i weryfikacji.

      Odpowiedz
  • Hej, mam pytanie mianowicie jak dokładnie podłączyć konwerter stanów logicznycznych (D11, 12 a RX, TX) na przykładzie załączonego przeze mnie schematu oraz co to jest CALL prowadzące do D3 na twym schemacie Heron. Czy chodzi o SPK- . Na tym poległem :D

    Odpowiedz
    • D3 to na Sim800L – RING
      Konwertera nie używałem jeszcze – do tej pory wszystkie układy działają poprawnie i nie zauważyłem jakichkolwiek problemów. TX to wychodzące, więc podłącz stronę 3.3V do układu GSM :) zgodnie z TX i RX, część 5V niech idzie do Arduino. Nie zapominajmy oczywiście o podłączeniu zasilania.

      Odpowiedz
  • Dziś poskładałem całość z Arduino Mini Pro – 0,016A – postęp jest. Mam już akumulator żelowy 7Ah, będę sprawdzał – tylko się naładuje. Dodatkowo, całość zaczyna przypominać ładny układ i co najważniejsze, wszystko jest wymienne – znacznie ułatwia to programowanie Arduino. To długie z przodu – mikrofon :) do dzwonienia i słuchania co się w okolicy dzieje. Jeszcze kilka modyfikacji programu i udostępnię całość.

    Odpowiedz
  • Uznałem że tak będzie mi łatwiej. Wszystkie elementy są wymienne i nie ‚tracimy’ ich, jeśli zmieni nam się koncepcja – lub układ się znudzi. Najwięcej problemów jest z programowaniem Mini Pro – a tak, wyjmujemy, programujemy i wkładamy ponownie. Działa. Kolejne projekty już w trakcie …

    Odpowiedz
  • Dobra, mój projekt z uwagi na wymaganą dłuższą pracę – został wzbogacony w mocniejsze zasilanie. Sprawdzę w praktyce ile to wytrzymuje :)

    Odpowiedz
  • Czy mógłbyś edytować swój wstawiony tekst pokazując poprawiony schemat itp? Przydało by się takie podsumowanie poprawek w samym artykule :)

    Ogólnie projekt mnie zaciekawił bardzo.

    Odpowiedz
    • Zaraz sprawdzę możliwości edycji. Mam kilka poprawek do całości i troszkę testów za sobą. Choć raczej dziś tego nie zrobię, ale jak najszybciej poprawię.

      Odpowiedz
  • Witam w dokumentacji modułu gsm pisze o tym żeby nie przekraczać 2.8V i że przy starcie moduł potrzebuje 2A. Możliwe że problemy z zadziałaniem modułu były takie ze arduino nie potrafi samo w sobie dostarczyć tyłu Amper a 5V je tylko powoli smażymy.

    Odpowiedz
    • Realne. Na razie SIM800L działa mi bardzo dobrze przy 5V. Praktycznie od miesiąca jest online, kupiłem kilka dodatkowych modułów GSM, GPS oraz różne wersje Arduino i sprawdzam jak to działa. Liczę się z uszkodzeniami – na razie poza samodzielnym rozwaleniem mini pro, reszta jest OK. W dokumentacji SIM800L pisze : „napięcie: 3.4-4.4 V ale rekomendują 4.0V” natomiast 2.8V wymaga cała reszta dotycząca komunikacji :) dlatego tam zalecany jest konwerter – chwila czasu i przyjdzie troszkę dodatkowych elementów z zagranicy to opiszę.

      Odpowiedz
  • a nie lepiej kupic od razu cos takiego: https://www.aliexpress.com/item/New-SIM800L-GPRS-GSM-Module-w-PCB-Antenna-SIM-Board-Quad-band-for-MCU-for-Arduino/32622274840.html (TTL serial interface compatible with 3.3V and 5V for MCU Microcontrollers,competible with for ) i nie trzeba wtedy zadnych konwerterow stanow logicznych. Dodatkow wszystko mozna zasilac z przetwornicy 5V. Podobno uzyty przez modul GSM przy 5V nadmiernie sie nagrzewa, czy mozesz potwierdzic ta informacje ?

    Odpowiedz
    • Ten moduł co polecasz jest super – ale mi zależało na możliwości włączania ‚podsłuchu’ – a do tego mikrofonu nie podłączysz. Co do tego zastosowanego przeze mnie – 99% czasu moduł grzecznie odpoczywa i nic nie robi – nie zauważyłem, aby cokolwiek się grzało. Postaram się zwrócić większą uwagę i dam znać, działa już długo i stabilnie, więc sprawdzę przy najbliższych odwiedzinach w garażu.

      Odpowiedz
  • Cześć wszystkim! Utknąłem w miejscu jak zamienić kod aby alarm tylko dzwonił bez wysyłania smsów… nie wiem jak dokładnie zamienić komendy… Pomożecie?

    Odpowiedz
  • Cześć …
    Zrobiłem alarm na SIM800L domowy, oparty na 3 czujkach ruchu i dwóch kontaktronach. Działa pewnie i niezawodnie ale… Mam aktualnie 3 moduły SIM800L i bawię się nimi. Chcę nauczyć się sterowania urządzeniami poprzez wysyłanie do nich sms. Zauważyłem, że mają one problem z „przyjmowaniem” kart SIM. O co dokładnie mi chodzi? Możecie mieć następującą sytuację, że moduł nie chce zalogować się do sieci lub po prostu nie widzi karty. Objawia się to szybkim miganiem diody kilka razy, potem przerwą i znów szybkim miganiem diody. Możecie spędzić dużo czasu tak jak ja na rozkminianiu co jest nie tak a wystarczy włożyć inną kartę sim, tego samego operatora i moduł się loguje po paru sekundach. Jest to frustrujące i może wkurzać. Jak już dobierzemy kartę do modułu to działa niezawodnie chociaż zauważyłem, że czasami potrafi przejść znów w trym szybkiego miganie diodą i przerwy, na tym etapie na pewno nie wyśle sms-a. W związku z tym planuję wrzucić do alarmu zegar czasu rzeczywistego, dzięki któremu będę dostawał smsy o określonej godzinie, że alarm działa. Jeśli nie dostanę takiej wiadomości to będę chciał by arduino resetowało SIM800L.

    Odpowiedz
  • evan,
    Heron napisal to na początku opisu projektu:
    Wystarczy w miejsce wysyłania wiadomości SMS lub obok niej dodać ATD+48xxxxxxx; (nie zapominajmy o znaku ; ponieważ jest on niezbędny). Komenda ATH kończy połączenie (np. po 20 sekundach).
    Zmieniłeś i nie działa?

    Odpowiedz
  • cheppeniathan,
    Próbowałeś sprawdzaś statusy SIMa? Może warto go restartować zaraz jak podaje status=2 zgodnie z tą komendą:
    AT+CPAS //podaje status, WARTO SPRAWDZAC CO NP. 60 SEK
    // 0 – READY (to accept AT commands)
    // 2 – unknown
    // 3 – ready but the ringer is active
    // 4 – ready but a call is in progress

    albo jak zgłasza problem z zerejestrowaniem sie w sieci (a to chyba Twój przypadek), popatrz w dokładny opis komendy, ja podałem tylko kilka odpowiedzi z SIMa:
    AT+CREG? //sprawdza czy SIM900 zarejestrowal sie w sieci, positive possible answers:
    //+CREG: 1,1 -registered to home network
    //+CREG: 1,2 -not registered but searching
    //+CREG: 1,5 -registered but roaming

    Sprawdzałeś moc sygnału w miejscu gdzie działa SIM?
    AT+CSQ //podaje moc sygnalu;
    //0 – najslabszy
    //31 – najmocniejszy
    //99 – nie detektowalny

    Odpowiedz
  • DaBa
    ..tak, moim zdaniem warto mieć w kodzie sprawdzenie SIM800 jakąś komendą. AT+CPAS wydaje się idealne bo jest prosta odpowiedź np. 0 czyli jest połączenie, moduł działa prawidłowo.

    Moc sygnału, tu ciekawostka, na antenie w postaci kawałka drutu z zestawu to 16,0 a na dokupionej, dedykowanej do modułu 17,0 … niewielka różnica prawda?

    Odpowiedz
    • To nie wiem skąd problemy z zarejestrowaniem w sieci. Ale doświadczenia z SIM800 nie mam. Używam Sim900 i nie zauważyłem nic co opisujesz. Urządzenie działa z kartami T-Mobile i PLAY, zarówno z PINem jak i bez. Moc sygnału 19.0.

      Odpowiedz
      • Nie wiem DaBa, czy Twój Sim900 działa w alarmie, w jaki sposób go obserwujesz. Ja mam swój w alarmie. Wracam po kilku dniach do domu i sprawdzam, czy dostaję sms-y po wejściu do mieszkania… Sprawdzam go już trochę czasu i raz zdarzyło się, że alarm działał (sygnały dźwiękowe, świetlne) ale sms-y nie były wysyłane. Zajrzałem do centralki a SIM800L był „zawieszony”, miga wtedy 7 razy szybko i potem przerwa ..tak w kółko. Nie jestem pewien co w ten sposób komunikuje natomiast jestem pewien, że tak być nie może.

        Wykorzystałem to co napisałeś, czyli komendę AT+CPAS. Zaznaczyłem w kodzie, że jeśli jedna z char to będzie dwójka to ma zresetować moduł.
        Moduł jest sprawdzany non stop w tym samym case (funkcja switch) jak sprawdzane są sygnały z czujek, bez żadnego delay czy jakiejkolwiek pętli.
        (Miałem pomysł by stworzyć pętlę, która tylko co jakiś czas sprawdzi moduł ale niestety nie umiałem tego zrobić w taki sposób by alarm działał prawidłowo.)
        W przypadku wykrycia dwójki program wchodzi do case’a gdzie ma zresetować moduł i odczekać 20 sekund. Trudno jest mi zweryfikować czy to działa w tej chwili. Poobserwuję go znów kilka tygodni i w ten sposób sprawdzę jego niezawodność.

        Odpowiedz
      • Testowalem uklad od 30 lipca. Do dzisiaj to 16 dni. Nie zauważyłem żeby SIM mrugał przez ten czas inaczej niż raz na 3 sekundy. Czyli zgłaszał że jest zarejestrowany w sieci. Podczas testu wysyłałem w kółko komendy AT:
        CPAS
        CREG?
        CSQ
        CMTE?
        SGPIO=1,1, SGPIO=1,2, SGPIO=1,3, SGPIO=1,4, SGPIO=1,5, SGPIO=1,6
        Kolejną komendę wysyłałem natychmiast po otrzymaniu odpowiedzi na poprzednią. Układ odpowiadał na ok. 60-62 komendy na sekundę. Ale zdarzało mu się, że nie odpowiadał na komendę AT w dwóch scenariuszach:
        1. przychodząca rozmowa, czyli np. 7xRING a potem NO CARRIER
        2. automatyczna synchronizacja czasu z siecią, czyli np. *PSUTTZ: 2017, 8, 13, 2, 43, 26, „+8”, 1 – widzę ten wpis raz na dobę
        W obydwu przypadkach musiałem odpuszczać czekanie na odpowiedź i wysyłać kolejna komendę AT z kolejki.

        Skłaniam się ku opinii, że albo działasz na granicy poziomu zasilania, albo nie odfiltrowujesz zakłóceń z zasilania. Mój układ był podczas testu zasilany poprzez listwę komputerową, a 5VDC (takim napięciem mam zasilać płytkę dewelperską, którą używam) uzyskuję z zasilacza montażowego 5V 10A.

        Odpowiedz
  • Hej Heron, podpisuję się że projekt super, działa i dziękuję za ładne opisanie tematu. Mam jednak gorącą prośbę o aktualizację kodu uwzględniający podłączenie mikrofonu. To fajna opcja, którą też chciałbym dodać.
    Dzieki z góry!!!
    Marek

    Odpowiedz
  • Witam,
    @Heron, dziękuję za inspirację !

    Układu używam do kontroli poprzez sms. Mój kod działa pięknie, ale niestety , moduł , który nie jest używany (gdy nie bawie sie komedami z konsoli) przez > ~ 40 min poprostu sie zawiesza. Komenda AT go budzi, ale , w tedy są tracone ustawienia z SETUP, a są to +CMGF, +CSCS i AT+CNMI, po podaniu na nowo (dzieki millis co min) wraca wszystko do normy. Rozwiązanie troche lipne , ale na obecną chwiele nie mam innego. Jakies porady Państwo macie ?

    Odpowiedz
  • Witam, bardzo fajny projekt ale mam pytanie odnośnie zapisu „\r\n” mógłby mi ktoś wytłumaczyć co oznaczają literki? Chciałbym zaznaczyć, że u mnie na zasilaniu 5V z arduino nie jest wstanie wysyłać SMS ani się komunikować z poziomu konsoli poprzez komendy AT, a jeśli dołożę osobne zasilanie 4V to wszystko działa bez zarzutów nawet radio ma wbudowane:D Jeśli chodzi o sim to u mnie działa na PLAY.
    Dzięki

    Odpowiedz
    • \r\n to znaki nowej linii i powrotu karetki ( generalnie chodzi o nową linię)

      Nic dziwnego, że ci nie działa na 5V.

      Ten moduł NIE MOŻE być zasilany napięciem 5V.
      Maksymalne napięcie zasilania to 4.2V.
      Wyższe może USZKODZIĆ UKŁAD.
      Minimalne to 3.7V więc z pinu 3.3V też się go nie da zasilić.

      Poza tym przydałoby się kilka kondensatorów filtrujących na wejściu zasilania modułu bo on pobiera dużo prądu skokami.

      Najlepszym wyjściem jeśli chodzi o zasilanie tego modułu z arduino jest regulator napięcia na 4V.
      Regulator LDO (low dropout voltage) to sobie poradzi nawet z 5V z pinu arduino.

      Można też dać regulator regulowany i zafiksować napięcie na 4V za pomocą rezystorów.

      Autorowi to chyba fartem zadziałało.

      Odpowiedz
      • Fartem – czy też nie, raczej doświadczalnie. Nie udało mi się do tej pory spalić ani jednego układu :)
        Jedyna różnica to taka, że układy Arduino były kupowane na alledrogo ;)
        Układ prezentowany na tym projekcie, działa codziennie – niezawodnie od tamtej pory.
        Zwracam uwagę – że był to mój pierwszy projekt, bazujący na potrzebie stworzenia czegoś ‚na szybko’. Wraz z wiedzą i doświadczeniem, warto kilka rzeczy poprawić – brakło mi ostatnio czasu, ale już wracam do żywych :)

        Odpowiedz
  • Modułu używam wraz z pro micro, kupionego na aliexpress. Gdy zasilałem go 5V z pinu pro micro, nie logował mi się do sieci, a jeżeli już to szybko tracił zasięg. Po podłączeniu go do pinu raw (vin), pięknie ożył i nie mam już z nim problemu, pro micro podłączone przez usb.

    Odpowiedz
  • Witam!
    Czy ktoś z doświadczonych tutaj forumowiczów może podzielić się w pełni działającym kodem tego projektu? Heron chyba ciągle na wakacjach, więc nadal nie ma kodu całościowego: uwzględniającego i oszczędzanie energii i np. podłączenie mikrofonu oczywiście z opcją zadzwonienia i posłuchania co się dzieje na obiekcie.
    Gloria i chwała temu kto to dokona.
    Pozdrowienia!
    Marek

    Odpowiedz
    • Marek, chętnie bym się podzielił, ale nie mam kodu do tego projektu. Nie używam Arduino.
      Jeżeli coś robię to na RaspberryPi albo OrangePi i używam Pythona.

      Odpowiedz
    • Wróciłem – otwarcie własnej firmy potrafi pochłonąć całkowicie. Dostałem kilka paczek z ‚hin’ i będę publikował kolejne pomysły. Poprawię to co tutaj jest i pouzupełniam. W poniedziałek będę miał już stację do lutowania oraz kilka innych ciekawostek.
      Co do mikrofonu i dzwonienia – też to wszystko dodam – chyba, że ktoś oczywiście ma już to gotowe.
      W poniedziałek wracam do żywych – i tym bardziej do zabawy z układami.

      Odpowiedz
  • Hello Heron,
    Sierpień się kończy i pogoda nieco słabsza więc może uda Ci się wrzucić aktualizację kodu? Z góry bardzo dziękuję!
    pozdrawiam,
    Marek

    Odpowiedz
  • Witam,
    Podzielę się nowym odkryciem. Jak już napisałem wcześniej, wszystko mi działa na jednym module z 5V na pro micro, zasilanym z usb lapka, bez zbednych modulatorów itp. Zakupiłem drugi taki sam moduł, też z ali i u tego samego sprzedawcy, wyglądają identycznie. Niestety, przy 5V moduł się wiesza, brak stabilnej komunikacji. Rozwiązaniem było stosowanie się do noty katalogowej, jeżeli chodzi o zasilanie, tak jak już napisał Bob.
    Teraz chcę sima uruchomić na attiny, mój kod co do attiny45 jest za duży :) brak wystarczającej pamięci. Pod ręką mam też attiny85 i tu pamięci już wystarcza, kod kompiluje się i wgrywa, ale nie wiem dla czego nie chce działać. Czyżby attiny było okrojone co do serial.gsm ?
    Uruchomił ktoś już to na attiny ?

    pozdrawiam

    Odpowiedz

Odpowiedz

anuluj

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?