Spisu treści:

Chronograf Nerf i lufa szybkostrzelności: 7 kroków
Chronograf Nerf i lufa szybkostrzelności: 7 kroków

Wideo: Chronograf Nerf i lufa szybkostrzelności: 7 kroków

Wideo: Chronograf Nerf i lufa szybkostrzelności: 7 kroków
Wideo: O częściach do tuningu replik ASG (w telegraficznym skrócie) Cześć I | Filmy na 4000 subów 1/4 2024, Listopad
Anonim
Image
Image
Chronograf Nerf i lufa szybkostrzelności
Chronograf Nerf i lufa szybkostrzelności

Wstęp

Jako majsterkowicza zawsze jest bardzo satysfakcjonujące widzieć liczbowe wyniki swojego majsterkowania. Wielu z nas zmodyfikowało wcześniej pistolety Nerf, a kto nie lubi rzucać kawałkami piany po całym domu z prędkością ponad 100 klatek na sekundę?

Po zmodyfikowaniu wielu pistoletów Nerf przez całe moje życie, począwszy od około 10 lat z moim tatą, aż do teraz, kiedy ja i moi współlokatorzy nadal rzucamy pianą po mieszkaniu na siebie, zawsze chciałem dokładnie wiedzieć, jak szybko lecą rzutki i ile strzałek na sekundę strzela moi współlokatorzy Rapid-Strike. Dostępne są komercyjne chronografy dla Nerf i Airsoft, ale te o wysokiej precyzji są drogie i fajnie jest zbudować taki sam. Jeśli chcesz go kupić, Nerf wypuścił lufę prawie identyczną z tą z tego projektu (z lepszym wzornictwem przemysłowym) i można ją znaleźć tutaj:

Nerf Modulus Ghost-Ops Chrono Barrel

Wersja Nerf jest również zasilana bateryjnie i wyświetla licznik wystrzelonych rzutek. Instrukcja zawiera również ekran i przycisk resetowania, jednak do obliczania prędkości opiera się na długości rzutki i nie wydaje się, aby używała przerwań. Głównym celem tego projektu będzie komunikacja szeregowa (jako prosty przykład, taki jak ten, który nie był najłatwiejszy do znalezienia w Internecie) oraz użycie przerwań dla dokładnego odmierzania czasu. Z tych samych powodów, z ciaśniejszą obudową i lepszym systemem mocowania replik ASG, można go łatwo przekształcić w chronograf do airsoftu. Bez użycia przerwań kod może być wolniejszy i mniej wydajny, a także znacznie trudniejsze do dokładnego pomiaru czasu w mikrosekundach, ponieważ milisekundy nie dadzą dokładnych wartości dla szybkości rzutki.

Nie będę się zbytnio skupiał na projektowaniu obudowy, chociaż pliki STL są dostępne w GitHub, ponieważ każdy może po prostu kupić wersję Nerf, która jest zdecydowanie lepsza do rzeczywistej gry, ale przyszła wersja tego może złagodzić wyniki.

Podstawowe zasady (efekty uczenia się):

  • Ma postać standardowej beczki Nerf
  • Wykorzystanie fototranzystorów jako bramek czasowych do rzutki.
  • Pokazuje użycie przerwań Adruino do pomiaru czasu
  • Wykorzystanie przetwarzania z Arduino do komunikacji szeregowej

Zakres projektu:

Planuję omówić głównie szczegóły tego projektu z kilkoma krótkimi przeglądami i polecam przeczytanie referencji dla Arduino i Processing, aby uzyskać bardziej szczegółowe informacje. To nie nauczy cię, jak lutować, ale raczej jak zintegrować Arduino i przetwarzanie oraz używać przerwań. Wiele z tej nauki będzie odbywało się poprzez przeczytanie samego komentowanego kodu, więc upewnij się, że przeczytałeś cały kod przed załadowaniem na ślepo i próbą uruchomienia go.

Korzyści w porównaniu z podobnymi projektami:

  • Wykorzystanie przerwań do dokładnego pomiaru dużej prędkości
  • Obszerna sekcja debugowania fototranzystorów
  • Obliczanie szybkostrzelności (ROF) dające liczbę rund na sekundę (RPS)
  • Pełnoekranowy interfejs komputerowy - nieprzydatny podczas bitwy, ale świetny, jeśli chcesz pokazać innym wyniki na streamie lub Youtube za pomocą rejestratora ekranu.
  • Możliwość dostosowania do Airsoftu lub Paintballa poprzez modyfikację samej obudowy
  • Nie ma potrzeby stosowania niestandardowych płytek drukowanych (byłoby to miłe w przyszłej aktualizacji, ale każdy może to zrobić za stosunkowo niskie koszty)
  • Całkowity koszt poniżej 10 USD, gdy części są dzielone i jeśli dostępna jest drukarka 3D - na równi z kosztem komercyjnym, z dodatkiem ROF

