Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Lajme
  • Kontrolli i komandës zanore bazuar në modulin e njohjes së zërit FZ0475.

Kontrolli i komandës zanore bazuar në modulin e njohjes së zërit FZ0475.

Siç nënkupton edhe emri, ky artikull do të fokusohet në njohjen e numrave në një mikrokontrollues. Unë dua të bëj një rezervë menjëherë që ky artikull nuk do të sigurojë kodin burimor, të marrë parasysh teknologjinë ose algoritmin e njohjes, do të them vetëm se përdoren idetë e një qasjeje sistematike. Disa prej tyre janë përshkruar në artikujt tanë (dhe ja). Kjo për faktin se qasja jonë tenton të jetë origjinale, por kërkon sqarim të disa çështjeve. Dikush mund të thotë: "një artikull tjetër rreth programimit të mikrokontrolluesve". Në asnjë mënyrë, kërkimi për projekte të tilla nuk dha ndonjë rezultat të kuptueshëm, me përjashtim të kësaj video... Një gjë është e qartë nga diskutimet në forume: ideja e marrjes së një pajisjeje të tillë (kamerë + mikrokontrollues = rezultati i njohjes në dalje, dhe jo vetëm një foto e kapur) erdhi tek shumë njerëz, por mbeti pa zbatim. Po, dhe njohja, sipas mendimit të përgjithshëm, kërkon shumë burime llogaritëse dhe mikrokontrolluesit nuk janë të përshtatshëm për këtë, në veçanti, ka pasur deklarata në lidhje me Arduino se kjo është përgjithësisht e pamundur. Nëse bëhet interesante, ju lutemi, nën mace.

Në mënyrë që të mos ketë pyetje të dukshme, ne do t'u përgjigjemi atyre:

  • Jo, ky nuk është një shërbim i njohjes së imazhit
  • Jo, kjo nuk është OpenCV
  • Jo, këto nuk janë rrjete nervore
  • Po, njohja bëhet nga mikrokontrolluesi!

Ideja

Me pak fjalë, gjithçka filloi me dëshirën për të provuar dorën time dhe për të provuar idetë e mia në njohjen e imazhit. Gjatë diskutimit, arritëm në përfundimin se mund të bëjmë me fuqi të vogël kompjuterike për të zgjidhur këtë problem. Për arsye të dukshme, ne nuk do të përshkruajmë detajet e këtyre diskutimeve.

Instalimi

Pra, detyra është vendosur, duhet zbatim. Pa devijuar nga parimet e vendosura tashmë
marrim atë që kemi në dorë. Dhe kishte nja dy Arduino Uno, një maus të vjetër optik dhe një disk CD në dorë. Nga rruga, ne u nxitëm të përdornim sensorin e një miu optik si një aparat fotografik për të marrë një imazh nga ajo që kemi lexuar shumë kohë më parë, dhe në fakt të gjithë pjesën tjetër të materialit "miu". E vetmja gjë që duhej të bënim ishte të hiqnim sensorin dhe të gjithë rripin e tij për lehtësinë e përdorimit, si dhe të ngjitnim thjerrëzën në të, të cilën e hoqëm me kujdes nga disku i CD-së. Kjo ishte e nevojshme për të rritur distancën nga subjekti te kamera, përndryshe numrat e përmasave tona nuk përshtateshin dhe dukej vetëm një pjesë e vogël. Nga rruga, përpara lenteve nga disku CD, u përpoqëm të lidhnim optikën nga kamera në internet, por disi nuk funksionoi.


Ende



Më pas lindi pyetja se si ta vendosni këtë aparat fotografik mbi subjekt. Na ndihmoi shumë një mikroskop i vjetër i thyer, i shtrirë në punë. Me respekt i hoqi mekanizmin e kontrollit të skenës lëndore. Ky mekanizëm na lejoi të lëviznim kamerën vetëm përgjatë dy akseve dhe menjëherë lindi ideja për të përdorur udhëzuesin e kokës lazer nga disku i CD-së. E gjithë kjo u fiksua në kasë nga CD-ja e shumëvuajtur. Si rezultat, ne morëm një mekanizëm të lezetshëm të pozicionimit të kamerës.


Ende




