Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • Controlul comenzii vocale bazat pe modulul de recunoaștere a vocii FZ0475.

Controlul comenzii vocale bazat pe modulul de recunoaștere a vocii FZ0475.

După cum sugerează și numele, acest articol se va concentra pe recunoașterea numerelor pe un microcontroler. Vreau să fac o rezervare imediat că acest articol nu va furniza codul sursă, luați în considerare tehnologia sau algoritmul de recunoaștere, voi spune doar că sunt folosite ideile unei abordări sistematice. Unele dintre ele sunt prezentate în articolele noastre (și iată). Acest lucru se datorează faptului că abordarea noastră tinde să fie originală, dar necesită clarificarea unor probleme. Cineva ar putea spune: „un alt articol despre programarea microcontrolerelor”. În niciun caz, căutarea unor astfel de proiecte nu a dat niciun rezultat inteligibil, cu excepția acesteia video... Un lucru este clar din discuțiile de pe forumuri: ideea obținerii unui astfel de dispozitiv (camera + microcontroler = rezultatul recunoașterii la ieșire, și nu doar o imagine capturată) a venit la mulți, dar a rămas fără implementare. Da, iar recunoașterea, conform opiniei generale, necesită o mulțime de resurse de calcul, iar microcontrolerele nu sunt potrivite pentru asta, în special, au existat declarații despre Arduino că acest lucru este în general imposibil. Dacă devine interesant, te rog, sub pisică.

Pentru ca să nu existe întrebări evidente, le vom răspunde:

  • Nu, acesta nu este un serviciu de recunoaștere a imaginii
  • Nu, acesta nu este OpenCV
  • Nu, acestea nu sunt rețele neuronale
  • Da, recunoașterea se face de către microcontroler!

Idee

Pe scurt, totul a început cu dorința de a-mi încerca mâna și de a-mi testa ideile în recunoașterea imaginilor. În timpul discuției, am ajuns la concluzia că putem face cu o putere de calcul mică pentru a rezolva această problemă. Din motive evidente, nu vom descrie detaliile acestor discuții.

Instalare

Deci, sarcina este stabilită, este necesară implementarea. Fără a se abate de la principiile deja stabilite
luăm ceea ce este la îndemână. Și erau câteva Arduino Uno, un mouse optic vechi și o unitate CD la îndemână. Apropo, ni s-a cerut să folosim senzorul unui mouse optic pe post de cameră pentru a obține o imagine din ceea ce am citit cu mult timp în urmă și de fapt tot restul materialului „mouse”. Singurul lucru pe care trebuia să-l facem a fost să scoatem senzorul și toate curelele acestuia pentru ușurință în utilizare, precum și să lipim lentila de el, pe care l-am scos cu grijă din unitatea CD. Acest lucru a fost necesar pentru a mări distanța de la subiect la cameră, altfel numerele de mărimea noastră nu se potriveau și doar o mică parte era vizibilă. Apropo, în fața lentilei de pe unitatea CD, am încercat să atașăm optica de la camera web, dar cumva nu a ieșit.


Mai mult



Apoi a apărut întrebarea cum să poziționați această cameră deasupra subiectului. Ne-a ajutat foarte mult un microscop vechi stricat, care zăcea inactiv. Cu respect i-a îndepărtat mecanismul de control al stadiului subiectului. Acest mecanism ne-a permis să mișcăm camera doar pe două axe, iar ideea a venit imediat să folosim ghidajul capului laser de la unitatea CD. Toate acestea au fost remediate pe carcasa de pe unitatea CD îndelungată. Drept urmare, am primit un mecanism de poziționare a camerei.


Mai mult




Total: avem asa-zisa camera, exista mecanism de pozitionare, ramane sa punem o bucata de hartie cu un numar si sa obtinem o imagine de la camera. De aici au început „problemele”. Deoarece caracteristicile senzorului optic „mouse” sunt foarte rare pentru a fi utilizate ca cameră, au început să improvizeze cu iluminare de fundal.


Mai mult




