Dengan menggunakan relai GSM ini, Anda dapat menghidupkan beban apa pun dengan daya 220 V dan daya tidak lebih dari 2 kW, di sudut mana pun di bumi yang terdapat jaringan seluler.
Perangkat ini dikendalikan oleh arduino nano melalui modul gsm SIM800L. Diagram fungsional dengan daftar komponen diberikan di bawah ini. Ini dapat beroperasi baik dari baterai internal atau dari jaringan 220 V. Saat beroperasi dari jaringan, beban dapat mengkonsumsi listrik hingga 2 kW. Dari baterai, daya keluaran maksimum 300 W.
Secara singkat tentang skema tersebut.
Ada 4 blok di perangkat ini:
- satuan inverter
- pengontrol dan unit baterai
- unit catu daya yang tidak pernah terputus
- Blok kontrol.
Unit inverter adalah inverter mobil 500t biasa. Ini juga akan bekerja dengan daya yang lebih kecil, namun daya keluaran maksimum juga akan berkurang sebanding dengan daya inverter.
Pengontrol dan unit baterai adalah driver BMS S3 murah biasa yang dirancang untuk menghubungkan 3 baterai lithium-ion. Baterainya berarus tinggi. Mereka dapat mengalirkan arus 35 ampere. Jika daya Anda lebih kecil, Anda dapat membeli baterai yang lebih murah dengan arus maksimum yang lebih rendah.
Unit catu daya tak terputus dibuat pada transistor VT3, VD4, R4, R5, R3. Katoda dioda zener VD4 dihubungkan langsung ke catu daya dan ketika daya dialirkan, transistor VT3 terbuka. Setelah terbuka, potensi negatif tiba di semua input relai dan relai beralih ke mode catu daya rangkaian dari catu daya. Fitur penting dari rakitan relai yang sudah jadi: beberapa di antaranya bekerja ketika potensial positif masuk ke input, dan beberapa lagi ketika potensial negatif. Jika Anda memiliki opsi pertama, maka Anda perlu memindahkan R3 ke celah emitor transistor VT3 dan menghubungkan input relai ke emitor transistor yang sama.
Unit kontrol dirakit pada modul SIM800 dan Arduino nano.
Seperti inilah rangkaian rakitannya
Ini penampakannya saat dikemas
Agar perangkat mulai menerima SMS dari ponsel Anda, Anda perlu menulis nomor telepon Anda ke dalam variabel your_phone. Dimungkinkan juga untuk menghubungkan layar LCD ke Arduino, misalnya wh1601 atau wh0802, tetapi Anda harus menghapus komentar pada semua baris dengan tulisan lcd.
kode
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);
}
File STL untuk mencetak kotak dapat ditemukan
Video kerja:
Sumber: www.habr.com