Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Vijesti
  • Upravljanje glasovnim komandama bazirano na FZ0475 modulu za prepoznavanje glasa.

Upravljanje glasovnim komandama bazirano na FZ0475 modulu za prepoznavanje glasa.

Kao što naslov sugerira, ovaj članak će se fokusirati na prepoznavanje brojeva na mikrokontroleru. Odmah želim da rezervišem da ovaj članak neće dati izvorni kod, raspravljati o tehnologiji ili algoritmu za prepoznavanje, samo ću reći da se koriste ideje sistematskog pristupa. Neki od njih su navedeni u našim člancima (i ovdje). To je zbog činjenice da naš pristup teži originalnosti, ali zahtijeva pojašnjenje nekih pitanja. Neko bi mogao reći: "još jedan članak o programiranju mikrokontrolera." Nikako, potraga za sličnim projektima nije dala jasne rezultate, osim ovog video. Iz diskusija na forumima jedna stvar je jasna: ideja dobivanja sličan uređaj(kamera + mikrokontroler = rezultat prepoznavanja izlaza, a ne samo snimljena slika) došao je mnogim ljudima, ali ostao bez implementacije. A za prepoznavanje, po svemu sudeći, potrebno je mnogo računarskih resursa i mikrokontroleri za to nisu prikladni, posebno o Arduinu bilo je izjava da je to generalno nemoguće. Ako ste zainteresovani, pogledajte kat.

Kako bismo izbjegli bilo kakva očigledna pitanja, odgovorimo na njih:

  • Ne, ovo nije usluga za prepoznavanje slika.
  • Ne, ovo nije OpenCV
  • Ne, ovo nisu neuronske mreže
  • Da, prepoznavanje vrši mikrokontroler!

Ideja

Ukratko, sve je počelo sa željom da se okušam i testiram svoje ideje u prepoznavanju slika. Tokom diskusije, došli smo do zaključka da sa malo računarske snage možemo da rešimo ovaj problem. Iz očiglednih razloga, nećemo opisivati ​​detalje ovih rasprava.

Instalacija

Dakle, zadatak je postavljen, potrebna je implementacija. Bez odstupanja od već utvrđenih principa
uzimamo ono što imamo pri ruci. I bilo ih je nekoliko pri ruci Arduino Uno, stari optički miš i CD drajv. Usput, za šta biste koristili senzor? optički miš Kao kamera za dobijanje slike, na to nas je potaknulo nešto što smo davno pročitali, a zapravo i sav ostali „miš“ materijal. Jedino što smo morali da uradimo je da odlemimo senzor i čitav njegov snop radi lakšeg korišćenja, kao i da na njega zalepimo sočivo koje smo pažljivo „istrgali“ iz CD drajva. To je bilo neophodno kako bi se povećala udaljenost od subjekta do kamere, inače se brojevi naše veličine ne bi uklapali i bio bi vidljiv samo mali dio. Inače, pokušali smo da pričvrstimo optiku sa web kamere ispred objektiva sa CD drajva, ali nekako nije išlo.


Više



Tada se postavilo pitanje kako postaviti ovu kameru iznad subjekta. Tu nam je uvelike pomogao stari pokvareni mikroskop koji je ležao besposlen. S poštovanjem smo uklonili mehanizam za kontrolu pozornice. Ovaj mehanizam nam je omogućio da pomerimo kameru u samo dve ose; Sve je to bilo osigurano u kućištu dugotrajnog CD drajva. Kao rezultat, dobili smo cool mehanizam za pozicioniranje kamere.


Više




Ukupno: imamo takozvanu kameru, postoji mehanizam za pozicioniranje, ostaje samo da stavimo parče papira sa brojem i dobijemo sliku sa kamere. Tu su počeli „problemi“. Budući da su karakteristike "miša" optički senzor vrlo oskudni za korištenje kao kamera, počeli su improvizirati s osvjetljenjem.


Više




