Re: Запуск автомобиля с голоса
блин на радостях забыл один ниуанс при произнесении тишины если не поступила ни одна команда то есть мы тупо молчим или надо поговорить по телефону (у магнитолы выключился звук) то при повторении тишины звук снова включался я ток что проверил сейчас это не работает эту функцию нужно реализовать))))
Re: Запуск автомобиля с голоса
вот весь скетч все работает и на ниндзе и на я пошке и на багажнике)))))
PHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x12:
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x14:
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
http://youtu.be/Yl8zL-qng24
ааа и еще очень даже приятно если свет включен я говорю тишина и вместо света говорю багажник она открывает багажник а свет продолжает гореть тема:p
теперь остались еще 3 условия что бы япошка сработал нужно что бы нога была на педали тормоза и с датчика скорости шел сигнал меньше 4Гц или вообще не шел сигнал при этом он должен понимать что двигатель запущен то есть лампочка зарядки АКБ не горела
а при ниндзе видеть что двигатель не запущен и нога тоже должна быть на педали тормоза при всем при этом все должно работать через триггер))))
Re: Запуск автомобиля с голоса
вот последний обнавленный код когда нужно поговорить по мобильному :p
PHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x12:
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x14:
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
Re: Запуск автомобиля с голоса
Еще можно обучить распознавать звонок телефона и тогда ардуино будет автоматически глушить звук когда звонят на твой мобильник
Re: Запуск автомобиля с голоса
идея очень даже интересная правда но тогда скорее всего придется ставить очень простую мелодию на мобильник вплоть до примитивных пиликаний плата с микрофоном у меня будет стоять в козырьке еще при этом при всем будет орать музыка и последнее это приведет к усложнению кода а меня идея что бы все было как можно проще и безопаснее)))) а так для интузиастов вообще вариант чумовой :cool:
Вложений: 1
Re: Запуск автомобиля с голоса
собрал проверочный стенд только что на скорую руку за 15 мин:D проверил показания датчиков стоп лампочка зарядки АКБ и конечно же датчик скорости все ок теперь доводим код до ума и можно будет тестить:p
Вложение 15767
Re: Запуск автомобиля с голоса
Re: Запуск автомобиля с голоса
ну вот теперь завязали все это на педаль тормоза и лампочку АКБ
PHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
int Lampbattery = 4;
int Stopisignal = 2;
int Speedisensor = 3;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Lampbattery, INPUT);
digitalWrite(Lampbattery, HIGH);
pinMode(Stopisignal, INPUT);
digitalWrite(Stopisignal, HIGH);
pinMode(Speedisensor, INPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
if(digitalRead(2)==LOW && digitalRead(4)==LOW )
{
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(digitalRead(2)==LOW && digitalRead(4)==HIGH)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
за что огромное спасибо manu_245
ну и конечно же видео
http://youtu.be/PWtqcpHnhbQ
может немного не понятно поясню то есть лампочка АКБ горит двигатель не запущен нажимаем стоп потом произносим триггер и только после совпадения всех 3-х условий она откликнется на слово ниндзя и запустит двигатель лампочка АКБ потухла опять нажимаем тормоз триггер и только тогда можно его заглушить кстате эта возможность исключает путаницу двух команд (ниндзя и япошка) т к распознование голоса не совершенно во время тестов я замечал что иногда при произнесении ниндзяя она могла зажеч светодиод япошки и наоборот ))))))
возник вопрос :
один из пассажиров решив надомной и зная все команды приколоться решит на ходу открыть багажник???
решение:
сделать одним из условий наличие сигнала на датчике скорости и это исключит возможность открытия багажника на ходу
и опять спасибо за подсказку manu_245
теперь осталось сделать еще одно и очень важное условие это датчик скорости:p
Re: Запуск автомобиля с голоса
чип есть часть кода
PHP код:
interrupt [EXT_INT1] void ext_int1_isr(void)
{
tick++; //сигналы датчика
if (tick==6){ // если 6 - проехали 1 м., сбрасываем на 0
tick=0;
a=14063/period; //считаем скорость
period=0;
}
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
period++;
if(period>4000){ //если долго не прерывается пишем 0
a=0;period--;
}
}
как его привязать к моему что бы начало прирываний на датчике скорости было условием или флагом ?
Re: Запуск автомобиля с голоса
Я так думаю, здесь не нужен спидометр, нужен признак движения.
Идея такая: По прерываниям на D3 увеличиваем счетчик импульсов. По таймеру, например раз в секунду, проверяем сколько в счетчике и обнуляем его. Если меньше 2 или 3 (не так важно. 2 примерно 1км/ч, 3 - 1,8), то поднимаем флаг остановки, если больше - сбрасываем.