Bu GSM relesindən istifadə edərək, siz mobil şəbəkənin mövcud olduğu Yerin istənilən küncündə 220 V və 2 kVt-dan çox olmayan istənilən yükü aça bilərsiniz.

Bu cihaz SIM800L gsm modulu vasitəsilə arduino nano tərəfindən idarə olunur. Aşağıda komponentlərin siyahısı ilə funksional diaqram verilmişdir. O, ya daxili batareyalardan, ya da 220 V şəbəkədən işləyə bilər.Şəbəkədən işləyərkən yük 2 kVt-a qədər elektrik enerjisi sərf edə bilər. Batareyalardan maksimum çıxış gücü 300 Vt.

Sxem haqqında qısaca.
Bu cihazda 4 blok var:
- çevirici qurğu
- nəzarətçi və batareya bloku
- fasiləsiz enerji təchizatı bloku
- Nəzarət bloku.
İnverter qurğusu adi 500t avtomobil çeviricisidir. O, həmçinin daha az güclə işləyəcək, lakin maksimum çıxış gücü də çeviricinin gücünə nisbətdə azalacaq.
Nəzarətçi və batareya bloku 3 litium-ion batareyanı birləşdirmək üçün nəzərdə tutulmuş adi ucuz BMS S3 sürücüsüdür. Batareyalar yüksək cərəyandır. Onlar 35 amper cərəyan verə bilirlər. Daha az gücə sahibsinizsə, daha aşağı maksimum cərəyanla daha ucuz batareyalar ala bilərsiniz.
Fasiləsiz enerji təchizatı bloku VT3, VD4, R4, R5, R3 tranzistorlarında hazırlanır. Zener diodunun VD4 katodu birbaşa enerji təchizatı ilə bağlıdır və enerji verildikdə tranzistor VT3 açılır. Açıldıqdan sonra bütün rele girişlərinə mənfi potensial gəlir və rölelər enerji təchizatından dövrə enerji təchizatı rejiminə keçir. Hazır rele birləşmələrinin mühüm xüsusiyyəti: onların bəziləri girişə müsbət potensial gəldikdə, bəziləri isə mənfi olduqda işləyir. Birinci seçiminiz varsa, o zaman R3-ü tranzistor VT3-ün emitter boşluğuna köçürməli və rölin girişini eyni tranzistorun emitentinə bağlamalısınız.
İdarəetmə bloku SIM800 modulu və arduino nano üzərində yığılmışdır.

Yığılmış dövrə belə görünür
Qablaşdırıldıqda belə görünür


Cihazın telefonunuzdan SMS almağa başlaması üçün telefon nömrənizi your_phone dəyişəninə yazmalısınız. Arduino-ya LCD displey qoşmaq da mümkündür, məsələn wh1601 və ya wh0802, lakin siz lcd yazısı ilə bütün sətirləri şərh etməli olacaqsınız.
Kod
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);
}Qutunun çapı üçün STL faylı tapıla bilər .
İş videosu:

Mənbə: www.habr.com