A devenit clar că doar pentru a evidenția nu funcționează, intensitatea este importantă, direcția luminii exterioare face și ajustări. A trebuit să pornesc un alt „arduinka” pentru a controla intensitatea luminii de fundal ( desigur, a fost posibil să-l controlezi într-un mod diferit, dar mai târziu și nu numai lumina de fundal, ci și prin comutarea numerelor de pe indicator). În cele din urmă, s-a dovedit că fotografierea în lumină este mult mai bună. Și dacă, de exemplu, folosești un indicator luminos cu șapte segmente ca țintă, atunci senzorul îl vede în general perfect. Deci, acum avem un indicator și o bandă cu numere albe umplute cu un fundal negru ca obiecte de fotografiere.


in stanga este o imagine in tonuri de gri obtinuta din indicator (obtinem o astfel de imagine de la senzor), in dreapta este binarizata.


Mai mult



Vedere generală a ansamblului



instalare timpurie





Unitate de recunoaștere


Un rol important în instalația noastră îl joacă așa-numita unitate de recunoaștere (în imaginea de mai sus). După cum puteți vedea, este format dintr-un Arduino Uno și un transmițător wifi binecunoscut. ESP8266... Permiteți-mi să vă explic, avem nevoie de un transmițător wifi pentru a vedea rezultatul recunoașterii pe o tabletă. Aplicația de pe tabletă trimite o cerere, „arduinka”, primind cererea, „preia” imaginea de la senzorul mouse-ului, apoi o binarizează. După binarizare, are loc recunoașterea, iar după finalizarea acesteia, se formează un răspuns. Ca răspuns, trimitem rezultatul recunoașterii și 41 de octeți pentru a construi o imagine binarizată pe ecranul tabletei, ca să spunem așa, pentru claritate.

Dacă te uiți în urmă, atunci „arduinka” i se încredințează o funcționalitate bună: lucrează cu camera și recunoaștere și lucrează cu esp8266. Ceea ce nu putea decât să afecteze munca – a trebuit să mă confrunt cu o lipsă de memorie. Nu m-am gândit niciodată că va trebui vreodată să recuperez fiecare octet de memorie.

Demonstrarea procesului de recunoaștere

În loc de o concluzie

Asta e tot, de fapt. Mai este mult de lucru înainte. Și prima sarcină: recunoașterea numerelor (șiruri de numere) capturate de o cameră „umană” (nu un „senzor mouse”) și transferarea tehnologiei dezvoltate la ESP8266 și reducerea intensității luptei pentru fiecare octet de memorie.

Vom fi bucuroși să vă răspundem la întrebări.

În acest tutorial Arduino, vă vom arăta cum să utilizați aplicația mobilă Android și modulul Bluetooth HC-05 pentru a controla prin voce LED-ul.

Pentru acest tutorial, avem nevoie de un minim de componente. După ce finalizați lecția, puteți complica schema și o puteți completa cu dispozitive pe placul dvs.

  • Arduino UNO
  • Modul Bluetooth HC-05
  • Tabla de paine
  • Fire
  • Rezistor de 330 ohmi
  • Diode emițătoare de lumină (LED)

Pasul 2: Conectarea modulului Bluetooth HC-05

Modulul Bluetooth HC-05 standard are șase pini. Cu toate acestea, în acest proiect vom folosi doar 4.

Vom folosi pinul VCC, pinul GND, pinul TXD și pinul RXD. Pinul VCC al modulului bluetooth se conectează la + 3,3 V de la Arduino. Pinul GND al modulului se conectează la Arduino GND (masă). Pinul TX al modulului bluetooth se conectează la pinul digital 0 (RXD), iar pinul RXD se conectează la pinul digital 1 (TXD).

Pasul 3: Conectarea LED-urilor

Următorul pas în crearea LED-urilor controlate prin voce este conectarea LED-urilor la Arduino printr-o placă.

Conectați mai întâi capătul scurt al LED-ului la masă. Apoi conectați capătul lung al fiecărui LED-uri la un rezistor de 330 ohmi. În cele din urmă, conectați rezistența de curent de la LED-uri la pinii digitali de pe Arduino.

În acest proiect, vom conecta un LED la pinul digital 2, altul la pinul digital 3 și ultimul LED la pinul digital 4.

Pasul 4: Putere

Pentru acest proiect, putem alimenta Arduino prin orice sursă de alimentare + 5 V. Puteți utiliza portul USB de la computer pentru a alimenta Arduino, dar în acest proiect vom folosi o baterie portabilă de 5 V. Asigurați-vă că GND-ul Arduino este conectat la masă înainte de a conecta sursa de alimentare la Arduino.

