בקר SMS מבוסס על SIM800L
SIM800L V2.0 GSM/GPRS הוא מודול GSM/GPRS מרובע פס התואם ל-Arduino. המודול משמש ליישום GSM (שיחות ו-SMS) ופונקציות GPRS. היתרון של מודול זה הוא ממשק TTL בעל מתח של 5V, המאפשר לחבר אותו ישירות לארדואינו או לכל מערכת אחרת עם מתח אספקה של 5V. רוב מודולי ה-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 מגה-הרץ, מסוגל לבצע שיחות, SMS והעברת נתונים עם צריכת סוללה מופחתת משמעותית.
- ממשק VDD TTL UART, כך שתוכל לחבר ישירות MCU כגון 51MCU, ARM או MSP430.תקע ה-VDD משמש כדי להתאים את מתח ה-TTL.
- דגם: SIMCOM SIM800L
- מתח הפעלה: מ-3.7V עד 5V;
- מידות: 40 מ"מ x 28 מ"מ x 3 מ"מ
- GPRS multislot class 12/10
- שירות מנות GPRS Class B
- תואם לשלב GSM 2/2+
- Class 4 (2 וואט @ 850/900 מגה-הרץ)
- Class 1 (1 וואט @ 1800/1900MHz)
חומרים נחוצים
אתה תצטרך:
1. מודול SIM800L V.2 GSM/GPRS.
2. ארדואינו אונו.
3. מודול ממסר 4 ערוצים 5V.
4. חוטים - מגשרים.
5. ספק כוח 5V.
(קישורים פעילים לחנות לרכישה)
הרכבה ותצורה
לאחר שחיברת את כל הרכיבים, צור תוכנית ולאחר מכן העלה אותה לארדואינו שלך. אבל תחילה עליך להתקין את ספריית GPRS, אותה תוכל להוריד:
gprs.zip
[28.02 Kb] (הורדות: 887)
קוד תוכנית עבור Arduino
לאחר שחיברת את ה-SIM800L, מודול ממסר 4 ערוצים ואת Arduino למחשב שלך, הזן את הקוד למטה וסיימת.
#לִכלוֹל
#לִכלוֹל
#define TIMEOUT 5000
#הגדיר 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);
while(!Serial);
Serial.println("הפעל את SIM800L V2 >>> קרא SMS אוטומטית");
gprs.preInit();
delay(1000);
while (0 != gprs.init()) {
delay(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, "מצב ממסר 1 פעיל");
}
else if (lastLine.indexOf("Relay 1 OFF") >= 0) {
StatRelay[0] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("מצב ממסר 1 כבוי");
gprs.sendSMS(buffNumber, "מצב ממסר 1 כבוי");
}
//בקר ממסר 2
if (lastLine.indexOf("Relay 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Reply====>>>> ");
Serial.println("מצב ממסר 2 פעיל");
gprs.sendSMS(buffNumber, "מצב ממסר 2 פעיל");
}
else if (lastLine.indexOf("Relay 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("מצב ממסר 2 כבוי");
gprs.sendSMS(buffNumber, "מצב ממסר 2 כבוי");
}
//בקר ממסר 3
if (lastLine.indexOf("Relay 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Reply====>>>> ");
Serial.println("מצב ממסר 3 פעיל");
gprs.sendSMS(buffNumber, "מצב ממסר 3 פעיל");
}
else if (lastLine.indexOf("Relay 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("מצב ממסר 3 כבוי");
gprs.sendSMS(buffNumber, "מצב ממסר 3 כבוי");
}
//בקר ממסר 4
if (lastLine.indexOf("Relay 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Reply====>>>> ");
Serial.println("מצב ממסר 4 פעיל");
gprs.sendSMS(buffNumber, "מצב ממסר 1 פעיל");
}
else if (lastLine.indexOf("Relay 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("מצב ממסר 4 כבוי");
gprs.sendSMS(buffNumber, "מצב ממסר 4 כבוי");
}
nextLineIsMessage = false;
}
// ============================================== ==== ====================>>
}
//נקה מערך char לשורה הבאה של קריאה
for ( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
}
אחר {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
בדיקת מכשיר
הכלי פועל באמצעות שליחת SMS ל-SIM800L עם רצף ספציפי של תווים. לדוגמה, כדי להפעיל את ממסר 1, השתמש בפקודה "ממסר 1 ON", וכדי לכבות אותו, השתמש בפקודה "ממסר 1 OFF". עבור הממסרים הנותרים, הפקודות כמעט זהות, פרט למספר הרצף של כל ממסר שאתה רוצה להשפיע. לאחר שליחת ההודעה אוטומטית, SIM800 ישלח תגובה בצורת הודעה על מצב כל כרטיס SIM.
סרטון של הרכבה, תצורה ובדיקה של המכשיר
מאמר מקורי באנגלית
כיתות אמן דומות
מעניין במיוחד
הערות (4)