Postalo je jasno da ne bi bilo moguće jednostavno naglasiti intenzitet vanjskog svjetla; Morao sam uključiti drugi Arduino da kontroliram intenzitet pozadinskog osvjetljenja ( Naravno, bilo je moguće kontrolisati ga drugačije, ali naknadno ne samo pozadinskim osvjetljenjem, već i prebacivanjem brojeva na indikatoru). Na kraju se pokazalo da je snimanje na svjetlu mnogo bolje. A ako, na primjer, koristite svjetleći indikator od sedam segmenata kao metu, senzor ga savršeno dobro vidi. Dakle, sada imamo indikator i traku sa bijelim brojevima ispunjenim crnom pozadinom kao objektima za snimanje.


lijevo je slika u sivim tonovima dobijena od indikatora (takvu sliku dobijamo od senzora), desno je binarizirana.


Više



Opšti izgled montirane instalacije



opcija rane instalacije





Blok prepoznavanja


Važnu ulogu u našoj instalaciji igra takozvana jedinica za prepoznavanje (na slici iznad). Kao što vidite, sastoji se od Arduino Uno i dobro poznatog wifi predajnika ESP8266. Da objasnim, potreban nam je wifi predajnik da bismo vidjeli rezultat prepoznavanja na tabletu. Aplikacija na tabletu šalje zahtjev, Arduino po prijemu zahtjeva "hvata" sliku sa senzora miša, a zatim je binarizira. Nakon binarizacije dolazi do prepoznavanja, a nakon njenog završetka generira se odgovor. U odgovoru šaljemo rezultat prepoznavanja i 41 bajt za konstruiranje binarizirane slike na ekranu tableta, da tako kažemo, radi jasnoće.

Ako pogledate unazad, Arduino ima prilično dobru funkcionalnost: rad sa kamerom, prepoznavanje i rad sa esp8266. Ono što nije moglo da ne utiče na rad je da smo morali da se nosimo sa nedostatkom pamćenja. Nikada nisam mislio da ću ikada morati da povratim svaki bajt memorije.

Demonstracija procesa prepoznavanja

Umjesto zaključka

To je sve. Pred nama je još puno posla. I prvi zadatak: prepoznavanje brojeva (nizova brojeva) snimljenih „ljudskom“ kamerom (a ne „senzorom miša“) i prenošenje razvijene tehnologije na ESP8266 i smanjenje intenziteta borbe za svaki bajt memorije.

Rado ćemo odgovoriti na vaša pitanja.

U ovom tutorijalu za Arduino pokazat ćemo vam kako ga koristiti mobilna aplikacija za Android i bluetooth modul HC-05 for glasovna kontrola LED.

Za ovaj tutorijal trebat će nam minimum komponenti. Nakon što završite lekciju, možete zakomplicirati krug i dodati uređaje po svom ukusu.

  • Arduino UNO
  • HC-05 Bluetooth modul
  • Bread board
  • Žice
  • Otpornik 330 oma
  • Diode koje emituju svjetlost (LED)

Korak 2: Povezivanje Bluetooth modula HC-05

Standardni Bluetooth modul HC-05 ima šest pinova. Međutim, u ovom projektu koristit ćemo samo 4.

Koristićemo VCC pin, GND pin, TXD pin i RXD pin. VCC pin bluetooth modula povezan je na +3.3V sa Arduina. GND pin modula je spojen na Arduino GND (uzemljenje). TX pin bluetooth modula je povezan na digitalni pin 0 (RXD), a RXD pin je povezan na digitalni pin 1 (TXD).

Korak 3: Povezivanje LED dioda

Sljedeći korak u kreiranju LED dioda je upravljan glasom, je povezivanje LED dioda na Arduino preko matične ploče.

Prvo se povežite kratak kraj LED na masu. Zatim povežite dugi kraj svake LED diode na otpornik od 330 oma. Konačno, povežite trenutni otpor LED dioda na digitalne pinove na Arduinu.

U ovom projektu ćemo spojiti jednu LED diodu digitalni izlaz 2, druga na digitalni izlaz 3, a zadnja LED na digitalni izlaz 4.

Korak 4: Snaga

Za ovaj projekat možemo napajati Arduino putem bilo kojeg +5V napajanja. Možete koristiti USB port sa vašeg računala za napajanje Arduina, ali u ovom projektu ćemo koristiti prijenosnu bateriju od 5V. Prije povezivanja napajanja na vaš Arduino, provjerite je li GND Arduino spojen na uzemljenje matične ploče.

