Контроль автозапуска авто
- Войдите на сайт для отправки комментариев
Добрый день, недавно начал знакомство с arduino. Сделал себе простенький автозапуск по смс с помощью arduino nano, sim800l и реле. Подключил к реле второй брелок от сигнализации (tomahawk tw-9010). Теперь когда отправляешь смс с текстом "1" реле замыкается на 1 секунду, к которой подключена кнопка автозапуска на брелке. Как реле замыкается, arduino отправляет смс в ответ "komanda vipolnena". Но столкнулся с проблемой - сигнал от брелка не всегда с первого раза доходит до сигнализации, сказываются помехи на частоте 433 mhz. Хочу реализовать контроль автозапуска. Думается сделать по следующему принципу: нужно чтобы реле замкнулось на 1 сек, потом ардуино подождал пару секунд, и если поворотники не моргнули (что указывает о получении сигнала от брелка) то отправляет повторно команду на реле замкнуть на 1 сек. И так до тех пор пока не придет сигнал с поворотников, после получения сигнала отправляет смс с текстом "komanda vipolnena"
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;
//=================Пины 2 и 3 для Подключения GSM модуля
int flag=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79088018800";
String input_string = "";
String smsContent = "";
char smsDv[] ="Komanda Vipolnena!";
char pos;
char sendsms[160];
void setup() {
pinMode(7, OUTPUT);
digitalWrite(7,HIGH);
Serial.begin(9600);
if (gsm.begin(4800)) {
Serial.println("\nstatus=READY");
started=true;
} else Serial.println("\nstatus=IDLE");
}
void loop() {
pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
if (pos) { // Если непрочитанные СМС есть, то...
getsms(); // получаем непрочитанную СМС
if (input_string=="1"){Serial.print("YES!");
//n1.toCharArray(n,20);
sms.SendSMS(n, smsDv);
sms.DeleteSMS(1);
memset(n,0,20); // Команда "1" - действие
input_string="";
char smsbuffer[160]="";
digitalWrite(7,LOW);
delay(1000);
digitalWrite(7,HIGH);
}
sms.DeleteSMS(pos); // удаляем СМС из симки
}
}
void getsms()
{
sms.GetSMS(pos,n,20,smsbuffer,160);
input_string =String(smsbuffer);
}
тут файлы библиотеки:
Думаю, что минимальная ставка в 500р уместна, как считаете, коллеги?
тыщщя. и пузырь
500 руб за три строчки - дороговато.
Предлагаю по 100 руб за строку
Лучше конечно было бы самому научиться все это делать , но как я новичок в этом деле сложновато пока. Сижу разбираюсь, дошел до if и else, но не могу понять как заставить повторять код если условие else .
#include "SIM900.h" #include <SoftwareSerial.h> #include "sms.h" #include "call.h" SMSGSM sms; CallGSM call; //=================Пины 2 и 3 для Подключения GSM модуля int flag=0; boolean started=false; char smsbuffer[160]; char n[20]; String n1 = "+79088018800"; String input_string = ""; String smsContent = ""; char smsDv[] ="Komanda Vipolnena!"; char pos; char sendsms[160]; void setup() { pinMode(7, OUTPUT); pinMode(A0, INPUT); digitalWrite(7,HIGH); Serial.begin(9600); if (gsm.begin(4800)) { Serial.println("\nstatus=READY"); started=true; } else Serial.println("\nstatus=IDLE"); } void loop() { pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС if (pos) { // Если непрочитанные СМС есть, то... getsms(); // получаем непрочитанную СМС if (input_string=="1"){Serial.print("YES!"); //n1.toCharArray(n,20); memset(n,0,20); // Команда "1" - действие input_string=""; char smsbuffer[160]=""; digitalWrite(7,LOW); delay(1000); digitalWrite(7,HIGH); delay(6000); int ign = analogRead(A0) / 128; if( ign > 0 ) { sms.SendSMS(n, smsDv); sms.DeleteSMS(1); } else { } sms.DeleteSMS(pos); // удаляем СМС из симки } } void getsms() { sms.GetSMS(pos,n,20,smsbuffer,160); input_string =String(smsbuffer); }думаю лучше не от поворотников контроль сделать а от включения зажигания
Полагаю, что вы веткой ошиблись. Видите, там сверху написано: "Ищу исполнителя. Поиск возмездной помощи"?
Не светит тебе пузырь, Семён
переместите меня пожалуйста, и прошу прощения за это
Жалка. Я уже стакан пратеръ.
Я бы по индусски наговнокодил бы три тома блинка )))
Вы только за деньги людям помогаете?
Семён за водку.
Вообще - мы помогаем, когда добрые. А добрые - когда пьяные. А пьяные... ну, сами понимаете.
Кто людям помогaaaaaaеееет....
весело у вас тут) может дадите ссылку где все доступным языком расписано как применять команды while я так понимаю мне через нее нужно реализовывать. хочется самому научиться программировать, интересная тема
весело у вас тут) может дадите ссылку где все доступным языком расписано как применять команды while я так понимаю мне через нее нужно реализовывать.
А тут без бут. ну никак не разберёшься. Ага?
Вот посмотрите как вашу задачу другие будут делать, глядишь, и поймёте.
может дадите ссылку где все доступным языком расписано как применять команды while
хочется самому научиться программировать, интересная тема
Для начала сверху в шапке сайта Программирование.
весело у вас тут) может дадите ссылку где все доступным языком расписано как применять команды while я так понимаю мне через нее нужно реализовывать. хочется самому научиться программировать, интересная тема
День добрый, что мешает Вам проверить дейстиве оператора while на очень простом коде ?
В Ардуино IDE море примеров, простых и сложный.
Уже сделал
контроль бери от тахометра на аналоговый вход через делитель напряжения
Странно у меня этот скетч не работает. Может быть проблема в том что sim800l версии 2.2 ?
Могу скинуть готовый скетч , который на 100% работает сейчас на авто, и поначалу у меня тоже не работал пока библиотеки sim900 не подключился правильно
Можно поподробнее про правильное подключение этой библиотеки!
https://cloud.mail.ru/public/G7Ak/hHy7JSzdK
отсюда библиотеки подключи
#include "SIM900.h" #include <SoftwareSerial.h> #include "sms.h" #include "call.h" SMSGSM sms; CallGSM call; //=================Пины 2 и 3 для Подключения GSM модуля boolean started=false; char smsbuffer[160]; char n[20]; String n1 = "+79088018800"; String input_string = ""; char smsDv[] ="Komanda Vipolnena!"; char smsError[] = "Error"; char pos; void setup() { pinMode(7, OUTPUT); pinMode(A0, INPUT); digitalWrite(7,HIGH); if (gsm.begin(4800)) { started=true; } } void loop() { pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС if (pos) { // Если непрочитанные СМС есть, то... getsms(); // получаем непрочитанную СМС if (input_string=="1") // Команда "1" - действие { n1.toCharArray(n,20); // в n1 записываем номер, хранится в n. input_string=""; digitalWrite(7,LOW); delay(1000); digitalWrite(7,HIGH); delay(6000); int count = 0; bool error = false; int ign = analogRead(A0); //не уверен while(ign < 400) { count ++; if(count > 20) //количество попыток { sms.SendSMS(n, smsError); sms.DeleteSMS(1); error = true; break; } digitalWrite(7,LOW); delay(1000); digitalWrite(7,HIGH); delay(7000); //так мы будет каждые 7 секунд пытаться завести машину. ign = analogRead(A0); } if(!error) { sms.SendSMS(n, smsDv); sms.DeleteSMS(1); } } sms.DeleteSMS(pos); // удаляем СМС из симки memset(n,0,20); //обнуляем массив n } } void getsms() { sms.GetSMS(pos,n,20,smsbuffer,160); input_string =String(smsbuffer); }все равно не хочет работать думаю трабл в модуле. работает только с этим скетчем и подобными.
.
Трабл в сим 800 версия не подходит скорее всего