Gjithsej: ne kemi një të ashtuquajtur kamera, ekziston një mekanizëm pozicionimi, mbetet të vendosim një copë letre me një numër dhe të marrim një imazh nga kamera. Këtu filluan “problemet”. Meqenëse karakteristikat e sensorit optik të "miut" janë shumë të pakta për t'u përdorur si aparat fotografik, ata filluan të improvizojnë me ndriçimin e pasëm.


Ende




U bë e qartë se vetëm për të theksuar nuk funksionon, intensiteti është i rëndësishëm, drejtimi i dritës së jashtme gjithashtu bën rregullime. Më duhej të ndizja një "arduinka" tjetër për të kontrolluar intensitetin e dritës së prapme ( Natyrisht, ishte e mundur të kontrollohej në një mënyrë tjetër, por më vonë dhe jo vetëm drita e prapme, por edhe duke ndërruar numrat në tregues). Në fund, doli se të shtënat në dritë është shumë më mirë. Dhe nëse, për shembull, përdorni një tregues të ndritshëm me shtatë segmente si objektiv, atëherë sensori e sheh atë përgjithësisht në mënyrë të përsosur. Pra, tani kemi një tregues dhe një shirit me numra të bardhë të mbushur me një sfond të zi si objekte të shtënave.


në të majtë është një imazh në shkallë gri të marrë nga treguesi (ne marrim një imazh të tillë nga sensori), në të djathtë është binarizuar.


Ende



Pamje e përgjithshme e asamblesë



instalimi i hershëm





Njësia e njohjes


Një rol të rëndësishëm në instalimin tonë luan e ashtuquajtura njësi njohjeje (në foton e mësipërme). Siç mund ta shihni, ai përbëhet nga një Arduino Uno dhe një transmetues i njohur wifi. ESP8266... Më lejoni të shpjegoj, ne kemi nevojë për një transmetues wifi për të parë rezultatin e njohjes në një tabletë. Aplikacioni në tablet dërgon një kërkesë, "arduinka", duke marrë kërkesën, "merr" imazhin nga sensori i miut, pastaj e binarizon atë. Pas binarizimit, ndodh njohja dhe pas përfundimit të tij, formohet një përgjigje. Si përgjigje, ne dërgojmë rezultatin e njohjes dhe 41 bajt për të krijuar një imazh të binarizuar në ekranin e tabletit, si të thuash, për qartësi.

Nëse shikoni prapa, atëherë "arduinka" i është besuar funksionalitet i mirë: punë me kamerën, njohje dhe punë me esp8266. Ajo që nuk mund të ndikonte në punë - më duhej të merresha me mungesën e kujtesës. Nuk e kam menduar kurrë se do të më duhej të rimarrë çdo bajt kujtese.

Demonstrimi i procesit të njohjes

Në vend të një përfundimi

Kjo është e gjitha, në fakt. Ka ende shumë punë përpara. Dhe detyra e parë: njohja e numrave (vargjet e numrave) të kapur nga një kamerë "njerëzore" (jo "sensori i miut") dhe transferimi i teknologjisë së zhvilluar në ESP8266 dhe zvogëlimi i intensitetit të luftës për çdo bajt memorie.

Ne do të jemi të lumtur t'u përgjigjemi pyetjeve tuaja.

Në këtë tutorial Arduino, ne do t'ju tregojmë se si të përdorni aplikacionin celular Android dhe modulin HC-05 Bluetooth për të kontrolluar me zë LED.

Për këtë tutorial, na duhen një minimum komponentësh. Pasi të keni përfunduar mësimin, mund ta ndërlikoni skemën dhe ta plotësoni atë me pajisje sipas dëshirës tuaj.

  • Arduino UNO
  • Moduli Bluetooth HC-05
  • Tabela e bukës
  • Telat
  • Rezistencë 330 ohm
  • Diodat që lëshojnë dritë (LED)

Hapi 2: Lidhja e modulit Bluetooth HC-05

Moduli standard Bluetooth HC-05 ka gjashtë kunja. Megjithatë, në këtë projekt ne do të përdorim vetëm 4.

Ne do të përdorim pinin VCC, pinin GND, pinin TXD dhe pinin RXD. Pini VCC i modulit bluetooth lidhet me + 3.3V nga Arduino. Pini GND i modulit lidhet me Arduino GND (tokë). Pini TX i modulit bluetooth lidhet me pinin dixhital 0 (RXD) dhe kunja RXD lidhet me pinin dixhital 1 (TXD).

