Come configurare smartphone e PC. Portale informativo
  • casa
  • Notizia
  • Controllo tramite comando vocale basato sul modulo di riconoscimento vocale FZ0475.

Controllo tramite comando vocale basato sul modulo di riconoscimento vocale FZ0475.

Come suggerisce il titolo, questo articolo si concentrerà sul riconoscimento dei numeri su un microcontrollore. Vorrei fare subito una prenotazione sul fatto che questo articolo non fornirà il codice sorgente, discuterà della tecnologia o dell'algoritmo di riconoscimento, dirò solo che vengono utilizzate le idee di un approccio sistematico. Alcuni di essi sono descritti nei nostri articoli (e qui). Ciò è dovuto al fatto che il nostro approccio punta all'originalità, ma richiede il chiarimento di alcune questioni. Qualcuno potrebbe dire: “un altro articolo sulla programmazione dei microcontrollori”. Niente affatto, la ricerca di progetti simili non ha dato risultati chiari, tranne questo video. Dalle discussioni sui forum una cosa risulta chiara: l'idea di ottenere dispositivo simile(fotocamera + microcontrollore = risultato del riconoscimento in uscita, non solo un'immagine catturata) è arrivato a molte persone, ma è rimasto senza implementazione. E il riconoscimento, a detta di tutti, richiede molte risorse di calcolo e i microcontrollori non sono adatti a questo, in particolare su Arduino ci sono state affermazioni secondo cui ciò è generalmente impossibile. Se sei interessato, guarda il gatto.

Per evitare domande ovvie, rispondiamo:

  • No, questo non è un servizio di riconoscimento delle immagini.
  • No, questo non è OpenCV
  • No, queste non sono reti neurali
  • Sì, il riconoscimento viene effettuato dal microcontrollore!

Idea

Insomma, tutto è iniziato con la voglia di cimentarmi e testare le mie idee nel riconoscimento delle immagini. Durante la discussione siamo giunti alla conclusione che con poca potenza di calcolo possiamo risolvere questo problema. Per ovvie ragioni non descriveremo i dettagli di queste discussioni.

Installazione

Quindi, il compito è stato fissato, è necessaria l'implementazione. Senza discostarsi da principi già consolidati
prendiamo quello che abbiamo a portata di mano. E ce n'erano un paio a portata di mano ArduinoUno, vecchio mouse ottico e unità CD. A proposito, per cosa utilizzeresti il ​​sensore? mouse ottico Come fotocamera per ottenere un'immagine, ci è stato suggerito qualcosa che abbiamo letto molto tempo fa e, in effetti, tutto il resto del materiale del “mouse”. L'unica cosa che dovevamo fare era dissaldare il sensore e il suo intero cablaggio per facilità d'uso, e anche incollarvi una lente, che abbiamo accuratamente “strappato” dall'unità CD. Questo è stato necessario per aumentare la distanza tra il soggetto e la macchina fotografica, altrimenti i numeri della nostra taglia non sarebbero entrati e ne sarebbe stata visibile solo una piccola parte. A proposito, abbiamo provato a collegare l'ottica della webcam davanti all'obiettivo dell'unità CD, ma in qualche modo non ha funzionato.


Di più



Quindi è nata la domanda su come posizionare questa fotocamera sul soggetto. Qui ci è stato di grande aiuto un vecchio microscopio rotto che giaceva inattivo. Abbiamo rispettosamente rimosso da esso il meccanismo di controllo del palco. Questo meccanismo ci ha permesso di muovere la telecamera solo su due assi; è venuta subito l'idea di utilizzare la guida della testina laser dal lettore CD. Tutto questo era assicurato al case del longevo lettore CD. Di conseguenza, abbiamo ottenuto un fantastico meccanismo di posizionamento della fotocamera.


Di più




Totale: abbiamo una cosiddetta fotocamera, c'è un meccanismo di posizionamento, non resta che mettere un pezzo di carta con un numero e ottenere un'immagine dalla fotocamera. Qui sono iniziati i “problemi”. Visto che le caratteristiche del “mouse” sensore ottico molto scarso per usarlo come macchina fotografica, iniziarono a improvvisare con l'illuminazione.


Di più