Korak 5: Kod

Kod za naš projekat je ispod.

Korak 6: Korištenje mobilne aplikacije

Možete započeti testiranje svog projekta preuzimanjem Android aplikacije - BT Voice Control za Arduino (BT Voice Control za Arduino) kreirao SimpleLabsIN.

Nakon što ste preuzeli i instalirali aplikaciju na svoj telefon na Zasnovan na Androidu kliknite na traku menija sa desne strane gornji ugao i odaberite "Poveži robota". U novom prozoru koji se pojavi odaberite HC-05 Bluetooth modul i povežite ga.

Sada kada razgovarate sa određene komande od koda do vašeg uređaja putem aplikacije, određene LED lampice bi se trebale uključiti i isključiti. Pogledajte bliže kod u kojem su naznačene komande i dodajte svoj. Na primjer, umjesto "*uključi crveno" možete jednostavno odrediti "crveno". Na taj način će komande biti brže, kraće i jasnije.

Korak 7: Konačni rezultat

Konačan rezultat možete vidjeti u videu ispod.

Želimo vam uspješne projekte! Ne zaboravite ostaviti komentare o projektu u našoj

Sjećate li se kako je prije nekoliko godina (a možda čak i sada) bila popularna ideja o kontroli svjetla u prostoriji pljeskanjem rukama? Ali, to je vrlo zgodno, ležiš u krevetu, previše lijen da ustaneš i ugasiš svjetlo pljeskom ruku, ili idemo kući, mrak je, treba dugo da nađemo prekidač, a onda sa samog praga čuje se pljesak ili dva i svjetlo je već upaljeno. Čini mi se da je ovaj koncept još uvijek relevantan, ali se može primijeniti na više visoka tehnologija u poređenju sa onim što je bilo prije 5 godina, 10 godina. Sada, za relativno malu količinu, možete kupiti nekoliko dijelova i programirati dizajn slične funkcije, o čemu razgovaraćemo ispod.

Danas ćemo pogledati modul dizajniran za prepoznavanje glasovnih komandi (uključujući samo glasove unutar snimljene glasovne komande) - Modul za prepoznavanje glasa V3.1 (V3) ili naziv kodiranja koji se često sreće FZ0475.

Komplet za isporuku uključuje sam modul ( štampana ploča Veoma dobra kvaliteta), mikrofon na fleksibilnoj nozi sa 3,5 mm jack konektorom i ugaonim PLS kontaktima sa nagibom od 2,56 mm za ploču modula (ne mogu se koristiti ako su spojeni na kontakte modula na drugačiji način).

Danas postoji nekoliko tipova modula sa sličnim funkcijama. različitih proizvođača i programeri ili izvršenja. Ovaj modul prepoznavanje glasa, po mom mišljenju, ima određenu ravnotežu između cijene, funkcionalnosti i pogodnosti. EasyVR modul će biti moćniji i znatno skuplji. Moduli bazirani na LD3320 će biti jeftiniji i nezgodniji (nezgodni barem zato što im nije lako pronaći normalan opis, ali inače je to subjektivno).

Karakteristike modula za prepoznavanje glasa V3.1 (V3):

  • Napon napajanja – 5 volti
  • Potrošnja struje – do 40 mA
  • Interfejsi – UART, GPIO
  • Preciznost prepoznavanja – 99% (pod idealnim uslovima)
  • Domet - zavisi od mikrofona koji se koristi za standardni mikrofon uključen u komplet, domet je 0,5 - 1 metar maksimalna udaljenost ako je glas dovoljno glasan, ako je glas tih, onda ćete morati približiti mikrofon ustima