Hapi 3: Lidhja e LED-ve

Hapi tjetër në krijimin e LED-ve të kontrolluara me zë është lidhja e LED-ve me Arduino përmes një paneli bukë.

Së pari lidhni skajin e shkurtër të LED-it me tokën. Më pas lidhni skajin e gjatë të secilës prej LED-ve me një rezistencë 330 ohm. Më në fund, lidhni rezistencën aktuale nga LED me kunjat dixhitale në Arduino.

Në këtë projekt, ne do të lidhim një LED me pinin dixhital 2, një tjetër me pinin dixhital 3 dhe LED-in e fundit me pinin dixhital 4.

Hapi 4: Fuqia

Për këtë projekt, ne mund ta fuqizojmë Arduino-n përmes çdo furnizimi me energji + 5V. Mund të përdorni portën USB nga kompjuteri juaj për të fuqizuar Arduino-n, por në këtë projekt ne do të përdorim një bateri portative 5V. Sigurohuni që GND i Arduino të jetë i lidhur me tokën e tabelës së bukës përpara se të lidhni furnizimin me energji elektrike me Arduino-n tuaj.

Hapi 5: Kodi

Kodi për projektin tonë është më poshtë.

Hapi 6: Përdorimi i aplikacionit celular

Mund të filloni të testoni projektin tuaj duke shkarkuar aplikacionin Android - BT Voice Control për Arduino (BT Voice Control për Arduino) krijuar nga SimpleLabsIN.

Pasi të keni shkarkuar dhe instaluar aplikacionin në telefonin tuaj Android, klikoni në shiritin e menusë në këndin e sipërm djathtas dhe zgjidhni "Connect a robot". Në dritaren e re që shfaqet, zgjidhni modulin Bluetooth HC-05 dhe lidheni atë.

Tani kur flisni me komanda të caktuara nga kodi në pajisjen tuaj përmes aplikacionit, disa LED duhet të ndizen dhe fiken. Shikoni më nga afër kodin ku tregohen komandat dhe vendosni tuajin. Për shembull, në vend të "* kaloni në të kuqe", thjesht mund të specifikoni "të kuqe". Kjo do t'i bëjë komandat më të shpejta, më të shkurtra dhe më të qarta.

Hapi 7: rezultati përfundimtar

Rezultati përfundimtar mund të shihet në videon e mëposhtme.

Ju urojmë projekte të suksesshme! Mos harroni të lini komente për projektin në faqen tonë

A ju kujtohet sesi disa vite më parë (dhe ndoshta edhe tani) ishte e përhapur ideja për të kontrolluar dritën në një dhomë duke duartrokitur? Dhe, në fund të fundit, është shumë i përshtatshëm, ju shtriheni në shtrat, shumë dembel për t'u ngritur dhe për të duartrokitur nga drita ose shkoni në shtëpi, është errësirë, ndjeni çelësin për një kohë të gjatë, dhe këtu nga pragu atje është një ose dy duartrokitje dhe drita tashmë është ndezur. Më duket se ky koncept është ende i rëndësishëm, por teknologjitë më të larta mund të aplikohen në të në krahasim me ato që ishin 5 vjet, 10 vjet më parë. Tani, për një sasi relativisht të vogël, mund të blini disa pjesë dhe të programoni strukturën për funksione të ngjashme, të cilat do të diskutohen më poshtë.

Sot do të shqyrtojmë një modul të krijuar për të njohur komandat zanore (duke përfshirë vetëm një zë brenda një komande zanore të regjistruar) - Moduli i njohjes së zërit V3.1 (V3) ose emri i zakonshëm kodues FZ0475.

Shtrirja e dorëzimit përfshin vetë modulin (bordi i qarkut të printuar me cilësi shumë të mirë), një mikrofon në një këmbë fleksibël me një lidhës fole 3,5 mm dhe kontakte PLS me kënd me një hap prej 2,56 mm për tabelën e modulit (ato mund të hiqen nëse ju lidheni me kontaktet e modulit në një mënyrë tjetër).

