Autonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest

Selle GSM-relee abil saate sisse lülitada mis tahes koormuse, mille nimipinge on 220 V ja võimsus ei ületa 2 kW, igas Maa nurgas, kus on mobiilsidevõrk.

Autonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest
Seda seadet juhib arduino nano gsm-mooduli SIM800L kaudu. Allpool on toodud funktsionaalne diagramm koos komponentide loendiga. See võib töötada kas sisseehitatud akudelt või võrgust 220 V. Võrgust töötades võib koormus tarbida kuni 2 kW elektrit. Akudest, maksimaalne väljundvõimsus 300 W.

Autonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest
Lühidalt skeemist.

Selles seadmes on 4 plokki:

  • inverterseade
  • kontroller ja akuplokk
  • katkematu toiteplokk
  • Juhtplokk.

Inverter on tavaline 500 tonni auto inverter. See töötab ka väiksema võimsusega, kuid ka maksimaalne väljundvõimsus väheneb proportsionaalselt inverteri võimsusega.

Kontroller ja akuplokk on tavaline odav BMS S3 draiver, mis on mõeldud 3 liitiumioonaku ühendamiseks. Akud on suure vooluga. Nad suudavad anda voolu 35 amprit. Kui teil on vähem võimsust, saate osta odavamaid akusid, mille maksimaalne voolutugevus on väiksem.

Katkematu toiteplokk on valmistatud transistoritel VT3, VD4, R4, R5, R3. Zeneri dioodi VD4 katood on ühendatud otse toiteallikaga ja kui toide on ühendatud, avaneb transistor VT3. Pärast selle avanemist saabub negatiivne potentsiaal kõikidesse relee sisenditesse ja releed lülituvad toiteallikast vooluahela toiterežiimile. Valmisreleesõlmede oluline omadus: osa neist töötab siis, kui sisendisse tuleb positiivne potentsiaal, osa aga negatiivse potentsiaali korral. Kui teil on esimene võimalus, peate R3 viima transistori VT3 emitteri pilusse ja ühendama relee sisendi sama transistori emitteriga.

Juhtseade on kokku pandud SIM800 moodulile ja arduino nanole.

Autonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest

Selline näeb kokkupandud ahel väljaAutonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest

Selline näeb see välja pakitunaAutonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest

Autonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest

Autonoomne GSM-relee koos inverteriga, mis on valmistatud valmiskomponentidest

Selleks, et seade hakkaks teie telefonilt SMS-e vastu võtma, peate oma telefoninumbri kirjutama muutujasse your_phone. Arduinoga on võimalik ühendada ka LCD-ekraan, näiteks wh1601 või wh0802, kuid peate eemaldama kõik read, millel on kiri lcd.

Kood

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);

}

Karbi printimiseks mõeldud STL-fail on leitav siin.

Video tööst:



Allikas: www.habr.com

Lisa kommentaar