اطلاعیه

Collapse
No announcement yet.

[آموزشی] کنترل رله با پیامک توسط sim800l

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

    سلام مهندس باباتبار
    خیلی ممنون بابت راهنماییتون و موفق شدم
    ولی یک مشکلی داره .من واسه استعلام شارژ از تابع strstr استفاده کردم و قشنگ جواب میده ولی یک بعضی وقت ها واسه استعلام شارژ دستور میدهم یک مشکلی پیش میاد مثلا از طرف امپراتور قطع شده یا به هردلیلی میشه به مازول پاسخ ندهد بعد اونوقت من باید چه کار کنم چون اگر پیام نیاد میکرو برای همیشه متوقف میشه و منتظر پیام استعلام شارژ هست؟؟؟

    دیدگاه


      پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

      نوشته اصلی توسط vahid951 نمایش پست ها
      سلام مهندس باباتبار
      خیلی ممنون بابت راهنماییتون و موفق شدم
      ولی یک مشکلی داره .من واسه استعلام شارژ از تابع strstr استفاده کردم و قشنگ جواب میده ولی یک بعضی وقت ها واسه استعلام شارژ دستور میدهم یک مشکلی پیش میاد مثلا از طرف امپراتور قطع شده یا به هردلیلی میشه به مازول پاسخ ندهد بعد اونوقت من باید چه کار کنم چون اگر پیام نیاد میکرو برای همیشه متوقف میشه و منتظر پیام استعلام شارژ هست؟؟؟
      سلام
      راه های زیادی وجود داره.مثلاً به جای while میتونید از حلقه for استفاده کنید.
      مثلاً ۱۰۰ بار بیاد با strstr چک کنید و بعدش یه دیلی ۵۰ میلی ثانیه ای،اینطوری اگر بعد 5 ثانیه موفق نشدید،از حلقه for خارج میشه.
      [آموزشی] کنترل رله با پیامک توسط sim800l
      [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
      [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
      [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
      صفحه اینستاگرام : ecdco_ir

      دیدگاه


        پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

        سلام
        خسته نباشید
        من میخوام با arduino و sim800l یه سری پارامتر مثل دما ،رطوبت و ... را به صورت اس ام اس ارسال کنم.
        مشکل بنده این جاست که نمیدونم چطور این پارامتر ها را به صورت منظم ارسال کنم. میخوام تو یه سطر دما را بنویسم و تو سطر بعدی میزان رطوبت و به همین صورت ادامه بدم و در اخر در قالب یه پیام ارسال کنم
        به عنوان مثال:
        temperature=" float"
        humidity=" float"
        و
        ...
        ...
        error=GSM.sendSms(number,text);
        قسمت text را باید چطور بنویسم تا برم خط بعدی
        ممنون از لطف شما
        جدیدترین ویرایش توسط arsh70; ۱۸:۴۷ ۱۳۹۷/۰۲/۲۵.

        دیدگاه


          پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

          نوشته اصلی توسط arsh70 نمایش پست ها
          ....
          error=GSM.sendSms(number,text);
          قسمت text را باید چطور بنویسم تا برم خط بعدی
          درود ، در هنگامی که دارید رشته text رو تولید میکنید ، در زمان دلخواه برای رفتن به خط بعد "n\" اضافه کنید ،

          دیدگاه


            پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

            سلام خسته نباشی
            ایا میشه تا بع strstr
            مثلا
            نوشت؟؟

            دیدگاه


              پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

              سلام ممنون از اموزش خوبتون
              من به مشکل دارم
              من میخوام هشت تا رله رو فعال کنم
              اومدم این کار رو کردم :
              pch=strstr(rx_buffer,"#on1");
              if(pch != NULL){
              PORTَََA.0=1;
              pch=NULL;
              rx_wr_index=0;
              }
              //checking off
              pch=strstr(rx_buffer,"#off");
              if(pch != NULL) {
              PORTA.0=0;
              pch=NULL;
              rx_wr_index=0;
              }

              pch=strstr(rx_buffer,"#on2");
              if(pch != NULL){
              PORTَA.1=1;
              pch=NULL;
              rx_wr_index=0;
              }
              //checking off
              pch=strstr(rx_buffer,"#off2");
              if(pch != NULL) {
              PORTA.1=0;
              pch=NULL;
              rx_wr_index=0;
              }

              و........................... تا هشت تااما متاسفانه درست بهم ج نمیده و انگار میکرو هنگ میکنه و عملیات قفل میشه
              میشه بگید چطور باید این کار رو بکنم ؟

              دیدگاه


                پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                سلام و وقت بخیر

                امکان داره برنامه بسکام هم بذارید براش؟

                دیدگاه


                  پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                  سلام خسته نباشین
                  پس pcbبرد اصلی که شامل رله هاست رو نزاشتین؟

                  دیدگاه


                    پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                    سلام. یک سوال دارم. در صورتی که با روش text mode بخواهیم پیامک فارسی ارسال کنیم باید به جای کد gsm از کد hexاستفاده کنیم و معادل هگز کاراکترهای فارسی را در متن پیام ارسال کنیم. سوالم این است که در سمت گیرنده چطور می توان زبان متن ارسال شده (hex or gsm) را تشخیص داد؟ ممنون از راهنماییتان

                    دیدگاه


                      پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                      باسلام و خسته نباشید جناب آقای بابا تبار من آنتن ماژولم 31هست ولی نه سیم کارت همراه اول میخونه و نه ایرانسل مشکلش چیه؟؟ میشه راهنماییم کنین ممنون

                      دیدگاه


                        پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                        سلام
                        در مورد کنترلر سیمکارتی
                        Delay از قسمت کنترل رله ها تایم نمیگیره چرا؟
                        ممنون میشم کسی منو*از طریق تلگرام با واتساپ راهنمایی بکنه
                        ۰۹۳۹۲۵۳۲۴۸۳

                        دیدگاه


                          پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                          سلام بابت آموزش خوبتون خیلی ممنونم
                          من این پروژه رو با چهار تا رله بستم و جوابم گرفتم بعد یه lcd اضافه کردم که وضعیت رله هارو نشون بده ولی اونم هیچی نشون نداد ، بعد که lcd رو حذف کردم ولی همون مدار قبلی کار نکرد ، میکرو که سالمه ماژولم زنگ میزنم بوق میخوره ولی نه sms میفرسته نه رله های خروجی رو میتونم کنترل کنم ، لطفا راهنمایی کنین که چیکار کنم مدار مثل قبل کار کنه
                          جدیدترین ویرایش توسط Minashahbazi; ۰۱:۱۲ ۱۳۹۸/۰۵/۲۸.

                          دیدگاه


                            پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                            سلام
                            عین کد رو در میکرو atmega16 قرار دادم ولی عملی انجام نمیشود .
                            اسیلاتور خارجی 8 مگاهرتز قرار دادم .آیا مشکل از اسیلاتور هستش که مقدارش 8 مگا هرتزه؟
                            ممنون
                            جدیدترین ویرایش توسط korosh00; ۲۱:۳۸ ۱۳۹۸/۰۸/۱۷.

                            دیدگاه


                              پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                              سلام عزیزان
                              کد زیر مربوط میشه به پروژه کنترل رله با استفاده از sim800l از طریق پیام کوتاه
                              این برنامه به خوبی جواب می دهد منتهی میخواهم
                              1-یک ساعت فرمان خودکار هفتگی یا ماهانه اجرای خودکار رله ها را به برنامه اضافه کنم راهنمایی بفرمایید.
                              2- ساعت را از طریق اپراتورها update کنم
                              و...
                              ملزومات:
                              1-آردینو هر مدل ( UNOتست شده)
                              2-ماژول Sim800L برد قرمز
                              3-ماژول کاهندهLM2596S
                              4- ماژول رله 1 تا 8 کانال
                              5- یک جعبه مناسب که داخلش قرار بدهیم

                              اقلام 1 الی 4 جمعا حدود 150000 تومان هزینه دارد(arduino UNO,Relay 8Channel)
                              در صورتی که تمایل به کوچکترین توسعه در برنامه را دارید باید از آردینو مگا و یا ESP32 استفاده بشه به دلیل محدودیت در حافظه آردینو UNO
                              کد:
                              Global variables use 1721 bytes (84%) of dynamic memory, leaving 327 bytes for local variables. Maximum is 2048 bytes.
                              کد:
                              //Sim800l(8,7)(RX,TX)
                              // pin OUTPUT to Relay(A0, A1, A2, A3 , 2, 3, 4, 5)
                              
                              #include <gprs.h>
                              #include <softwareserial.h>
                              
                              
                              #define TIMEOUT    5000
                              #define Ron LOW
                              #define Roff HIGH
                              
                              byte Relay[] = {A0, A1, A2, A3, 2, 3, 4, 5};
                              
                              byte StatRelay[8];
                              char buffNumber[20];
                              String replyNumber = "09120000000";
                              GPRS gprs;
                              
                              void setup() {
                              
                                for (int i = 0; i < 8; i++) {
                                  pinMode (Relay[i] , OUTPUT);
                                  digitalWrite (Relay[i], Roff);
                                  StatRelay[i] = Roff;
                                }
                              
                                Serial.begin(9600);
                                while (!Serial);
                                Serial.println("Starting SIM800 SMS Command Processor>>> Automatically Read SMS");
                                gprs.preInit();
                                delay(1000);
                              
                                while (0 != gprs.init()) {
                                  delay(1000);
                                  Serial.print("init error\r\n");
                                }
                              
                                //Set SMS mode to ASCII
                                if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT)) {
                                  ERROR("ERROR:CNMI");
                                  return;
                                }
                              
                                //Start listening to New SMS Message Indications
                                if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT)) {
                                  ERROR("ERROR:CNMI");
                                  return;
                                }
                              
                                int pjg = replyNumber.length() + 1;
                              
                                buffNumber[pjg];
                                replyNumber.toCharArray(buffNumber, pjg);
                                //Serial.print("Send reply to number = > ");
                                //Serial.println(buffNumber);
                                //Serial.println("Initialization Done");
                                //Serial.println("=============================================================");
                              }
                              
                              //Variable to hold last line of serial output from SIM800
                              char currentLine[500] = "";
                              int currentLineIndex = 0;
                              
                              //Boolean to be set to true if message notificaion was found and next
                              //line of serial output is the actual SMS message content
                              bool nextLineIsMessage = false;
                              
                              
                              
                              void loop() {
                              
                                // Change status Relay ON / OFF
                                for (int i = 0; i < 8; i++) {
                                  digitalWrite(Relay[i], StatRelay[i]);
                                }
                              
                                //If there is serial output from SIM800
                                if (gprs.serialSIM800.available()) {
                                  char lastCharRead = gprs.serialSIM800.read();
                                  //Read each character from serial output until \r or \n is reached (which denotes end of line)
                                  if (lastCharRead == '\r' || lastCharRead == '\n') {
                                    String lastLine = String(currentLine);
                                    lastLine.toUpperCase(); // Uppercase the Received Message FOR Non-case-sensitivity
                              
                                    //If last line read +CMT, New SMS Message Indications was received.
                                    //Hence, next line is the message content.
                                    if (lastLine.startsWith("+CMT:")) {
                              
                                      Serial.println(lastLine);
                                      nextLineIsMessage = true;
                              
                                    } else if (lastLine.length() > 0) {
                              
                                      if (nextLineIsMessage) {
                              
                                        Serial.println(lastLine);
                              
                                        //Relay 1 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R1 OFF") >= 0) {
                                          StatRelay[0] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 1 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 1 Status OFF");
                              
                                        } else if (lastLine.indexOf("R1 ON") >= 0) {
                                          StatRelay[0] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 1 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 1 Status ON");
                                        }
                              
                                        //Relay 2 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R2 OFF") >= 0) {
                                          StatRelay[1] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 2 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 2 Status OFF");
                              
                                        } else if (lastLine.indexOf("R2 ON") >= 0) {
                                          StatRelay[1] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 2 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 2 Status ON");
                                        }
                              
                                        //Relay 3 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R3 OFF") >= 0) {
                                          StatRelay[2] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 3 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 3 Status OFF");
                              
                                        } else if (lastLine.indexOf("R3 ON") >= 0) {
                                          StatRelay[2] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 3 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 3 Status ON");
                                        }
                              
                                        //Relay 4 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R4 OFF") >= 0) {
                                          StatRelay[3] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 4 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 4 Status OFF");
                              
                                        } else if (lastLine.indexOf("R4 ON") >= 0) {
                                          StatRelay[3] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 4 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 4 Status ON");
                                        }
                              
                                        //Relay 5 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R5 OFF") >= 0) {
                                          StatRelay[4] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 5 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 5 Status OFF");
                              
                                        } else if (lastLine.indexOf("R5 ON") >= 0) {
                                          StatRelay[4] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 5 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 5 Status ON");
                                        }
                              
                                        //Relay 6 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R6 OFF") >= 0) {
                                          StatRelay[5] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 6 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 6 Status OFF");
                              
                                        } else if (lastLine.indexOf("R6 ON") >= 0) {
                                          StatRelay[5] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 6 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 6 Status ON");
                                        }
                              
                                        //Relay 7 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R7 OFF") >= 0) {
                                          StatRelay[6] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 7 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 7 Status OFF");
                              
                                        } else if (lastLine.indexOf("R7 ON") >= 0) {
                                          StatRelay[6] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 7 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 7 Status ON");
                                        }
                              
                                        //Relay 8 Controller
                                        //Read message content and set status according to SMS content Then reply SMS
                                        if (lastLine.indexOf("R8 OFF") >= 0) {
                                          StatRelay[7] = Roff;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 8 Status OFF");
                                          gprs.sendSMS (buffNumber, "Relay 8 Status OFF");
                              
                                        } else if (lastLine.indexOf("R8 ON") >= 0) {
                                          StatRelay[7] = Ron;
                                          //Serial.print("Reply To ");
                                          //Serial.print(buffNumber);
                                          //Serial.println("==>> Relay 8 Status ON");
                                          gprs.sendSMS (buffNumber, "Relay 8 Status ON");
                                        }
                                        nextLineIsMessage = false;
                                      }
                              
                                    }
                              
                                    //Clear char array for next line of read
                                    for ( int i = 0; i < sizeof(currentLine);  ++i ) {
                                      currentLine[i] = (char)0;
                                    }
                                    currentLineIndex = 0;
                                  } else {
                                    currentLine[currentLineIndex++] = lastCharRead;
                                  }
                                }
                              }
                              صلوات هدیه نثار شهدا بخصوص شهدای امنیت اخیر
                              جدیدترین ویرایش توسط حمید حمید; ۱۶:۴۷ ۱۳۹۸/۰۹/۰۹.

                              دیدگاه


                                پاسخ : [آموزشی] کنترل رله با پیامک توسط sim800l

                                جواب سوال آپدیت زمان با sim800
                                اگر سیم کارت همراه اول باشه خیلی راحت از پروتکل NITZ- Network Identity and Time Zone می توانیم استفاده کنیم
                                بدین صورت
                                کد:
                                AT+CLTS=1
                                AT&W
                                دستگاه را خاموش روشن کنید
                                AT+CCLK?
                                برای استفاده از NTP در همراه اول نیز :
                                کد:
                                AT+CNTP="ntp.day.ir",14
                                AT+CNTPCID=1
                                AT+SAPBR=1,1
                                AT+CNTP
                                OK
                                
                                +CNTP: 1
                                AT+CCLK?
                                اما ایرانسل باید از پروتکل NTP استفاده کنید که لازمه به اینترنت وصل بشید یعنی با GPRS بدین ترتیب
                                البته GPRS در ایرانسل پیر آدمو درمیاره .همراه اول خیلی عملکرد بهتری داره
                                کد:
                                AT+SAPBR=3,1, "APN","mtnirancell"
                                AT+CNTP="ntp.day.ir",14
                                AT+CNTPCID=1
                                AT+SAPBR=1,1
                                AT+CNTP
                                OK
                                
                                +CNTP: 1
                                AT+CCLK?
                                +CCLK: "19/12/01,19:20:03+14"
                                
                                //IF dosnot updated clock. Enter below command and try again from first line.
                                //detach from internet
                                AT+SAPBR=0,1
                                جدیدترین ویرایش توسط حمید حمید; ۲۲:۴۵ ۱۳۹۸/۰۹/۱۰.

                                دیدگاه

                                لطفا صبر کنید...
                                X