Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2018:goal-counter

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2018:goal-counter [2019/01/12 20:39]
Marek Vitula [WS2812]
2018:goal-counter [2019/01/14 21:12] (aktuální)
Marek Vitula [Závěr]
Řádek 27: Řádek 27:
 Jako možný způsob detekce se nabízí použití optické závory v podobě IR LED diody a fototranzistoru,​ případně laserová dioda, kde dá využít přesné ohraničení brankoviště. Já jsem pro projekt zvolil laserovou diodu kvůli lepšímu vymezení polohy brankoviště. Jako možný způsob detekce se nabízí použití optické závory v podobě IR LED diody a fototranzistoru,​ případně laserová dioda, kde dá využít přesné ohraničení brankoviště. Já jsem pro projekt zvolil laserovou diodu kvůli lepšímu vymezení polohy brankoviště.
  
-Návrh zapojení +==== Návrh zapojení ​==== 
-{{:​2018:​goal-counter:​fritzing_schema_bb.png?​600|}}+{{ :​2018:​goal-counter:​fritzing_schema_bb.png?​600 |}}
  
 ===== Software ===== ===== Software =====
Řádek 54: Řádek 54:
 T0H Symbol, doba trvání 364 ns leží v povoleném intervalu 200 až 500 ns. T0H Symbol, doba trvání 364 ns leží v povoleném intervalu 200 až 500 ns.
  
-{{:​2018:​t0h.png?​400| T0H Symbol}}+{{:2018:​goal-counter:​t0h.png?​400| T0H Symbol}}
  
 ---- ----
Řádek 63: Řádek 63:
 Vzhledem k malé velikosti míčku a malému rozměru brankoviště připadají v úvahu optické metody detekce s pomocí fototranzistoru a nějakého zdroje světla. Protože je brankoviště ohraničené,​ tak bude dobré použít světlo směrové. ​ Vzhledem k malé velikosti míčku a malému rozměru brankoviště připadají v úvahu optické metody detekce s pomocí fototranzistoru a nějakého zdroje světla. Protože je brankoviště ohraničené,​ tak bude dobré použít světlo směrové. ​
  
-Zvolil jsem proto laserovou diodu, která umožňuje přesně ohraničit brankoviště a zároveň je s ní možně měřit rychlost průletu míčku brankou. Zároveň ale je nutné pokrýt větší plochu, takže použijeme linkovou fresnelovu čočku, která nám z bodu vytvoří linku a tak můžeme pokrýte celé brankoviště i v případě že se míček prolétne vzduchem.+Zvolil jsem proto laserovou diodu, která umožňuje přesně ohraničit brankoviště a zároveň je s ní možně měřit rychlost průletu míčku brankou. ​
  
-Na druhé straně brankoviště ​je umístěno pole fototranzistorů, zvolil jsem 6 paralelně zapojených fototranzistorů v pouzdře SMD 1206 napájených ​do za sebou do pájivého pole.+Zároveň ale je nutné pokrýt větší plochu, takže můžeme použít linkovou fresnelovu čočkukterá nám z bodu vytvoří linku a tak můžeme pokrýte celé brankoviště i případě žse míček prolétne vzduchem. 
 + 
 +Ve vytvořeném prototypu jsem ale použil pouze jednoduchý laser, protože objednaný laser s fresnelovou čočkou ​došel požkozený.
  
 Softwarová implementace detekce je závislá na třídách InterruptIn a Timer v mbed. InterruptIn poskytuje obsluhu přerušení na GPIO a Timer je jednoduchá implementace časovače. Softwarová implementace detekce je závislá na třídách InterruptIn a Timer v mbed. InterruptIn poskytuje obsluhu přerušení na GPIO a Timer je jednoduchá implementace časovače.
  
 Po detekci sestupné hrany je vytvořeno přerušení,​ které spustí časovač a po detekci vzestupné hrany je časovač zastaven, je ověřeno jestli pulz netrval déle než 2 vteřiny a pokud ne, je to prohlášeno za gól a čítač skóre je inkrementován. Po detekci sestupné hrany je vytvořeno přerušení,​ které spustí časovač a po detekci vzestupné hrany je časovač zastaven, je ověřeno jestli pulz netrval déle než 2 vteřiny a pokud ne, je to prohlášeno za gól a čítač skóre je inkrementován.
 +
 +Také je nutné ošetřit případ, kdy se míček odrazí od zadní strany brankoviště,​ aby nebyl gól započítán dvakrát. Ukládám si proto i čas průletu předchozího gólu. Gól je uznán pouze pokud doba mezi dvěma góly není kratší jak půl vteřiny.
 +
 +
  
 ==== Měření rychlosti průletu míčku bránou ====  ==== Měření rychlosti průletu míčku bránou ==== 
  
