Kontroler SMS oparty na SIM800L

Kontroler SMS oparty na SIM800L

SIM800L V2.0 GSM/GPRS to czterozakresowy moduł GSM/GPRS kompatybilny z Arduino. Moduł służy do realizacji funkcji GSM (połączenia i SMS-y) oraz GPRS. Zaletą tego modułu jest interfejs TTL, który posiada napięcie 5V, co pozwala na bezpośrednie podłączenie go do Arduino lub dowolnego innego układu o napięciu zasilania 5V. Większość dostępnych na rynku modułów GSM/GPRS wymaga połączeń regulatorowych lub konwersji poziomów, natomiast w SIM800L V.2 GSM/GPRS nie wymaga dodatkowych układów konwersji poziomów interfejsu.

Podajmy przykład projektu wykorzystującego SIM800L V.2 GSM/GPRS. Ideą projektu jest sterowanie przełącznikami za pomocą kontrolera SMS. Z łatwością możesz włączać i wyłączać większość urządzeń gospodarstwa domowego w domu, takich jak lama, wentylator i tak dalej.

Charakterystyka modułu SIM800L V.2 GSM/GPRS


Poniżej znajdują się wszystkie parametry techniczne modułu SIM800L V.2 GSM/GPRS:
  • Interfejs szeregowy TTL kompatybilny z mikrokontrolerami kompatybilnymi z Arduino 3,3 V i 5 V.
  • Moduł SIM800L posiada interfejs szeregowy TTL.
  • Wtyczka do podłączenia anteny.
  • Obsługa sieci: cztery pasma 850/900/1800/1900 MHz, umożliwiające wykonywanie połączeń, SMS-ów i transferu danych przy znacznie zmniejszonym zużyciu baterii.
  • Interfejs VDD TTL UART, dzięki czemu można bezpośrednio podłączyć MCU, taki jak 51MCU, ARM lub MSP430.Wtyczka VDD służy do dopasowania napięcia TTL.
  • Model: SIMCOM SIM800L
  • Napięcie robocze: od 3,7 V do 5 V;
  • wymiary: 40mm x 28mm x 3mm
  • Klasa wieloslotowa GPRS 12/10
  • Klasa usługi pakietowej GPRS B
  • Zgodny z fazą GSM 2/2+
  • Klasa 4 (2 W przy 850/900 MHz)
  • Klasa 1 (1 wat przy 1800/1900 MHz)


Niezbędne materiały


Kontroler SMS oparty na SIM800L


Będziesz potrzebował:


1. Moduł SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. 4-kanałowy moduł przekaźnikowy 5 V.
4. Przewody - zworki.
5. Zasilanie 5V.
(Linki aktywne do sklepu, w którym można dokonać zakupu)

Montaż i konfiguracja


Kontroler SMS oparty na SIM800L


Po podłączeniu wszystkich komponentów utwórz program, a następnie prześlij go do Arduino. Najpierw jednak musisz zainstalować bibliotekę GPRS, którą możesz pobrać:

gprs.zip [28,02 Kb] (pobrań: 887)


Kod programu dla Arduino


Kontroler SMS oparty na SIM800L


Po podłączeniu SIM800L, 4-kanałowego modułu przekaźnikowego i Arduino do komputera, wprowadź poniższy kod i gotowe.



#włączać 

#włączać

#zdefiniuj TIMEOUT 5000

#zdefiniuj AKTYWNY NISKI

#zdefiniuj WYŁ. WYSOKI



bajt Przekaźnik[] = {A0,A1,A2,A3};

bajt StatRelay[4];

char numer wzmocnienia [20];

char currentLine[500] = "";

int bieżącyIndeksLinii = 0;

bool nextLineIsMessage = fałsz;

String AnswerNumber = "089510863958";

GPRS;



