SIM800L tabanlı SMS denetleyicisi
SIM800L V2.0 GSM/GPRS, Arduino ile uyumlu dört bantlı bir GSM/GPRS modülüdür. Modül GSM (çağrılar ve SMS) ve GPRS işlevlerini uygulamak için kullanılır. Bu modülün avantajı, onu doğrudan Arduino'ya veya 5V besleme voltajına sahip başka bir sisteme bağlamanıza olanak tanıyan, 5V gerilime sahip TTL arayüzüdür. Piyasadaki çoğu GSM/GPRS modülü, regülatör bağlantıları veya seviye dönüşümü gerektirirken SIM800L V.2'de GSM/GPRS, ek arayüz seviyesi dönüşüm devreleri gerektirmez.
SIM800L V.2 GSM/GPRS kullanan bir proje örneği verelim. Projenin amacı bir SMS denetleyicisi kullanarak anahtarları kontrol etmektir. Evdeki lama, vantilatör gibi çoğu ev aletini kolaylıkla açıp kapatabilirsiniz.
SIM800L V.2 GSM/GPRS modülünün özellikleri
Aşağıda SIM800L V.2 GSM/GPRS modülünün tüm teknik özellikleri verilmiştir:
- 3.3V ve 5V Arduino uyumlu mikrodenetleyicilerle uyumlu TTL seri arayüz.
- SIM800L modülü bir TTL seri arayüzüne sahiptir.
- Anten bağlantı fişi.
- Ağ desteği: Dört bant 850/900/1800/1900 MHz, önemli ölçüde azaltılmış pil tüketimiyle arama, SMS ve veri aktarımı yapabilir.
- VDD TTL UART arayüzü, böylece 51MCU, ARM veya MSP430 gibi MCU'ları doğrudan bağlayabilirsiniz.VDD fişi TTL voltajını eşleştirmek için kullanılır.
- Modeli: SIMCOM SIM800L
- Çalışma voltajı: 3,7V'tan 5V'a;
- boyutlar: 40mm x 28mm x 3mm
- GPRS çoklu yuva sınıfı 12/10
- GPRS paket servisi sınıfı B
- GSM faz 2/2+ ile uyumludur
- Sınıf 4 (2 Watt @ 850/900 MHz)
- Sınıf 1 (1Watt @ 1800/1900MHz)
Gerekli malzemeler
İhtiyacın olacak:
1. SIM800L V.2 GSM/GPRS modülü.
2. Arduino Uno.
3. 4 Kanal 5V Röle Modülü.
4. Teller - jumperlar.
5. Güç kaynağı 5V.
(Satın alma için mağazaya olan bağlantılar aktif)
Montaj ve konfigürasyon
Tüm bileşenleri bağladıktan sonra bir program oluşturun ve ardından onu Arduino'nuza yükleyin. Ancak önce indirebileceğiniz GPRS kütüphanesini kurmanız gerekir:
gprs.zip
[28.02 Kb] (indirmeler: 887)
Arduino için program kodu
SIM800L'nizi, 4 kanallı röle modülünüzü ve Arduino'nuzu bilgisayarınıza bağladıktan sonra aşağıdaki kodu girin ve işlemi tamamlayın.
#katmak
#katmak
#define TIMEOUT 5000
#define AKTİF DÜŞÜK
#define KAPALI YÜKSEK
bayt Rölesi[] = {A0,A1,A2,A3};
bayt StatRelay[4];
char buffNumarası[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String answerNumber = "089510863958";
GPRS GPRS'i;
geçersiz kurulum() {
for(int i=0; i < 4; i++) {
pinMode(Röle[i], ÇIKIŞ);
digitalWrite(Röle[i], MATI);
StatRelay[i] = MATI;
}
Seri.begin(9600);
while(!Seri);
Serial.println("SIM800L V2'yi Etkinleştir >>> SMS'i Otomatik Olarak Oku");
gprs.preInit();
gecikme(1000);
while (0 != gprs.init()) {
gecikme(1000);
Seri.print("başlangıç hatası");
}
// Mesajı ASCII moduna yönet
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
HATA("HATA:CNMI");
geri dönmek;
}
// Gelen SMS'i oku
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
HATA("HATA:CNMI");
geri dönmek;
}
int pjg = answerNumber.length() + 1;
buffNumarası[pjg];
answerNumber.toCharArray(buffNumber,pjg);
Serial.print("Numaraya cevap gönder => ");
Serial.println(buffNumber);
Serial.println("Başlatma Tamamlandı");
Seri.println("============================================= =============== =================");
}
geçersiz döngü () {
// Durumu değiştir Röle AÇIK / KAPALI
for(int i=0; i < 4; i++) {
digitalWrite(Röle[i], StatRelay[i]);
}
// SIM800'den giriş verisi varsa
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Tüm verileri lastCharRead'e kaydedin, ardından r veya n varsa, gelen mesajın son sinyali olarak
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String(currentLine);
// Son mesaj +CMT yeni mesajın geldiğini gösteriyorsa
if (lastLine.startsWith("+CMT:")) {
Serial.println(lastLine);
nextLineIsMessage = true;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(lastLine);
// ================================================= ==== ================>> Röle Kontrol Cihazının İşlevi
//Röle 1 Kontrol Cihazı
if (lastLine.indexOf("Röle 1 AÇIK") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 1 Durumu Aktif");
gprs.sendSMS(buffNumber, "Röle 1 Durumu Aktif");
}
else if (lastLine.indexOf("Röle 1 KAPALI") >= 0) {
StatRelay[0] = MATI;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 1 Durumu Kapalı");
gprs.sendSMS(buffNumber, "Röle 1 Durumu Kapalı");
}
//Röle 2 Kontrol Cihazı
if (lastLine.indexOf("Röle 2 AÇIK") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 2 Durumu Aktif");
gprs.sendSMS(buffNumber, "Röle 2 Durumu Aktif");
}
else if (lastLine.indexOf("Röle 2 KAPALI") >= 0) {
StatRelay[1] = MATI;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 2 Durumu Kapalı");
gprs.sendSMS(buffNumber, "Röle 2 Durumu Kapalı");
}
//Röle 3 Kontrol Cihazı
if (lastLine.indexOf("Röle 3 AÇIK") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 3 Durumu Aktif");
gprs.sendSMS(buffNumber, "Röle 3 Durumu Aktif");
}
else if (lastLine.indexOf("Röle 3 KAPALI") >= 0) {
StatRelay[2] = MATI;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 3 Durumu Kapalı");
gprs.sendSMS(buffNumber, "Röle 3 Durumu Kapalı");
}
//Röle 4 Kontrol Cihazı
if (lastLine.indexOf("Röle 4 AÇIK") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 4 Durumu Aktif");
gprs.sendSMS(buffNumber, "Röle 1 Durumu Aktif");
}
else if (lastLine.indexOf("Röle 4 KAPALI") >= 0) {
StatRelay[3] = MATI;
Serial.print("Yanıt====>>>> ");
Serial.println("Röle 4 Durumu Kapalı");
gprs.sendSMS(buffNumber, "Röle 4 Durumu Kapalı");
}
nextLineIsMessage = false;
}
// ================================================= ==== ===================>>
}
// Sonraki okuma satırı için karakter dizisini temizle
for ( int i = 0; i < sizeof(currentLine); ++i ) {
akımSatırı[i] = (karakter)0;
}
currentLineIndex = 0;
}
başka {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Cihaz kontrolü
Araç, SIM800L'ye belirli bir karakter dizisini içeren bir SMS göndererek çalışır. Örneğin röle 1’i açmak için “Röle 1 AÇIK” komutunu, kapatmak için ise “Röle 1 KAPALI” komutunu kullanın. Geriye kalan röleler için komutlar, etkilemek istediğiniz her rölenin sıra numarası haricinde hemen hemen aynıdır. Mesajın otomatik olarak gönderilmesinin ardından SIM800, her SIM kartın durumu hakkında mesaj şeklinde bir yanıt gönderecektir.
Cihazın montaj, konfigürasyon ve test videosu
İngilizce orijinal makale
Benzer ana sınıflar
Özellikle ilginç
Yorumlar (4)