Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
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č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. |
+ | |||
+ | 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/h. Nejvyšší 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/ |