Com este relé GSM, você pode ligar qualquer carga de 220 V com potência de até 2 kW, em qualquer parte do mundo onde haja rede celular.

Este dispositivo é controlado por um Arduino Nano através do módulo GSM SIM800L. O diagrama funcional com a lista de componentes está abaixo. Ele pode funcionar tanto com baterias internas quanto com a rede elétrica de 220 V. Quando ligado à rede, a carga pode consumir até 2 kW de energia elétrica. Com as baterias, a potência máxima de saída é de 300 W.

Breve descrição do circuito.
Neste dispositivo, podemos identificar 4 blocos:
- bloco do inversor
- bloco do controlador e baterias
- bloco de no-break
- bloco de controle.
O bloco do inversor é um inversor automotivo comum com potência de 500 W. Pode ser usado um de menor potência, mas a potência máxima de saída também será reduzida proporcionalmente à potência do inversor.
O bloco do controlador e das baterias é um driver BMS S3 barato, projetado para conectar 3 baterias de íon de lítio. As baterias são de alta corrente, podendo fornecer uma corrente de 35 amperes. Se sua potência for menor, você pode optar por baterias mais baratas com corrente máxima inferior.
O bloco de no-break é construído com transistores VT3, VD4, R4, R5, R3. O cátodo do estabilizador VD4 está conectado diretamente à fonte de alimentação, e ao ligar a energia, o transistor VT3 se abre. Após a abertura, todos os entradas do relé recebem potencial negativo, e os relés são comutados para o modo de alimentação do circuito pela fonte de energia. Uma característica importante dos conjuntos de relé prontos: alguns funcionam quando a entrada recebe potencial positivo, e outros com potencial negativo. Se você tiver a primeira opção, precisará mover R3 para interromper o emissor do transistor VT3 e conectar a entrada do relé ao emissor desse mesmo transistor.
O bloco de controle é montado no módulo SIM800 e Arduino Nano.

Assim é o circuito montado
Assim é na condição embalada


Para que o dispositivo comece a receber mensagens SMS do seu telefone, você precisa gravar seu número de telefone na variável your_phone. Também é possível conectar um display LCD ao Arduino, como o wh1601 ou wh0802, mas você precisará descomentar todas as linhas com a anotação lcd.
Código
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);
}O arquivo STL para impressão da caixa pode ser encontrado .
Vídeo de funcionamento:

Fonte: habr.com
