Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Vijesti
  • Upravljanje glasovnim naredbama temeljeno na FZ0475 modulu za prepoznavanje glasa.

Upravljanje glasovnim naredbama temeljeno na FZ0475 modulu za prepoznavanje glasa.

Kao što naziv implicira, ovaj će se članak usredotočiti na prepoznavanje brojeva na mikrokontroleru. Želim odmah rezervirati da ovaj članak neće dati izvorni kod, razmotriti tehnologiju ili algoritam prepoznavanja, samo ću reći da se koriste ideje sustavnog pristupa. Neki od njih navedeni su u našim člancima (i ovdje). To je zbog činjenice da se naš pristup oslanja na originalnost, ali zahtijeva razjašnjenje nekih pitanja. Netko bi mogao reći: "još jedan članak o programiranju mikrokontrolera." Daleko od toga, potraga za sličnim projektima nije dala nikakve razumljive rezultate, osim ovoga video. Iz rasprava na forumima jedno je jasno: ideja o nabavi takvog uređaja (kamera + mikrokontroler = izlazni rezultat prepoznavanja, a ne samo snimljena slika) je došla mnogima, ali je ostala bez implementacije. Da, a prepoznavanje, po svemu sudeći, zahtijeva puno računalnih resursa, a mikrokontroleri za to nisu prikladni, posebno je bilo izjava o Arduinu da je to općenito nemoguće. Ako je postalo zanimljivo, pitam pod kat.

Kako ne bi bilo očitih pitanja, odgovorit ćemo na njih:

  • Ne, ovo nije usluga prepoznavanja 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 isprobam svoje ideje u prepoznavanju slika. Tijekom rasprave došli smo do zaključka da možemo s malom računalnom snagom riješiti ovaj problem. Iz očitih razloga nećemo opisivati ​​pojedinosti tih rasprava.

Montaža

Dakle, zadatak je postavljen, potrebna je provedba. Ne odstupajući od utvrđenih načela
uzimamo ono što nam je pri ruci. A imao sam pri ruci par Arduino Uno, stari optički miš i CD jedinicu. Usput, davno smo pročitali da koristimo senzor optičkog miša kao kameru za dobivanje slike, a zapravo i sve ostalo o “mišjem” materijalu. Ostalo nam je samo zalemiti senzor i sve njegove trake radi lakšeg korištenja, te na njega zalijepiti leću koju smo pažljivo "istrgnuli" iz CD pogona. To je bilo potrebno kako bi se povećala udaljenost od subjekta do kamere, inače brojevi naše veličine nisu odgovarali i bio je vidljiv samo mali dio. Usput, ispred objektiva s CD pogona pokušali smo pričvrstiti optiku s web kamere, ali nekako nije srasla.


Još



Tada se postavilo pitanje kako ovu kameru postaviti iznad subjekta. Ovdje nam je puno pomogao stari pokvareni mikroskop, koji je ležao besposlen. S poštovanjem, uklonili su mehanizam za upravljanje pozornicom objekta. Ovaj mehanizam nam je omogućio pomicanje kamere uz samo dvije osi, a odmah je došla ideja da koristimo vodilicu laserske glave s CD pogona. Sve je to popravljeno na kućištu iz dugotrajnog CD pogona. Kao rezultat, dobili smo cool mehanizam za pozicioniranje kamere.


Još




Ukratko: imamo takozvanu kameru, postoji mehanizam za pozicioniranje, ostaje još staviti papirić s brojem i dobiti sliku s kamere. Tu su počeli "problemi". Budući da su karakteristike optičkog senzora "miša" vrlo loše za korištenje kao kamera, počeli su improvizirati s pozadinskim osvjetljenjem.


Još




Postalo je jasno da jednostavno isticanje ne funkcionira, intenzitet je važan, smjer vanjskog svjetla također se prilagođava. Morao sam uključiti još jedan "arduino" da radi kako bih kontrolirao intenzitet pozadinskog osvjetljenja ( naravno bilo je moguće drugačije kontrolirati, ali kasnije ne samo pozadinsko osvjetljenje, već i prebacivanje brojeva na indikatoru). Kao rezultat toga, pokazalo se da je snimanje na svjetlu puno bolje. A ako, na primjer, koristite svjetleći indikator od sedam segmenata kao metu, onda ga senzor općenito savršeno vidi. Dakle, sada imamo indikator i traku s bijelim brojevima ispunjenu crnom pozadinom kao objekte snimanja.


