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.
Program:
Kod: Zaznacz cały
*
* SIM800L SMS RELAY v1.0
* Arduino Hardware (Author): Nano V3 (ATmega328)
* Arduino IDE (Author): 1.6.9
* T.K.Hareendran/2018
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10,11); // (Rx,Tx > Tx,Rx)
char incomingByte;
String inputString;
int relay = 13; // Wyjście do sterowania przekaźnikiem
void setup()
{
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW); // Stan wyjścia przekaźnikowego po uruchomieniu układu
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){
mySerial.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
mySerial.println("AT+CMGF=1"); //Ustawiamy SMSy w tryb tekstowy
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0"); //Procedura, która obsługuje nadchodzące wiadomości
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\""); // Komdenda odczytu nowych wiadomości
}
void loop()
{
if(mySerial.available()){
delay(100);
// Serial Buffer
while(mySerial.available()){
incomingByte = mySerial.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase(); // Zmiana wszystkich liter na wielkie w odebranej wiadomości
//turn RELAY ON or OFF
if (inputString.indexOf("ON") > -1){
digitalWrite(relay, HIGH);
}
if (inputString.indexOf("OFF") > -1){
digitalWrite(relay, LOW);
}
delay(50);
// Tutaj kasujemy wiadomości w modemie, aby oszczędzać pamięć
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";
}
}
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.
Wskazówki
* Karta SIM włożona musi być w slot tak, aby wystawała ściętym końcem, tak jak pokazano na zdjęciu * 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.
