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/ | ||