Pasul 5: Cod

Codul pentru proiectul nostru este mai jos.

Pasul 6: Folosind aplicația mobilă

Puteți începe să vă testați proiectul prin descărcarea aplicației Android - BT Voice Control for Arduino (BT Voice Control for Arduino) creată de SimpleLabsIN.

După ce ați descărcat și instalat aplicația pe telefonul dvs. Android, faceți clic pe bara de meniu din colțul din dreapta sus și selectați „Conectați un robot”. În noua fereastră care apare, selectați modulul Bluetooth HC-05 și conectați-l.

Acum, când vorbiți cu anumite comenzi de la cod pe dispozitiv prin aplicație, anumite LED-uri ar trebui să se aprindă și să se stingă. Aruncă o privire mai atentă la codul în care sunt indicate comenzile și pune-l pe al tău. De exemplu, în loc de „* comutați pe roșu”, puteți specifica pur și simplu „roșu”. Acest lucru va face comenzile mai rapide, mai scurte și mai clare.

Pasul 7: rezultatul final

Rezultatul final poate fi văzut în videoclipul de mai jos.

Vă dorim proiecte de succes! Nu uitați să lăsați comentarii despre proiect în cadrul nostru

Îți amintești cum în urmă cu câțiva ani (și poate chiar acum) era populară ideea de a controla lumina într-o cameră bătând din palme? Și, la urma urmei, este foarte convenabil, stai întins în pat, prea leneș să te ridici și să bati din palme de la lumină sau să pleci acasă, e întuneric, simți pentru mult timp comutatorul și aici chiar din prag acolo este o palmă sau două și lumina este deja aprinsă. Mi se pare că acest concept este încă relevant, dar i se pot aplica tehnologii superioare față de cele care erau acum 5, 10 ani. Acum, pentru o sumă relativ mică, puteți cumpăra mai multe piese și puteți programa structura pentru funcții similare, care vor fi discutate mai jos.

Astăzi vom lua în considerare un modul conceput pentru a recunoaște comenzile vocale (inclusiv doar o voce dintr-o comandă vocală înregistrată) - Modul de recunoaștere vocală V3.1 (V3) sau numele de codificare comun FZ0475.

Livrarea include modulul în sine (placă de circuit imprimat de foarte bună calitate), un microfon pe un picior flexibil cu conector jack de 3,5 mm și contacte PLS în unghi cu pas de 2,56 mm pentru placa modulului (pot fi omise dacă vă conectați la contactele modulului prin alt mod).

Astăzi există mai multe tipuri de module cu funcționalități similare de la diferiți producători și dezvoltatori sau modele. Acest modul de recunoaștere a vocii, în opinia mea, are un anumit echilibru între cost, funcționalitate, comoditate. Modulul EasyVR va fi mai puternic și semnificativ mai scump. Modulele bazate pe LD3320 vor fi mai ieftine și incomode (incomod, cel puțin pentru că nu este ușor să găsești descrieri normale asupra lor, dar în rest este deja subiectivă).

Caracteristicile modulului de recunoaștere vocală V3.1 (V3):

  • Tensiune de alimentare - 5 volți
  • Consum de curent - până la 40 mA
  • Interfețe - UART, GPIO
  • Precizia recunoașterii - 99% (în condiții ideale)
  • Raza de actiune - depinde de microfonul folosit, pentru microfonul standard din kit, raza de actiune este de 0,5 - 1 metru din distanta maxima cu o voce suficient de puternica, daca vocea este silentioasa, atunci va trebui sa apropii microfonul la gura ta

