Sjálfstætt GSM gengi með inverter úr tilbúnum íhlutum

Með því að nota þetta GSM gengi geturðu kveikt á hvaða álagi sem er með 220 V og afl sem er ekki meira en 2 kW, í hvaða horni jarðar sem er þar sem farsímakerfi er.

Sjálfstætt GSM gengi með inverter úr tilbúnum íhlutum
Þessu tæki er stjórnað af arduino nano í gegnum gsm einingu SIM800L. Virk skýringarmynd með lista yfir íhluti er hér að neðan. Hann getur annað hvort starfað með innbyggðum rafhlöðum eða frá 220 V neti. Þegar unnið er frá netinu getur álagið neytt allt að 2 kW af rafmagni. Frá rafhlöðum, hámarksafl 300 W.

Sjálfstætt GSM gengi með inverter úr tilbúnum íhlutum
Stuttlega um áætlunina.

Það eru 4 blokkir í þessu tæki:

  • inverter eining
  • stjórnandi og rafhlöðueining
  • truflanlegur aflgjafa eining
  • Stjórnarblokk.

Inverter einingin er venjulegur 500t bílainverter. Það mun einnig virka með minna afli, en hámarks úttaksafl mun einnig minnka í hlutfalli við afl invertersins.

Stýringin og rafhlöðueiningin er venjulegur ódýr BMS S3 rekill sem er hannaður til að tengja 3 litíumjónarafhlöður. Rafhlöðurnar eru með miklum straumi. Þeir geta skilað straumi upp á 35 amper. Ef þú hefur minna afl geturðu keypt ódýrari rafhlöður með lægri hámarksstraum.

Aflgjafaeiningin er gerð á smára VT3, VD4, R4, R5, R3. Bakskaut zener díóðunnar VD4 er tengt beint við aflgjafa og þegar afl er sett á opnast smári VT3. Eftir að það opnast kemur neikvæður möguleiki á öll gengisinntak og liðaskiptin skipta yfir í hringrásaflgjafaham frá aflgjafanum. Mikilvægur eiginleiki tilbúinna gengissamsetninga: sumar þeirra virka þegar jákvæður möguleiki kemur til inntaksins og önnur þegar neikvæður. Ef þú ert með fyrsta valmöguleikann, þá þarftu að færa R3 inn í emitter bilið á smára VT3 og tengja gengisinntakið við sendanda sama smára.

Stjórneiningin er sett saman á SIM800 einingu og arduino nano.

Sjálfstætt GSM gengi með inverter úr tilbúnum íhlutum

Svona lítur samsett hringrásin útSjálfstætt GSM gengi með inverter úr tilbúnum íhlutum

Svona lítur það út þegar það er pakkaðSjálfstætt GSM gengi með inverter úr tilbúnum íhlutum

Sjálfstætt GSM gengi með inverter úr tilbúnum íhlutum

Sjálfstætt GSM gengi með inverter úr tilbúnum íhlutum

Til þess að tækið geti byrjað að fá SMS úr símanum þínum þarftu að skrifa símanúmerið þitt í your_phone breytuna. Það er líka hægt að tengja LCD skjá við Arduino, til dæmis wh1601 eða wh0802, en þú þarft að afskrifa allar línur með áletruninni lcd.

Code

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 skrána til að prenta kassann er að finna hér.

Myndband af vinnu:



Heimild: www.habr.com

Bæta við athugasemd