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
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
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
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
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
Podobne klasy mistrzowskie
Szczególnie interesujące
Komentarze (4)