È diventato chiaro che non sarebbe stato possibile evidenziare semplicemente l'intensità; anche la direzione della luce esterna può essere modificata. Ho dovuto accendere un altro Arduino per controllare l'intensità della retroilluminazione ( Naturalmente era possibile controllarlo in modo diverso, ma successivamente non solo tramite la retroilluminazione, ma anche cambiando i numeri sull'indicatore). Alla fine, si è scoperto che scattare alla luce è molto meglio. E se, ad esempio, utilizzi come bersaglio un indicatore luminoso a sette segmenti, il sensore lo vede perfettamente. Quindi ora abbiamo un indicatore e una striscia con numeri bianchi riempiti con uno sfondo nero come oggetti da riprendere.


a sinistra c'è un'immagine in scala di grigi ottenuta dall'indicatore (riceviamo tale immagine dal sensore), a destra è binarizzata.


Di più



Vista generale dell'impianto assemblato



opzione di installazione anticipata





Blocco del riconoscimento


Un ruolo importante nella nostra installazione è svolto dalla cosiddetta unità di riconoscimento (nella foto sopra). Come puoi vedere, è composto da un Arduino Uno e un noto trasmettitore wifi ESP8266. Mi spiego, abbiamo bisogno di un trasmettitore wifi per poter vedere l'esito del riconoscimento sul tablet. L'applicazione sul tablet invia una richiesta, Arduino, dopo aver ricevuto la richiesta, “cattura” l'immagine dal sensore del mouse, quindi la binarizza. Dopo la binarizzazione avviene il riconoscimento e al termine viene generata una risposta. Nella risposta inviamo il risultato del riconoscimento e 41 byte per costruire, per così dire, un'immagine binarizzata sullo schermo del tablet per chiarezza.

Se guardi indietro, Arduino ha alcune buone funzionalità: lavorare con la fotocamera, riconoscere e lavorare con l'esp8266. Ciò che non poteva non incidere sul lavoro era il fatto che dovevamo fare i conti con la mancanza di memoria. Non avrei mai pensato che avrei dovuto recuperare ogni byte di memoria.

Dimostrazione del processo di riconoscimento

Invece di una conclusione

È tutto. C'è ancora molto lavoro da fare. E il primo compito: riconoscere i numeri (stringhe di numeri) catturati da una fotocamera “umana” (e non da un “sensore del mouse”) e trasferire la tecnologia sviluppata sull'ESP8266 e ridurre l'intensità della lotta per ogni byte di memoria.

Saremo felici di rispondere alle tue domande.

In questo tutorial di Arduino ti mostreremo come usarlo applicazione mobile per Android e modulo bluetooth HC-05 per controllo vocale GUIDATO.

Per questo tutorial avremo bisogno di un minimo di componenti. Dopo aver completato la lezione, puoi complicare il circuito e aggiungere dispositivi a tuo piacimento.

  • Arduino UNO
  • Modulo Bluetooth HC-05
  • Tagliere per il pane
  • Fili
  • Resistenza da 330 ohm
  • Diodi emettitori di luce (LED)

Passaggio 2: collegamento del modulo Bluetooth HC-05

Il modulo Bluetooth standard HC-05 ha sei pin. Tuttavia, in questo progetto ne useremo solo 4.

Utilizzeremo il pin VCC, il pin GND, il pin TXD e il pin RXD. Il pin VCC del modulo Bluetooth è collegato a +3,3 V da Arduino. Il pin GND del modulo è collegato al GND di Arduino (terra). Il pin TX del modulo Bluetooth è collegato al pin digitale 0 (RXD) e il pin RXD è collegato al pin digitale 1 (TXD).

Passaggio 3: collegamento dei LED

Il prossimo passo nella creazione dei LED è controllato dalla voce, consiste nel collegare i LED ad Arduino tramite una breadboard.

Connettiti prima fine breve LED a terra. Quindi collega l'estremità lunga di ciascun LED a un resistore da 330 ohm. Infine, collega la resistenza di corrente dai LED ai pin digitali di Arduino.

In questo progetto collegheremo un LED a output digitale 2, l'altro all'uscita digitale 3 e l'ultimo LED all'uscita digitale 4.

Passaggio 4: potenza

Per questo progetto, possiamo fornire alimentazione ad Arduino tramite qualsiasi alimentatore da +5 V. Puoi utilizzare la porta USB del tuo computer per alimentare Arduino, ma in questo progetto utilizzeremo una batteria portatile da 5 V. Prima di collegare l'alimentatore al tuo Arduino, assicurati che il GND di Arduino sia collegato alla massa della breadboard.

Passaggio 5: codice

Il codice per il nostro progetto è riportato di seguito.

Passaggio 6: utilizzo dell'app mobile

Puoi iniziare a testare il tuo progetto scaricando l'app Android - BT Voice Control per Arduino (BT Voice Control perArduino) creato da SimpleLabsIN.

Dopo aver scaricato e installato l'applicazione sul tuo telefono Basato su Android fare clic sulla barra dei menu a destra angolo superiore e seleziona "Connetti robot". Nella nuova finestra che appare, seleziona il modulo Bluetooth HC-05 e collegalo.

Ora quando parli con determinati comandi dal codice al tuo dispositivo tramite l'app, alcuni LED dovrebbero accendersi e spegnersi. Dai un'occhiata più da vicino al codice in cui sono indicati i comandi e aggiungi il tuo. Ad esempio, invece di "*accendi rosso" puoi semplicemente specificare "rosso". In questo modo i comandi saranno più veloci, più brevi e più chiari.

Passaggio 7: risultato finale

Il risultato finale lo potete vedere nel video qui sotto.

Vi auguriamo progetti di successo! Non dimenticare di lasciare commenti sul progetto nel nostro

Ricordi come qualche anno fa (e forse anche adesso) era popolare l'idea di controllare la luce in una stanza battendo le mani? Ma è molto comodo, sei sdraiato sul letto, troppo pigro per alzarti e spegni la luce con un battito di mani, oppure torniamo a casa, è buio, ci vuole molto tempo per trovare l'interruttore, e poi fin dalla soglia si sente un paio di applausi e la luce è già accesa. Mi sembra che questo concetto sia ancora attuale, ma può essere applicato a qualcosa di più High tech rispetto a quello che era 5 anni, 10 anni fa. Ora, per una cifra relativamente piccola, è possibile acquistare diverse parti e programmare il progetto funzioni simili, riguardo a cosa parleremo sotto.

Oggi esamineremo un modulo progettato per riconoscere i comandi vocali (incluse solo le voci all'interno di un comando vocale registrato) – Modulo di riconoscimento vocale V3.1 (V3) o il nome di codifica frequentemente riscontrato FZ0475.

Il pacchetto di consegna include il modulo stesso ( scheda a circuito stampato Molto buona qualità), un microfono su gamba flessibile con connettore jack da 3,5 mm e contatti angolari PLS con passo di 2,56 mm per la scheda del modulo (non possono essere utilizzati se collegati ai contatti del modulo in modo diverso).

Oggi esistono diversi tipi di moduli con funzionalità simili. diversi produttori e sviluppatori o esecuzioni. Questo modulo il riconoscimento vocale, secondo me, ha un certo equilibrio tra costo, funzionalità e comodità. Il modulo EasyVR sarà più potente e notevolmente più costoso. I moduli basati sull'LD3320 saranno più economici e più scomodi (scomodi almeno perché non è facile trovarne una descrizione normale, ma il resto è soggettivo).

Caratteristiche del modulo di riconoscimento vocale V3.1 (V3):

  • Tensione di alimentazione – 5 volt
  • Consumo di corrente – fino a 40 mA
  • Interfacce: UART, GPIO
  • Precisione di riconoscimento – 99% (in condizioni ideali)
  • Portata - dipende dal microfono utilizzato; per il microfono standard incluso nel kit, la portata è di 0,5 - 1 metro distanza massima se la voce è abbastanza forte, se la voce è bassa, allora dovrai avvicinare il microfono alla bocca

Il modulo è una piccola scheda ordinata su cui si trovano il microcontrollore principale (macchia nera), un connettore jack da 3,5 mm per il collegamento di un microfono e un microcircuito memoria flash, GPIO, UART e contatti di potenza, una coppia di LED e il resto dell'attrezzatura necessaria per il funzionamento del circuito: resistori, condensatori, quarzo. Le dimensioni compatte della scheda ti permetteranno di integrare facilmente il modulo propri sviluppi. Per aumentare la portata dei comandi vocali è presumibilmente necessario l'utilizzo di un microfono amplificato. Una volta raggiunto un intervallo accettabile, il modulo è adatto per l'uso nei sistemi casa intelligente. Senza modifiche per migliorare il raggio d'azione, il modulo può essere utilizzato nei sistemi di controllo desktop, nonché nei sistemi di sicurezza (controllo e limitazione degli accessi). Con un microfono standard, a causa della portata ridotta, è più affidabile utilizzare il modulo di riconoscimento vocale come auricolare e in modalità wireless trasmettere comandi a un controller che controlla qualcosa utilizzando una batteria e moduli wireless (ad esempio, HC-05 o HC-12 o qualsiasi altro adatto). Il modulo è in grado di funzionare senza microcontrollore esterno, poiché il produttore garantisce l'indipendenza funzionale; è sufficiente registrare i comandi vocali una volta e configurare le impostazioni per lavoro indipendente con aiuto dispositivo esterno(PC o MK).

Quindi, per iniziare a lavorare con il modulo di riconoscimento vocale, dobbiamo collegarlo a un computer (è necessario un adattatore USB-UART) o a un microcontrollore (è necessario sviluppare codice del programma per controllare il modulo).

Non c'è alcuna differenza fondamentale nella gestione e configurazione del modulo tra il collegamento ad un computer o ad un microcontrollore, quindi per chiarezza utilizzeremo un PC per la configurazione. Le istruzioni descrivono i comandi per il modulo in forma esadecimale, quindi per comodità avrete bisogno anche di un terminale che trasmetta byte in forma esadecimale, ad esempio AccessPort (scaricabile alla fine dell'articolo). Inoltre, il produttore si concentra sugli utenti Piattaforme Arduino e fornisce una libreria per l'utilizzo di questo modulo e istruzioni per l'utilizzo di questa libreria. Tuttavia, molti di noi sono molto più interessati a lavorare direttamente con il modulo stesso che tramite il wrapper Arduino.

Prima di iniziare il lavoro, diamo un'occhiata alla lavagna. Alle estremità della scheda a destra c'è una presa per il collegamento di un microfono, dall'altra ci sono quattro contatti dell'interfaccia UART. Nella parte inferiore sono presenti otto contatti utilizzati per l'emissione dei segnali causati dal riconoscimento dei comandi vocali. Nella parte superiore, quattro pin configurati come ingresso del segnale vengono utilizzati per passare da un gruppo di comandi (di sette comandi vocali ciascuno) di comandi, se viene utilizzata tale funzionalità. E i restanti sei pin in alto vengono probabilmente utilizzati per connettersi alla memoria del modulo.

Per azionare e configurare il modulo viene utilizzato un sistema di comando. Forma generale la cornice è questa:

I primi quattro comandi 00, 01, 02, 03 vengono utilizzati per verificare lo stato del modulo e le sue impostazioni. I successivi sei comandi 10, 11, 12, 13, 14, 15 vengono utilizzati per modificare le impostazioni del modulo, incluso il controllo della porta di uscita e le impostazioni di caricamento automatico. Successivamente, tre comandi 20,21, 22 vengono utilizzati per registrare i comandi vocali. I successivi tre comandi 30,31,32 vengono utilizzati per controllare il riconoscimento dei comandi vocali. I comandi 0A, 0D, FF vengono utilizzati solo quando i dati vengono restituiti dal modulo stesso. In realtà non ci sono molti comandi e tutto ciò non è così spaventoso come sembra a prima vista nella documentazione del modulo. Diamo un'occhiata ai comandi necessari per lavorare con il modulo di riconoscimento vocale. Non tutti i comandi esistenti sono pratici.

È interessante notare che il modulo può funzionare senza un microcontrollore di controllo esterno e può anche controllare qualcosa in modo indipendente con le sue porte di uscita. Per fare ciò è necessario configurarli (comandi 12, 13, 14).

Squadra 12 – configurare le porte di uscita. Questo comando configura la modalità operativa delle porte di uscita del modulo di riconoscimento vocale.

Formato: | AA | 03| 12| MODALITÀ | 0A|

Dove MODE può assumere quattro valori: 0 – modalità ad impulso (quando viene attivato un comando vocale, l'uscita corrispondente al comando cambierà il suo stato per il tempo impostato dal comando 13), 1 – modalità di commutazione (commutazione o capovolgimento) (ogni volta viene attivato un comando vocale, l'uscita corrispondente al comando vocale viene invertita), 2 – modalità on (quando viene attivato il comando vocale, l'uscita passerà allo stato logico uno e non andrà più allo stato logico zero, il ripristino è necessario effettuato dal comando 14), 3 – modalità spento (simile alla modalità acceso, solo che al contrario, quando viene attivato il comando vocale, l'uscita si porta allo stato logico zero).

La più pratica è la modalità switch, che non richiede comandi aggiuntivi. Modalità a impulsi sarebbe bello, ma la logica di questa modalità è tale che quando viene attivato un comando vocale, ne emette uno logico una volta, per un tempo compreso tra 10 ms e 1 s. Non è abbastanza. Sebbene, a seconda dei requisiti per questa modalità, potrebbe essere utile. Le modalità di accensione e spegnimento sono implementate in modo scomodo, poiché richiedono l'esecuzione di comandi aggiuntivi.

Squadra 13 – impostazione della durata dell'impulso della modalità corrispondente.

Formato: | AA | 03| 13| LIVELLO | 0A|

Dove LEVEL assume un valore da 00 a 0F (corrispondente ad una durata da 10 ms a 1 s).

LIVELLO durata
0x00 10 ms
0x01 15 ms
0x02 20 ms
0x03 25 ms
0x04 30 ms
0x05 35 ms
0x06 40 ms
0x07 45 ms
0x08 50 ms
0x09 75 ms
0x0A 100 ms
0x0B 200 ms
0x0C 300 ms
0x0D 400 ms
0x0E 500 ms
0x0F 1 secondo

Squadra 14 – reimposta l'uscita delle porte sullo stato data dalle modalità acceso o spento.

Formato: | AA| 03| 14| FF | 0A| - ripristinare tutte le porte di uscita

| AA| 03+n | 14| IO0 | ... | ION | 0A| - reimposta le porte di uscita selezionate

Dove n è il numero di pin che vengono reimpostati selettivamente, IO0...IOn è un elenco di questi pin nel frame di invio dei dati.

Successivamente, affinché i comandi vocali possano essere eseguiti, è necessario registrarli nel modulo (addestrare il modulo). C'è una limitazione qui. È possibile riconoscere solo sette comandi alla volta, sebbene se ne possano registrare molti di più. Per espandere la gamma dei comandi vocali che verranno riconosciuti, viene utilizzato un sistema di raggruppamento (comando 32), controllato dalle porte di ingresso del modulo. Impostando la configurazione del segnale su questi pin si seleziona il gruppo di comandi che verranno riconosciuti. Ciò è dovuto alle prestazioni limitate del controller vocale del modulo.

Squadra 20 - registrare uno o più comandi vocali.

Formato: | AA| 03+n | 20| R0 | ... | Rn | 0A|

Dove n è il numero di comandi vocali registrati (se viene registrato un comando n=0, due comandi n=1 e così via secondo il formato generale per la trasmissione dei comandi Lunghezza - lunghezza), R0...Rn numeri di comandi vocali (AA 03 20 03 0A - comando per registrare il terzo comando vocale).

Squadra 21 - registra un comando vocale e imposta una firma per esso.

Formato: | AA| 03+SIGLENA | 21| REGISTRAZIONE | SIG | 0A|

Dove RECORD è il numero del comando vocale, SIG è la firma (può essere composta da più byte, in modo che ogni byte possa corrispondere, se necessario, ad una codifica di caratteri alfabetici), SIGLEN è il numero di byte che compongono la firma.

Squadra 22 - aggiungere o eliminare una firma per il comando vocale selezionato.

Formato: | AA | 03+SIGLENA | 22| REGISTRAZIONE | SIG | 0A| - aggiungere una firma

| AA | 03| 22| REGISTRAZIONE | 0A| - rimozione della firma

Quando registri i comandi vocali, devi essere guidato dai segnali LED. Dopo aver immesso il comando che avvia il processo di registrazione, il LED giallo (arancione) inizia a lampeggiare velocemente. Non appena si accende il LED rosso, è necessario pronunciare un comando vocale nel microfono. In caso di successo, il LED giallo (arancione) si accenderà e poi di nuovo rosso: è necessario confermare il comando vocale e pronunciarlo di nuovo. In caso di successo, entrambi i LED si accenderanno: il comando vocale è stato salvato.

Una volta registrati i comandi vocali nel modulo, non accadrà nulla finché questi comandi non verranno inseriti nel "Riconoscitore" del modulo. Per fare ciò, è necessario utilizzare il comando 30. Dopo aver eseguito questo comando, il modulo inizierà ad attendere che il comando vocale corrisponda ai campioni salvati. Possono essere riconosciuti solo sette comandi alla volta. In questo caso, il LED giallo (arancione) sulla scheda del modulo lampeggerà lentamente.

Squadra 30 - caricare i record nel Riconoscitore del modulo.

Formato: | AA| 2+n | 30| R0 | ... | Rn | 0A|

Il formato della risposta è il seguente: | AA | 07| 0D | 00| GRPM | R | RI | SIGLEN | SIG | 0A|

Dove GRPM è l'informazione sul gruppo a cui appartiene il comando (se utilizzato), R è il comando vocale riconosciuto (utilizzando questi dati è possibile distinguere i comandi tra loro se non vengono utilizzate le firme), RI è l'indice del comando nel riconoscitore, SIGLEN è la lunghezza della firma in byte, SIG è la firma (se utilizzata).

E infine, se il modulo deve funzionare in modo indipendente, è necessario utilizzare il comando 15 a avvio automatico secondo le preimpostazioni del riconoscitore. In questo caso, il modulo di riconoscimento vocale funzionerà in modo indipendente senza necessità di inizializzazione dopo l'accensione.

Squadra 15 - impostazione del riconoscimento per l'avvio automatico all'accensione.

Formato: | AA| 03| 15| 00| 0A| - disabilita la funzione di esecuzione automatica

| AA| 03+n | 15| BITMAP | R0 | ... | Rn | 0A| - impostazione della funzione di esecuzione automatica

Per controllare la corretta esecuzione dei comandi, ognuno di essi ha la propria risposta. Se necessario, tutti i dati sono reperibili nella documentazione del modulo di riconoscimento vocale allegata a fine articolo. Non dimenticare che tutto valori numerici presentato in esadecimale modulo.

Pertanto, utilizzando il sistema di comando, è possibile configurare in modo flessibile il modulo di riconoscimento vocale per l'utilizzo per vari scopi. Se controlli semplici Poiché le porte di uscita del modulo non sono sufficienti, il modulo di riconoscimento vocale può essere collegato ad altri dispositivi tramite UART o GPIO. Per connessione senza filiÈ possibile utilizzare i moduli discussi in precedenza.

Utilizzando i moduli wireless, è possibile collegare il modulo di riconoscimento vocale a qualsiasi dispositivo laddove sia necessario. Ad esempio, colleghiamolo a un microcontrollore, che controllerà i LED in base ai dati ricevuti sul riconoscimento dei comandi vocali. Moduli senza fili consentire il trasferimento dei dati in due direzioni, quindi, se necessario, è possibile scrivere il codice affinché il microcontrollore inizializzi il modulo vocale e registri i comandi vocali. Nel nostro caso, sotto il controllo del PC, diversi comandi vocali sono già registrati nel modulo e il riconoscimento è configurato per l'avvio automatico all'accensione, quindi per il microcontrollore registreremo solo la ricezione dei dati e il controllo dei LED rispetto a questi dati. Il microcontrollore STM32F103C8T6 utilizza USART1 per ricevere dati e pin PB10...PB15 configurati come uscita, che controlla i LED. Fonte si trova negli allegati alla fine dell'articolo.

Un po' sui risultati

Il riconoscimento vocale non è del tutto accurato. Dipende dai comandi selezionati e dalla voce dell'utente. Durante i test ho riscontrato diversi punti negativi. Durante l'apprendimento dei comandi del modulo, sono stati selezionati i comandi vocali “uno” e “due”. Il comando “due” veniva sempre trasmesso chiaramente, ma il comando “uno” veniva spesso identificato come comando “due” e il codice del secondo comando veniva eseguito di conseguenza. Inoltre, quando si tentava di impartire comandi vocali in inglese (e questi non erano registrati nel modulo vocale), il comando “uno” veniva quasi sempre definito come “due”. Forse è tutta una questione di pronuncia, intonazione e altri aspetti della voce umana incorporati nell'algoritmo per codificare il modulo vocale dei comandi vocali. Tuttavia, questi produttori segreti accesso libero non dare. Inoltre, la qualità del riconoscimento è influenzata dalle condizioni di rumore esterno: rumore della strada, rumore della ventola, suoni casuali, ecc. Il produttore attira l'attenzione sul fatto che alto livello la precisione del riconoscimento avviene in condizioni ideali. L'idea di utilizzare un microfono con un amplificatore aumenterà, ovviamente, il raggio d'azione del dispositivo, ma aumenterà anche la probabilità di errori, poiché l'amplificazione della voce aumenterà anche il rumore.

Infine, se hai requisiti bassi per il riconoscimento vocale e l'esecuzione dei comandi vocali, questo modulo valuterà onestamente i soldi spesi per esso.

Elenco dei radioelementi

Designazione Tipo Denominazione Quantità NotaNegozioIl mio blocco note
IC1 MKSTM32

STM32F103C8

1 Al blocco note
VR1 Regolatore lineare

AMS1117-3.3

1 Al blocco note
MOD1, MOD3 Modulo senza filiHC-122 Al blocco note
MOD2 Modulo di riconoscimento vocaleVR3.11 Al blocco note
Z1 Quarzo8 MHz1

In questo progetto ho combinato un rilevatore di rilevamento dei volti e un sistema di tracciamento.

In breve l'essenza del progetto: una webcam installata su un meccanismo rotante è collegata a un computer controllato dalla sala operatoria Sistemi Windows e con installato Software OpenCV. Se il programma rileva un volto nel campo visivo della webcam, viene calcolato il centro del volto. Le coordinate X e Y vengono inviate al controller Arduino, che è collegato al computer tramite USB. A sua volta, il controller Arduino, in base ai comandi ricevuti, controlla due servomotori: lungo la coordinata X e lungo la coordinata Y, cioè viene fornito un sistema di tracciamento.

Libreria OpenCV ( Open Source Biblioteca di visione artificiale) può essere scaricato. La libreria è multipiattaforma ed attualmente esiste per i seguenti sistemi operativi: Windows, Linux, Android, Mac OS e persino iOS. La libreria fornisce l'elaborazione delle immagini in tempo reale. Scritto in C/C++.

Quello. questo progettoè una miscela di morbido e decisioni difficili. L'immagine viene elaborata su un computer e il servo è controllato tramite un controller.

Quindi cosa ho usato per il progetto:

Software:

Ferro:

computer con Windows 7 SP1

Arduino Uno o compatibile + alimentatore

2 servi

Webcam USB

Quindi andiamo.

Passaggio 1: installare il software

1) Se hai il sistema operativo Windows, scarica il file OpenCV-2.3.1-win-superpack.exe (o più versione successiva) e installare la libreria.

