Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Projeto LED Controlado por Voz: Arduino Micro + BitVoicer Server para Reconhecimento de Fala

Componentes e Materiais

Componente Quantidade
Arduino Micro 1
SparkFun Electret Microphone Breakout 1
BitVoicer Server 1
BitVoicer Server 1.0 1
LED (genérico) 3
Resistor 330Ω 3

Sobre o Projeto

Mostro como usar Arduino + BitVoicer Server para controlar LEDs com comandos de voz. Usei Arduino Micro, mas qualquer placa Arduino funciona.

Fluxo de transformação de voz em ação nos LEDs:

  1. Ondas de áudio capturadas e amplificadas pelo SparkFun Electret Breakout
  2. Sinal digitalizado e bufferizado no Arduino via ADC
  3. Amostras de áudio transmitidas ao BitVoicer Server via porta serial
  4. BitVoicer Server processa stream e reconhece fala
  5. Fala reconhecida mapeada a comandos pré-definidos → enviados ao Arduino
  6. Arduino identifica comandos e executa ação apropriada

Vídeo mostra resultado final. BitVoicer também fornece feedback por síntese de voz (reproduzido no áudio do servidor). No próximo post, mostrarei como reproduzir síntese no próprio Arduino DUE com amplificador e alto-falante.

Lista de Materiais

Passo 1: Fiação

Monte Arduino e protoboard conforme imagens.

Projeto LED Controlado por Voz: Arduino Micro + BitVoicer Server para Reconhecimento de Fala
Projeto LED Controlado por Voz: Arduino Micro + BitVoicer Server para Reconhecimento de Fala
Projeto LED Controlado por Voz: Arduino Micro + BitVoicer Server para Reconhecimento de Fala
Projeto LED Controlado por Voz: Arduino Micro + BitVoicer Server para Reconhecimento de Fala

Detalhe crítico: Referência analógica para ADC do Arduino. Obtive melhores resultados com 3.3V no SparkFun Electret Breakout. Por isso, jumper entre pino 3.3V e AREF. Se usar analogRead() com 3.3V no AREF, DEVE chamar analogReference(EXTERNAL) antes! Caso contrário, curto-circuita referência interna ativa com pino AREF, podendo danificar o microcontrolador.

Passo 2: Carregando Código no Arduino

Carregue o código abaixo. Sketch também disponível em anexos. Antes, instale bibliotecas BitVoicer Server no Arduino IDE (Importar biblioteca .zip).

BVS_Demo1.ino

Sketch tem 4 partes principais:

  1. Referências e variáveis: Inclui bibliotecas BVSP e BVSMic (pasta instalação BitVoicer). Constantes e variáveis globais. Classe BVSP = comunicação com servidor; BVSMic = captura/armazenamento de áudio.
  2. Setup: Inicializa serial, classes BVSP/BVSMic, define handler do evento frameReceived.
  3. Loop: 3 ações: solicita status ao servidor (keepAlive()), verifica/processa dados recebidos (receive()), controla gravação/envio de stream de áudio (isSREAvailable(), startRecording(), stopRecording(), sendStream()).
  4. BVSP_frameReceived: Chamado quando receive() identifica frame completo. Executa comando do servidor: 2 bytes (byte 0 = pino, byte 1 = valor). Usa analogWrite() no pino.

Passo 3: Importando Objetos da Solução BitVoicer Server

Configure BitVoicer Server para trabalhar com Arduino. 4 objetos principais: Locations, Devices, BinaryData, Voice Schemas.

Importe todos objetos dos arquivos abaixo:

Devices.sof

VoiceSchema.sof

Passo 4: Conclusão

Pronto! No vídeo, iniciei habilitando dispositivo ArduinoMicro no BitVoicer Server Manager. Ao habilitar, Arduino detecta Speech Recognition Engine disponível e inicia streaming de áudio.

Acompanhe resultados no Server Monitor (BitVoicer Server Manager).

Próximo post: reproduzir síntese de voz no Arduino DUE.

Código

BVS_Demo1.ino (Arduino)

#include <BVSP.h>
#include <BVSMic.h>

// Pino de entrada de áudio
#define BVSM_AUDIO_INPUT 5

// Pinos dos LEDs
#define RED_LED_PIN 6
#define YELLOW_LED_PIN 9
#define GREEN_LED_PIN 10

// Constantes para BVSP.begin
const unsigned long STATUS_REQUEST_TIMEOUT = 1000;
const unsigned long STATUS_REQUEST_INTERVAL = 2000;

// Tamanho buffers
const int AUDIO_BUFFER_SIZE = 64;
const int RECEIVE_BUFFER_SIZE = 2;

// Instâncias globais
BVSP bvsp = BVSP();
BVSMic bvsm = BVSMic();

byte audioBuffer[AUDIO_BUFFER_SIZE];
byte receiveBuffer[RECEIVE_BUFFER_SIZE]; // Byte 0 = pino, Byte 1 = valor

void setup() {
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(YELLOW_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);

  Serial.begin(115200);

  bvsp.begin(Serial, STATUS_REQUEST_TIMEOUT, STATUS_REQUEST_INTERVAL);
  bvsp.frameReceived = BVSP_frameReceived;
  bvsm.begin();
}

void loop() {
  bvsp.keepAlive();
  bvsp.receive();

  if (bvsp.isSREAvailable()) {
    if (!bvsm.isRecording) {
      bvsm.setAudioInput(BVSM_AUDIO_INPUT, EXTERNAL);
      bvsm.startRecording();
    }
    if (bvsm.available) {
      if (bvsp.inboundMode == FRAMED_MODE)
        bvsp.setInboundMode(STREAM_MODE);
      int bytesRead = bvsm.read(audioBuffer, AUDIO_BUFFER_SIZE);
      bvsp.sendStream(audioBuffer, bytesRead);
    }
  } else {
    if (bvsm.isRecording)
      bvsm.stopRecording();
  }
}

void BVSP_frameReceived(byte dataType, int payloadSize) {
  if (dataType == DATA_TYPE_BINARY) { // 0x07 = dados binários
    if (bvsp.getReceivedBytes(receiveBuffer, RECEIVE_BUFFER_SIZE) == RECEIVE_BUFFER_SIZE) {
      analogWrite(receiveBuffer[0], receiveBuffer[1]);
    }
  }
}

Esquemático

Projeto LED Controlado por Voz: Arduino Micro + BitVoicer Server para Reconhecimento de Fala

Processo de manufatura

  1. Sistema de Presença RFID Confiável com Arduino e Python
  2. Projeto DHT11: Sensor Temperatura/Umidade com LEDs Indicadores e Buzzer
  3. Monitor de Temperatura e Relógio Tempo Real com Arduino Due e Display TFT 3.2"
  4. Controlar Roomba Create 2 com Arduino e Android: Guia Passo a Passo
  5. Construa um Voltímetro DIY com Arduino e Display Nokia 5110 – Guia Passo a Passo
  6. Arduino e MPU6050: Controle Preciso de Servomotores SG90 e MG996R
  7. Módulo GPS u-blox LEA‑6H 02: Guia de Integração com Arduino e Python
  8. Leitura de Temperatura e Umidade com DHT11 no Blynk – Tutorial Arduino Passo a Passo
  9. Dominando Reconhecimento e Síntese de Fala no Arduino Due
  10. Construa um Cubo de LED 4x4x4 com Arduino Uno e 1Sheeld – Projeto Interativo de LED