Modulul este o placă mică îngrijită pe care microcontrolerul principal (black blob), un conector jack de 3,5 mm pentru conectarea unui microfon, un cip de memorie flash, GPIO, UART și contacte de alimentare, o pereche de LED-uri și restul echipamentelor necesare necesare pentru funcționarea circuitului sunt amplasate - rezistențe, condensatoare, cuarț. Dimensiunea compactă a plăcii vă va permite să integrați cu ușurință modulul în propriile modele. Pentru a crește gama de comenzi vocale, este probabil necesar să folosiți un microfon cu amplificator. La atingerea unui interval acceptabil, modulul este potrivit pentru utilizarea în sistemele de casă inteligentă. Fără modificări pentru îmbunătățirea domeniului de funcționare, modulul poate fi utilizat în sistemele de control desktop, precum și în sistemele de securitate (control și restricție de acces). Cu un microfon standard, din cauza razei scurte de acțiune, este mai sigur să utilizați modulul de recunoaștere a vocii pe post de căști și să transmiteți fără fir comenzi unui controler care controlează ceva folosind o baterie și module fără fir (de exemplu, HC-05 sau HC-12). sau orice altul potrivit). Modulul poate funcționa fără un microcontroler extern, deoarece producătorul a stabilit independența funcțională, este necesar să înregistrați o singură dată comenzile vocale și să setați setările pentru funcționare independentă folosind un dispozitiv extern (PC sau MK).

Deci, pentru a începe să lucrăm cu modulul de recunoaștere a vocii, trebuie să îl conectăm fie la un computer (este necesar un adaptor USB-UART), fie la un microcontroler (este necesar să dezvoltăm un cod de program pentru a controla modulul).

Nu există nicio diferență fundamentală în controlul și configurarea modulului între conectarea la un computer sau la un microcontroler, prin urmare, pentru claritate, vom folosi un PC pentru configurare. Instrucțiunile descriu comenzile pentru modul în formă hexazecimală, prin urmare, pentru comoditate, veți avea nevoie și de un terminal care transmite octeți în formă hexazecimală, de exemplu, AccessPort (poate fi descărcat la sfârșitul articolului). În plus, producătorul se concentrează pe utilizatorii platformei Arduino și oferă o bibliotecă pentru utilizarea acestui modul și instrucțiuni pentru utilizarea acestei biblioteci. Cu toate acestea, mulți dintre noi suntem mult mai interesați să lucrăm cu modulul în sine direct decât prin ambalajul Arduino.

Înainte de a începe lucrul, să ne dăm seama de placa. Pe părțile laterale ale plăcii din dreapta este un conector pentru un microfon, pe cealaltă sunt patru pini ai interfeței UART. Mai jos sunt opt ​​pini folosiți pentru a scoate semnale declanșate de recunoașterea vocală. În partea de sus, cele patru contacte configurate ca intrare de semnal sunt folosite pentru a comuta între grupuri (șapte comenzi vocale fiecare) de comenzi, dacă este utilizată această funcție. Iar ceilalți șase pini din partea de sus sunt probabil folosiți pentru a se conecta la memoria modulului.

Un sistem de comandă este utilizat pentru operarea și configurarea modulului. Vederea generală a cadrului este următoarea:

Primele patru comenzi 00, 01, 02, 03 sunt folosite pentru a verifica starea modulului și setările acestuia. Următoarele șase comenzi 10, 11, 12, 13, 14, 15 sunt folosite pentru a modifica setările modulului, inclusiv controlul porturilor de ieșire și setările de încărcare automată. Mai mult, trei comenzi 20, 21, 22 sunt utilizate pentru a înregistra comenzi vocale. Următoarele trei comenzi 30,31,32 sunt folosite pentru a controla recunoașterea comenzilor vocale. Comenzile 0A, 0D, FF sunt folosite numai atunci când returnează date de către modul însuși. De fapt, nu există multe comenzi și toate acestea nu sunt atât de înfricoșătoare pe cât pare la prima vedere în documentația pentru modul. Să aruncăm o privire la comenzile necesare pentru a lucra cu modulul de recunoaștere vocală. Nu toate echipele existente sunt practice.

Este de remarcat faptul că modulul poate funcționa fără un microcontroler de control extern, precum și poate controla independent ceva cu porturile sale de ieșire. Pentru a face acest lucru, trebuie să le configurați (comenzile 12, 13, 14).

Echipa 12 - configurați porturile de ieșire. Această comandă setează modul de funcționare al porturilor de ieșire ale modulului de recunoaștere vocală.

Format: | AA | 03 | 12 | MOD | 0A |