Sot ekzistojnë disa lloje modulesh me funksionalitet të ngjashëm nga prodhues dhe zhvillues ose dizajne të ndryshëm. Ky modul i njohjes së zërit, për mendimin tim, ka një ekuilibër të caktuar midis kostos, funksionalitetit, komoditetit. Moduli EasyVR do të jetë më i fuqishëm dhe dukshëm më i shtrenjtë. Modulet e bazuara në LD3320 do të jenë më të lira dhe të papërshtatshme (të papërshtatshme, të paktën sepse nuk është e lehtë të gjesh përshkrime normale mbi to, por përndryshe është tashmë subjektive).

Karakteristikat e modulit të njohjes së zërit V3.1 (V3):

  • Tensioni i furnizimit - 5 volt
  • Konsumi aktual - deri në 40 mA
  • Ndërfaqet - UART, GPIO
  • Saktësia e njohjes - 99% (në kushte ideale)
  • Gama e veprimit - varet nga mikrofoni i përdorur, për mikrofonin standard nga kompleti, diapazoni është 0,5 - 1 metër e distancës maksimale me një zë mjaft të lartë, nëse zëri është i qetë, atëherë do të duhet ta afroni mikrofonin te goja jote

Moduli është një tabelë e vogël e pastër mbi të cilën është mikrokontrolluesi kryesor (pika e zezë), një lidhës fole 3,5 mm për lidhjen e një mikrofoni, një çip memorie flash, GPIO, UART dhe kontaktet e energjisë, një palë LED dhe pjesa tjetër e pajisjeve të nevojshme të nevojshme për funksionimin e qarkut janë të vendosura - rezistorë, kondensatorë, kuarc. Madhësia kompakte e tabelës do t'ju lejojë të integroni lehtësisht modulin në modelet tuaja. Për të rritur gamën e komandave zanore, supozohet se është e nevojshme të përdorni një mikrofon me një përforcues. Me arritjen e një diapazoni të pranueshëm, moduli është i përshtatshëm për përdorim në sistemet e shtëpive inteligjente. Pa modifikime për të përmirësuar diapazonin e funksionimit, moduli mund të përdoret në sistemet e kontrollit të desktopit, si dhe në sistemet e sigurisë (kontrolli dhe kufizimi i aksesit). Me një mikrofon standard, për shkak të distancës së shkurtër, është më e sigurt të përdoret moduli i njohjes së zërit si kufje dhe të transmetohen komandat me valë te një kontrollues që kontrollon diçka duke përdorur një bateri dhe module me valë (për shembull, HC-05 ose HC-12 ose ndonjë tjetër të përshtatshme). Moduli është në gjendje të funksionojë pa një mikrokontrollues të jashtëm, pasi prodhuesi ka përcaktuar pavarësinë funksionale, është e nevojshme vetëm të regjistroni komandat zanore një herë dhe të vendosni cilësimet për funksionim të pavarur duke përdorur një pajisje të jashtme (PC ose MK).

Pra, për të filluar punën me modulin e njohjes së zërit, duhet ta lidhim atë ose me një kompjuter (duhet një përshtatës USB-UART) ose me një mikrokontrollues (është e nevojshme të zhvillohet një kod programi për të kontrolluar modulin).

Nuk ka asnjë ndryshim thelbësor në kontrollin dhe konfigurimin e modulit midis lidhjes me një kompjuter ose me një mikrokontrollues, prandaj, për qartësi, ne do të përdorim një PC për konfigurim. Udhëzimet përshkruajnë komandat për modulin në formë heksadecimal, prandaj, për lehtësi, do t'ju duhet gjithashtu një terminal që transmeton bajt në formë heksadecimal, për shembull, AccessPort (mund të shkarkohet në fund të artikullit). Për më tepër, prodhuesi fokusohet te përdoruesit e platformës Arduino dhe ofron një bibliotekë për përdorimin e këtij moduli dhe udhëzime për përdorimin e kësaj biblioteke. Sidoqoftë, shumë prej nesh janë shumë më të interesuar të punojnë me vetë modulin drejtpërdrejt sesa përmes mbështjellësit Arduino.