lijevo je slika u sivim tonovima dobivena od indikatora (takvu sliku dobivamo od senzora), desno je binarizirano.


Još



Opći pogled na sklop



mogućnost rane instalacije





Blok prepoznavanja


Važnu ulogu u našoj instalaciji ima tzv. blok za prepoznavanje (na gornjoj slici). Kao što vidite, sastoji se od Arduino Uno i dobro poznatog wifi transmitera ESP8266. Objašnjavam, potreban nam je wifi odašiljač kako bismo vidjeli rezultat prepoznavanja na tabletu. Aplikacija na tabletu šalje zahtjev, "arduino", primajući zahtjev, "skida" sliku sa senzora miša, zatim je binarizira. Nakon binarizacije dolazi do prepoznavanja, a nakon njegovog završetka formira se odgovor. Kao odgovor, šaljemo rezultat prepoznavanja i 41 bajt za izradu binarizirane slike na zaslonu tableta, da tako kažem, radi jasnoće.

Ako pogledate unatrag, onda je dobra funkcionalnost dodijeljena "arduinu": rad s kamerom, prepoznavanje i rad s esp8266. Ono što nije moglo utjecati na rad - morao sam se suočiti s nedostatkom pamćenja. Nikada nisam mislio da ću ikada morati vratiti svaki bajt sjećanja.

Demonstracija procesa prepoznavanja

Umjesto zaključka

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

Rado ćemo odgovoriti na pitanja.

U ovom vodiču za Arduino, pokazat ćemo vam kako koristiti mobilnu aplikaciju za Android i HC-05 Bluetooth modul za glasovno upravljanje LED-om.

Za ovu lekciju trebamo najmanje komponenti. Nakon što napravite lekciju, možete zakomplicirati krug i nadopuniti ga uređajima po vašoj želji.

  • Arduino UNO
  • HC-05 Bluetooth modul
  • Daska za kruh
  • žice
  • Otpornik od 330 ohma
  • Svjetleće diode (LED)

Korak 2: Spajanje HC-05 Bluetooth modula

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

Koristit ćemo VCC pin, GND pin, TXD pin i RXD pin. VCC pin bluetooth modula spojen je na +3,3 V iz Arduina. GND pin modula spojen je na Arduino GND (uzemljenje). TX pin bluetooth modula spojen je na digitalni pin 0 (RXD), a RXD pin je spojen na digitalni pin 1 (TXD).

Korak 3: Spajanje LED dioda

Sljedeći korak u stvaranju LED dioda kojima se upravlja glasom je povezivanje LED dioda na Arduino preko matične ploče.

Najprije spojite kratki kraj LED diode na masu. Zatim spojite dugi kraj svake LED diode na otpornik od 330 ohma. Na kraju, spojite strujni otpor iz LED dioda na digitalne pinove na Arduinu.

U ovom projektu spojit ćemo jednu LED diodu na digitalni pin 2, drugu na digitalni pin 3, a posljednju LED na digitalni pin 4.

Korak 4: Prehrana

Za ovaj projekt možemo napajati Arduino putem bilo kojeg izvora napajanja od +5 V. Za napajanje Arduina možete koristiti USB priključak s vašeg računala, ali za ovaj projekt koristit ćemo prijenosnu bateriju od 5 V. Prije spajanja izvora napajanja na vaš Arduino, provjerite je li GND Arduina spojen na uzemljenje matične ploče.

Korak 5: Kod

Kod za naš projekt je ispod.

Korak 6: Korištenje mobilne aplikacije

Svoj projekt možete započeti s testiranjem preuzimanjem Android aplikacije - BT Voice Control for Arduino (BT Voice Control for Arduino), koju je izradio SimpleLabsIN.

Nakon što ste preuzeli i instalirali aplikaciju na svoj Android telefon, kliknite na traku izbornika u gornjem desnom kutu i odaberite Connect Robot. U novom prozoru koji se pojavi odaberite HC-05 Bluetooth modul i povežite ga.

Sada, kada izgovarate određene naredbe iz koda svom uređaju putem aplikacije, određene LED diode bi se trebale uključiti i isključiti. Pažljivije pogledajte kod, gdje su naznačene naredbe i stavite svoje. Na primjer, umjesto "*uključi crveno" možete samo navesti "crveno". Tako će naredbe biti brže, kraće i jasnije.

Korak 7: Konačni rezultat

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

