Zdravím. Stavím střelecký TIMER. (na trhu je spousta timerů, ale žádný nevyhovuje našim požadavkům)
Co se týká MCU části tam problém nemám. Chtěl bych se, ale zeptat, ať nevymýšlím vymyšlené, na vstupní mikrofonní obvod. Neřešil jste někdo něco podobného, nebo nějaký odkaz kde se to řešilo?
Vstupní obvod musí zaznamenat výstřel ze zbraně( pistole, puška…) a dát impuls zpracovatelný MCU. Zbraň bývá od timeru vzdálena cca 1-5m. Přitom to musí být odolné proti běžným zvukům, řeč, hlahol, apod.
Za každou radu dík.
T.
Hoj.
Podobný problém jsme úspěšně vyřešili na startování stopek hasičské časomíry. Zkus pohledat na netu, určitě něco najdeš. Musí tam být ale startování přes mikrofon, ne přes tlačítko za spouští.
Signál z mikrofonu šel přes nějaký jednoduchý analogový obvod s nastavením citlivosti, ze kterého vypadla log. 1 při výstřelu, kterou už si potom zpracuješ v mcu, jak budeš chtít.
Zkusím se podívat, jestli najdu dokumentaci, kdyžtak bych ti poslal scan.
Tak mrkni sem, to je ono …
JJ. To bude ono. Zkusím to naplácat na univerzálce a vzít na střelnici. Musí to být schopné počítat výstřely i relativně rychle za sebou. Jasně nestřílí se dávkama ale někteří to smaží i tak dost rychle.
klikis
Koukal jsem na to zapojení a chtěl jsem se zeptat. Jak je to odolný proti jiným zvukům? Napadlo mne zařadit do toho mic obvodu ještě nějakej filtr, aby to nereagovalo třeba na hlasitý písknutí nebo podobně.
A tak mne napadá jakou frekvenci může mít výstřel?? Nemyslím teda ta ta ta a někdy ještě víc
.
No a druhý zádrhel. kámoš vymyslel, že k tomu uděláme ještě velkej displej. Ale ten musí být bezdrátovej. S tím moc zkušeností nemám. Budou se přenášet dva údaje. Vždy při zaznamenání výstřelu čas a číslo o kolikátý výstřel se jedná. Je mi jasný, že použiju nějaký RF moduly. Ale jak a co do nich posílat? Bude to podobný jako po seriový lince?
Za každou pomoc dík.
T.
Výstřel je právě spektrálně dost bohatej. To je z pohledu akustiky takovej skoro Diracův impuls. Používalo se to přiměření impulsní odezvy prostoru.
Citlivost jsme nikdy neřešili, jednou jsme to nastavili a byl pokoj. Lidi, muzika ani nastartovaná štříkačka 10 metrů daleko tomu nevadili. Píšťalku netuším, během startu se nepíská a potom už je to jedno. Ani nevím, jak ten impuls byl dlouhý. Fungovalo to ale na tlesknutí hodně blízko, nebo na ťuknutí nehtem do krabičky s mikrofonem. Budeš to muset zkusit
Taky střílím, už jsem o výrobě timeru také přemýšlel, ale práce je hodně a bastly se staví do fronty. Jsem rád, že mám čas jít na střelnici …
Tomas: TOHLE By mohlo jít použít. Vyzkoušené to ale nemám. Na 5m používám bluetooth
Jo. Dík to vypadá dobře.
5 m bude TIMER od střelce a TIMER bude mít svůj displej. Ten velkej bude mezi ostatními střelci klidně i 30m daleko, takže BT použít nepůjde.
Na jednosměrný (což pro displej stačí) bezdrátový přenos dat používám moduly HM-R868 a HM-T868. Moduly připojuju přímo na UART procesoru a rychlost přenosu používám 4800bd, což pro přenos pár bytů do displeje taky stačí. Pro tyhle moduly by 30m neměl být problém (obzvlášť ve volném terénu). Dalším řešením by pak byl Wifi modul. Připojuje se taky na UART a umí ze sebe udělat ja AP, tak klienta. Otázkou je, jestli si poradí se 30 metrama. Na takovou vzdálenost je vyzkoušený nemám. Výhodou by byla možnost obousměrné komunikace.
Balů. Dík. Podobný moduly jsem používal k dálkovejm ovladačům. Tam byl vždy nějakej kodér a dekodér. S UARTem moc zkušeností nemám. Zapojím to tedy tak, že vysílací modul připojím na TX a přijímací na RX UARTu?
Ahoj. Je to přesně, jak píšeš. Vysílací modul připojm k TX procesoru a víc neřeším. U přijímacího modulu připojím data k RX a EN k některému výstupu procesoru. V datasheetu píšou, že máš povolit příjem až po ustálení napájecího napětí - dobu si nepamatuju, ale prostě po zapnutí provedu inicializaci a po pár ms povolím příjem. Z přijímacího modulu lezou nějaký “data” trvale, takže nejčastěji přijímáš, detekuješ, filtruješ a zahazuješ. Vysílací procesor nastavuju tak, že vysílá 2 stop bity. Nemusíš pak řešit synchronizaci dat. Vysílání zahájím odesláním určitého počtu 0xFF. Díky jednomu stop bitu navíc se (teoreticky už) během 2 bytů příjem sesynchronizuje a dostáváš data, která vysíláš. Psal jsem o tom v tomto vlákně. Od té doby vývoj poněkud postoupil a nepoužívám už jako preamble 0xAA, ale 0xFF (úplně stejně to funguje s 0x00) - odpadá tak umělé zpoždění na synchronizaci během preamble.
Dík. Budu zkoušet.
Měl bych ještě jeden dotaz. Váhám o tom jaký použít displej (teda teď mluvím o tom malém co bude součástí timeru). Zda klasický LCD (třeba 4x20) nebo grafický. Určitě by to bylo lepší s tím grafickým. Jak vzhledově tak prakticky, protože tam bude i malé menu.
Bohužel s grafickými displeji nemám žádnou zkušenost a za druhé programuju v Bascomu. Existuje v Bascomu nějaká utilitka pro grafický displeje? Jak moc je složitý displej rozběhnout?
Za radu dík.
vcelku by se líbil třeba tento:
aliexpress.com/item/PCB-Siz … 02b7f32ba4
T.
Každý typ displeje má svoje výhody a nevýhody. U znakových displejů s řadičem HD44780 nebo kompatibilním je jejich výhodou jednoduchost ovládání, nenáročnost na paměť, nevýhodou je, že není úplně jednoduché použití nějaké větší grafiky nebo české diakritiky. Máš k dispozici 8 uživatelsky definovatelných znaků a to je vše.
Naproti tomu použití grafického displeje je sice o něco složitější, nicméně ani v tomto v případě není použití takového displeje o moc náročnější (obzvlášť pokud nepotřebuješ kreslit obecně vektorovou - nebitmapovou grafiku). Jednou z variant je cyklické přenášení obrazové paměti (u 128x64 je to 1kB RAM) do LCD. Vše ostatní se řeší v rámci RAM procesoru. V programové paměti je potřeba mít i znakovou sadu - v tomto případě není problém ani s kompletní českou diakritikou. V případě použití grafického displeje pouze na zobrazování textů (případně na zobrazení bitmapové grafiky) není nutné ani mít v RAM obrazovou paměť. Ta je šikovná až v okamžiku, kdy potřebuješ s obrazem nějaký způsobem pracovat. Já osobně raději pracuji s obrazovou pamětí v RAM, protože změna řadiče displeje pak vlastně spočívá jenom ve změně rutiny, která přenáší RAM do displeje. Osobně jsem si oblíbil OLED displeje 128x64, které jsou k dispozici ve verzi SPI i I2C v bílé, modré a modro/žluté, případně OLED displeje 128x32 - modré nebo bílé, pouze I2C. U nich je velkou výhodou (proti displejům s řadičem KS0108) to, že se dá jedním příkazem displej zrcadlit ve svislé i ve vodorovné ose a přepínat normální/inverzní zobrazení. Jsou ale malinké. Obraz je 22,4x11mm (128x64) nebo 22,4x5,5mm (128x32). Což může být výhoda i nevýhoda - podle toho, kde ho zamýšlíš použít. Naprostou výhodou je pak u nich jejich minimální spotřeba.
Dík. Velikostně mi vyhovuje právě ten na který jsem dával odkaz. Nějaká grafika tam nebude, možná logo na začátku při zapnutí. Zkusil jsem jeden objednat. Chtěl bych se zeptat, není někde nějaká literatura pro práci s těmito displeji?
T.
Displej s tímhle řadičem (KS0108 a kompatibilním) je stará klasika a literatury kolem něj je spousta, stačí pohledat. K těmhle displejům jsem na netu našel i simulátor, kde si s displeji můžeš klidně pohrát a tak, jak přepínáš jednotlivý signály, tak Ti v Tip boxu naskakuje, jaký význam aktuálně signály mají. Je tam simulátor jak pro grafický displej 128x64 bodů, tak pro znakový displej 2x16 znaků. Pod tím máš i nějaké jednoduché předdefinované skripty, tak si do skriptového okénka můžeš napsat vlastní. Dole jsou ke stažení i zip soubory s jednotlivýma simulátorama pro offline použití.
Na těch stránkách je i pár dalších zajímavostí, které by se mohly hodit.
Dík. Počkám až mi displej od číňana dorazí a budu laborovat
Tak jsem hledal nějaké info. Měl bych dotázek. Tento displej má taky nějaký znaky předdefinovaný, nebo musím vše vytvořit. Jak jsem psal programuju v Bascomu a tam klasický LCD nebyl žádnej problém. V úvodu jsem nadefinoval vstupy displeje a přiřadil k vývodům MCU a pak už jsem jen psal text v proceduře LCD"".
Displej, který sis vybral, žádnou znakovou sadu v sobě nemá. Ale ničeho se neboj. Vytvořit si znakovou sadu není nikterak složité. Já používám GLCD generátor od MicroElektroniky. Je jednoduchý, umí importovat fonty z Windows. Mám v něm vytvořenou CZ sadu fontu 7x8 bodů parádně použitelnou právě pro psaní obyčejného textu na tyto displeje. Z tohoto displeje si tak vlastně udělám znakový displej 21x8 znaků. Font je totiž definovaný jako 7x8, ale to je šířka znaku @. Ostatní znaky jsou užší. Většina znaků má šířku 5 bodů + 1 bod na oddělení znaků od sebe = 6 bodů/znak => 128/6 = 21.33333 znaku na řádek. Font to umí vyexportovat pro Basic, Pascal a C, takže vložit font do programu by neměl být žádný problém. V proceduře pak jen vezmeš kód znaku, podle něj vyhledáš první byte požadovaného znaku a přeneseš daný počet bytů, prezentující požadovaný znak, do paměti pro zobrazení. Během psaní si musíš jenom hlídat pozici na displeji (0-127), aby sis nepřepisoval data pro následující řádek. Font má 1792 bytů. Obsazení paměti se dá samozřejmě zoptimalizovat, ale tím si zase zkomplikuješ vyhledání definice znaku v tabulce - prostě jako vždy je to něco za něco.