Unde MODE poate lua patru valori: 0 - modul puls (atunci când o comandă vocală este declanșată, ieșirea corespunzătoare comenzii își va schimba starea pentru timpul stabilit de comanda 13), 1 - modul comutator (comutați sau flip) (de fiecare dată) este declanșată o comandă vocală, ieșirea corespunzătoare comenzii vocale este inversată), 2 - modul pornit (când este declanșată o comandă vocală, ieșirea va intra în starea unei unități logice și nu va mai intra într-o stare de logică zero, resetarea este efectuată prin comanda 14), 3 - modul oprit (similar doar cu modul pornit, dimpotrivă, atunci când comanda vocală este declanșată, ieșirea trece la starea zero logic).

Cel mai practic este modul comutator, care nu necesită comenzi inutile. Modul puls ar fi bun, dar logica acestui mod este de așa natură încât, atunci când este declanșată o comandă vocală, emite o unitate logică o dată, pentru un timp de la 10 ms la 1 s. Nu este de ajuns. Deși, în funcție de cerințele pentru acest mod, poate fi util. Modurile de pornire și oprire sunt implementate în mod incomod, deoarece necesită executarea unor comenzi suplimentare.

Echipa 13 - setarea duratei pulsului modului corespunzător.

Format: | AA | 03 | 13 | NIVEL | 0A |

Unde LEVEL ia o valoare de la 00 la 0F (corespunde unei durate de la 10 ms la 1 s).

NIVEL durată
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 s

Echipa 14 - resetarea porturilor de ieșire la starea specificată de modurile pornit sau oprit.

Format: | AA | 03 | 14 | FF | 0A | - resetați toate porturile de ieșire

| AA | 03 + n | 14 | IO0 | ... | IOn | 0A | - resetați porturile de ieșire selectate

Unde n este numărul de pini care sunt resetati selectiv, IO0 ... IOn este lista acestor pini în cadrul de trimitere a datelor.

În plus, pentru ca comenzile vocale să fie executate, acestea trebuie înregistrate în modul (antrenează modulul). Există o limitare aici. Doar șapte comenzi pot fi recunoscute simultan, deși multe altele pot fi înregistrate. Pentru a extinde gama de comenzi vocale care vor fi recunoscute, se folosește un sistem de grupare (comanda 32), care este controlat de porturile de intrare ale modulului. Prin setarea configurației semnalelor pe aceste contacte, se realizează selecția grupului de comenzi care vor fi recunoscute. Acest lucru se datorează performanței limitate a modulului de control vocal utilizat.

Echipa 20 - înregistrarea uneia sau mai multor comenzi vocale.

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

Unde n este numărul de comenzi vocale înregistrate (dacă o comandă este înregistrată n = 0, două comenzi n = 1, și așa mai departe în conformitate cu formatul general al transmisiei comenzii Lungime - lungime), R0 ... Rn este numărul de comenzi vocale (AA 03 20 03 0A - comandă pentru înregistrarea celei de-a treia comenzi vocale).

Echipa 21 - înregistrarea unei comenzi vocale și setarea unei semnături pentru aceasta.

Format: | AA | 03 + SIGLEN | 21 | ÎNREGISTRARE | SIG | 0A |

Unde RECORD este numărul comenzii vocale, SIG este semnătura (poate consta din mai mulți octeți, astfel încât fiecare octet să corespundă codificării caracterului alfabetic dacă este necesar), SIGLEN este numărul de octeți care compun semnătura .

Echipa 22 - adăugați sau eliminați o semnătură pentru comanda vocală selectată.

Format: | AA | 03 + SIGLEN | 22 | ÎNREGISTRARE | SIG | 0A | - adăugarea unei semnături

| AA | 03 | 22 | ÎNREGISTRARE | 0A | - eliminarea semnăturii

În procesul de înregistrare a comenzilor vocale, este necesar să fie ghidat de semnalele LED-urilor. După introducerea comenzii care pornește procesul de înregistrare, LED-ul galben (portocaliu) începe să clipească rapid. De îndată ce LED-ul roșu se aprinde, trebuie să rostiți o comandă vocală în microfon. Dacă are succes, LED-ul galben (portocaliu) se va aprinde și apoi din nou roșu - trebuie să confirmați comanda vocală, să o spuneți din nou. Dacă reușește, ambele LED-uri se vor aprinde - comanda vocală este salvată.

