Zrób to sam
Life hacki, kursy mistrzowskie, przydatne wskazówki, przepisy.
dom » Elektronika » Elektronika z Chin » 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.

Klucz nasadowy DIY

Solenie aromatycznego smalcu w domu

Ciasto wielkanocne | Zrób to sam

Metoda nauki spawania bez zużywania elektrod własnymi rękami

«Zrób to sam - własnymi rękami» - strona z ciekawymi domowymi wyrobami wykonanymi ze złomu oraz przedmiotami domowymi. Kursy mistrzowskie krok po kroku ze zdjęciami i opisami, technologiami, trikami życiowymi - wszystko, czego potrzebuje prawdziwy mistrz lub po prostu rzemieślnik do robótek ręcznych. Rzemiosło o dowolnej złożoności, duży wybór kierunków i pomysłów na kreatywność.

Polecamy przeczytać

Kody błędów pralki