Para fillimit të punës, le të kuptojmë tabelën. Në anët e tabelës në të djathtë është një lidhës për një mikrofon, në anën tjetër ka katër kunja të ndërfaqes UART. Më poshtë janë tetë kunja të përdorura për të nxjerrë sinjale të shkaktuara nga njohja e zërit. Në krye, katër kontaktet e konfiguruara si hyrje sinjali përdoren për të kaluar midis grupeve (shtatë komanda zanore secila) komandash, nëse përdoret ky funksion. Dhe gjashtë kunjat e tjera në krye janë përdorur ndoshta për t'u lidhur me kujtesën e modulit.

Një sistem komandimi përdoret për funksionimin dhe konfigurimin e modulit. Pamja e përgjithshme e kornizës është si më poshtë:

Katër komandat e para 00, 01, 02, 03 përdoren për të kontrolluar statusin e modulit dhe cilësimet e tij. Gjashtë komandat e ardhshme 10, 11, 12, 13, 14, 15 përdoren për të ndryshuar cilësimet e modulit, duke përfshirë kontrollin e portave të daljes dhe cilësimet e ngarkimit automatik. Më tej, tre komanda 20,21, 22 përdoren për të regjistruar komandat zanore. Tre komandat e ardhshme 30,31,32 përdoren për të kontrolluar njohjen e komandave zanore. Komandat 0A, 0D, FF përdoren vetëm kur kthehen të dhënat nga vetë moduli. Në fakt, nuk ka shumë komanda dhe e gjithë kjo nuk është aq e frikshme sa duket në pamje të parë në dokumentacionin për modulin. Le të shqyrtojmë komandat e nevojshme për të punuar me modulin e njohjes së zërit. Jo të gjitha ekipet ekzistuese janë praktike.

Vlen të përmendet se moduli mund të funksionojë pa një mikrokontrollues kontrolli të jashtëm, si dhe të kontrollojë në mënyrë të pavarur diçka me portat e tij të daljes. Për ta bërë këtë, ju duhet t'i konfiguroni ato (komandat 12, 13, 14).

Skuadra 12 - konfiguroni portat e daljes. Kjo komandë cakton mënyrën e funksionimit të portave të daljes së modulit të njohjes së zërit.

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

Ku MODE mund të marrë katër vlera: 0 - modaliteti i pulsit (kur aktivizohet një komandë zanore, dalja që korrespondon me komandën do të ndryshojë gjendjen e saj për kohën e caktuar nga komanda 13), 1 - modaliteti i ndërrimit (ndryshoni ose rrotulloni) (çdo herë aktivizohet një komandë zanore, dalja që korrespondon me komandën zanore është përmbysur), 2 - modaliteti i ndezjes (kur aktivizohet një komandë zanore, dalja do të shkojë në gjendjen e një njësie logjike dhe nuk do të shkojë më në një gjendje logjike zero, rivendosja kryhet me komandën 14), modaliteti 3 - i fikur (i ngjashëm vetëm me modalitetin e ndezjes, përkundrazi, kur aktivizohet komanda zanore, dalja shkon në gjendjen zero logjike).

Më praktike është mënyra e kalimit, e cila nuk kërkon komanda të panevojshme. Modaliteti i pulsit do të ishte i mirë, por logjika e këtij modaliteti është e tillë që kur aktivizohet një komandë zanore, ai nxjerr një njësi logjike një herë, për një kohë nga 10 ms në 1 s. nuk mjafton. Edhe pse, në varësi të kërkesave për këtë mënyrë, mund të jetë e dobishme. Mënyrat e ndezjes dhe fikjes zbatohen në mënyrë të papërshtatshme, pasi ato kërkojnë ekzekutimin e komandave shtesë.

Skuadra 13 - vendosja e kohëzgjatjes së pulsit të modalitetit përkatës.

Formati: | AA | 03 | 13 | NIVELI | 0A |

Ku LEVEL merr një vlerë nga 00 në 0F (korrespondon me një kohëzgjatje nga 10 ms në 1 s).

NIVELI kohëzgjatja
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

Skuadra 14 - rivendosja e portave të daljes në gjendjen e specifikuar nga mënyrat e ndezjes ose çaktivizimit.

Formati: | AA | 03 | 14 | FF | 0A | - rivendosni të gjitha portat e daljes

| AA | 03 + n | 14 | IO0 | ... | ION | 0A | - rivendosni portat e zgjedhura të daljes

Ku n është numri i kunjave që rivendosen në mënyrë selektive, IO0 ... ION është renditja e këtyre kunjave në kornizën e dërgimit të të dhënave.