Modul je mala uredna ploča na kojoj su smješteni glavni mikrokontroler (crna mrlja), 3,5 mm jack konektor za povezivanje mikrofona i mikrokolo fleš memorija, GPIO, UART i kontakti za napajanje, par LED dioda i ostala potrebna oprema potrebna za rad kola - otpornici, kondenzatori, kvarc. Kompaktna veličina ploče će vam omogućiti da lako integrišete modul u sopstveni razvoj. Da bi se povećao opseg glasovnih komandi, verovatno je neophodno koristiti mikrofon sa pojačalom. Kada se postigne prihvatljiv raspon, modul je pogodan za upotrebu u sistemima pametna kuća. Bez modifikacija za poboljšanje radnog dometa, modul se može koristiti u sistemima upravljanja desktopom, kao iu sigurnosnim sistemima (kontrola i ograničenje pristupa). Kod standardnog mikrofona, zbog kratkog dometa, najpouzdanije je koristiti modul za prepoznavanje glasa kao slušalice i bežično prenijeti komande na kontroler koji kontrolira nešto pomoću baterije i bežičnih modula (na primjer, HC-05 ili HC-12 ili bilo koje druge odgovarajuće). Modul je sposoban da radi bez eksternog mikrokontrolera, pošto proizvođač obezbeđuje funkcionalnu nezavisnost potrebno je samo jednom da snimite glasovne komande i podesite podešavanja za njih samostalan rad uz pomoć eksterni uređaj(PC ili MK).

Dakle, da bismo počeli da radimo sa modulom za prepoznavanje glasa, moramo ga povezati ili na računar (potreban vam je USB-UART adapter) ili na mikrokontroler (morate da razvijete programski kod za kontrolu modula).

Ne postoji fundamentalna razlika u upravljanju i konfiguraciji modula između povezivanja na računar ili mikrokontroler, pa ćemo radi jasnoće koristiti PC za konfiguraciju. Uputstva opisuju komande za modul u heksadecimalnom obliku, tako da će vam zbog praktičnosti biti potreban i terminal koji prenosi bajtove u heksadecimalnom obliku, na primjer AccessPort (može se preuzeti na kraju članka). Osim toga, proizvođač se fokusira na korisnike Arduino platforme i pruža biblioteku za korištenje ovog modula i upute za korištenje ove biblioteke. Međutim, mnogi od nas su mnogo više zainteresovani za rad sa samim modulom direktno nego preko Arduino omotača.

Prije početka rada, pogledajmo ploču. Na krajevima ploče sa desne strane nalazi se utičnica za povezivanje mikrofona, na drugoj četiri kontakta UART interfejsa. Na dnu se nalazi osam kontakata koji se koriste za izlaz signala uzrokovanih prepoznavanjem glasovnih komandi. Na vrhu, četiri pina konfigurisana kao ulaz signala koriste se za prebacivanje između grupa (od po sedam glasovnih komandi) komandi, ako se koristi takva funkcija. A preostalih šest pinova na vrhu se vjerovatno koristi za povezivanje sa memorijom modula.

Komandni sistem se koristi za rad i konfiguraciju modula. Opšti oblik okvir izgleda ovako:

Prve četiri komande 00, 01, 02, 03 se koriste za provjeru statusa modula i njegovih postavki. Sljedećih šest naredbi 10, 11, 12, 13, 14, 15 koriste se za promjenu postavki modula, uključujući kontrolu izlaznog porta i postavke automatskog učitavanja. Zatim, tri komande 20,21, 22 se koriste za snimanje glasovnih komandi. Sljedeće tri komande 30,31,32 se koriste za kontrolu prepoznavanja glasovnih komandi. Naredbe 0A, 0D, FF se koriste samo kada podatke vraća sam modul. Naredbi zapravo nema puno i sve to nije tako strašno kao što se na prvi pogled čini u dokumentaciji za modul. Pogledajmo naredbe potrebne za rad s modulom za prepoznavanje glasa. Nisu sve postojeće komande praktične.

Važno je napomenuti da modul može raditi bez eksternog upravljačkog mikrokontrolera, a može i samostalno kontrolirati nešto sa svojim izlaznim portovima. Da biste to učinili, morate ih konfigurirati (naredbe 12, 13, 14).

Tim 12 – konfigurirati izlazne portove. Ova komanda konfiguriše način rada izlaznih portova modula za prepoznavanje glasa.

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