După ce comenzile vocale sunt înregistrate în modul, nu se va întâmpla nimic până când aceste comenzi nu sunt plasate în „Recunoașterea” modulului. Pentru a face acest lucru, utilizați comanda 30. După executarea acestei comenzi, modulul va începe să aștepte ca comanda vocală să se potrivească cu mostrele salvate. Doar șapte comenzi pot fi recunoscute simultan. În acest caz, LED-ul galben (portocaliu) de pe placa modulului va clipi lent.

Echipa 30 - încărcați înregistrările în „Recognizer” al modulului.

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

Formatul răspunsului este următorul: | AA | 07 | 0D | 00 | GRPM | R | RI | SIGLEN | SIG | 0A |

Unde GRPM este informații despre grupul căruia îi aparține comanda (dacă este utilizată), R este comanda vocală recunoscută (aceste date pot fi folosite pentru a distinge comanda între ele dacă nu sunt utilizate semnături), RI este indexul comenzii din recunoscut, SIGLEN este lungimea semnăturii în octeți, SIG - semnătură (dacă este utilizată).

Și, în cele din urmă, dacă modulul trebuie să funcționeze singur, atunci trebuie să utilizați comanda 15 pentru a-l porni automat în funcție de presetările dispozitivului de recunoaștere. În acest caz, modulul de recunoaștere vocală va funcționa singur, fără a fi nevoie de inițializare după pornire.

Echipa 15 - setarea rulării automate a dispozitivului de recunoaștere la pornire.

Format: | AA | 03 | 15 | 00 | 0A | - dezactivați funcția de rulare automată

| AA | 03 + n | 15 | BITMAP | R0 | ... | Rn | 0A | - setarea funcției de rulare automată

Pentru a controla corectitudinea executării comenzilor, fiecare dintre ele corespunde propriului răspuns. În cazul unei astfel de necesități, toate datele pot fi găsite în documentația pentru modulul de recunoaștere vocală atașată la sfârșitul articolului. Nu uitați că toate valorile numerice sunt reprezentate în hexazecimal formă.

Astfel, folosind sistemul de comandă, este posibilă configurarea flexibilă a modulului de recunoaștere a vocii pentru utilizare în diverse scopuri. Dacă controlul simplu al porturilor de ieșire ale modulului nu este suficient, atunci modulul de recunoaștere vocală poate fi conectat la alte dispozitive prin UART sau GPIO. Pentru conexiunea wireless, puteți utiliza modulele discutate anterior.

Folosind module wireless, puteți conecta modulul de recunoaștere vocală la orice dispozitiv, acolo unde este necesar. De exemplu, să-l conectăm la un microcontroler, care va controla LED-urile privind datele primite privind recunoașterea comenzilor vocale. Modulele wireless permit transferul de date în două direcții, prin urmare, dacă este necesar, se poate scrie un cod pentru inițializarea modulului vocal și înregistrarea comenzilor vocale pentru microcontroler. În cazul nostru, în modulul sub controlul PC-ului au fost deja înregistrate mai multe comenzi vocale și autostart-ul de recunoaștere este configurat la pornirea alimentării, prin urmare, pentru microcontroler, vom înregistra doar recepția datelor și controlul LED-ului în raport cu aceste date. . Microcontrolerul STM32F103C8T6 folosește USART1 pentru a primi date și pinii PB10 ... PB15 configurați pentru ieșire, care sunt controlați de LED-uri. Codul sursă se află în anexa de la sfârșitul articolului.

Un pic despre rezultate

Recunoașterea vocii nu este complet exactă. Depinde de comenzile alese și de vocea utilizatorului. În timpul testării, am găsit câteva puncte negative. La predarea comenzilor modulului s-au ales comenzile vocale „unu” și „două”. Comanda „doi” a fost întotdeauna clară, dar comanda „unu” a fost destul de des definită ca comanda „doi” și, în consecință, codul celei de-a doua comenzi a fost executat. În plus, atunci când încercam să dai comenzi vocale în engleză (și nu au fost înregistrate în modulul vocal), comanda „unu” a fost aproape întotdeauna definită ca „două”. Poate că totul este despre pronunție, intonație și alte aspecte ale vocii umane, încorporate în algoritmul de codificare a modulului vocal al comenzilor rostite. Cu toate acestea, producătorii nu oferă aceste secrete în domeniul public. În plus, calitatea recunoașterii este influențată de condițiile de zgomot extern - zumzet de pe stradă, zgomot ventilator, sunete aleatorii etc. Producătorul atrage atenția asupra faptului că un nivel ridicat de acuratețe a recunoașterii are loc în condiții ideale. Ideea de a folosi un microfon cu un amplificator, desigur, va crește raza de acțiune a dispozitivului, dar va crește și probabilitatea de erori, deoarece amplificarea vocii va avea loc și odată cu amplificarea zgomotului.

