مرحل GSM مستقل مع عاكس مسبق الصنع

باستخدام مرحل GSM هذا، يمكنك تشغيل أي حمل مقدر بـ 220 فولت وقوة لا تزيد عن 2 كيلووات، في أي ركن من أركان الأرض حيث توجد شبكة خلوية.

مرحل GSM مستقل مع عاكس مسبق الصنع
يتم التحكم في هذا الجهاز بواسطة اردوينو نانو عبر وحدة GSM SIM800L. ويرد أدناه مخطط وظيفي مع قائمة المكونات. يمكن أن تعمل إما من البطاريات المدمجة أو من شبكة 220 فولت.عند التشغيل من الشبكة، يمكن أن يستهلك الحمل ما يصل إلى 2 كيلو واط من الكهرباء. من البطاريات، الحد الأقصى لطاقة الإخراج 300 واط.

مرحل GSM مستقل مع عاكس مسبق الصنع
باختصار عن المخطط.

هناك 4 كتل في هذا الجهاز:

  • وحدة العاكس
  • وحدة التحكم والبطارية
  • وحدة إمداد الطاقة غير المنقطعة
  • كتلة التحكم.

وحدة العاكس عبارة عن عاكس سيارة عادي بقدرة 500 طن. كما أنه سيعمل بطاقة أقل، ولكن الحد الأقصى لطاقة الخرج سينخفض ​​أيضًا بما يتناسب مع قوة العاكس.

وحدة التحكم ووحدة البطارية عبارة عن برنامج تشغيل BMS S3 عادي رخيص الثمن مصمم لتوصيل 3 بطاريات ليثيوم أيون. البطاريات ذات تيار عالي. يمكنهم توصيل تيار 35 أمبير. إذا كان لديك طاقة أقل، فيمكنك شراء بطاريات أرخص ذات تيار أقصى أقل.

تتكون وحدة إمداد الطاقة غير المنقطعة من الترانزستور VT3 و VD4 و R4 و R5 و R3. يتم توصيل كاثود ديود الزينر VD4 مباشرة بمصدر الطاقة وعند توصيل الطاقة ينفتح الترانزستور VT3. بعد فتحه، تصل إمكانات سلبية إلى جميع مدخلات التتابع وتتحول المرحلات إلى وضع إمداد طاقة الدائرة من مصدر الطاقة. من الميزات المهمة لمجموعات التتابع الجاهزة: بعضها يعمل عندما يتعلق الأمر بإمكانيات إيجابية، والبعض الآخر عندما تكون هناك إمكانات سلبية. إذا كان لديك الخيار الأول، فأنت بحاجة إلى نقل R3 إلى فجوة باعث الترانزستور VT3 وتوصيل مدخل التتابع بباعث نفس الترانزستور.

يتم تجميع وحدة التحكم على وحدة SIM800 واردوينو نانو.

مرحل GSM مستقل مع عاكس مسبق الصنع

هذا ما تبدو عليه الدائرة المجمعةمرحل GSM مستقل مع عاكس مسبق الصنع

وهذا ما يبدو عليه عندما تكون معبأةمرحل GSM مستقل مع عاكس مسبق الصنع

مرحل GSM مستقل مع عاكس مسبق الصنع

مرحل GSM مستقل مع عاكس مسبق الصنع

لكي يبدأ الجهاز في تلقي الرسائل القصيرة من هاتفك، تحتاج إلى كتابة رقم هاتفك في المتغير your_phone. من الممكن أيضًا توصيل شاشة LCD بـ Arduino، على سبيل المثال wh1601 أو wh0802، لكنك ستحتاج إلى إلغاء التعليق على جميع الأسطر التي تحتوي على نقش LCD.

قانون

char your_phone = "+79148389933";

#include <SoftwareSerial.h>                                          // Подключаем библиотеку SoftwareSerial для общения с модулем по программной шине UART
SoftwareSerial softSerial(8,9);                                      // Создаём объект softSerial указывая выводы RX, TX (можно указывать любые выводы Arduino UNO)
// include the library code:
//#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
//const int rs = 12, en = 11, d4 = 5, d5 = 6, d6 = 7, d7 = 10;
//LiquidCrystal lcd(rs, en, d4, d5, d6, d7);                                                               // В данном случае вывод TX модуля подключается к выводу 2 Arduino, а вывод RX модуля к выводу 3 Arduino.
//  Инициируем работу шин UART с указанием скоростей обеих шин:      //
String buf2,buf3;
int g=0;

    String cmd1;