Gdje MODE može imati četiri vrijednosti: 0 – pulsni način rada (kada se aktivira glasovna naredba, izlaz koji odgovara komandi će promijeniti svoje stanje za vrijeme koje je zadala naredba 13), 1 – prekidač režima (prebacivanje ili okretanje) (svaki put aktivira se glasovna naredba, izlaz koji odgovara glasovnoj komandi je invertiran), 2 – uključen način (kada se aktivira glasovna komanda, izlaz će ići u stanje logičke jedinice i više neće ići u stanje logičke nule, reset je vrši se komandom 14), 3 – isključen režim (slično uključenom režimu, samo naprotiv, kada se aktivira glasovna komanda, izlaz ide u stanje logičke nule).

Najpraktičniji je način rada prekidača, koji nije potreban dodatne komande. Pulsni način rada bilo bi dobro, ali logika ovog moda je takva da kada se aktivira glasovna komanda, ona izdaje logičku jednom, na vrijeme od 10 ms do 1 s. Nije dovoljno. Iako, ovisno o zahtjevima za ovaj način rada, može biti korisno. Režimi za uključivanje i isključivanje su neprikladno implementirani, jer zahtijevaju izvršavanje dodatnih naredbi.

Tim 13 – podešavanje trajanja impulsa odgovarajućeg režima.

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

Gdje LEVEL uzima vrijednost od 00 do 0F (što odgovara trajanju od 10 ms do 1 s).

NIVO trajanje
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

Tim 14 – resetirajte izlaz portova u stanje dato modusima uključeno ili isključeno.

Format: | AA| 03 | 14 | FF | 0A | - resetirajte sve izlazne portove

| AA| 03+n | 14 | IO0 | ... | Ion | 0A | - resetirajte odabrane izlazne portove

Gdje je n broj pinova koji se selektivno resetuju, IO0...IOn je lista ovih pinova u okviru za slanje podataka.

Zatim, da bi se glasovne komande izvršile, one moraju biti snimljene u modulu (obučite modul). Ovdje postoji ograničenje. Istovremeno se može prepoznati samo sedam komandi, iako se može snimiti mnogo više. Kako bi se proširio opseg glasovnih komandi koje će biti prepoznate, koristi se sistem grupisanja (komanda 32) kojim upravljaju ulazni portovi modula. Postavljanjem konfiguracije signala na ove pinove birate grupu naredbi koje će biti prepoznate. To je zbog ograničenih performansi glasovnog kontrolera modula.

Tim 20 - snimanje jedne ili više glasovnih komandi.

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

Gde je n broj snimljenih glasovnih komandi (ako je snimljena jedna komanda n=0, dve komande n=1 i tako dalje u skladu sa opštim formatom za prenos komandi Dužina - dužina), R0...Rn brojevi glasovnih komandi (AA 03 20 03 0A - komanda za snimanje treće glasovne komande).

Tim 21 - snimite jednu glasovnu komandu i postavite potpis za nju.

Format: | AA| 03+SIGLEN | 21 | RECORD | SIG | 0A |

Gdje je RECORD broj glasovne komande, SIG je potpis (može se sastojati od nekoliko bajtova, tako da svaki bajt može odgovarati kodiranju znakova abecede ako je potrebno), SIGLEN je broj bajtova koji čine potpis.

Tim 22 - dodati ili izbrisati potpis za odabranu glasovnu komandu.

Format: | AA | 03+SIGLEN | 22 | RECORD | SIG | 0A | - dodavanje potpisa

| AA | 03 | 22 | RECORD | 0A | - uklanjanje potpisa

Kada snimate glasovne komande, morate biti vođeni LED signalima. Nakon unosa komande koja pokreće proces snimanja, žuta (narandžasta) LED dioda počinje brzo da treperi. Čim se upali crvena LED dioda, morate izgovoriti glasovnu komandu u mikrofon. Ako je uspješan, žuta (narandžasta) LED dioda će zasvijetliti, a zatim ponovo crvena - potrebno je potvrditi glasovnu komandu i izgovoriti je ponovo. Ako je uspješno, oba LED dioda će zasvijetliti - glasovna komanda je sačuvana.

Jednom kada se glasovne komande snime u modulu, ništa se neće dogoditi sve dok se te komande ne stave u “Recognizer” modula. Da biste to učinili, trebate koristiti komandu 30. Nakon izvršenja ove naredbe, modul će početi čekati da glasovna komanda odgovara sačuvanim uzorcima. Istovremeno se može prepoznati samo sedam komandi. U tom slučaju, žuta (narandžasta) LED dioda na ploči modula će polako treptati.

