Ελεγκτής SMS που βασίζεται σε SIM800L

Ελεγκτής SMS που βασίζεται σε SIM800L

Το SIM800L V2.0 GSM/GPRS είναι μια τετραζωνική μονάδα GSM/GPRS συμβατή με το Arduino. Η μονάδα χρησιμοποιείται για την υλοποίηση λειτουργιών GSM (κλήσεις και SMS) και GPRS. Το πλεονέκτημα αυτής της μονάδας είναι η διεπαφή TTL, η οποία έχει τάση 5 V, η οποία σας επιτρέπει να τη συνδέσετε απευθείας με το Arduino ή οποιοδήποτε άλλο σύστημα με τάση τροφοδοσίας 5 V. Οι περισσότερες μονάδες GSM/GPRS στην αγορά απαιτούν συνδέσεις ρυθμιστή ή μετατροπή επιπέδου, ενώ στο SIM800L V.2 το GSM/GPRS δεν απαιτεί πρόσθετα κυκλώματα μετατροπής επιπέδου διεπαφής.

Ας δώσουμε ένα παράδειγμα έργου που χρησιμοποιεί SIM800L V.2 GSM/GPRS. Το θέμα του έργου είναι ο έλεγχος των διακοπτών χρησιμοποιώντας έναν ελεγκτή SMS. Μπορείτε εύκολα να ενεργοποιήσετε και να απενεργοποιήσετε τις περισσότερες οικιακές συσκευές του σπιτιού, όπως μια λάμα, έναν ανεμιστήρα κ.λπ.

Χαρακτηριστικά της μονάδας SIM800L V.2 GSM/GPRS


Παρακάτω είναι όλα τα τεχνικά χαρακτηριστικά της μονάδας SIM800L V.2 GSM/GPRS:
  • Σειριακή διεπαφή TTL συμβατή με μικροελεγκτές συμβατούς με 3,3V και 5V Arduino.
  • Η μονάδα SIM800L διαθέτει σειριακή διεπαφή TTL.
  • Βύσμα σύνδεσης κεραίας.
  • Υποστήριξη δικτύου: τέσσερις ζώνες 850/900/1800/1900 MHz, με δυνατότητα πραγματοποίησης κλήσεων, SMS και μεταφοράς δεδομένων με σημαντικά μειωμένη κατανάλωση μπαταρίας.
  • Διασύνδεση VDD TTL UART, ώστε να μπορείτε να συνδέσετε απευθείας MCU όπως 51MCU, ARM ή MSP430.Το βύσμα VDD χρησιμοποιείται για να ταιριάζει με την τάση TTL.
  • Μοντέλο: SIMCOM SIM800L
  • Τάση λειτουργίας: από 3,7V έως 5V.
  • διαστάσεις: 40mm x 28mm x 3mm
  • GPRS multislot class 12/10
  • Υπηρεσία πακέτων GPRS κατηγορίας Β
  • Συμμορφώνεται με τη φάση GSM 2/2+
  • Κατηγορία 4 (2 Watt @ 850/900 MHz)
  • Κατηγορία 1 (1 Watt @ 1800/1900 MHz)


Απαραίτητα υλικά


Ελεγκτής SMS που βασίζεται σε SIM800L


Θα χρειαστείς:


1. Μονάδα SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. Μονάδα ρελέ 4 καναλιών 5V.
4. Σύρματα - άλτες.
5. Τροφοδοσία 5V.
(Ενεργοί σύνδεσμοι προς το κατάστημα για αγορά)

Συναρμολόγηση και διαμόρφωση


Ελεγκτής SMS που βασίζεται σε SIM800L


Αφού συνδέσετε όλα τα στοιχεία, δημιουργήστε ένα πρόγραμμα και στη συνέχεια ανεβάστε το στο Arduino σας. Αλλά πρώτα, πρέπει να εγκαταστήσετε τη βιβλιοθήκη GPRS, την οποία μπορείτε να κατεβάσετε:

gprs.zip [28,02 Kb] (λήψεις: 887)


Κωδικός προγράμματος για το arduino


Ελεγκτής SMS που βασίζεται σε SIM800L


Αφού συνδέσετε τη μονάδα SIM800L, τη μονάδα ρελέ 4 καναλιών και το Arduino στον υπολογιστή σας, πληκτρολογήστε τον παρακάτω κωδικό και τελειώσατε.



#περιλαμβάνω 

#περιλαμβάνω

#define TIMEOUT 5000

#define ACTIVE LOW

#define OFF HIGH



byte Relay[] = {A0,A1,A2,A3};

byte StatRelay[4];

char buffNumber[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = false;

String replyNumber = "089510863958";

GPRS gprs;



void setup() {

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

pinMode(Relay[i], OUTPUT);

digitalWrite(Relay[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

ενώ(!Σειρά);

Serial.println("Ενεργοποίηση SIM800L V2 >>> Αυτόματη ανάγνωση SMS");

gprs.preInit();

καθυστέρηση (1000);

ενώ (0 != gprs.init()) {

καθυστέρηση (1000);

Serial.print("init errorrn");

}



// Διαχείριση μηνύματος σε λειτουργία ASCII

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

ERROR("ERROR:CNMI");

ΕΠΙΣΤΡΟΦΗ;

}

// Ανάγνωση εισερχόμενων SMS

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

ERROR("ERROR:CNMI");

ΕΠΙΣΤΡΟΦΗ;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Αποστολή απάντησης στον αριθμό => ");

Serial.println(buffNumber);

Serial.println("Ολοκληρώθηκε η προετοιμασία");

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

}



void loop() {

// Αλλαγή κατάστασης Ρελέ ON / OFF

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

digitalWrite(Relay[i], StatRelay[i]);

}



// Εάν υπάρχουν δεδομένα εισόδου από τη SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Αποθηκεύστε όλα τα δεδομένα στο lastCharRead, στη συνέχεια, εάν υπάρχει r ή n, ως τελικό σήμα του εισερχόμενου μηνύματος

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

String lastLine = String(currentLine);



// Εάν το τελευταίο μήνυμα +CMT υποδεικνύει ότι έφθασε νέο μήνυμα

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

Serial.println(lastLine);

nextLineIsMessage = true;

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

if (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================= ==== ================>> Λειτουργία του ελεγκτή ρελέ



//Ρελέ 1 Ελεγκτής



if (lastLine.indexOf("Relay 1 ON") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Κατάσταση Ρελέ 1 Ενεργή");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}



else if (lastLine.indexOf("Relay 1 OFF") >= 0) {

StatRelay[0] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Κατάσταση ρελέ 1 απενεργοποιημένη");

gprs.sendSMS(buffNumber, "Relay 1 Status Off");

}



//Ρελέ 2 Ελεγκτής



if (lastLine.indexOf("Relay 2 ON") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Κατάσταση Ρελέ 2 Ενεργή");

gprs.sendSMS(buffNumber, "Relay 2 Status Active");

}

else if (lastLine.indexOf("Relay 2 OFF") >= 0) {

StatRelay[1] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Κατάσταση ρελέ 2 απενεργοποιημένη");

gprs.sendSMS(buffNumber, "Relay 2 Status Off");

}



//Ελεγκτής ρελέ 3

if (lastLine.indexOf("Relay 3 ON") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Relay 3 Status Active");

gprs.sendSMS(buffNumber, "Relay 3 Status Active");

}

else if (lastLine.indexOf("Relay 3 OFF") >= 0) {

StatRelay[2] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Κατάσταση ρελέ 3 απενεργοποιημένη");

gprs.sendSMS(buffNumber, "Relay 3 Status Off");

}



//Ρελέ 4 Ελεγκτής

if (lastLine.indexOf("Relay 4 ON") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Κατάσταση Ρελέ 4 Ενεργή");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}

else if (lastLine.indexOf("Relay 4 OFF") >= 0) {

StatRelay[3] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Κατάσταση ρελέ 4 απενεργοποιημένη");

gprs.sendSMS(buffNumber, "Relay 4 Status Off");

}

nextLineIsMessage = false;

}



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



}

//Εκκαθάριση πίνακα χαρακτήρων για την επόμενη γραμμή ανάγνωσης

for ( int i = 0; i < sizeof(currentLine); ++i ) {

τρέχουσα Γραμμή[i] = (χαρακτήρας)0;

}

currentLineIndex = 0;

}

άλλο {

τρέχουσα Γραμμή[currentLineIndex++] = lastCharRead;

}

}

}



Έλεγχος συσκευής


Ελεγκτής SMS που βασίζεται σε SIM800L


Το εργαλείο λειτουργεί στέλνοντας ένα SMS στη SIM800L με μια συγκεκριμένη σειρά χαρακτήρων. Για παράδειγμα, για να ενεργοποιήσετε το ρελέ 1, χρησιμοποιήστε την εντολή «Ενεργοποίηση ρελέ 1» και για να το απενεργοποιήσετε, χρησιμοποιήστε την εντολή «Απενεργοποίηση ρελέ 1». Για τα υπόλοιπα ρελέ, οι εντολές είναι σχεδόν ίδιες, εκτός από τον αριθμό σειράς κάθε ρελέ που θέλετε να επηρεάσετε. Μετά την αυτόματη αποστολή του μηνύματος, η SIM800 θα στείλει μια απάντηση με τη μορφή μηνύματος σχετικά με την κατάσταση κάθε κάρτας SIM.

Βίντεο συναρμολόγησης, διαμόρφωσης και δοκιμής της συσκευής



Πρωτότυπο άρθρο στα αγγλικά
Σχόλιο
  • παπιγιόχαμόγελογέλιοκοκκινίζωχαμογελαστόςχαλαρός χαλαρόςχαζό χαμόγελο
    καρδιά_μάτιαφιλί_καρδιάφιλώντας_κλειστά_μάτιακοκκινισμένοςανακουφισμένοςικανοποιημένοιγκριμάτσα
    κλείσιμο ματιούκολλήσει έξω τη γλώσσα κλείνοντας το μάτι μάτικολλημένα_γλώσσα_κλειστά_μάτιαχαμογελώνταςασπασμόςκολλημένος_έξω_γλώσσακοιμάμαι
    ανήσυχοςσυνοφρυωμένοςαγωνίαανοιχτό στόμαγκριμάτσεςταραγμένοςσιωπηλός
    ανέκφραστοςαδιάφοροςιδρώτας_χαμόγελοιδρώταςαπογοητευμένος_ανακουφισμένοςκουρασμένοςπαθητικός
    απογοητευμένοςκαταραμένοςφοβερόςκρύος ιδρώταςεπιμένωκραυγήλυγμός
    Χαράέκπληκτοςκραυγήκουρασμένος_πρόσωποθυμωμένοςοργήθρίαμβος
    νυσταγμένοςναιμάσκαγυαλιά ηλίουζαλισμένος_πρόσωποδιαβολάκιsmiling_imp
    ουδέτερο_πρόσωποno_mouthαθώος
3+τρία=
Σχόλια (4)
  1. qeeeq
    #1 qeeeq Καλεσμένοι 26 Αυγούστου 2017 23:50
    0
    Ουάου! Όπως λένε, κάθε έξυπνο είναι απλό. Δεν χρειάστηκε καν να αγοράσω τίποτα, πιθανότατα όλοι έχουν ένα σωρό τέτοια σκουπίδια στο σπίτι
  2. Αλεξέι
    #2 Αλεξέι Καλεσμένοι 16 Δεκεμβρίου 2017 16:53
    0
    Δεν δουλεύει. Κατά τη μεταγλώττιση, λέει "Arduino: 1.8.5 Ωριαία έκδοση 2017/08/28 06:33 (Windows 7), Πίνακας:"Arduino/Genuino Uno"
    1. Denis
      #3 Denis Καλεσμένοι 17 Δεκεμβρίου 2017 08:11
      0
      Πρέπει να χρησιμοποιήσετε μια διαδρομή χωρίς ρωσικά γράμματα για το έργο.
  3. Αντρέι
    #4 Αντρέι Καλεσμένοι 10 Φεβρουαρίου 2019 11:54
    2
    Υπάρχουν πολλά λάθη στο σκίτσο. Δεν θα λειτουργήσει.