בקר SMS מבוסס על SIM800L

בקר 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)


חומרים נחוצים


בקר SMS מבוסס על SIM800L


אתה תצטרך:


1. מודול SIM800L V.2 GSM/GPRS.
2. ארדואינו אונו.
3. מודול ממסר 4 ערוצים 5V.
4. חוטים - מגשרים.
5. ספק כוח 5V.
(קישורים פעילים לחנות לרכישה)

הרכבה ותצורה


בקר SMS מבוסס על SIM800L


לאחר שחיברת את כל הרכיבים, צור תוכנית ולאחר מכן העלה אותה לארדואינו שלך. אבל תחילה עליך להתקין את ספריית GPRS, אותה תוכל להוריד:

gprs.zip [28.02 Kb] (הורדות: 887)


קוד תוכנית עבור Arduino


בקר SMS מבוסס על SIM800L


לאחר שחיברת את ה-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


הכלי פועל באמצעות שליחת SMS ל-SIM800L עם רצף ספציפי של תווים. לדוגמה, כדי להפעיל את ממסר 1, השתמש בפקודה "ממסר 1 ON", וכדי לכבות אותו, השתמש בפקודה "ממסר 1 OFF". עבור הממסרים הנותרים, הפקודות כמעט זהות, פרט למספר הרצף של כל ממסר שאתה רוצה להשפיע. לאחר שליחת ההודעה אוטומטית, SIM800 ישלח תגובה בצורת הודעה על מצב כל כרטיס SIM.

סרטון של הרכבה, תצורה ובדיקה של המכשיר



מאמר מקורי באנגלית
חזור
תגובה
  • עניבת פרפרחיוךצוחקלְהַסמִיקסמיילירגוע רגועחִיוּך מְעוּשֶׂה
    עיני_לבמנשק_לבמנשקים בעיניים עצומותסמוקהקלהמרוצהלְגַחֵך
    קְרִיצָהלשון בחוץ עין קורצתלשון בחוץ עיניים סגורותמחייךמתנשקיםלשון_תקועהיָשֵׁן
    מוּדְאָגמזעיף פניםייסוריםפה פתוחמעווה את פניומְבוּלבָּלשקט
    חסר הבעהלא משועשעזיעה_חיוךלְהָזִיעַמאוכזב_מוקללְהַלאוֹתפַּסִיבִי
    מְאוּכזָבמבולבלחוֹשֵׁשׁזיעה קרהלהתמידבוכהבֶּן כַּלבָּה
    שִׂמְחָהמוּפתָעלִצְרוֹחַפנים_עייפותכּוֹעֵסזעםנצחון
    מְנוּמנָםיאמממסכהמישקפי שמשסחרחורת_פניםשֵׁדsmiling_imp
    נייטרלי_פניםאין_פהחף מפשע
3+שלוש=
הערות (4)
  1. qeeeq
    #1 qeeeq אורחים 26 באוגוסט 2017 23:50
    0
    וואו! כמו שאומרים, הכל גאוני פשוט. אפילו לא הייתי צריך לקנות כלום, כנראה שלכולם יש ערימה של זבל כזה בבית
  2. אלכסיי
    #2 אלכסיי אורחים 16 בדצמבר 2017 16:53
    0
    לא עובד. בעת הידור, כתוב "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), לוח:"Arduino/Genuino Uno"
    1. דניס
      #3 דניס אורחים 17 בדצמבר 2017 08:11
      0
      אתה צריך להשתמש בנתיב ללא אותיות רוסיות לפרויקט.
  3. אנדריי
    #4 אנדריי אורחים 10 בפברואר 2019 11:54
    2
    יש הרבה שגיאות בסקיצה. זה לא יעבוד.