Krok 1: Wymagane części i narzędzia

Wymagane części i narzędzia
Wymagane części i narzędzia

Jeśli masz drukarkę 3D, będzie to dla ciebie świetny projekt, ponieważ będę dostarczał pliki do obudowy. Zapraszam do aktualizacji obudowy. Nie miałem pod ręką żadnych wyświetlaczy LCD, ale mam nadzieję, że druga wersja będzie miała wyświetlacz LCD i będzie wykorzystywała WEMOS D1 lub podobną płytę obsługującą WiFi / BT oraz baterię. Umożliwi to rejestrowanie danych na urządzeniach mobilnych i informacje zwrotne w czasie rzeczywistym – na przykład, ile strzałek pozostało w broni. Zalecane jest trochę doświadczenia z lutowaniem, jeśli nie czujesz się komfortowo, polecam postępować zgodnie z instrukcją lutowania i prawdopodobnie kupować dodatkowe elementy elektroniczne na wszelki wypadek.

Wymagane narzędzia:

  1. Lutownica
  2. Dmuchawa gorącego powietrza/opalarka/zapalniczka (w przypadku korzystania z koszulki termokurczliwej)
  3. Narzędzia do ściągania izolacji
  4. Kabel USB Mini-B (lub inny kabel wymagany dla mikrokontrolera)
  5. Pistolet do klejenia na gorąco lub podobny (użyłem długopisu do drukowania 3D, aby przymocować wszystkie elementy do wydrukowanej obudowy 3D)

Potrzebne materiały:

  1. Drut z rdzeniem stałym 22AWG np: Zestaw drutu z rdzeniem stałym 22AWG
  2. Arduino Nano (lub podobny, użyłem klona) np: 3 x Arduino Nano (Clone)
  3. Zestaw rezystorów (2 x 220 omów, 2 x 220 k omów) Być może będziesz w stanie użyć rezystorów ściągających o niższej wartości, takich jak 47 k, z powodzeniem, po prostu odkryłem, że potrzebuję tej wartości, aby działała. Przewodnik rozwiązywania problemów opisuje, jak określić, czy rezystor pulldown jest prawidłową wartością dla konkretnego fototranzystora i zestawu diod LED. Z tego powodu polecam zaopatrzenie się w zestaw: np: Zestaw Rezystorów
  4. 2 x diody IR np: diody IR i zestaw fototranzystorów
  5. 2 x fototranzystor
  6. 1 x wydrukowana w 3D obudowa - w nieprzezroczystym żarniku IR (Hatchbox Silver działał i był jedynym kolorem, który testowałem)
  7. Pełne pliki projektu są dostępne tutaj na GitHub, a także w załączonym pliku Zip. STL są również dostępne w Thingiverse tutaj.

Krok 2: Testowanie deski do krojenia chleba

Testowanie deski do krojenia chleba
Testowanie deski do krojenia chleba
Testowanie deski do krojenia chleba
Testowanie deski do krojenia chleba

Po dostarczeniu elektroniki, przewody lutownicze do fototranzystorów i diody IR ~20-30cm do debugowania, zalecam ich obkurczanie pod wpływem ciepła. Nie miałem termokurczliwego rozmiaru w odpowiednim rozmiarze i musiałem użyć taśmy elektrycznej do tego prototypu. Umożliwi to wykorzystanie ich do testowania w obudowie. Jeśli wydrukowałeś obudowę i masz diody LED i fototranzystory we właściwych pozycjach, możesz rozpocząć testowanie.

Upewnij się, że masz zainstalowane Arduino i Processing.

Plik zip na początku zawiera cały kod, a także pliki STL do drukowania załącznika.

Użyj Arduino do debugowania na początku i używaj przetwarzania tylko do końcowych testów (możesz zobaczyć wszystko w monitorze szeregowym z Arduino).

Możesz spróbować po prostu wystrzelić strzałkę Nerf przez chronograf z Chronogrpah_Updated.ino zainstalowanym na Arduino. Jeśli to zadziała, wszystko gotowe. Jeśli to nie zadziała, prawdopodobnie będziesz musiał dostosować wartości rezystorów. Zostało to omówione w następnym kroku.

