Eduardo Nogueira

Masculino

São Paulo, Brazil

Brasil

Profile Information:

Formação:
-
Ocupação:
-
Interesses:
Hobista

Comment Wall:

  • Cinesio Moreira Mendes

    Eduardo,

    Eu não entendi muito bem suas duvidas. O EasyVR Shield já tem pre-gravados alguns comando em varias linguas ( inglês, italiano, japonês, alemão,  espanhol, francês ).

    Ex.

    Se na programação você especificar que a linguagem será o inglês e falar no microfone "one", a placa reconhecerá e você poederá associar esse reconhecimento a alguma ação ( ligar um rele ).

    Outro modo da placa, é você gravar o seus proprios comando com a sua voz.

    Ex.

    Virar, esquerda, direita.

    No caso não importa o tipo de voz, mas quanto mais proximo da voz pre-gravada ou gravada, mais eficiente será o reconhecimento de voz.

    Existe ainda o reconhecimento de somente uma determinada voz ( para biometria ) e a possibiliade de tocar sons armazenados.

    Ex:

    Você grava uma seguencia de palavras para abertura de fechadira eletrica.

    Depois ( com um software especifico ), transfere para o shield mensagens tipo: "senha correta", "senha incorreta", "tente novamente".

    Quando você falar a senha no microfone, o shield além de reconhecer o comando, irá tocar o som gravado no shield dependendo se foi reconhecido ou não ( "senha correta", "senha incorreta", "tente novamente".)

    Não sei se pude esclarecer suas duvidas.

    Um dos shields eu programei para meu filho apagar as luzes do quarto ( liga e desliga ) e trocar o canal da TV .

    O outro shield instalei num projeto de animatronica ( uma caveira ), que irá falar e interagir com o usuario.

    O proximo projeto será comandar o radio, farois, e tempertaura de um carro.

    Existe um outo modulo de reconhecimento que fazia parte de um  KIT de robo vendido n o Brasil ( http://www.planetadeagostini.com.br/colecionavel/construa-e-program...), Comprei somente o fasciculo que tinha esse modulo,  e estou tentando programa-lo ( R$ 47,00).

    Sds,

  • Euclides Franco de Rezende

    Eduardo. Para expandir as portas do Arduino pode-se usar o 74x595 (família TTL). Acredito que seja mais barato que a outra opção que você colocou (PCF8574). Procure pelo Mauro Assis, que ele colou uma mensagem aqui sobre isso. Detalhe: Com 3 pinos vc. pode expandir para quantas portas quiser (se você montar em cascata, os CIs intermediários ficam subutilizados, pois não desempenham papel ativo na solução do problema, mas deve ser possível sim, desde que vc. crie uma estrutura em árvore dentro da memória do Arduino...mas o esforço não compensaria...vá por mim). Boa sorte.

  • Marcelo Mosczynski

    Cara, acho que o que você quer não é o 74138, você deve usar o 74166, que é um paralelo para serial,

    Eu parti o meu projeto com 74166 desse skretch.


    //********************************************************************************
    // Monitorar 74166
    //********************************************************************************

    // 74166
    #define CI74166_DATAIN 6 // VERDE
    #define CI74166_CLOCK 9 // AMARELO
    /*
    O pino CI74166_CLOCK pode ser compartilhado com o pino de clock usado no CI 74595
    */
    #define CI74166_CLOCK_INH 8 // LARANJA
    #define CI74166_STROBE 7 // AZUL

    byte DebugOn = true;

    int EntradasAC[] = {0,0,0,0,0,0,0,0};
    int EntradasAC_OLD[] = {0,0,0,0,0,0,0,0};
    unsigned int EntradasAC_Intervalo_Leituras = 1000; // Intervalo entre leituras AC

    //********************************************************************************

    //********************************************* Timer de Leituras das entradas AC
    unsigned long EntradasAC_Leitura_Timer_Inicio = 0;
    unsigned int EntradasAC_Leitura_Timer_Acionado = false;
    unsigned int EntradasAC_Leitura_Timer_ON = false;
    unsigned int EntradasAC_Leitura_Timer_Intervalo = EntradasAC_Intervalo_Leituras;

    void setup()
    {
    Serial.begin(9600);


    // ******************************************* DEFINE PINOS 74166

    pinMode(CI74166_CLOCK, OUTPUT);
    pinMode(CI74166_STROBE, OUTPUT);
    pinMode(CI74166_DATAIN, INPUT);

    // ******************************************* Inicializa 74166
    digitalWrite(CI74166_STROBE,1);
    digitalWrite(CI74166_CLOCK,0);

    //Define o Tempo para Proxima Leitura de Estado de Reles
    EntradasAC_Leitura_Timer_Inicio = millis();
    }

    void loop()
    {
    if ((EntradasAC_Leitura_Timer_Inicio + EntradasAC_Leitura_Timer_Intervalo) < millis())
    {
    Serial.print("Entradas AC ");
    ShiftIn();
    Serial.println("");
    EntradasAC_Leitura_Timer_Inicio = millis();
    }
    }

    void ShiftIn()
    {
    int BitEntrada = 0;
    digitalWrite(CI74166_CLOCK,LOW);
    digitalWrite(CI74166_STROBE,LOW);
    delayMicroseconds(2);
    digitalWrite(CI74166_CLOCK,HIGH);
    digitalWrite(CI74166_STROBE,HIGH);
    for (int i= 0; i < 8; i++)
    {
    digitalWrite(CI74166_CLOCK,HIGH);
    delayMicroseconds(2);
    EntradasAC[i] = digitalRead(CI74166_DATAIN);
    if (DebugOn)
    {
    Serial.print(EntradasAC[i], BIN);
    }
    digitalWrite(CI74166_CLOCK, LOW);
    delayMicroseconds(2);
    }
    }