Më tej, në mënyrë që komandat zanore të ekzekutohen, ato duhet të regjistrohen në modul (trajnoni modulin). Këtu ka një kufizim. Vetëm shtatë komanda mund të njihen në të njëjtën kohë, megjithëse shumë të tjera mund të regjistrohen. Për të zgjeruar gamën e komandave zanore që do të njihen, përdoret një sistem grupimi (komandë 32), i cili kontrollohet nga portat hyrëse të modulit. Me vendosjen e konfigurimit të sinjaleve në këto kontakte, bëhet zgjedhja e grupit të komandave që do të njihen. Kjo është për shkak të performancës së kufizuar të modulit të kontrolluesit të zërit të përdorur.

Ekipi 20 - regjistrimi i një ose më shumë komandave zanore.

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

Ku n është numri i komandave zanore të regjistruara (nëse një komandë regjistrohet n = 0, dy komanda n = 1, e kështu me radhë në përputhje me formatin e përgjithshëm të transmetimit të komandës Lenght - gjatësia), R0 ... Rn është numri i komandave zanore (AA 03 20 03 0A - komanda për regjistrimin e komandës së tretë zanore).

Skuadra 21 - regjistrimi i një komande zanore dhe vendosja e një nënshkrimi për të.

Formati: | AA | 03 + SIGLEN | 21 | REKORD | SIG | 0A |

Ku RECORD është numri i komandës zanore, SIG është nënshkrimi (mund të përbëhet nga disa bajt, në mënyrë që çdo bajt të mund të korrespondojë me kodimin e karakterit të alfabetit nëse është e nevojshme), SIGLEN është numri i bajteve që përbëjnë nënshkrimin .

Skuadra 22 - shtoni ose hiqni një nënshkrim për komandën zanore të zgjedhur.

Formati: | AA | 03 + SIGLEN | 22 | REKORD | SIG | 0A | - duke shtuar një nënshkrim

| AA | 03 | 22 | REKORD | 0A | - heqja e nënshkrimit

Në procesin e regjistrimit të komandave zanore, është e nevojshme të udhëhiqeni nga sinjalet e LED-ve. Pas futjes së komandës që fillon procesin e regjistrimit, LED-i i verdhë (portokalli) fillon të pulsojë shpejt. Sapo ndizet LED e kuqe, duhet të thoni një komandë zanore në mikrofon. Nëse është e suksesshme, LED-ja e verdhë (portokalli) do të ndizet dhe më pas do të ndizet përsëri e kuqe - duhet të konfirmoni komandën zanore, ta thoni përsëri. Nëse janë të suksesshme, të dy LED do të ndizen - komanda zanore ruhet.

Pasi komandat zanore të regjistrohen në modul, asgjë nuk do të ndodhë derisa këto komanda të vendosen në "Njohësin" e modulit. Për ta bërë këtë, përdorni komandën 30. Pas ekzekutimit të kësaj komande, moduli do të fillojë të presë që komanda zanore të përputhet me mostrat e ruajtura. Vetëm shtatë komanda mund të njihen në të njëjtën kohë. Në këtë rast, LED-i i verdhë (portokalli) në tabelën e modulit do të pulsojë ngadalë.

Skuadra 30 - ngarkoni të dhënat në "Njohësin" e modulit.

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

Formati i përgjigjes është si më poshtë: | AA | 07 | 0D | 00 | GRPM | R | RI | SIGLEN | SIG | 0A |

Kur GRPM është informacion rreth grupit të cilit i përket komanda (nëse përdoret), R është komanda zanore e njohur (këto të dhëna mund të përdoren për të dalluar komandën nga njëra-tjetra nëse nuk përdoren nënshkrimet), RI është indeksi i komandës në njohës, SIGLEN është gjatësia e nënshkrimit në bajt, SIG - nënshkrim (nëse përdoret).

Dhe së fundi, nëse moduli do të funksionojë vetë, atëherë duhet të përdorni komandën 15 për ta nisur automatikisht atë sipas paracaktimit të njohësit. Në këtë rast, moduli i njohjes së zërit do të funksionojë vetë pa pasur nevojë për inicializim pas ndezjes.

Ekipi 15 - vendosja e autorun-it të njohësit në fillim.