unieważnij konfigurację() {

for(int i=0; i < 4; i++) {

pinMode(Przekaźnik[i], WYJŚCIE);

digitalWrite(Przekaźnik[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

podczas gdy(!Serial);

Serial.println("Aktywuj SIM800L V2 >>> Automatycznie czytaj SMS");

gprs.preInit();

opóźnienie (1000);

while (0 != gprs.init()) {

opóźnienie (1000);

Serial.print("Błąd inicjowania");

}



// Zarządzaj wiadomościami w trybie ASCII

if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {

BŁĄD("BŁĄD:CNMI");

powrót;

}

// Czytaj przychodzące SMS-y

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {

BŁĄD("BŁĄD:CNMI");

powrót;

}

int pjg = numer_odpowiedzi.długość() + 1;

buffNumber[pjg];

AnswerNumber.toCharArray(buffNumber,pjg);

Serial.print("Wyślij odpowiedź na numer => ");

Serial.println(Numer buffu);

Serial.println("Inicjalizacja zakończona");

Serial.println("============================================= =============== ================");

}



pusta pętla() {

// Zmień status Przekaźnik WŁ./WYŁ

for(int i=0; i < 4; i++) {

digitalWrite(Przekaźnik[i], Przekaźnik Stat[i]);

}



// Jeśli są dane wejściowe z SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Zapisz wszystkie dane w lastCharRead, a następnie, jeśli jest r lub n, jako końcowy sygnał przychodzącej wiadomości

if (lastCharRead == 'r' || lastCharRead == 'n') {

String lastLine = String(bieżąca linia);



// Jeśli ostatnia wiadomość +CMT wskazuje, że nadeszła nowa wiadomość

if (lastLine.startsWith("+CMT:")) {

Serial.println(ostatnia linia);

nextLineIsMessage = true;

} else if (lastLine.length() > 0) {

if (nextLineIsMessage) {

Serial.println(ostatnia linia);



// ================================================ ==== ================>> Funkcja kontrolera przekaźnika



//Kontroler przekaźnika 1



if (lastLine.indexOf("Przekaźnik 1 WŁ.") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 1 aktywny");

gprs.sendSMS(buffNumber, "Status przekaźnika 1 aktywny");

}



else if (lastLine.indexOf("Przekaźnik 1 WYŁ.") >= 0) {

Przekaźnik statystyczny[0] = MATI;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 1 wyłączony");

gprs.sendSMS(buffNumber, "Status przekaźnika 1 wyłączony");

}



//Kontroler przekaźnika 2



if (lastLine.indexOf("Przekaźnik 2 WŁ.") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 2 aktywny");

gprs.sendSMS(buffNumber, "Status przekaźnika 2 aktywny");

}

else if (lastLine.indexOf("Przekaźnik 2 WYŁ.") >= 0) {

Przekaźnik statystyczny[1] = MATI;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 2 wyłączony");

gprs.sendSMS(buffNumber, "Status przekaźnika 2 wyłączony");

}



//Kontroler przekaźnika 3

if (lastLine.indexOf("Przekaźnik 3 WŁ.") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 3 aktywny");

gprs.sendSMS(buffNumber, "Status przekaźnika 3 aktywny");

}

else if (lastLine.indexOf("Przekaźnik 3 WYŁ.") >= 0) {

Przekaźnik statystyczny[2] = MATI;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 3 wyłączony");

gprs.sendSMS(buffNumber, "Status przekaźnika 3 wyłączony");

}



//Kontroler przekaźnika 4

if (lastLine.indexOf("Przekaźnik 4 WŁ.") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 4 aktywny");

gprs.sendSMS(buffNumber, "Status przekaźnika 1 aktywny");

}

else if (lastLine.indexOf("Przekaźnik 4 WYŁ.") >= 0) {

Przekaźnik Stat[3] = MATI;

Serial.print("Odpowiedź====>>>> ");

Serial.println("Stan przekaźnika 4 wyłączony");

gprs.sendSMS(buffNumber, "Status przekaźnika 4 wyłączony");

}

nextLineIsMessage = fałsz;

}



// ================================================ ==== ===================>>



}

//Wyczyść tablicę znaków dla następnej linii odczytu

for ( int i = 0; i < sizeof(bieżąca linia); ++i ) {

bieżącaLinia[i] = (znak)0;

}

bieżącyIndeksLinii = 0;

}

w przeciwnym razie {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Kontrola urządzenia


Kontroler SMS oparty na SIM800L


Narzędzie działa w ten sposób, że wysyła wiadomość SMS do karty SIM800L o określonej sekwencji znaków. Przykładowo, aby włączyć przekaźnik 1 należy użyć komendy „Przekaźnik 1 WŁ.”, a aby go wyłączyć komendą „Przekaźnik 1 WYŁ”. W przypadku pozostałych przekaźników polecenia są prawie takie same, z wyjątkiem numeru kolejnego każdego przekaźnika, na który chcesz wpływać. Po automatycznym wysłaniu wiadomości SIM800 wyśle ​​odpowiedź w postaci komunikatu o stanie każdej karty SIM.

Film przedstawiający montaż, konfigurację i testowanie urządzenia



Oryginalny artykuł w języku angielskim
Wróć
Komentarz
  • muszkauśmiechśmiać sięrumieniecbuźkazrelaksowany zrelaksowanyuśmiech
    oczy_sercacałowanie_sercacałowanie_zamkniętych_oczyzarumienionyodciążonyzadowolonaszeroki uśmiech
    puścić oczkozatrzymany_out_tongue_winking_eyezatrzymany_out_tongue_closed_eyesuśmiechając sięcałowanieutknął_na_językuspanie
    zmartwionymarszcząc brwiudręczonyotwarte ustakrzywiąc sięzdezorientowanyuciszony
    bezwyrazowybez rozbawieniapot_uśmiechpotrozczarowany_ulgazmęczonybierny
    zawiedzionyzmieszanystraszliwyzimny potwytrwaćpłakaćszloch
    radośćzdziwionykrzykzmęczona_twarzzływściekłośćtriumf
    sennymniammaskaokulary słonecznezawroty głowychochlikuśmiechnięty_imp
    neutralna_twarzbez ustniewinny
3+trzy=
Komentarze (4)
  1. qeeq
    #1 qeeq Goście 26 sierpnia 2017 23:50
    0
    Wow! Jak mówią, wszystko genialne jest proste. Nawet nie musiałem nic kupować, pewnie każdy ma w domu stos takich śmieci
  2. Aleksiej
    #2 Aleksiej Goście 16 grudnia 2017 16:53
    0
    Nie działa. Podczas kompilacji pojawia się komunikat „Arduino: 1.8.5 Hourly Build 28.08.2017 06:33 (Windows 7), płyta:„Arduino/Genuino Uno”
    1. Denis
      #3 Denis Goście 17 grudnia 2017 08:11
      0
      Musisz użyć ścieżki do projektu bez rosyjskich liter.
  3. Andriej
    #4 Andriej Goście 10 lutego 2019 11:54
    2
    W szkicu jest mnóstwo błędów. To nie zadziała.