Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale

Composants et fournitures

Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale
Arduino Micro
× 1
Sparkfun Electret Microphone Breakout
× 1
BitVoicer Server
× 1
BitVoicer Server 1.0
× 1
Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale
LED (générique)
× 3
Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale
Résistance 330 ohm
× 3

À propos de ce projet

Dans cet article, je vais montrer comment utiliser une carte Arduino et le serveur BitVoicer pour contrôler quelques LEDs avec des commandes vocales. J'utiliserai l'Arduino Micro dans cet article, mais vous pouvez utiliser n'importe quelle carte Arduino que vous avez sous la main.

Les procédures suivantes seront exécutées pour transformer les commandes vocales en activité des LEDs :

La vidéo ci-dessus montre le résultat final de cet article. Notez dans la vidéo que le serveur BitVoicer fournit également une rétroaction vocale synthétisée. Cette rétroaction vocale est définie dans le serveur et reproduite par l'adaptateur audio du serveur, mais l'audio synthétisé pourrait aussi être envoyé à l'Arduino et reproduit à l'aide d'un convertisseur numérique-analogique (CNA). Dans mon prochain article, je vais montrer comment utiliser l'Arduino DUE, un amplificateur et un haut-parleur pour reproduire la parole synthétisée en utilisant l'Arduino lui-même.

Liste du matériel :

ÉTAPE 1 : Câblage

La première étape est de câbler l'Arduino et la platine d'essai avec les composants comme montré dans les images ci-dessous.

Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale
Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale
Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale
Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale

Le détail le plus important ici concerne la référence analogique fournie au CAN de l'Arduino. Dans mes tests, j'ai obtenu de meilleurs résultats en utilisant 3,3 V avec la carte Sparkfun Electret Breakout. C'est pourquoi j'ai ajouté un cavalier entre la broche 3,3 V et la broche AREF. Si vous décidez d'utiliser la fonction analogRead (pour une raison quelconque) alors que 3,3 V est appliqué sur la broche AREF, vous DEVEZ appeler analogReference(EXTERNAL) avant d'utiliser la fonction analogRead. Sinon, vous mettrez en court-circuit la tension de référence active (générée en interne) et la broche AREF, risquant d'endommager le microcontrôleur de votre carte Arduino.

ÉTAPE 2 : Téléverser le code sur l'Arduino

Maintenant, vous devez téléverser le code ci-dessous sur votre Arduino. Pour plus de commodité, le sketch Arduino est également disponible dans la section Pièces jointes au bas de cet article. Avant de téléverser le code, vous devez installer correctement les bibliothèques du serveur BitVoicer dans l'IDE Arduino (Importation d'une bibliothèque .zip).

BVS_Demo1.ino

Ce sketch a quatre parties principales :

ÉTAPE 3 : Importer les objets de solution du serveur BitVoicer

Maintenant, vous devez configurer le serveur BitVoicer pour qu'il fonctionne avec l'Arduino. Le serveur BitVoicer a quatre objets de solution majeurs : Emplacements, Périphériques, Données binaires et Schémas vocaux.

Les emplacements représentent l'emplacement physique où un périphérique est installé. Dans mon cas, j'ai créé un emplacement appelé Home (Maison).

Les périphériques sont les clients du serveur BitVoicer. J'ai créé un périphérique mixte, nommé ArduinoMicro et entré les paramètres de communication. NOTE SUR L'ARDUINO MICRO : il utilise RTS et DTR donc vous devez activer ces paramètres dans l'onglet communication. J'ai aussi créé un périphérique SystemSpeaker pour synthétiser la parole en utilisant l'adaptateur audio du serveur.

Les données binaires sont un type de commande que le serveur BitVoicer peut envoyer aux périphériques clients. Ce sont en fait des tableaux d'octets que vous pouvez lier à des commandes. Quand le serveur BitVoicer reconnaît une parole liée à cette commande, il envoie le tableau d'octets au périphérique cible. J'ai créé un objet Données binaires pour chaque valeur de broche et je les ai nommés ArduinoMicroGreenLedOn, ArduinoMicroGreenLedOff, etc. J'ai fini avec 18 objets Données binaires dans ma solution, donc je vous suggère de les télécharger et importer depuis le fichier VoiceSchema.sof ci-dessous.

Les schémas vocaux sont là où tout se réunit. Ils définissent quelles phrases doivent être reconnues et quelles commandes exécuter. Pour chaque phrase, vous pouvez définir autant de commandes que nécessaire et l'ordre dans lequel elles seront exécutées. Vous pouvez aussi définir des délais entre les commandes. C'est ainsi que j'ai réussi à effectuer la séquence d'actions que vous voyez dans la vidéo.