Želimo vam uspješne projekte! Ne zaboravite ostaviti komentare na projekt u našem

Sjećate li se kako je prije nekoliko godina (a možda i sada) bila popularna ideja da se svjetlom u prostoriji upravlja ručkama? Ali, na kraju krajeva, vrlo je zgodno, ležiš u krevetu, previše lijen da ustaneš i pljesneš rukama da ugasiš svjetlo ili odeš kući, mrak je, dugo pipaj za prekidač, a onda iz samo na pragu pljesak ili dva i svjetlo je već upaljeno. Čini mi se da je ovaj koncept još uvijek relevantan, ali na njega se mogu primijeniti više tehnologije u odnosu na one koje su bile prije 5 godina, 10 godina. Sada, za relativno mali iznos, možete kupiti nekoliko dijelova i programirati dizajn za slične funkcije, o čemu će biti riječi u nastavku.

Danas ćemo razmotriti modul dizajniran za prepoznavanje glasovnih naredbi (uključujući samo glasove unutar snimljene glasovne naredbe) - Modul za prepoznavanje glasa V3.1 (V3) ili uobičajeno korišteni naziv kodiranja FZ0475.

Paket uključuje sam modul (tiskana pločica je vrlo kvalitetna), mikrofon na fleksibilnoj nozi sa 3,5 mm jack konektorom i kutne PLS kontakte razmaka od 2,56 mm za pločicu modula (mogu se izostaviti ako spojen na kontakte modula na drugi način).

Do danas postoji nekoliko vrsta modula sa sličnim funkcijama različitih proizvođača i programera ili verzija. Ovaj modul za prepoznavanje glasa, po mom mišljenju, ima određenu ravnotežu između cijene, funkcionalnosti i praktičnosti. Modul EasyVR bit će snažniji i znatno skuplji. Moduli temeljeni na LD3320 bit će jeftiniji i nezgodniji (nezgodni barem zato što nije lako pronaći normalne opise za njih, ali inače je to već subjektivno).

Značajke modula za prepoznavanje glasa V3.1 (V3):

  • Napon napajanja - 5 volti
  • Potrošnja struje - do 40 mA
  • Sučelja – UART, GPIO
  • Točnost prepoznavanja - 99% (pod idealnim uvjetima)
  • Domet - ovisi o mikrofonu koji se koristi, za standardni mikrofon iz kompleta, domet je 0,5 - 1 metar maksimalne udaljenosti uz dovoljno glasan glas, ako je glas tih, morat ćete približiti mikrofon ustima

Modul je mala uredna ploča na kojoj se nalazi glavni mikrokontroler (crna mrlja), 3,5 mm jack konektor za spajanje mikrofona, flash memorijski čip, GPIO, UART i strujni kontakti, par LED dioda i ostalo potreban komplet potreban za rad kruga - otpornici, kondenzatori, kvarc. Kompaktna veličina ploče omogućit će vam integraciju modula u vlastite dizajne bez većih poteškoća. Za povećanje dometa glasovnih naredbi, vjerojatno je potrebno koristiti mikrofon s pojačalom. Kada se dosegne prihvatljivi raspon, modul je prikladan za korištenje u sustavima pametne kuće. Modul se bez modifikacija za poboljšanje radnog dometa može koristiti u stolnim sustavima upravljanja, kao iu sigurnosnim sustavima (kontrola i ograničenje pristupa). Kod standardnog mikrofona, zbog malog dometa, najpouzdanije je koristiti modul za prepoznavanje glasa kao slušalicu i bežično prenositi naredbe do kontrolera koji nešto upravlja pomoću baterije i bežičnih modula (npr. HC-05 ili HC -12 ili bilo koji drugi prikladan). Modul može raditi bez vanjskog mikrokontrolera, budući da je proizvođač osigurao funkcionalnu neovisnost, potrebno je samo jednom snimiti glasovne naredbe i postaviti postavke za samostalan rad pomoću vanjskog uređaja (PC ili MK).

Dakle, da bismo počeli raditi s modulom za prepoznavanje glasa, moramo ga spojiti ili na računalo (potreban je USB-UART adapter) ili na mikrokontroler (potrebno je razviti programski kod za upravljanje modulom).

