Zdalny restart komputera za pomocą SMS. Arduino Leonardo z wbudowanym modułem SIM800C. Sterowanie przekaźnikami.

Pobierz kod sim800c.ino

unsigned char Buff[250];
unsigned char BuffIndex;
int reset = 2; // przekaźnik 1 – przycisk RESETU
int power = 3; // przekaźnik 2 – przycisk POWER
void setup()
{
// Serial.begin(9600); // do komunikacji z komputerem przez USB
pinMode(reset, OUTPUT);
pinMode(power, OUTPUT);
digitalWrite(reset, LOW);
digitalWrite(power, LOW);// uruchomienie modułu SIM
delay(3000);
Serial1.begin(19200); // do komunikacji z modułem SIM
delay(3000);
pinMode(9, OUTPUT);
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(10000);//Serial.println(„START”); // poinformowanie o wystartowaniu arduino
Serial1.println(„ATD+48123123123;”); // podmień 123123123 swoim nr telefonu
delay(10000);
Serial1.println(„ATH”);delay(3000);
Serial1.println(„AT+CMGF=1”);
delay(3000);
Serial1.println(„AT+CNMI=2,2,0,0,0”);memset(Buff, '\0′, 250);// Initialize the string
BuffIndex=5;}
void loop(){
while(1)
{
if(Serial1.available()>0)
{
Buff[BuffIndex] = Serial1.read();
if( (Buff[BuffIndex-2] == '#’) && (Buff[BuffIndex-1] == 'r’) && (Buff[BuffIndex] == 'r’))
{
//Serial.println(„RESTART”); // kliknięcie przycisku reset
digitalWrite(reset, HIGH);
delay(1000);
digitalWrite(reset, LOW);
}if( (Buff[BuffIndex-2] == '#’) && (Buff[BuffIndex-1] == 'p’) && (Buff[BuffIndex] == 'b’))
{
//Serial.println(„POWER BT”); // klikniecie wyłącznika
digitalWrite(power, HIGH);
delay(1000);
digitalWrite(power, LOW);
}if( (Buff[BuffIndex-2] == '#’) && (Buff[BuffIndex-1] == 'h’) && (Buff[BuffIndex] == 'r’))
{
// Serial.println(„HARD RESET”); // wyłączenie za pomocą przytrzymania przycisku i uruchomienie ponowne
digitalWrite(power, HIGH);
delay(7000);
digitalWrite(power, LOW);
delay(7000);
digitalWrite(power, HIGH);
delay(1000);
digitalWrite(power, LOW);
}if( (Buff[BuffIndex-2] == '#’) && (Buff[BuffIndex-1] == 't’) && (Buff[BuffIndex] == 't’))
{
// Serial.println(„TEST”); // test sterownika czy odpowiada
Serial1.println(„ATD+48123123123;”); // podmień 123123123 swoim nr telefonu
delay(10000);
Serial1.println(„ATH”);
}BuffIndex++;
if(BuffIndex>250) BuffIndex=5;
}
}
}
// na podstawie: https://www.raviyp.com/embedded/222-using-arduino-with-sim900-sim800-for-receiving-sms-commands