-Laserová dioda umožňuje přesné ohraničení. Se znalostí průměru míčku a doby průletu (šířka pulsu mezi dvěma hranami), jsme schopni - nepříliš přesně - změřit rychlost průletu brankovištěm. ​+Laserová dioda umožňuje přesné ohraničení. Se znalostí průměru míčku a doby průletu (šířka pulsu mezi dvěma hranami), jsme schopni - nepříliš přesně - změřit rychlost průletu brankovištěm. Nepřesnost je dána hlavně tím, že jsme schopni změřit rychlost pouze v přímém směru
  
 Rychlost v km/h, proměnná balltime je interval mezi dvěma hranami vyjádřený v sekundách. Rychlost v km/h, proměnná balltime je interval mezi dvěma hranami vyjádřený v sekundách.
Řádek 80: Řádek 86:
 float speed = 0.034f/​balltime*3.6f;​ float speed = 0.034f/​balltime*3.6f;​
 </​code>​ </​code>​
-==== Zdrojový kód aplikace ==== 
  
-Knihovna GoalCounter pro Mbed zajišťující počítání gólů je k dispozici zde: https://os.mbed.com/users/​nxf46245/​code/​GoalCounter/​ +Z měření, které jsem provedl na prototypu zařízení vyšlo najevo, že průměrná rychlost průletu míčkou brankou se pohybuje mezi 5 až 15 km/hNejvyšší naměřená rychlost míčku při přímé střele na bránu byla 18 km/h.
-Dokumentace:​ https://os.mbed.com/​users/​nxf46245/​code/​GoalCounter/​docs/​tip/​+
  
-TODO  +==== Komunikace s PC po sériové lince ====
-==== Video a fotografie ​====+
  
-TODO+Komunikace s PC je realizována po sériové sběrnici UART vyvedené na portu USB. Po každém gólu jsou odesílány informace o skóre, době průletu míčku brankovištěm a rychlosti. Po ukončení hry se vypíšou informace o každě střele.
  
 +**Ukázka komunikace**
 +<​code>​
 +Side 1 score 
 +
 +Score : 9 
 +
 +Time of ball pass : 0.021904 seconds
 +
 +Speed of ball (34 mm diameter) : 5.588023 kph
 +
 +Side 1 score 
 +
 +Score : 10 
 +
 +Time of ball pass : 0.017052 seconds
 +
 +Speed of ball (34 mm diameter) : 7.178171 kph
 +
 +Game over 
 +
 +Team 1 is winner
 +</​code>​
 +
 + 
 +==== Zdrojový kód aplikace a dokumentace ====
 +
 +  * Knihovna GoalCounter pro Mbed zajišťující počítání gólů je k dispozici zde: https://​os.mbed.com/​users/​nxf46245/​code/​GoalCounter/​
 +  * Dokumentace knihovny: https://​os.mbed.com/​users/​nxf46245/​code/​GoalCounter/​docs/​tip/​
 +  * Celý zdrojový kód aplikace: https://​os.mbed.com/​users/​nxf46245/​code/​goal_counter_project/​
 +
 +===== Video a fotografie =====
 +{{:​2018:​goal-counter:​img6.jpg?​400|}}{{:​2018:​goal-counter:​img5.jpg?​400|}}{{:​2018:​goal-counter:​img3.jpg?​400|}}{{:​2018:​goal-counter:​img1.jpg?​400|}}
 +{{ youtube>​qLfhL_8Cpjo?​medium }} Video demonstrující animaci vítěze
 ==== Vylepšení ==== ==== Vylepšení ====
 +Dostal se mi do ruk poměrně zajímavý vývojový kit NXP OM40006 obsahující mikrokontrolér LPC54000 a také displej s dotekovou vrstvou, kde by se dala implementovat grafická vrstva pro obsluhu počítadla. Na fotografii níže je demo aplikace návrhu počítadla.
  
-TODO LPC displej +{{:2018:​goal-counter:​lpc.jpg?400|}}
-===== Zdroje ===== +
-Erich Styger, popis hardwarové části  +
- https://​mcuoneclipse.com/​2015/​08/​01/​tutorial-adafruit-ws2812b-neopixels-with-the-freescale-frdm-k64f-board-part-1-hardware/​+
  
-Brian Daniels, WS2812 +===== Závěr =====
-https://​os.mbed.com/​users/​bridadan/​code/​WS2812/​+
  
 +Navrhované zařízení bylo sestaveno na nepájivém poli a experimentálně vyzkoušeno na hracím stole stolního fotbalu. Avšak pro praktické použití takového počítadla je nutné vymyslet jak senzory zabudovat do stolu aby nepřekážely při hře.
 +
 +Při návrhu a programování se také projevily některé nedostatky zvolené platformy Mbed a to zejména horší debugování a malá podpora hardwarových perifierií a také občasná neaktuálnost dokumentace API. Nicméně platforma je to zajímavá a to zejména z důvodu integrace téměř plnohodnotného IDE do webové stránky.
 +===== Zdroje =====
 +  - Erich Styger, popis hardwarové části ​  ​https://​mcuoneclipse.com/​2015/​08/​01/​tutorial-adafruit-ws2812b-neopixels-with-the-freescale-frdm-k64f-board-part-1-hardware/​
 +  - Brian Daniels, WS2812 https://​os.mbed.com/​users/​bridadan/​code/​WS2812/​
2018/goal-counter.1547321987.txt.gz · Poslední úprava: 2019/01/12 20:39 autor: Marek Vitula