Formati: | AA | 03 | 15 | 00 | 0A | - çaktivizoni funksionin autorun

| AA | 03 + n | 15 | BITMAP | R0 | ... | Rn | 0A | - vendosja e funksionit autorun

Për të kontrolluar korrektësinë e ekzekutimit të komandave, secila prej tyre korrespondon me përgjigjen e vet. Në rast të një nevoje të tillë, të gjitha të dhënat mund të gjenden në dokumentacionin për modulin e njohjes së zërit bashkëngjitur në fund të artikullit. Mos harroni se të gjitha vlerat numerike janë të përfaqësuara në heksadecimal formë.

Kështu, duke përdorur sistemin e komandës, është e mundur të konfiguroni në mënyrë fleksibël modulin e njohjes së zërit për përdorim për qëllime të ndryshme. Nëse kontrolli i thjeshtë i porteve të daljes së modulit nuk mjafton, atëherë moduli i njohjes së zërit mund të lidhet me pajisje të tjera nëpërmjet UART ose GPIO. Për lidhje me valë, mund të përdorni modulet e diskutuara më parë.

Duke përdorur modulet me valë, mund ta lidhni modulin e njohjes së zërit me çdo pajisje ku është e nevojshme. Për shembull, le ta lidhim atë me një mikrokontrollues, i cili do të kontrollojë LED-të në lidhje me të dhënat e marra për njohjen e komandave zanore. Modulet me valë lejojnë transferimin e të dhënave në dy drejtime, prandaj, nëse është e nevojshme, mund të shkruhet një kod për inicializimin e modulit zanor dhe regjistrimin e komandave zanore për mikrokontrolluesin. Në rastin tonë, disa komanda zanore janë regjistruar tashmë në modul nën kontrollin e kompjuterit dhe konfigurimi automatik i nisjes së njohjes është kur ndizet energjia, prandaj, për mikrokontrolluesin, ne do të regjistrojmë vetëm marrjen e të dhënave dhe kontrollin LED në lidhje me këto të dhëna. . Mikrokontrolluesi STM32F103C8T6 përdor USART1 për të marrë të dhëna dhe kunjat PB10 ... PB15 të konfiguruara për dalje, të cilat kontrollohen nga LED. Kodi burimor gjendet në shtojcën në fund të artikullit.

Pak për rezultatet

Njohja e zërit nuk është plotësisht e saktë. Varet nga komandat e zgjedhura dhe zëri i përdoruesit. Gjatë testimit, gjeta disa pika negative. Gjatë mësimit të komandave të modulit, u zgjodhën komandat zanore "një" dhe "dy". Komanda "dy" ishte gjithmonë e qartë, por komanda "një" shpesh përkufizohej si komanda "dy" dhe, në përputhje me rrethanat, u ekzekutua kodi i komandës së dytë. Më tej, kur përpiqeshit të jepni komanda zanore në anglisht (dhe ato nuk u regjistruan në modulin zanor), komanda "një" pothuajse gjithmonë përcaktohej si "dy". Ndoshta e gjitha ka të bëjë me shqiptimin, intonacionin dhe aspekte të tjera të zërit të njeriut, të ngulitura në algoritmin për kodimin e modulit zanor të komandave të folura. Sidoqoftë, prodhuesit nuk i japin këto sekrete në domenin publik. Përveç kësaj, cilësia e njohjes ndikohet nga kushtet e zhurmës së jashtme - zhurma nga rruga, zhurma e ventilatorit, tingujt e rastësishëm, etj. Prodhuesi tërheq vëmendjen për faktin se një nivel i lartë i saktësisë së njohjes ndodh në kushte ideale. Ideja e përdorimit të një mikrofoni me një përforcues, natyrisht, do të rrisë gamën e pajisjes, por gjithashtu do të rrisë mundësinë e gabimeve, pasi përforcimi i zërit do të ndodhë edhe me përforcimin e zhurmës.

Përfundimisht, nëse keni kërkesa të ulëta për njohjen e zërit dhe ekzekutimin e komandave zanore, atëherë ky modul do të përpunojë me ndershmëri paratë e shpenzuara për të.

Lista e radioelementeve

Emërtimi Lloji i Emërtimi sasi shënimDyqanFletorja ime
IC1 MK STM32

STM32F103C8

