Как подружить sim800l с RF 433 МГц
- Войдите на сайт для отправки комментариев
Добрый день, подскажите пожалуйста куда смотреть или что добавить в скетче, не понятно работает приёмник 433мгц. или это напрямую связано с модулем sim800l?
На пульте нажимаю:
Кнопка 1, монитор порта показывает нажаты кнопки 1,3,4.
Кнопка 2, монитор порта показывает нажаты кнопки 2,3,4.
Кнопка 3, монитор порта показывает нажаты кнопки 3,4.
Кнопка 4, монитор порта показывает нажаты кнопки 3,4.
[code]
#include
#include
RCSwitch mySwitch = RCSwitch();
SoftwareSerial mySerial800 (8, 9); // Выводы SIM800L Tx & Rx подключены к выводам Arduino 3 и 2
char incomingByte;
String inputString;
int relay_1 = 5; // Вывод управления реле 1
int relay_2 = 4; // Вывод управления реле 2
int ohrana = 13; //вкл - выкл
void setup()
{
pinMode(ohrana, OUTPUT); // Установим вывод как выход
digitalWrite(ohrana, LOW); // Устанавливаем высокий уровень
pinMode(relay_1, OUTPUT); // Установим вывод как выход
digitalWrite(relay_1, HIGH); // Устанавливаем высокий уровень
pinMode(relay_2, OUTPUT); // Установим вывод как выход
digitalWrite(relay_2, HIGH); // Устанавливаем высокий уровень
Serial.begin(9600);
mySerial800.begin(9600);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
while (!mySerial800.available()) { // Зацикливаем и ждем инициализацию SIM800L
mySerial800.println("AT"); // Отправка команды AT
delay(1000); // Пауза
Serial.println("Connecting…"); // Печатаем текст
}
Serial.println("Connected!"); // Печатаем текст
mySerial800.println("AT+CMGF=1"); // Отправка команды AT+CMGF=1
delay(1000); // Пауза
mySerial800.println("AT+CNMI=1,2,0,0,0"); // Отправка команды AT+CNMI=1,2,0,0,0
delay(1000); // Пауза
mySerial800.println("AT+CMGL=\"REC UNREAD\"");
}
void loop()
{
//////////////////////////////
// Создание переменной для записи кодов кнопок
unsigned long recive = mySwitch.getReceivedValue();
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) { }
else if (value == 29699 ) { //
digitalWrite(ohrana, HIGH ); // 1
Serial.println("1 ");
}
if (value == 29708) { //
digitalWrite(ohrana, LOW ); // 2
Serial.println("2 ");
}
//////////////////////////////////
if (value == 30376); { //
Serial.println("3 "); ///3
// sms(String("Trevoga! А"), String("+7********"));//
}
if (value == 29744); { //
Serial.println("4 "); //4
// sms(String("Trevoga! zamok"), String("+7********"));//
}
mySwitch.resetAvailable();
}
///////////СМС///////////////
if (mySerial800.available()) { // Проверяем, если есть доступные данные
delay(100); // Пауза
while (mySerial800.available()) { // Проверяем, есть ли еще данные.
incomingByte = mySerial800.read(); // Считываем байт и записываем в переменную incomingByte
inputString += incomingByte; // Записываем считанный байт в массив inputString
}
delay(10); // Пауза
Serial.println(inputString); // Отправка в "Мониторинг порта" считанные данные
inputString.toUpperCase(); // Меняем все буквы на заглавные
///////////////
if (inputString.indexOf("ON") > -1) { //
digitalWrite(ohrana, HIGH ); //поставить на охрану
sms(String("ON ohrana"), String("+7********"));
} // Отправка SMS
///////////////////////////////////
if (inputString.indexOf("OFF") > -1) { //
digitalWrite(ohrana, LOW ); //снять с охраны
sms(String("OFF ohrana"), String("+7********"));
} // Отправка SMS
///////////////
if (inputString.indexOf("ON1") > -1) { // Проверяем полученные данные, если ON_1 включаем реле 1
digitalWrite(relay_1, LOW);
sms(String("Relay 1 - ON"), String("+7********"));
} // Отправка SMS
if (inputString.indexOf("OFF1") > -1) { // Проверяем полученные данные, если OFF_1 выклюем реле 1
digitalWrite(relay_1, HIGH);
sms(String("Relay 1 - OFF"), String("+7********"));
}// Отправка SMS
if (inputString.indexOf("ON2") > -1) { // Проверяем полученные данные, если ON_2 включаем реле 2
digitalWrite(relay_2, LOW);
sms(String("Relay 2 - ON"), String("+7********"));
} // Отправка SMS
if (inputString.indexOf("OFF2") > -1) { // Проверяем полученные данные, если OFF_2 выключаем реле 2
digitalWrite(relay_2, HIGH);
sms(String("Relay 2 - OFF"), String("+7********"));
} // Отправка SMS
delay(50);
if (inputString.indexOf("OK") == -1) {
mySerial800.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);
}
inputString = "";
}
}
void sms(String text, String phone) // Процедура Отправка SMS
{
Serial.println("SMS send started");
mySerial800.println("AT+CMGS=\"" + phone + "\"");
delay(500);
mySerial800.print(text);
delay(500);
mySerial800.print((char)26);
delay(500);
Serial.println("SMS send complete");
delay(2000);
}
[/code]
так вам никто помогать не станет, читайте правила форума
Вот сюда и вот сюда.
Прошу прощения за код выше )
На пульте нажимаю:
Кнопка 1, монитор порта показывает нажаты кнопки 1,3,4.
Кнопка 2, монитор порта показывает нажаты кнопки 2,3,4.
Кнопка 3, монитор порта показывает нажаты кнопки 3,4.
Кнопка 4, монитор порта показывает нажаты кнопки 3,4.
Мне кажется что то нужно сделать с прерыванием или на время отключить модуль sim800l, подскажите пожалуйста.
Кнопка 1, монитор порта показывает нажаты кнопки 1,3,4.
Кнопка 2, монитор порта показывает нажаты кнопки 2,3,4.
Кнопка 3, монитор порта показывает нажаты кнопки 3,4.
Кнопка 4, монитор порта показывает нажаты кнопки 3,4.
Ну, всё правильно. Как написано, так и работает. Что у Вас делают точки с запятой в строках №№ 53 и 57? Заканчивают if и оставляют строки 54-55 и 58-59 выполняться всегда - независимо ни от каких условий? Или Вы что-то другое имели в виду? Но написали Вы именно это :-(
Евгений, спасибо большое ) , это моя не внимательность, пора очки заказывать. Детская ошибка. Всё заработало как надо.