Ne postoji temeljna razlika u upravljanju i konfiguraciji modula između spajanja na računalo ili na mikrokontroler, pa ćemo radi jasnoće koristiti računalo za konfiguraciju. Upute opisuju naredbe za modul u heksadecimalnom obliku, tako da će vam zbog praktičnosti trebati 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 te daje biblioteku za korištenje ovog modula i upute za korištenje ove biblioteke. Međutim, mnoge od nas mnogo više zanima rad sa samim modulom izravno nego kroz Arduino omotač.

Prije početka rada, pozabavimo se pločom. S krajeva ploče s desne strane nalazi se utičnica za spajanje mikrofona, s druge strane četiri kontakta UART sučelja. Ispod je osam pinova koji se koriste za izlaz signala uzrokovanih prepoznavanjem glasovnih naredbi. Na vrhu, četiri pina konfigurirana kao signalni ulaz koriste se za prebacivanje između grupa (od po sedam glasovnih naredbi) naredbi, ako se takva funkcija koristi. A ostalih šest pinova na vrhu vjerojatno se koriste za spajanje na memoriju modula.

Za rad i konfiguraciju modula koristi se sustav naredbi. Opći pogled na okvir izgleda ovako:

Prve četiri naredbe 00, 01, 02, 03 koriste se 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 priključka i postavke automatskog učitavanja. Zatim se koriste tri naredbe 20, 21, 22 za snimanje glasovnih naredbi. Sljedeće tri naredbe 30,31,32 koriste se za kontrolu prepoznavanja glasovnih naredbi. Naredbe 0A, 0D, FF koriste se samo kada podatke vraća sam modul. Zapravo nema puno naredbi, a sve to nije tako strašno kao što se čini na prvi pogled u dokumentaciji za modul. Razmotrimo naredbe potrebne za rad s modulom za prepoznavanje glasa. Nisu sve postojeće naredbe praktične.

Važno je napomenuti da modul može raditi bez vanjskog upravljačkog mikrokontrolera, kao i samostalno upravljati nečim svojim izlaznim priključcima. Da biste to učinili, trebate ih konfigurirati (naredbe 12, 13, 14).

Tim 12 – konfigurirati izlazne portove. Ova naredba postavlja način rada izlaznih priključaka modula za prepoznavanje glasa.

Format: | AA | 03 | 12 | NAČIN | 0a |

Gdje NAČIN može imati četiri vrijednosti: 0 - pulsni način rada (kada se pokrene glasovna naredba, izlaz koji odgovara naredbi će promijeniti svoje stanje za vrijeme postavljeno naredbom 13), 1 - način prebacivanja (prebacivanje ili okretanje) (svaki put aktivirana je glasovna naredba, izlaz koji odgovara glasovnoj naredbi invertiran), 2 – uključen način (kada se aktivira glasovna naredba, izlaz će prijeći u stanje logičke jedinice i više neće ići u stanje logičke naredbe nula, resetiranje se vrši naredbom 14), 3 – isključeno (slično onom, samo naprotiv, kada ide na logičku nulu).

Najpraktičniji je način prebacivanja, koji ne zahtijeva dodatne naredbe. Pulsni mod bi bio dobar, ali logika ovog moda je takva da kada se pokrene glasovna naredba, ona izdaje logičku jedinicu jednom, u trajanju od 10 ms do 1 s. Nije dovoljno. Iako, ovisno o zahtjevima za ovaj način rada, može biti koristan. Načini uključivanja i isključivanja implementirani su neprikladno jer zahtijevaju izvršavanje dodatnih naredbi.

Tim 13 – postavljanje trajanja pulsa odgovarajućeg načina rada.

Format: | AA | 03 | 13 | RAZINA | 0a |

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

RAZINA 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 – resetiranje izlaznih portova u stanje određeno načinima uključenja ili isključivanja.

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

| AA| 03+n | 14 | IO0 | ... | ION | 0a | - resetirati odabrane izlazne portove

Gdje je n broj pinova koji se selektivno resetiraju, IO0…IOn je popis ovih pinova u okviru poslanih podataka.

Nadalje, da bi se glasovne naredbe mogle izvršiti, one moraju biti zapisane u modul (trenirati modul). Ovdje postoji ograničenje. Istovremeno se može prepoznati samo sedam naredbi, iako se može snimiti mnogo više. Kako bi se proširio raspon glasovnih naredbi koje će biti prepoznate, koristi se sustav grupiranja (naredba 32) kojim se upravlja preko ulaznih portova modula. Postavljanjem konfiguracije signala na tim kontaktima odabire se skupina naredbi koje će biti prepoznate. To je zbog ograničene izvedbe korištenog glasovnog upravljača modula.

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

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