void setup(){                                                        //
init_port();
      // lcd.begin(16, 2);
  // Print a message to the LCD.
  //lcd.clear();
  //  lcd.setCursor(0, 0);
 /// lcd.print("VKL");
 // lcd.setCursor(0, 1);
 /// lcd.print("ZHDITE");

        /// init_port();// Инициируем передачу данных по аппаратной  шине UART на скорости  9600 (между Arduino и компьютером)
    softSerial.begin(9600);                                         // Инициируем передачу данных по программной шине UART на скорости 38400 (между модулем и Arduino)
        Serial.begin(9600);   
        delay(30000);

  //  cmd1 ="AT+CMGF=1rn";
  softSerial.print("AT+CMGF=1rn"); 
  ///  print_lcd(cmd1);
delay(1000);
       dellAllSMS();  
//  cmd1 ="AT+CMGDA="DEL ALL"rn";
    // print_lcd(cmd1);
//cmd1="AT+CPAS";
  ///   print_lcd(cmd1);
}                                                                    //
      
   
      char c;  
      int m=0;
      int i=0;//
      int n=0;
//  Выполняем ретрансляцию:                                          // Всё что пришло с модуля - отправляем компьютеру, а всё что пришло с компьютера - отправляем модулю

void dellAllSMS(){
  /* This deletes all sms in memory  
  
  */

  softSerial.print("AT+CMGDA="DEL ALL"rn"); // set sms to text mode

delay(3000);
}
void pin_on_setb()
{
 digitalWrite(2,1);
  digitalWrite(13,1);
}
void pin_off_setb()
{
 digitalWrite(2,0);
  digitalWrite(13,0);
}
void pin_on_inv()
{
 digitalWrite(3,1);
  //  digitalWrite(13,1);
}
void pin_off_inv()
{
 digitalWrite(3,0);
   // digitalWrite(13,0);
}
void init_port()
{
pinMode(2,1);
pinMode(3,1);
    pinMode(13,1);
}
String readData(){
   // this function just reads the raw data
   uint16_t timeout=0;
   while (!softSerial.available() && timeout<10000)
   {
     delay(10);
     timeout++;
   }
   if(softSerial.available())
   {
     String output = softSerial.readString();
     //if(DEBUG)
    ///   Serial.println(output);
     return output;
   }
 }
String buf, bufferIndex; 
int tempIndex=0;
int messageIndex;
int prev=0;
int power=0;
void loop(){                                                         //
   /* if(softSerial.available()){    Serial.write(softSerial.read());} // Передаём данные из программной шины UART в аппаратную  (от модуля     через Arduino к компьютеру)
    if(    Serial.available()){softSerial.write(    Serial.read());} // Передаём данные из аппаратной  шины UART в программную (от компьютера через Arduino к модулю    )*/

         //   lcd.clear();
     //  lcd.setCursor(0, 0);
     //  lcd.print("Nagruzka");
            //  lcd.setCursor(0, 1);
           //   if (power==1)
          //    {
         //              lcd.print("VKL");
     //         }
         //     else {lcd.print("VIKL");}
      softSerial.print(F("AT+CMGL="ALL",0"));
  softSerial.print("r");
  buf = readData();
 // Serial.println(buf);
tempIndex = buf.lastIndexOf("+CMGL: ");
tempIndex = tempIndex + 6;
    bufferIndex = buf.substring(tempIndex);
    bufferIndex = bufferIndex.substring(1,(bufferIndex.indexOf(",")));
    messageIndex = bufferIndex.toInt();
    ///Serial.println(messageIndex);
    if(prev!=messageIndex)
    {
      tempIndex = buf.lastIndexOf(your_phone);
     //  lcd.clear();
     //  lcd.setCursor(0, 0);
     //  lcd.print("SMS READ");

     if((digitalRead(4))&&(tempIndex!=-1))
     {
      pin_on_inv();
      delay(2000);
      pin_off_inv();
     // i=1;
   //  power=1;
     }
     else 
     {
     pin_on_setb();
           delay(2000);
     pin_off_setb();
  //   i=1;
 //         power=1;
     }
        //    send_sms(number3);

     
    prev++;
    
    }
if(messageIndex>=2)
{
 dellAllSMS();
// lcd.clear();
     //   lcd.setCursor(0, 0);
     //  lcd.print("SMS READ");
     //   lcd.setCursor(0, 1);
// lcd.print("SMS DEL");
 //  cmd1 ="AT+CMGDA="DEL ALL"rn";
   //  print_lcd(cmd1);
prev=0;
}
delay(10000);

}

يمكن العثور على ملف STL لطباعة الصندوق هنا.

فيديو العمل:



المصدر: www.habr.com

إضافة تعليق