Tim 30 - učitavanje zapisa u prepoznavač modula.

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

Format odgovora je sljedeći: | AA | 07 | 0D | 00 | GRPM | R | RI | SIGLEN | SIG | 0A |

Gdje je GRPM informacija o grupi kojoj komanda pripada (ako se koristi), R je prepoznata glasovna komanda (koristeći ove podatke možete razlikovati komande jedne od drugih ako se potpisi ne koriste), RI je indeks komande u prepoznavaču, SIGLEN je dužina potpisa u bajtovima, SIG - potpis (ako se koristi).

I na kraju, ako modul mora raditi nezavisno, onda morate koristiti naredbu 15 za automatski start prema unapred podešenim parametrima prepoznavača. U ovom slučaju, modul za prepoznavanje glasa će raditi samostalno bez potrebe za inicijalizacijom nakon uključivanja.

Tim 15 - postavljanje prepoznavača na automatsko pokretanje kada je uključen.

Format: | AA| 03 | 15 | 00 | 0A | - onemogućiti funkciju automatskog pokretanja

| AA| 03+n | 15 | BITMAP | R0 | ... | Rn | 0A | - postavljanje funkcije automatskog pokretanja

Za kontrolu ispravnog izvršavanja naredbi, svaka od njih ima svoj odgovor. Po potrebi sve podatke možete pronaći u dokumentaciji za modul za prepoznavanje glasa priloženoj na kraju članka. Ne zaboravite da sve numeričke vrijednosti predstavljen u heksadecimalni formu.

Dakle, koristeći komandni sistem, možete fleksibilno konfigurirati modul za prepoznavanje glasa za korištenje u različite svrhe. Ako jednostavne kontrole Budući da izlazni portovi modula nisu dovoljni, modul za prepoznavanje glasa se može povezati s drugim uređajima putem UART ili GPIO. Za bežičnu vezu Možete koristiti prethodno razmatrane module.

Koristeći bežične module, možete povezati modul za prepoznavanje glasa na bilo koji uređaj gdje je to potrebno. Na primjer, spojimo ga na mikrokontroler, koji će upravljati LED diodama na osnovu primljenih podataka o prepoznavanju glasovnih komandi. Bežični moduli omogućavaju prijenos podataka u dva smjera, tako da ako je potrebno, možete napisati kod za mikrokontroler za inicijalizaciju glasovnog modula i snimanje glasovnih komandi. U našem slučaju, pod kontrolom računara, nekoliko glasovnih komandi je već snimljeno u modulu i prepoznavanje je konfigurisano da se automatski pokreće kada se uključi, tako da ćemo za mikrokontroler samo registrovati prijem podataka i LED kontrolu u odnosu na te podatke. STM32F103C8T6 mikrokontroler koristi USART1 za primanje podataka i pinove PB10...PB15 konfigurisane kao izlaz, koji kontroliše LED diode. Izvor nalazi se u prilozima na kraju članka.

Malo o rezultatima

Prepoznavanje glasa nije sasvim tačno. Zavisi od odabranih komandi i glasa korisnika. Tokom testiranja našao sam nekoliko negativnih točaka. Prilikom podučavanja komandi modula odabrane su glasovne komande “jedan” i “dva”. Komanda “dva” je uvek prolazila jasno, ali je komanda “jedan” često bila identifikovana kao komanda “dva” i kod druge komande se izvršavao u skladu s tim. Nadalje, pri pokušaju davanja glasovnih komandi na engleskom jeziku (a one nisu snimljene u glasovnom modulu), komanda „jedan“ je skoro uvijek bila definirana kao „dva“. Možda je sve u izgovoru, intonaciji i drugim aspektima ljudskog glasa ugrađenim u algoritam za kodiranje glasovnog modula izgovorenih komandi. Međutim, ove tajne proizvođača otvoreni pristup ne daj. Osim toga, na kvalitet prepoznavanja utječu vanjski uvjeti buke - buka s ulice, buka ventilatora, nasumični zvuci itd. Proizvođač skreće pažnju na činjenicu da visoki nivo tačnost prepoznavanja odvija se u idealnim uslovima. Ideja o korištenju mikrofona s pojačalom će, naravno, povećati radni domet uređaja, ali će povećati i vjerovatnoću grešaka, jer će pojačanje glasa povećati i šum.

