Selle GSM-rele abil saate sisse lülitada mistahes 220 V koormuse, mille võimsus ei ületa 2 kW, ükskõik millises maailma nurgas, kus on mobiilsidevõrk.

Seadet juhitakse Arduino Nano kaudu GSM mooduli SIM800L abil. Allpool on esitatud funktsionaalne skeem koos komponentide loendiga. See võib töötada nii sisseehitatud akude kui ka 220 V võrgu kaudu. Võrgu kaudu töötades võib koormus tarbida kuni 2 kW elektrit. Akudelt on maksimaalne väljundvõimsus 300 W.

Kokkuvõtteks skeemist.
Selles seadmes võib eristada 4 plokki:
- invertori plokk
- juhtimis- ja akupakkide plokk
- katkestusteta toite plokk
- juhtimisseade.
Invertori plokk on tavaline 500 W autot inverter. Sobib ka madalama võimsusega, kuid ka maksimaalne väljundvõimsus väheneb proportsionaalselt inverteri võimsusega.
Juhtimis- ja akupakkide plokk on odav BMS S3 draiver, mis on mõeldud 3 liitium-ioonaku ühendamiseks. Akud on kõrge voolutugevusega. Nad võivad anda 35 amprit voolu. Kui teil on väiksem võimsus, siis võite osta ka odavamaid akusid väiksema maksimaalse voolutugevusega.
Katkestusteta toiteplokk on valmistatud transistorist VT3, VD4, R4, R5, R3. Stabilisaatori VD4 katood on otseselt ühendatud toiteplokiga ja toite andmisel avaneb transistor VT3. Pärast selle avamist jõuab kõikidele relee sisenditele negatiivne potentsiaal ja releed lülitu pöördumisrežiimi toiteplokilt. Oluline omadus valmis relee koostudes: mõned neist töötavad, kui sisendi potentsiaal on positiivne, ja mõned negatiivne. Kui teil on esimene variant, peate R3 viima transistor VT3 emiteerija vahele ja ühendama relee sisendi selle sama transistoriga.
Juhtimisseade on kokku pandud SIM800 mooduli ja Arduino Nano abil.

Nii näeb välja kokku pandud skeem
Nii näeb see välja pakendis


Kuna seade hakkab teie telefonist SMS-e vastu võtma, tuleb muutuja your_phone sisse kirjutada teie telefoninumber. Samuti on Arduino'le võimalik ühendada LCD-ekraan, näiteks wh1601 või wh0802, kuid selleks tuleb ümber kommentaari eemaldada kõik read, millel on sõna 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);
}STL-faili karbi printimiseks leiate siit .
Video töö kohta:

Allikas: habr.com
