Autonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista

Tämän GSM-releen avulla voit kytkeä päälle minkä tahansa kuormituksen, jonka nimellisjännite on 220 V ja teho on enintään 2 kW, missä tahansa maan kolkassa, jossa on matkapuhelinverkko.

Autonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista
Tätä laitetta ohjaa arduino nano gsm-moduulin SIM800L kautta. Alla on toiminnallinen kaavio, jossa on luettelo komponenteista. Se voi toimia joko sisäänrakennetuilla akuilla tai 220 V verkolla. Verkosta toimiessaan kuorma voi kuluttaa jopa 2 kW sähköä. Akuista, suurin lähtöteho 300 W.

Autonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista
Lyhyesti suunnitelmasta.

Tässä laitteessa on 4 lohkoa:

  • invertteriyksikkö
  • ohjain ja akkuyksikkö
  • keskeytymätön virtalähde
  • Ohjauslohko.

Invertteriyksikkö on tavallinen 500 tonnin auton invertteri. Se toimii myös pienemmällä teholla, mutta myös maksimilähtöteho pienenee suhteessa invertterin tehoon.

Ohjain ja akkuyksikkö on tavallinen halpa BMS S3 -ohjain, joka on suunniteltu yhdistämään 3 litiumioniakkua. Akut ovat korkeavirtaisia. Ne voivat tuottaa 35 ampeerin virran. Jos sinulla on vähemmän tehoa, voit ostaa halvempia akkuja pienemmällä maksimivirralla.

Keskeytymätön virtalähde on valmistettu transistoreista VT3, VD4, R4, R5, R3. Zener-diodin VD4 katodi on kytketty suoraan virtalähteeseen ja kun virta kytketään, transistori VT3 avautuu. Kun se avautuu, negatiivinen potentiaali saapuu kaikkiin reletuloihin ja releet siirtyvät virtalähteestä piirin syöttötilaan. Tärkeä ominaisuus valmiissa relekokoonpanoissa: osa niistä toimii, kun tuloon tulee positiivinen potentiaali, ja osa negatiivisen potentiaalin tullessa. Jos sinulla on ensimmäinen vaihtoehto, sinun on siirrettävä R3 transistorin VT3 emitteriväliin ja kytkettävä reletulo saman transistorin emitteriin.

Ohjausyksikkö on koottu SIM800-moduuliin ja arduino nanoon.

Autonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista

Tältä koottu piiri näyttääAutonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista

Tältä se näyttää pakattunaAutonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista

Autonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista

Autonominen GSM-rele invertterillä, joka on valmistettu valmiista komponenteista

Jotta laite alkaa vastaanottaa tekstiviestejä puhelimestasi, sinun on kirjoitettava puhelinnumerosi your_phone-muuttujaan. On myös mahdollista kytkeä LCD-näyttö Arduinoon, esimerkiksi wh1601 tai wh0802, mutta sinun on poistettava kaikki rivit, joissa on teksti lcd.

Koodi

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-tiedosto laatikon tulostamista varten löytyy täällä.

Video työstä:



Lähde: will.com

Lisää kommentti