Na kraju, ako imate niske zahtjeve za prepoznavanje glasa i izvršavanje glasovnih naredbi, onda će ovaj modul pošteno razraditi novac potrošen na njega.

Spisak radioelemenata

Oznaka Tip Denominacija Količina BilješkaProdavnicaMoja beležnica
IC1 MK STM32

STM32F103C8

1 U notes
VR1 Linearni regulator

AMS1117-3.3

1 U notes
MOD1, MOD3 Bežični modulHC-122 U notes
MOD2 Modul za prepoznavanje glasaVR3.11 U notes
Z1 Kvarc8 MHz1

U ovom projektu sam kombinovao detektor za detekciju lica i sistem za praćenje.

Ukratko o suštini projekta: web kamera instalirana na rotirajućem mehanizmu povezana je s kompjuterom kojim upravlja operaciona sala Windows sistemi i sa instaliranim softver OpenCV. Ako program otkrije lice u vidnom polju web kamere, izračunava se centar lica. Koordinate X i Y se šalju Arduino kontroleru, koji je povezan sa računarom preko USB-a. Zauzvrat, Arduino kontroler, na osnovu primljenih komandi, kontroliše dva servomotora: duž X koordinate i duž Y koordinate, tj. obezbeđen je sistem za praćenje.

OpenCV biblioteka ( Open Source Computer Vision Library) može se preuzeti. Biblioteka je multiplatformska i trenutno postoji za sljedeće operativne sisteme: Windows, Linux, Android, Mac OS, pa čak i iOS. Biblioteka omogućava obradu slika u realnom vremenu. Napisano u C/C++.

To. ovaj projekat je mješavina mekog i teške odluke. Slika se obrađuje na računaru, a servo se kontroliše pomoću kontrolera.

Dakle, ono što sam koristio za projekat:

softver:

željezo:

računar sa Windows 7 SP1

Arduino Uno ili kompatibilan + PSU

2 servo

USB web kamera

Pa, idemo.

Korak 1: Instalirajte softver

1) Ako imate Windows OS, preuzmite datoteku OpenCV-2.3.1-win-superpack.exe (ili više kasnija verzija) i instalirajte biblioteku.

2) Preuzmite i instalirajte Microsoft Visual C++ 2010 Express. Ako imate 64-bitni Windows verzija, tada ćete također morati preuzeti Windows SDK(ali može biti problema za verziju 64; nisam mogao natjerati OpenCV da radi pod Windows 7 x64).

Pročitajte proces postavljanja OpenCV-a za Visual C++ na službenoj web stranici.

Korak 2. Montaža kamere i servosa

Dizajn nisam učinio „trajnim“, jer nakon postizanja konačnog cilja sve rastavljam za sljedeći projekat.

Pričvrstio sam web kameru na servomotor osi X, a ona je, zauzvrat, pričvrstila na servomotor osi Y i pričvrstila cijelu ovu strukturu u stezaljku "treće ruke".

Korak 3. Povezivanje

Povezivanje servomotora:

Žuti pin sa servo osi X povezan je na pin 9 Arduino kontroler

Žuti pin servo Y osi povezan je sa pinom 10 Arduino kontrolera

Crveni Vcc pin od servo se povezuje na 5V pin

Crni GND pin iz servo uređaja je spojen na GND pin Arduino kontrolera

Veb kamera veza:

Web kamera se povezuje sa računarom preko USB interfejs. C++ program identificira web kameru po broju USB porta. Možda ćete morati navesti port u programu.

Povezivanje Arduino UNO kontrolera:

Kontroler se takođe povezuje sa računarom preko USB interfejsa. U sistemu se pojavljuje virtuelni COM port, koji se mora dodati u programski kod u C++.

Preuzmite projektne datoteke

Originalni članak o engleski jezik(prevod A.V. Koltykova za web stranicu cxem.net)

Najbolji članci na ovu temu