Gdje je n broj snimljenih glasovnih naredbi (ako je jedna naredba snimljena n=0, dvije naredbe n=1 i tako dalje u skladu s općim formatom prijenosa naredbe Lenght - duljina), R0...Rn brojevi glasovnih naredbi ( AA 03 20 03 0A - naredba za snimanje treće glasovne naredbe).

Tim 21 - snimanje jedne glasovne naredbe i postavljanje potpisa za nju.

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

Gdje je RECORD broj glasovne naredbe, 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 - Dodajte ili uklonite potpis za odabranu glasovnu naredbu.

Format: | AA | 03+SIGLEN | 22 | SNIMITI | SIG | 0a | - dodavanje potpisa

| AA | 03 | 22 | SNIMITI | 0a | - uklanjanje potpisa

U procesu snimanja glasovnih naredbi morate se voditi signalima LED dioda. Nakon unosa naredbe kojom se pokreće proces snimanja žuta (narančasta) LED dioda počinje brzo treptati. Čim crvena LED dioda zasvijetli, trebate izgovoriti glasovnu naredbu u mikrofon. Ako bude uspješno, žuta (narančasta) LED lampica će zasvijetliti, a zatim ponovno crvena - morate potvrditi glasovnu naredbu, izgovoriti je ponovo. U slučaju uspjeha, oba LED-a će svijetliti - glasovna naredba je spremljena.

Nakon što se glasovne naredbe upišu u modul, ništa se neće dogoditi dok se te naredbe ne stave u "prepoznavač" (Recognizer) modula. Da biste to učinili, upotrijebite naredbu 30. Nakon izvršenja ove naredbe, modul će čekati da glasovna naredba odgovara spremljenim uzorcima. Istovremeno se može prepoznati samo sedam naredbi. U tom će slučaju žuti (narančasti) LED na ploči modula polako treptati.

Tim 30 - učitavanje zapisa u "prepoznavač" (Recognizer) modula.

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

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

Gdje je GRPM informacija o grupi kojoj naredba pripada (ako se koristi), R je prepoznata glasovna naredba (pomoću ovih podataka možete razlikovati naredbu jednu od druge ako se ne koriste potpisi), RI je indeks naredbe u prepoznavač, SIGLEN je duljina potpisa u bajtovima, SIG - potpis (ako se koristi).

I konačno, ako modul mora raditi neovisno, tada trebate koristiti naredbu 15 za automatsko pokretanje prema unaprijed postavljenim postavkama prepoznavača. U tom će slučaju modul za prepoznavanje glasa raditi samostalno bez potrebe za inicijalizacijom nakon uključivanja.

Tim 15 - postavljanje automatskog pokretanja prepoznavača kada ga uključite.

Format: | AA| 03 | 15 | 00 | 0a | - onemogućite funkciju automatskog pokretanja

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

Za kontrolu ispravnosti izvršenja 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 su sve numeričke vrijednosti predstavljene u heksadecimalni oblik.

Dakle, koristeći sustav naredbi, možete prilično fleksibilno konfigurirati modul za prepoznavanje glasa za korištenje u različite svrhe. Ako samo upravljanje izlaznim portovima modula nije dovoljno, tada se modul za prepoznavanje glasa može povezati s drugim uređajima putem UART-a ili GPIO-a. Za bežično povezivanje možete koristiti prethodno razmatrane module.

Pomoću bežičnih modula možete spojiti modul za prepoznavanje glasa na sve uređaje gdje je potrebno. Na primjer, spojimo ga na mikrokontroler koji će, u odnosu na dobivene podatke o prepoznavanju glasovnih naredbi, upravljati LED diodama. Bežični moduli omogućuju prijenos podataka u dva smjera, pa po potrebi možete napisati kod za inicijalizaciju glasovnog modula i snimanje glasovnih naredbi za mikrokontroler. U našem slučaju, pod kontrolom računala, nekoliko glasovnih naredbi već je snimljeno u modulu i konfigurirano je automatsko pokretanje prepoznavanja kada se uključi napajanje, tako da ćemo za mikrokontroler napisati samo prijem podataka i kontrolu LED dioda u odnosu na ove podatke. Mikrokontroler STM32F103C8T6 koristi USART1 za primanje podataka i pinove PB10...PB15 konfigurirane za izlaz, koji upravlja LED diodama. Izvorni kod nalazi se u dodatku na kraju članka.