Trochę o tym, jak działa kod:

  1. Przerwanie zatrzymuje kod za każdym razem, gdy rzutka przechodzi przez bramkę i określa czas w mikrosekundach
  2. Dzięki temu obliczana jest prędkość, a czas jest zapisywany
  3. Czas między strzałami jest obliczany i przeliczany na strzały na sekundę
  4. Czas między bramkami jest obliczany i przeliczany na stopy na sekundę na podstawie odległości bramki.

    Zastosowanie dwóch bramek pozwala na uzyskanie lepszych wyników przy identycznym czasie (jak duża część czujnika musi być pokryta) i zmniejsza histerezę

  5. Szybkość i szybkostrzelność są wysyłane przez port szeregowy oddzielone przecinkami do monitora szeregowego w arduino lub szkicu przetwarzania, co pozwala na ładny interfejs użytkownika (skup się na przetwarzaniu, gdy wszystko inne działa!).

Krok 3: Testowanie i debugowanie

Jeśli test wstępny nie powiódł się, musimy dowiedzieć się, co poszło nie tak.

Otwórz przykład Arduino AnalogReadSerial znajdujący się w Plik-> Przykłady->0.1 Basics -> AnalogReadSerial

Chcemy mieć pewność, że fototranzystory działają tak, jak tego oczekujemy. Chcemy, aby czytały WYSOKIE, gdy strzałka ich nie blokuje, a NISKI, gdy strzałka ich nie blokuje. Dzieje się tak, ponieważ kod używa przerwań do rejestrowania czasu, w którym strzałka mija czujnik, a typ używanego przerwania to FALLING, co oznacza, że zostanie uruchomione przy przejściu z HIGH do LOW. Aby upewnić się, że pin jest WYSOKI, możemy użyć pinów analogowych do określenia wartości tych pinów.

Prześlij Arduino Przykład AnalogReadSerial i przeskocz z cyfrowego pinu D2 lub D3 na A0.

D2 powinien być pierwszym czujnikiem, a D3 powinien być drugim czujnikiem. Wybierz 1, aby przeczytać i tam zacząć. Postępuj zgodnie z poniższym przewodnikiem, aby określić prawidłowe rozwiązanie na podstawie odczytów:

Wartość to 0 lub bardzo niska:

Wartość powinna początkowo wynosić około 1000, jeśli odczytuje bardzo niską wartość lub zero, upewnij się, że diody LED są prawidłowo podłączone i nie są spalone, a także dobrze wyrównane. Podczas testów wypaliłem swoje diody LED, używając rezystora 100 omów zamiast 220 omów. Najlepiej jest zapoznać się z arkuszem danych diod LED, aby określić prawidłową wartość rezystora, ale większość diod LED prawdopodobnie będzie działać z rezystorem 220 omów.

Diody LED działają, a wartość nadal wynosi 0 lub bardzo niska:

Problem prawdopodobnie polega na tym, że rezystor obniżający ma zbyt niską rezystancję. Jeśli masz problem z rezystorem 220k, możesz zwiększyć go wyżej, ale może pojawić się szum. Powinieneś upewnić się, że twój fototranzystor nie jest wypalony.

Wartość to średni zakres:

Spowoduje to wiele problemów, głównie fałszywych wyzwalaczy lub nigdy nie spowoduje haju. Musimy upewnić się, że otrzymamy WYSOKI, aby to zrobić, potrzebujemy wartości ~600, ale starajmy się o 900+, aby być bezpiecznym. Zbyt blisko tego progu może powodować fałszywe wyzwalacze, dlatego chcemy uniknąć fałszywych alarmów. Aby dostosować tę wartość, chcemy zwiększyć rezystor pulldown (220K). Robiłem to już kilka razy w swoim projekcie i prawdopodobnie nie będziesz musiał tego robić, ponieważ jest to bardzo duża wartość dla rezystora pull-down.

Wartość jest bardzo głośna (dużo skacze bez bodźców zewnętrznych):

Upewnij się, że okablowanie jest prawidłowe z rezystorem pull-down. Jeśli to prawda, może być konieczne zwiększenie wartości rezystora.

Wartość utknęła na 1000+, nawet przy zablokowaniu czujnika:

Upewnij się, że rezystor pull-down jest prawidłowo podłączony, może się to zdarzyć, jeśli nie ma pull-down. Jeśli to nadal stanowi problem, spróbuj zmniejszyć wartość rezystora pull-down.

Wartość jest wysoka i spada do zera przy blokowaniu światła:

Powinno to wystarczyć do działania czujnika, jednak możemy nie być wystarczająco szybką reakcją, gdy strzałka przecina ścieżkę. W obwodzie występuje pewna pojemność, a przy rezystorze 220K może upłynąć trochę czasu, zanim napięcie spadnie poniżej wymaganego progu. Jeśli tak jest, zmniejsz ten rezystor do 100K i zobacz, jak działają testy.

