Me këtë rele GSM mund të aktivizoni çdo ngarkesë të dizajnuar për 220 V dhe me një fuqi maksimale prej 2 kW, kudo në botë ku ka një rrjet celular.

Ky pajisje kontrollohet nga arduino nano përmes modulit GSM SIM800L. Skema funksionale me listën e komponenteve është paraqitur më poshtë. Ajo mund të funksionojë si nga akumulatorët e integruar, ashtu edhe nga rrjeti 220 V. Kur funksionon nga rrjeti, ngarkesa mund të konsumojë deri në 2 kW energji elektrike. Nga akumulatorët, fuqia maksimale e daljes është 300 W.

Përmbledhje e skemës.
Në këtë pajisje mund të shquhen 4 blloqe:
- blloku i inverterit
- blloku i kontrolluesit dhe baterive
- blloku i pazgjidhshëm
- blloku i menaxhimit.
Blloku i inverterit është një inverter automobilistik normal me një fuqi prej 500t. Mund të përshtatet gjithashtu një me fuqi më të ulët, por fuqia maksimale e daljes gjithashtu do të ulet proporcionalisht me fuqinë e inverterit.
Blloku i kontrolluesit dhe baterive është një shofer i lirë BMS S3 i dizajnuar për lidhjen e 3 baterive litium-jon. Bateritë janë të dizajnuara për rryma të larta. Ato mund të japin rrymë deri në 35 ampere. Nëse keni një fuqi më të ulët, mund të blini gjithashtu akumulatorë më të lira me rrymë maksimale më të ulët.
Blloku i pazgjidhshëm është realizuar me transistorët VT3, VD4, R4, R5, R3. Katodi i stabilizatorit VD4 është i lidhur drejtpërdrejt me bllokun e energjisë dhe me kalimin e energjisë, transistori VT3 hapet. Pas hapjes së tij, një potencial negativ arrin në të gjitha hyrjet e relëve dhe relët kalohen në modin e furnizimit nga blloku i energjisë. Një karakteristikë e rëndësishme e grupeve relesh të gatshme: disa prej tyre funksionojnë kur një potencial pozitiv arrin në hyrje, dhe disa me një potencial negativ. Nëse keni variantin e parë, atëherë duhet që R3 ta vendosni në ndërprerjen e emiterit të transistorit VT3 dhe të lidhni hyrjen e relës me emiterin e këtij transistorit.
Blloku i menaxhimit është ndërtuar në modulin SIM800 dhe arduino nano.

Kështu duket skema e mbledhur
Kështu duket në gjendje të paketuar


Për ta bërë pajisjen që të fillojë të marrë SMS nga telefoni juaj, duhet të shkruani numrin tuaj të telefonit në ndryshore your_phone. Gjithashtu, me arduinon është e mundur të lidhet një ekran LCD, për shembull wh1601 ose wh0802, por në këtë rast do të duhet të komentoni të gjitha rreshtat me etiketën lcd.
Kodi
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);
}Skedari STL për printimin e kutisë mund të gjendet .
Video e funksionimit:

Burimi: habr.com