Malo o rezultatima

Prepoznavanje glasa nije sasvim točno. Ovisi o odabranim naredbama i glasu korisnika. Tijekom testiranja pronašao sam nekoliko negativnih točaka. Prilikom učenja naredbi modula odabrane su glasovne naredbe „jedan“ i „dva“. Naredba “dva” je uvijek prolazila jasno, ali je naredba “jedan” često bila definirana kao naredba “dva” i, sukladno tome, izvršavao se kod druge naredbe. Nadalje, pri pokušaju davanja glasovnih naredbi na engleskom (a one nisu bile snimljene u glasovnom modulu), naredba "jedan" gotovo je uvijek definirana kao "dva". Možda je sve u izgovoru, intonaciji i drugim aspektima ljudskog glasa, ugrađenim u algoritam za kodiranje glasovnog modula izgovorenih naredbi. Međutim, proizvođači ne daju te tajne u javnost. Osim toga, na kvalitetu prepoznavanja utječu vanjski uvjeti buke - tutnjava s ulice, buka ventilatora, nasumični zvukovi i tako dalje. Proizvođač skreće pozornost na činjenicu da se visoka razina točnosti prepoznavanja odvija u idealnim uvjetima. Ideja korištenja mikrofona s pojačalom će, naravno, povećati domet uređaja, ali će također povećati vjerojatnost pogrešaka, jer će se pojačanje glasa također dogoditi s pojačanjem buke.

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

Popis radijskih elemenata

Oznaka Vrsta Vjeroispovijest Količina BilješkaPostićiMoja bilježnica
IC1 MK STM32

STM32F103C8

1 U bilježnicu
VR1 Linearni regulator

AMS1117-3.3

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

U ovom projektu kombinirao sam detektor za detekciju lica i sustav za praćenje.

Ukratko, bit projekta: web kamera instalirana na rotacijski mehanizam spojena je na računalo s operativnim sustavom Windows i instaliranim softverom OpenCV. Ako program otkrije lice u vidnom polju web kamere, tada se izračunava središte lica. Koordinate X i Y prenose se na Arduino kontroler koji je preko USB-a spojen na računalo. Zauzvrat, Arduino kontroler, prema primljenim naredbama, upravlja s dva servomotora: duž X koordinate i duž Y koordinate, tj. osiguran je sustav praćenja.

OpenCV (Open Source Computer Vision Library) biblioteka se može preuzeti. Biblioteka je višeplatformska, trenutno postoji pod sljedećim operativnim sustavima: Windows, Linux, Android, Mac OS pa čak i iOS. Knjižnica omogućuje obradu slike u stvarnom vremenu. Napisano u C/C++.

Da. ovaj projekt je mješavina mekih i tvrdih rješenja. Obrada slike provodi se na računalu, a servo upravljanje pomoću kontrolera.

Dakle, ono što sam koristio za projekt:

Softver:

Željezo:

računalo s Windows 7 SP1

Arduino Uno ili kompatibilni + PSU

2 servo motora

USB web kamera

Pa, idemo.

Korak 1. Instaliranje softvera

1) Ako imate Windows OS, preuzmite datoteku OpenCV-2.3.1-win-superpack.exe (ili noviju) i instalirajte biblioteku.

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

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

Korak 2 Pričvršćivanje kamere i servo motora

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

Pričvrstio sam web-kameru na servomotor osi X, a zatim sam je fiksirao na servomotor osi Y. I fiksirao sam cijelu ovu strukturu u stezaljci iz treće ruke.

Korak 3 Povežite se

Spajanje servomotora:

Žuti pin servo X-osi spojen je na pin 9 Arduina.

Žuti pin servo osi Y spojen je na pin 10 Arduino kontrolera

Crveni Vcc pin od servo spojite na 5V pin

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

Veza web kamere:

Web kamera je spojena na računalo preko USB sučelja. C++ program identificira web-kameru prema broju USB priključka. Možda ćete morati navesti port u programu.

Spajanje Arduino UNO kontrolera:

Kontroler se također povezuje s računalom putem USB sučelja. U sustavu se pojavljuje virtualni COM port koji se mora unijeti u programski kod u C ++.

Preuzmite projektne datoteke

Izvorni članak na engleskom (preveo Koltykov A.V. za cxem.net)

Najpopularniji povezani članci