Vous pouvez importer (Importation d'objets de solution) tous les objets de solution que j'ai utilisés dans cet article depuis les fichiers ci-dessous. L'un contient les Périphériques et l'autre contient le Schéma vocal et ses Commandes.

Devices.sof VoiceSchema.sof

ÉTAPE 4 : Conclusion

C'est tout ! J'espère que vous avez aimé.

Vous avez tout ce qu'il faut pour exécuter la démo montrée dans la vidéo. Notez que dans la vidéo, j'ai commencé par activer le périphérique ArduinoMicro dans le gestionnaire du serveur BitVoicer. Dès qu'il est activé, l'Arduino identifie un moteur de reconnaissance vocale disponible et commence à diffuser l'audio vers le serveur BitVoicer.

Vous pouvez suivre les résultats de la reconnaissance dans l'outil Moniteur du serveur disponible dans le gestionnaire du serveur BitVoicer.

Dans mon prochain article, je montrerai comment vous pouvez reproduire la parole synthétisée en utilisant un Arduino DUE.

Code

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

// Définit la broche Arduino qui sera utilisée pour capturer l'audio
#define BVSM_AUDIO_INPUT 5

// Définit les broches des LEDs
#define RED_LED_PIN 6
#define YELLOW_LED_PIN 9
#define GREEN_LED_PIN 10

// Définit les constantes qui seront passées en paramètres à
// la fonction BVSP.begin
const unsigned long STATUS_REQUEST_TIMEOUT = 1000;
const unsigned long STATUS_REQUEST_INTERVAL = 2000;

// Définit la taille du tampon audio
const int AUDIO_BUFFER_SIZE = 64;

// Définit la taille du tampon de réception
const int RECEIVE_BUFFER_SIZE = 2;

// Initialise une nouvelle instance globale de la classe BVSP
BVSP bvsp = BVSP();

// Initialise une nouvelle instance globale de la classe BVSMic
BVSMic bvsm = BVSMic();

// Crée un tampon qui sera utilisé pour lire les échantillons enregistrés
// depuis la classe BVSMic
byte audioBuffer[AUDIO_BUFFER_SIZE];

// Crée un tampon qui sera utilisé pour lire les commandes envoyées
// depuis le serveur BitVoicer.
// Octet 0 = numéro de broche
// Octet 1 = valeur de la broche
byte receiveBuffer[RECEIVE_BUFFER_SIZE];

void setup() {
  // Configure les modes des broches
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(YELLOW_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);

  // Démarre la communication série à 115200 bauds
  Serial.begin(115200);

  // Définit le port série Arduino qui sera utilisé pour
  // la communication, combien de temps avant qu'une demande d'état
  // n'expire et à quelle fréquence les demandes d'état doivent être envoyées
  // au serveur BitVoicer.
  bvsp.begin(Serial, STATUS_REQUEST_TIMEOUT, STATUS_REQUEST_INTERVAL);

  // Définit la fonction qui gérera l'événement
  // frameReceived
  bvsp.frameReceived = BVSP_frameReceived;

  // Prépare le minuteur de la classe BVSMic
  bvsm.begin();
}

void loop() {
  // Vérifie si l'intervalle de demande d'état s'est écoulé et si
  // c'est le cas, envoie une demande d'état au serveur BitVoicer
  bvsp.keepAlive();

  // Vérifie s'il y a des données disponibles dans le tampon du port série
  // et traite son contenu selon les spécifications
  // du protocole du serveur BitVoicer
  bvsp.receive();

  // Vérifie s'il y a un MRE disponible. S'il y en a un,
  // commence l'enregistrement.
  if (bvsp.isSREAvailable()) {
    // Si la classe BVSMic n'enregistre pas, configure l'entrée
    // audio et commence l'enregistrement
    if (!bvsm.isRecording) {
      bvsm.setAudioInput(BVSM_AUDIO_INPUT, EXTERNAL);
      bvsm.startRecording();
    }

    // Vérifie si la classe BVSMic a des échantillons disponibles
    if (bvsm.available) {
      // S'assure que le mode entrant est STREAM_MODE avant
      // de transmettre le flux
      if (bvsp.inboundMode == FRAMED_MODE)
        bvsp.setInboundMode(STREAM_MODE);

      // Lit les échantillons audio depuis la classe BVSMic
      int bytesRead = bvsm.read(audioBuffer, AUDIO_BUFFER_SIZE);

      // Envoie le flux audio au serveur BitVoicer
      bvsp.sendStream(audioBuffer, bytesRead);
    }
  } else {
    // Aucun MRE n'est disponible. Si la classe BVSMic enregistre,
    // l'arrête.
    if (bvsm.isRecording)
      bvsm.stopRecording();
  }
}

// Gère l'événement frameReceived
void BVSP_frameReceived(byte dataType, int payloadSize) {
  // Vérifie si la trame reçue contient des données binaires
  // 0x07 = Données binaires (tableau d'octets)
  if (dataType == DATA_TYPE_BINARY) {
    // Si 2 octets ont été reçus, traite la commande.
    if (bvsp.getReceivedBytes(receiveBuffer, RECEIVE_BUFFER_SIZE) == RECEIVE_BUFFER_SIZE) {
      analogWrite(receiveBuffer[0], receiveBuffer[1]);
    }
  }
}

Schémas

Projet LED à commande vocale : Arduino Micro + Serveur BitVoicer pour reconnaissance vocale

Processus de fabrication

  1. Système de pointage RFID fiable avec Arduino et Python (base de données phpMyAdmin)
  2. Projet capteur DHT11 température/humidité avec indicateurs LED et buzzer piézo
  3. Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
  4. Contrôlez votre Roomba Create 2 avec Arduino et Android – Guide pas à pas
  5. Construire un voltmètre DIY avec Arduino et écran Nokia 5110
  6. Arduino et MPU6050 : Contrôle précis de servo-moteur avec SG90 et MG996R
  7. Module GPS u-blox LEA‑6H 02 : guide d'intégration Arduino et Python
  8. Lire température et humidité avec DHT11 sur Blynk – Tutoriel Arduino pas à pas
  9. Maîtriser la reconnaissance et la synthèse vocale sur Arduino Due