2) Scarica e installa MicrosoftVisual C++2010 espresso. Se hai un sistema a 64 bit Versione di Windows, dovrai anche scaricarlo SDK di Windows(ma potrebbero esserci problemi per la versione 64; non sono riuscito a far funzionare OpenCV con Windows 7 x64).

Leggi il processo di configurazione di OpenCV per Visual C++ sul sito ufficiale.

Passaggio 2. Montaggio della fotocamera e dei servi

Non ho reso il progetto “durevole”, perché dopo aver raggiunto l'obiettivo finale, smonto tutto per il progetto successivo.

Ho collegato la webcam al servomotore dell'asse X e quest'ultima, a sua volta, l'ha collegata al servomotore dell'asse Y. E ho fissato l'intera struttura con un morsetto di "terza mano".

Passaggio 3: connessione

Collegamento dei servomotori:

Il pin giallo del servo dell'asse X è collegato al pin 9 Controllore Arduino

Il pin giallo del servo dell'asse Y è collegato al pin 10 del controller Arduino

Il pin rosso Vcc dal servo si collega al pin 5V

Il pin GND nero del servo è collegato al pin GND del controller Arduino

Connessione webcam:

La webcam si collega al computer tramite Interfaccia USB. Il programma C++ identifica la webcam tramite il numero della porta USB. Potrebbe essere necessario specificare la porta nel programma.

Collegamento del controller Arduino UNO:

Il controller si collega anche al computer tramite un'interfaccia USB. Nel sistema appare una porta COM virtuale che deve essere aggiunta al codice del programma in C++.

Scarica i file di progetto

Articolo originale su lingua inglese(traduzione di A.V. Koltykov per il sito cxem.net)

I migliori articoli sull'argomento