UPEWNIJ SIĘ, ŻE WSZELKIE ZMIANY REZYSTORA SĄ ZGODNE MIĘDZY OBU CZUJNIKAMI

Zapewnienie identycznych obwodów dla obu czujników pozwala zachować taką samą latencję pomiędzy opornikami, co pozwoli uzyskać najlepszą dokładność pomiarów.

Jeśli masz jakieś dodatkowe problemy, zostaw komentarz poniżej, a zrobię co w mojej mocy, aby Ci pomóc.

Krok 4: Montaż sprzętu

Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu

Przylutuj elementy do małej płytki drukowanej, jak pokazano tutaj:

Przewody diod LED i fototranzystorów powinny zostać przycięte na długość około _.

Przylutuj Arduino do płytki i podłącz rezystory od masy do dostępnych pinów. Dodatkowo upewnij się, że 4 przewody dodatnie można łatwo połączyć ze sobą. Jeśli masz z tym problemy, możesz zdjąć kawałek drutu i przylutować go na wszystkich wyprowadzeniach na końcu.

Podłączyłem czujniki po przeciwnej stronie obudowy, jednak możesz je okablować, o ile zachowasz spójne boki. Przyciąłem przewody na długość i przylutowałem przewody do każdej z diod na końcu. Nieznacznie zaktualizowałem prowadzenie przewodów, aby zapewnić więcej miejsca i mniej martwić się o to, że niektóre przewody znajdują się pod płytką drukowaną, a inne nad nią, co ułatwia użytkowanie. Listy STL znajdują się w pełnym pliku zip projektu na początku projektu.

Krok 5: Montaż końcowy

Montaż końcowy
Montaż końcowy
Montaż końcowy
Montaż końcowy
Montaż końcowy
Montaż końcowy

Jeśli otwory PCB nie pasują do otworów w głównym korpusie chronografu, prawdopodobnie możesz zabezpieczyć elektronikę w obudowie za pomocą taśmy lub gorącego kleju, stwierdziłem, że nie trzeba go zabezpieczać po przewodzie i USB zostały wprowadzone, jednak wyniki mogą się różnić. Został zaprojektowany tak, aby umożliwić wciśnięcie filamentu 1,75 mm w otwory na śruby w celu podgrzania, jednak płytkę PCB można również wkręcić lub przykleić. Najważniejszą częścią jest zapewnienie dostępu do portu USB.

Przykryj elektronikę pokrywą elektroniki. Zaktualizowane pliki powinny pasować lepiej niż moje i miejmy nadzieję, że zostaną wciśnięte na miejsce, jednak użyłem długopisu do drukowania 3D, aby zgrzać okładki na miejscu. Jesteś teraz gotowy, aby wystrzelić kilka rzutek!

Przyszła aktualizacja może wykorzystywać wewnętrzne trasowanie przewodów, ale okładki w tym przypadku nieco ustępują estetyce Nerf.

Krok 6: Chronograf w akcji

Image
Image
Chronograf w akcji
Chronograf w akcji

Otwarcie pliku przetwarzania: Chronograph_Intitial_Release pozwoli na naprawdę ładny interfejs użytkownika dla chronografu wyświetlającego zarówno FPS, jak i RPS (Rounds per Second). Jeśli masz problemy z połączeniem, upewnij się, że zamknąłeś monitor szeregowy Arduino, być może będziesz musiał również zmienić port szeregowy w kodzie, ale jest to skomentowane i powinno być proste. Aby zresetować wartości maksymalne, po prostu naciśnij spację na komputerze.

Trochę o tym, jak działa kod (zdjęcie interfejsu widać powyżej):

  1. Odbiera dane wejściowe z Arduino
  2. Porównuje to z danymi wejściowymi z przeszłości, aby znaleźć wartość maksymalną
  3. Wyświetla bieżące i maksymalne wartości na pełnym ekranie dla łatwej wizualnej informacji zwrotnej
  4. Resetuje maksymalną wartość po naciśnięciu spacji

Krok 7: Plany na przyszłość

Przyszła aktualizacja będzie zawierać następujące ulepszenia. Jeśli masz dodatkowe funkcje, które chciałbyś, daj mi znać, a postaram się je wdrożyć.

  1. Dołącz ekran LCD
  2. Dołącz baterie
  3. Punkty mocowania zgodne z Nerf
  4. Zaktualizowana obudowa
  5. Żelazne przyrządy celownicze

Zalecana: