Ελεγκτής 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)
Απαραίτητα υλικά
Θα χρειαστείς:
1. Μονάδα SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. Μονάδα ρελέ 4 καναλιών 5V.
4. Σύρματα - άλτες.
5. Τροφοδοσία 5V.
(Ενεργοί σύνδεσμοι προς το κατάστημα για αγορά)
Συναρμολόγηση και διαμόρφωση
Αφού συνδέσετε όλα τα στοιχεία, δημιουργήστε ένα πρόγραμμα και στη συνέχεια ανεβάστε το στο Arduino σας. Αλλά πρώτα, πρέπει να εγκαταστήσετε τη βιβλιοθήκη GPRS, την οποία μπορείτε να κατεβάσετε:
gprs.zip
[28,02 Kb] (λήψεις: 887)
Κωδικός προγράμματος για το arduino
Αφού συνδέσετε τη μονάδα 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 με μια συγκεκριμένη σειρά χαρακτήρων. Για παράδειγμα, για να ενεργοποιήσετε το ρελέ 1, χρησιμοποιήστε την εντολή «Ενεργοποίηση ρελέ 1» και για να το απενεργοποιήσετε, χρησιμοποιήστε την εντολή «Απενεργοποίηση ρελέ 1». Για τα υπόλοιπα ρελέ, οι εντολές είναι σχεδόν ίδιες, εκτός από τον αριθμό σειράς κάθε ρελέ που θέλετε να επηρεάσετε. Μετά την αυτόματη αποστολή του μηνύματος, η SIM800 θα στείλει μια απάντηση με τη μορφή μηνύματος σχετικά με την κατάσταση κάθε κάρτας SIM.
Βίντεο συναρμολόγησης, διαμόρφωσης και δοκιμής της συσκευής
Πρωτότυπο άρθρο στα αγγλικά
Παρόμοια master classes
Ιδιαίτερα ενδιαφέρον
Αναβάθμιση ενός παλιού μουσικού κέντρου σε νέο με τα χέρια σας
Πώς να επαναφέρετε μια μπαταρία κατσαβιδιού
Πώς να εγκαταστήσετε μόνοι σας το Bluetooth σε οποιοδήποτε ραδιόφωνο αυτοκινήτου
Το πιο απλό ηλεκτρικό ποδήλατο DIY
Μην πετάτε το παλιό σας δοχείο - μετατρέψτε το σε power bank
Αντικατάσταση μπαταριών κατσαβιδιών
Σχόλια (4)