1 Në bllokun e shënimeve
VR1 Rregullator linear

AMS1117-3.3

1 Në bllokun e shënimeve
MOD1, MOD3 Moduli me valëHC-122 Në bllokun e shënimeve
MOD2 Moduli i njohjes së zëritVR3.11 Në bllokun e shënimeve
Z1 Kuarci8 MHz1

Në këtë projekt, unë kombinova një zbulim fytyre dhe një sistem gjurmimi.

Shkurtimisht, thelbi i projektit: një kamerë në internet e instaluar në një mekanizëm rrotullues është e lidhur me një kompjuter që funksionon sistemin operativ Windows dhe me softuerin e instaluar Opencv... Nëse programi zbulon një fytyrë në fushën e shikimit të kamerës së internetit, atëherë llogaritet qendra e fytyrës. Koordinatat X dhe Y transmetohen në kontrolluesin Arduino, i cili është i lidhur me kompjuterin nëpërmjet USB-së. Nga ana tjetër, kontrolluesi Arduino, sipas komandave të marra, kontrollon dy servomotorë: në koordinatën X dhe në koordinatën Y, pra. ofrohet një sistem gjurmimi.

Biblioteka OpenCV (Open Source Computer Vision Library) mund të shkarkohet. Biblioteka është multiplatformë, aktualisht ekziston për sistemet e mëposhtme operative: Windows, Linux, Android, Mac OS dhe madje edhe iOS. Biblioteka ofron përpunimin e imazhit në kohë reale. Shkruar në C / C ++.

Se. ky projekt është një përzierje e zgjidhjeve të buta dhe të forta. Përpunimi i imazhit kryhet në një kompjuter, dhe kontrolli i servo kryhet duke përdorur një kontrollues.

Pra, ajo që përdora për projektin:

Softueri:

Hekuri:

Kompjuter Windows 7 SP1

Arduino Uno ose i pajtueshëm + PSU

2 servo

Uebkamera USB

Pra, le të shkojmë.

Hapi 1. Instalimi i softuerit

1) Nëse keni OS Windows, shkarkoni skedarin OpenCV-2.3.1-win-superpack.exe (ose një version të mëvonshëm) dhe instaloni bibliotekën.

2) Shkarkoni dhe instaloni Microsoft Visual C ++ 2010 Express. Nëse keni një version 64-bit të Windows, atëherë do t'ju duhet gjithashtu të shkarkoni Windows SDK (por për versionin 64 mund të ketë probleme, unë ende nuk mund ta bëj OpenCV të funksionojë nën Windows 7 x64).

Lexoni procesin e konfigurimit të OpenCV për Visual C ++ në faqen zyrtare të internetit.

Hapi 2. Ngjitja e kamerës dhe servove

Nuk e bëra strukturën "të qëndrueshme", sepse pasi të arrij qëllimin përfundimtar, e shkëput gjithçka për projektin e radhës.

Kam bashkangjitur ueb-kamerën me servo-motorin e boshtit X, dhe ai, nga ana tjetër, e fiksova në servo motorin e boshtit Y. Dhe e rregullova të gjithë këtë strukturë në një kapëse nga "duart e treta".

Hapi 3. Lidhja

Lidhja e servo motorit:

Kunja e verdhë nga servo e boshtit X lidhet me pinin 9 të kontrolluesit Arduino

Kunja e verdhë nga servo e boshtit Y lidhet me pinin 10 të kontrolluesit Arduino

Pini i kuq Vcc nga servo lidhet me pinin 5V

Kunja e zezë GND nga servo lidhet me kutinë GND të kontrolluesit Arduino

Lidhja me uebkamerën:

Kamera e internetit është e lidhur me një kompjuter nëpërmjet një ndërfaqe USB. Programi C ++ identifikon kamerën e internetit me numrin e portës USB. Mund t'ju duhet të specifikoni portin në program.

Lidhja e kontrolluesit Arduino UNO:

Kontrolluesi gjithashtu lidhet me një kompjuter nëpërmjet një ndërfaqe USB. Një port virtual COM shfaqet në sistem, i cili duhet të përfshihet në kodin e programit C ++.

Shkarko skedarët e projektit

Artikulli origjinal në anglisht (përkthim nga A.V. Koltykov për faqen cxem.net)

Artikujt kryesorë të lidhur