-
Re: Запуск автомобиля с голоса
есть первые продвижения нашел на просторах интернета элементарный скетч для БТ
https://www.youtube.com/watch?v=R6o1UlC-ztg
там у него 3 видео достаточно посмотреть второе
попробовал с 13 пином все работает
вот мой скетч
PHP код:
void setup()
{
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop()
{
char c = Serial.read();
if (c == '1') digitalWrite(13,HIGH);
if (c == 'A') digitalWrite(13,LOW);
delay(1000);
}
и делал все как в видео при подключении БТ к телефону вводишь 1234:D
вопрос остается открытым можно ли на ардуино нано v3 использовать еще какие нибудь выходы под RX и TX или хотя бы один в режиме приема мои то заняты под обработку голосового модуля???:confused:
-
Re: Запуск автомобиля с голоса
Любые ноги кроме А6 и А7.
-
Вложений: 1
Re: Запуск автомобиля с голоса
спасибо за ответ нашел статью где именно используют др. выходы
http://chingachgook.net/arduino/vedr...bluetooth.html
библиотеки я подключу только можно я буду использовать один пин в режиме приема для экономии пинов мне они еще пригодятся для подключения кнопок магнитолы:):) если для этого я буду использовать пин A0???
Вложение 16503
-
Re: Запуск автомобиля с голоса
нашел интересную статью про БТ 4.0 на основе ардуино
http://www.kickstarter.com/projects/...arduino-compat
-
Re: Запуск автомобиля с голоса
пробовал сделать РХ и ТХ на др пинах не получается сделал все как в скетче из ссылки (ведроид) не получилось даже сделал 11 и 12 пины входом и выходом что я делаю не так вот набросок скетча ошибок не:confused:
PHP код:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
void setup()
{
pinMode(11,OUTPUT);
pinMode(12,INPUT);
pinMode(13,OUTPUT);
BTSerial.begin(9600);
}
void loop()
{
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1') digitalWrite(13,HIGH);
if (c == 'A') digitalWrite(13,LOW);
}
}
-
Re: Запуск автомобиля с голоса
1. добавь инициализацию железного порта для Serial.println(c);
2. убери
pinMode(11,OUTPUT);
pinMode(12,INPUT);
во-первых они перепутаны, во-вторых библиотека сам настроит
-
Re: Запуск автомобиля с голоса
есть все получилось спасибо:) теперь можно усложнять скетч для начала попробую просто поуправлять теми вещами которыми я управлял с голосовых команд:cool:
PHP код:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
void setup()
{
pinMode(13,OUTPUT);
BTSerial.begin(9600);
Serial.begin(9600);
}
void loop()
{
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1') digitalWrite(13,HIGH);
if (c == 'A') digitalWrite(13,LOW);
}
}
прикол еще заключается в том что когда БТ подключен к др пинам его можно не отключать при программировании как написанно в статье (ведроид) проверял ;)
-
Вложений: 2
Re: Запуск автомобиля с голоса
Сегодня пробовал врезать в свой скетч работу с БТ хотел залить пробный скетч подключаю ардуину (которая у меня на печатной плате обрабатывает голосовые команды) к буку а в ответ он у меня видет новое оборудование попробывал повторно указать путь к папке с драйверами не помогает подключаю вторую ардуину на которой я вообще пробовал БТ дома все определяется и все такое сколько было мата когда я выяснил что оказываетсямоя вторая плата не оригинальная вспоминается момент когда она только пришла все пины были подписанны но как будто краска чуть расплылась тогда я этому не придал значения но сейчас понял что тогда я обратил на это внимание не просто так на первой плате написанно Arduino Nano V3.0 а на другой просто V3.0 и при более детальном рассмотрении на второй было написано CArduino:(:(:( у них да же светодиоды включения светятся по разному на оригинале синий а на неоригинале зеленый. Лан это не столь важно вопрос в следующем почему при всем том что CArduino это клон причем полный его комп увидел поставил драйвера а на оригинал начал требовать драйвера????
Вложение 16515
лам принебрег даже этим благо на моей печатке Arduino вставляется в кроватку перекидываю платы местами начинаю проверять скетч у меня ошибки по MS Timer-у вспомнил что у меня нет библиотеки ставлю библиотеку (в папку libraries) а проверку все равно не проходит
Вложение 16516
пишет следующее
'MsTimer2' has not been declared
причем в 51 и 52 строчке
почему так????
-
Re: Запуск автомобиля с голоса
Цитата:
важно вопрос в следующем почему при всем том что CArduino это клон причем полный его комп увидел поставил драйвера а на оригинал начал требовать драйвера????
Китайцы не торгуют оригиналами. Если не секрет где покупал Carduino? Дело в том что Carduino производим мы и 3 версия выпустилась одной партией. Потом выяснилось что в оригинальной версии Arduino Nano V.3 ошибка в разводке платы, которую они по сей день так и не исправили. Так вот эту ошибку мы тоже повторили в Carduino Nano V.3 Пришлось в ручную с паяльником всю партию из 300шт. править. Соответственно была выпущена Carduino Nano V.4 без этой ошибки.
Суть ошибки заключался в том что вывод test висит в воздухе, а должен быть подтянут к земле.
Из за этого есть проблемы с определением устройства по USB и проблемы при выходе из сна, компьютер при выходе из сне не видит устройства
-
Re: Запуск автомобиля с голоса
во первых это не кардуино а дело в том что так как краска расплылась при более детальном рассмотрении это оказались скобки покупал не я на алиба бе я попросил мне купили а в третьих светодиод на питание у ардуины синий а на этой он зеленый такое вообще может быть? и почему одну он видит а др. нет если косяк есть в обеих??
-
Re: Запуск автомобиля с голоса
Цитата:
и почему одну он видит а др. нет если косяк есть в обеих??
Прозвони вывод Test микросхемы FTDI с землей
-
Вложений: 3
Re: Запуск автомобиля с голоса
тестера под рукой не оказалось у меня была контролька
Вложение 16517
вобщем с ней не звонится или сопротивление очень велико думаю этого достаточно теперь как мне лучше стянуть к массе этот тест можете показать на фото появилась возможность выкинуть более качественные фотографии а и еще пользуюсь возможностью показываю лицевую сторону обоих плат та что на печатке с релюхами эт новая с которой я сейчас работаю а др якобы зависшая хоть и оригинал
Вложение 16518Вложение 16519
насчет скетча перезалил библиотеку и все проверку прошло
попытался добавить работу с БТ пока только получилось включать тишину а хотелось бы при отправке 1 еще раз она ее выключала пытался сделать по анологии как с сом портом только не прокатывает что я делаю не так????
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
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;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
boolean a=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
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);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
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 (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
if(flag)
{
switch(c)
{
case 1:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
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(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
-
Re: Запуск автомобиля с голоса
проблема в том что я не могу сделать единицу посланную через БТ триггером что бы при повторном посылании единицы тишина выключалась:confused:
PHP код:
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
if(flag)
{
switch(c)
{
case 1:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
-
Re: Запуск автомобиля с голоса
Цитата:
Сообщение от
Omigovolt
проблема в том что я не могу сделать единицу посланную через БТ триггером что бы при повторном посылании единицы тишина выключалась:confused:
Инвертитуй после каждой посылки
flag=~flag;
-
Re: Запуск автомобиля с голоса
а можно это в скетче показать а то я что то не понимаю а пробы с различными комбинациями не дают результата:(
в компорт единицы летят на ура тх промаргивает)
-
Вложений: 1
Re: Запуск автомобиля с голоса
чип сегодня пропаял выход тест с массой не помогло думал может сопля проверил 100 процентов не помогло опять видит новое оборудрвание и все что я сделал не так качество фото с телефона но будте уверенны я проверил и соплей не было не ужели ардуинка легла:confused::confused::confused::mad:
Вложение 16529
-
Re: Запуск автомобиля с голоса
А зачем проводок? Достаточно было замкнуть с 25 выводом микросхемы на этом пине подлючен GND
-
Re: Запуск автомобиля с голоса
ну на тот момент мне об этом никто не сказал а схему я не смотрел но по чему комп видит ее как новое оборудование и проблема не решается:confused:
-
Вложений: 1
Re: Запуск автомобиля с голоса
сегодня после долгих мучений удалось оживить старую ардуинку правда я это сделал на стационарном компьютере где стоит виндовс 7 а на буке ХР и там по прежнему он видит только одну плату а при подключении другой начинает устанавливать новое оборудование пытался подключить к другому usb на ноуте не помогло правда и на стационарном компьютере я смог залить на обе платы мигание светодиодом на версии программы 1.0.4
Вложение 16530
а на 1.5.3 ничего не вышло там куча ошибок и все такое при этом уже было пропаяно тест с 25 пином и после все этого задаю себе вопрос а в этом ли было дело у кого были такие проблемы расскажите как решали их
хотелось бы одинаково работать с обоими ардуинками при чем на обоих компьютерах
Р. S.на ноуте ПО 1.0.5
-
Вложений: 1
Re: Запуск автомобиля с голоса
вчера дописал скетч теперь я могу включать и выключать тишину свет и открывать багажник спасибо manu_245 возникла потребность контролировать концевик багажника но это уже мелочь хотелось бы теперь что бы ардуинка воспринимала кирилицу таблица расшифровки символов есть только кирилицы там нет мржет для этого библиотека какая то есть???
скетч последней редакции
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
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;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
boolean a=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
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);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
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 (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
switch(c)
{
case 50:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
delay(1000);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
case 51:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
if(flag)
{
switch(c)
{
case 49:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
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(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
а вот таблица символов
Вложение 16543
по поводу ардуинки поставил на ноутбуке версио ПО 1.0.4 и поставил драйвера с версии ПО 1.0.1 теперь у меня ноутбук и компьютер видят обе ардуины:p
-
Re: Запуск автомобиля с голоса
опытным путем выяснил что посылает телефон через БТ на кирилице
а=0
б=1
в=2
г=3
д=4
е=5
ё=Q
ж=6
з=7
и=8
к=:
л=;
м=<
н==
о=>
п=?
р=@
с=A
т=B
у=C
ф=D
х=E
ц=F
ч=G
ш=H
щ=I
ъ=J
ы=K
ь=L
э=M
ю=N
я=O
скетч последней редакции
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
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;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
boolean a=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
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);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
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 (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '<' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
switch(c)
{
case 49:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
delay(1000);
com=0;
break;
}
case 65:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
if(flag)
{
switch(c)
{
case 60:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
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(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
теперь при пасылании (м) он выключает звук при пасылании (с) включает свет и при (б) открывает багажник
-
Вложений: 1
Re: Запуск автомобиля с голоса
работаю со сдвиговым регистром идея управлять магнитолой по БТ
пример моего кода
PHP код:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
#define DS 8 //Пин подключен к DS входу 74HC595
#define SHCP 9 //Пин подключен к SH_CP входу 74HC595
#define STCP 10 //Пин подключен к ST_CP входу 74HC595
void setup()
{
BTSerial.begin(9600);
Serial.begin(9600);
pinMode(DS, OUTPUT);
pinMode(SHCP, OUTPUT);
pinMode(STCP, OUTPUT);
}
void loop()
{
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B10000000);
digitalWrite(STCP, HIGH);
delay(100);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
if (c == '2')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B01000000);
digitalWrite(STCP, HIGH);
delay(100);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
if (c == '3')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00100000);
digitalWrite(STCP, HIGH);
delay(100);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
if (c == '4')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00010000);
digitalWrite(STCP, HIGH);
delay(100);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
if (c == '5')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00001000);
digitalWrite(STCP, HIGH);
delay(100);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
if (c == '6')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000100);
digitalWrite(STCP, HIGH);
delay(100);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
if (c == '7')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000010);
digitalWrite(STCP, HIGH);
delay(3000);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
if (c == '8')
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000001);
digitalWrite(STCP, HIGH);
delay(100);
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, B00000000);
digitalWrite(STCP, HIGH);
}
}
}
есть первые результаты уже удалось увеличивать и уменьшать звук:p мне это удалось ка на мосфете так и на оптроне а вот на транзисторе не получилось может подобрал не то (ВС546)
Вложение 16712 рабочий процесс:)
-
Вложений: 1
Re: Запуск автомобиля с голоса
-
Re: Запуск автомобиля с голоса
спасибо тебе!, у меня такой же модуль , но всё руки не доходили со словом триггером разобраться ,а тут на твою тему наткнулся))
ты еще не разобрался как все 15 команд задействовать?
-
Re: Запуск автомобиля с голоса
а ЧТО В СХЕМЕ ТАК МНОГО транзисторов делает и разьем 3.5 зачем ?
-
Re: Запуск автомобиля с голоса
мысль была но в ваз 2106 я даже и не знаю чем еще можно управлять мне 5 за глаза можно попытаться сделать слово при котором она будет переходить ко 2-й группе а в ней сделать что бы переходило в первую и в третью но тогда у тебя теряется 3-5 команд и по факту у тебя управляющих получится от 12 до 10 можно подзаморочится с условием например нажимаеш на тормоз а она автоматически переходит во 2 группу отпускаешь назад ну что то в таком духе.
-
Re: Запуск автомобиля с голоса
там всего их пять на пять действий громче тише трек вперед трек назад и переход от радио на USB
-
Re: Запуск автомобиля с голоса
прикупил себе EasyVR
Подключил пока к компу через преобразователь интерфейса, чтобы видеть диалог...
Вроде немного разобрался в протоколе. осталось неясность как работает распознавание команд SD. Нужно самому опрашивать состояние была какая-то команда или нет. Или модуль должен сам отправить определенный параметр на UART с указанием группы и номера команды?
ps. работать модуль будет без всяких дуино, напрямую на МК Atmega.
Заранее благодарю за ответы!
-
Re: Запуск автомобиля с голоса
Цитата:
Сообщение от
Станис
прикупил себе EasyVR
Подключил пока к компу через преобразователь интерфейса, чтобы видеть диалог...
Вроде немного разобрался в протоколе. осталось неясность как работает распознавание команд SD. Нужно самому опрашивать состояние была какая-то команда или нет. Или модуль должен сам отправить определенный параметр на UART с указанием группы и номера команды?
ps. работать модуль будет без всяких дуино, напрямую на МК Atmega.
Заранее благодарю за ответы!
лично я не работал с EasyVR по этому вопросу помочь не могу а вот чип работал думаю он подскажет)
вот тут http://compcar.ru/forum/showthread.p...ghlight=EasyVR
-
Re: Запуск автомобиля с голоса
http://www.youtube.com/watch?v=d-7wYDjKKPw
Для тех кто не хочет смотреть, хотя первое видео я рекомендую для общего развития, второе во втором листе, перейду к сути, этот автомобиль заводится при нажатии на педаль тормоза, с учетом той системы, что стоит у меня в автомобиле, я могу это легко реализовать при помощи ПО (прошивки)! По сути куда еще ленивее, хотя круче автозапуск (который на карбюраторе нуу пока не нужен). Что мы делаем всегда когда садимся в автомобиль первым делом перед запуском - правильно педаль тормоза и сцепление, на автоматах только тормоз. В моем случае у меня освободится 2 команды ниндзя и япошка, что с этим делать, пока не знаю, но с учетом того, что это эксперимент и для этого менять физически ни чего не надо, то надо попробывать!!! Чувствую, что к этой функции привыкнешь мгновенно:p А да чуть не забыл, когда у нас были морозы минус 25 минус 27,то я заводил машину с кнопки. Был такой момент, один раз я уже выезжал со двора, а к этому моменту машина прогрелась до 50, я всегда грею ее до этого уровня (карбюратор):o, только тогда сработала тишина, а это первые строчки в void setap. Так вот в проблеме разбираться я не стал (может у кого есть предположения), но предполагаю, что это по питанию. Кнопку я все равно оставлю так на всякий случай тем более это эксперимент)))
-
Re: Запуск автомобиля с голоса
http://www.youtube.com/watch?v=Yrl35yfpnA0
И вообще, по моему это просто мечта какая то, алюминиевый корпус, ни каких ДВС => ни каких масел, тосолов и прочей... и динамические характеристики покруче большинства спорт каров! После просмотра этих видео, смотришь на все эти Х6 как на, что то прошловековое :eek:
-
Re: Запуск автомобиля с голоса
Да, машина мечта, но пока не для наших карманов :) За такие деньги можно неплохую иномарку лет 20 обслуживать на бензине. Но как только эти технологии станут дешевле, а мы к этому придём полюбому, так вот тогда кругом будут такие машины или даже совершеннее. Тогда будет выгодный бизнес по переработке батарей. Вот тогда нафтотрейдеры сядут на жопу. Особенно Путин :)
П.С. Ничего не имею против самих россиян, просто удивляет уверенность политиков в бездонных ресурсах нефти и газа и значит больше ничего развивать не нужно. Да с правильным менеджментом можно было бы вывести Россию на первые позиции в мире во всех направлениях - интеллектуальные и материальные ресурсы для этого были, пока не запустили всё это. А жаль...
-
Re: Запуск автомобиля с голоса
У меня есть сомнения что автомобиль подойдет для нашего климата.
Всем известно что при минусовой температуре Li-ion аккумуляторы значительно теряют емкость или приходят в негодность
И еще, реагенты которыми обрабатывают улицы Москвы разъедают алюминиевые детали автомобилей
Так что нужно сначала проследить за тем как они переживут пару зим в России
А автомобиль у Э.Маска получился классный!!!
-
Re: Запуск автомобиля с голоса
Машины Тесла в прошлом году прошли тесты в скандинавских странах и сейчас там ездят. Правда, сами производители сообщили, что ход на одном заряде в таком климате будет на 20-40% ниже, чем в тёплых странах - всё зависит от температуры. Можно, конечно, и подогрев батарей сделать, чтобы не мёрзли постоянно, но это тоже дополнительний расход энергии. Понятно, что в Сибирь их лучше не запускать :) Но, всё равно, считаю, что батарейная система питания - это всего лишь промежуточная и не выгодная ступень на пути к более совершенным источником питания с большим запасом энергии, причём дешёвой. Хороший вариант поставить в каждую машину по небольшому атомному реактору и 15-20 лет не заправляться :)))
-
Re: Запуск автомобиля с голоса
Цитата:
Машины Тесла в прошлом году прошли тесты в скандинавских странах и сейчас там ездят. Правда, сами производители сообщили, что ход на одном заряде в таком климате будет на 20-40% ниже, чем в тёплых странах - всё зависит от температуры.
Это не показатель, у них мягкий и умеренный климат, на него влияет теплое течение Гольфстрим.
Цитата:
Можно, конечно, и подогрев батарей сделать, чтобы не мёрзли постоянно, но это тоже дополнительний расход энергии
Так как у большинства жителей больших городов нет отапливаемой парковки или гаража. Придется подогревать аккумулятор всю зиму
Да и с розеткой 220в в больших городах будут сложности
Цитата:
Хороший вариант поставить в каждую машину по небольшому атомному реактору и 15-20 лет не заправляться ))
Вот это уже другое дело!!!
-
Re: Запуск автомобиля с голоса
На самом деле это прорыв это мое мнение:cool:
а теперь по делу сегодня пробовал экспериментировать на работе со скетчем
беру вот эти срочки
PHP код:
if( digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
и ставлю их в самое начало loop
получается вот так
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
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;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
boolean a=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
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);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
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( digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
switch(c)
{
case 50:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
delay(1000);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
case 51:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
if(flag)
{
switch(c)
{
case 49:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
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(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
я был уверен что все получится но на деле получается что ни чего не работает что я упустил или сделал не так?
-
Вложений: 1
Re: Запуск автомобиля с голоса
вчера получилось выполнить то что я захотел заработало добавил я пару строк в начале лупа
PHP код:
void loop() // run over and over again
{
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
только вот не задача хотелось немного по другому объясню на диаграммах
Вложение 17621
на первых показано как работает у меня получилось педаль тормоза как кнопка приходится ее отпускать и снова нажимать
а мне надо как на двух других диаграммах что бы я нажал и он сразу начал заводится а ногу я даже не убирал как это реализовать???
вот весь скетч
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
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;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
boolean a=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
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);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
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(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
switch(c)
{
case 50:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
delay(1000);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
case 51:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
if(flag)
{
switch(c)
{
case 49:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
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(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
-
Вложений: 1
Re: Запуск автомобиля с голоса
сегодня проверил на стенде если быть точным то у меня там стоит реле птф и импульс подается на него так вот оно срабатывает в момент отпускания а ардуино держит нажатой хотя я делаю задержку в одну милисекунду почему так происходит?
Вложение 17622
-
Re: Запуск автомобиля с голоса
уровень на выходе стартера не так выглядит как ты нарисовал. там по факту происходит вот что: лампа заряда горит, stopflag==true, жмешь тормоз. выход на стартер включается. ждет 100мс и выключается. но поскольку все условия выполняются (лампа, педаль и т.д.) он тут же снова включает выход start. выглядит как будто он всегда включен. когда отпускаешь тормоз условие исчезает, и включение в цикле не происходит. чтобы это победить надо либо сделать отдельную переменную, чтобы она обнулялась после одного прохода цикла и потом восстанавливалась при следующем нажатии тормоза, либо поставить задержку, чтоб ардуина фигарила импульсами пока не отпустишь педаль или пока не погаснет лампа заряда.
-
Вложений: 1
Re: Запуск автомобиля с голоса
я понял тогда на графике это должно выглядеть так
Вложение 17623
импульсами ни как нельзя на деле это будет выглядеть так стартер будет включаться и снова выключаться как будто тупо щелкает втягивающее реле стартера там же реле птф а вот одноразовое выполнение именно то что надо это надо сделать через флаги вот так?
PHP код:
void loop() // run over and over again
{
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{startflag=true;}
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
startflag=false;
digitalWrite(Mute, LOW);
c=0;
}