În cele din urmă, dacă aveți cerințe scăzute pentru recunoașterea vocii și executarea comenzilor vocale, atunci acest modul va calcula cu sinceritate banii cheltuiți pentru el.

Lista radioelementelor

Desemnare Un fel Denumirea Cantitate NotăScorCaietul meu
IC1 MK STM32

STM32F103C8

1 În blocnotes
VR1 Regulator liniar

AMS1117-3.3

1 În blocnotes
MOD1, MOD3 Modul wirelessHC-122 În blocnotes
MOD2 Modul de recunoaștere a vociiVR3.11 În blocnotes
Z1 Cuarţ8 MHz1

În acest proiect, am combinat un sistem de detectare a feței și un sistem de urmărire.

Pe scurt, esența proiectului: o cameră web instalată pe un mecanism rotativ este conectată la un computer care rulează sistemul de operare Windows și cu software-ul instalat Opencv... Dacă programul detectează o față în câmpul vizual al camerei web, atunci se calculează centrul feței. Coordonatele X și Y sunt transmise controlerului Arduino, care este conectat la computer prin USB. La randul sau, controlerul Arduino, conform comenzilor primite, controleaza doua servomotoare: in coordonata X si in coordonata Y, deci. este prevăzut un sistem de urmărire.

Biblioteca OpenCV (Open Source Computer Vision Library) poate fi descărcată. Biblioteca este multiplatformă, în prezent există pentru următoarele sisteme de operare: Windows, Linux, Android, Mac OS și chiar iOS. Biblioteca asigură procesarea imaginilor în timp real. Scris în C/C++.

Acea. acest proiect este un amestec de soluții moi și dure. Prelucrarea imaginii se realizează pe un computer, iar servocontrolul se realizează cu ajutorul unui controler.

Deci, ce am folosit pentru proiect:

Software:

Fier:

Computer Windows 7 SP1

Arduino Uno sau compatibil + PSU

2 servo-uri

Webcam USB

Deci să mergem.

Pasul 1. Instalarea software-ului

1) Dacă aveți sistemul de operare Windows, descărcați fișierul OpenCV-2.3.1-win-superpack.exe (sau o versiune ulterioară) și instalați biblioteca.

2) Descărcați și instalați Microsoft Visual C++ 2010 Express. Dacă aveți o versiune de Windows pe 64 de biți, atunci va trebui să descărcați și SDK-ul Windows (dar pentru versiunea 64 pot apărea probleme, tot nu am putut face ca OpenCV să funcționeze sub Windows 7 x64).

Citiți procesul de configurare OpenCV pentru Visual C ++ pe site-ul oficial.

Pasul 2. Atașarea camerei și a servomotoarelor

Nu am făcut structura „durabilă”, pentru că după ce am atins obiectivul final, demontez totul pentru următorul proiect.

Am atașat camera web la servomotorul pe axa X și, la rândul său, l-a fixat pe servomotorul pe axa Y. Și am fixat toată această structură într-o clemă de la „a treia mână”.

Pasul 3. Conexiune

Conexiune servomotor:

Pinul galben de la servo-axa X se conectează la pinul 9 al controlerului Arduino

Pinul galben de la servo-axa Y se conectează la pinul 10 al controlerului Arduino

Pinul roșu Vcc de la servo se conectează la pinul de 5V

Pinul negru GND de la servo se conectează la pinul GND al controlerului Arduino

Conexiune webcam:

Camera web este conectată la un computer printr-o interfață USB. Programul C++ identifică camera web după numărul portului USB. Poate fi necesar să specificați portul în program.

Conexiune controler Arduino UNO:

Controlerul se conectează și la un computer printr-o interfață USB. În sistem apare un port COM virtual, care trebuie inclus în codul programului C++.

Descărcați fișierele de proiect

Articol original în limba engleză (traducere de A.V. Koltykov pentru site-ul cxem.net)

Top articole similare