Od dawna myślałem o budowie własnego systemu (działającego na podczerwień) do bezkontaktowych walk typu „air combat”. Temat przeciągał się, bo realizacja całej funkcjonalności na jednej płytce Arduino (choć możliwa) byłaby dla mnie dość czasochłonna, więc z braku czasu odkładałem to wiele razy. Dopiero kiedy (przy okazji innego projektu) trafił w moje ręce opisany wcześniej dedykowany moduł nadajnika/odbiornika podczerwieni YS-IRTM, uznałem, że wykorzystanie tego modułu nieznacznie wpłynie na rozmiary całego urządzenia, a za to pozwoli zrealizować temat umiarkowanym nakładem pracy, warto więc podjąć wyzwanie.
Urządzenie składa się z trzech części:
- odpowiednio przerobiony YS-IRTM, umieszczony w modelu w taki sposób, aby dioda nadawcza była skierowana do przodu i nie napotykała na przeszkody (np. śmigło), co pozwala na oddanie „czystego strzału”, natomiast odbiornik powinien być widoczny od tyłu (w szerokim zakresie kątów), co z kolei pozwala zarejestrować „trafienie”;
- zaprogramowany moduł Arduino, włączony na kanale przepustnicy pomiędzy odbiornik a sterownik silnika (regler), jednocześnie przesyłający/odbierający dane do/z YS-IRTM;
- pilot na podczerwień (protokół NEC), umożliwiający testowanie sprawności systemu.
Na rysunku połączenia przedstawione są schematycznie, w rzeczywistości wszystkie złącza w obecnej wersji znajdują się po jednej stronie modułu Arduino. Założona zworka blokuje nadawanie komend „strzału”.
Zasada działania jest następująca: nadajnik podczerwieni w moim modelu emituje do przodu cyklicznie (3 razy na sekundę) impuls „strzału”. Kiedy wystarczająco zbliżę się od tyłu ściganego modelu, jego odbiornik odczyta mój impuls i spowoduje chwilowe wyłączenie silnika (2 sek.), co pozwoli wizualnie zarejestrować takie „trafienie”, a jednocześnie nie będzie stanowić większego zagrożenia (rozbicie, konieczność lądowania),pozwalając na powrót do walki po chwili. Oczywiście przeciwnik może również w ten sam sposób „ostrzelać” mnie. Emitowane sygnały „strzału”, to komendy IR z modulacją fali nośnej 38kHz, przypisane do modelu. To powoduje, że nie mogę „ostrzelać” sam siebie (np. jakieś odbicia od przeszkód w terenie lub podczas testów w domu), a także umożliwia walkę w formacjach, np. parami. „My” mamy zakodowane moduły tak samo, więc nasze odbiorniki nie będą reagować na wzajemny „ostrzał”, za to każdy z dwóch przeciwników zareaguje na „strzał” oddany przez każdego z nas. Komendy „strzału” są identyczne z komendami pilota IR (skrajne przyciski ‘CH-‘, ‘CH+’ w górnym rzędzie), co umożliwia przetestowanie systemu w pojedynczym modelu (w domu lub przed walką).
Przeróbka modułu YS-IRTM
Moduł YS-IRTM standardowo posiada złącze 4Pin wyprowadzone pionowo do dołu. Zdemontowałem je, choć początkowo rozważałem wersję ze złączem wyprowadzonym na płasko. Uznałem jednak, że to mniej pewne rozwiązanie i dodatkowo powiększy rozmiary modułu, który powinien być jak najmniejszy. Trzeba było również wylutować diodę nadawczą IR, żeby odwrócić kierunek promieniowania. Diodę (fi 4mm) umieściłem w rurce aluminiowej (fi 6mm) i zabezpieczyłem koszulką termokurczliwą. Miałem nadzieję, że to trochę zawęzi wiązkę „strzału”, ale nie wiem czy mam rację, bo nie robiłem badań porównawczych (z rurką / bez rurki).
Następnie przylutowałem 4-żyłowy kabel (brązowy – GND, żółty – RxD, pomarańczowy – TxD, czerwony +5V) o długości ok 50cm (taki kawałek miałem pod ręką), co może nie wystarczyć do montażu urządzenia w modelu z długim kadłubem (zakładając montaż na stateczniku). W razie potrzeby zakładam użycie przedłużacza.
Całość zabezpieczyłem koszulką termokurczliwą w taki sposób, aby dioda i odbiornik IR były odsłonięte. Ponieważ spód modułu jest płaski, to najłatwiej zamocować go na rzep, który dobrze klei się do koszulek termo. Na płytce znajduje się dioda LED, migająca podczas przesyłania i odbierania komend, co pozwala na wizualne sprawdzenie, czy urządzenie jest podłączone i działa.
Moduł Arduino
Z punktu widzenia płytki drukowanej ten moduł bardzo przypomina urządzenie opisane wcześniej – monitor pakietu LiPo na kanał przepustnicy SGM-TGuard.
Ponieważ użyłem tej samej płytki (miałem zapasową). więc nie będę powtarzał opisu. Nie montowałem natomiast elementów związanych z pomiarem napięcia (D1,D2, D3, C1, C2,C3, R11, R12, R21, R22, R31, R32).
Dodatkowo tutaj należy dolutować na płytce Mini-Pro 4-pinowe złącze, umożliwiające podpięcie kabla z YS-IRTM.
Program
Arduino Mini-Pro zaprogramowałem (po wlutowaniu złącz „goldpin”) przy użyciu programatora USBasp, co opisywałem już wcześniej w artykułach z tej serii. To co istotne, to 2 moduły (ew. pary modułów 2x2) muszą być zaprogramowane z różnymi zestawami komend „strzał / trafienie”. Polega to na przypisaniu w programie odpowiedniej wartości wartości stałej ‘cmdSet’ (0 lub 1) w sekcji „deklaracje stałych i zmiennych – parametry do edycji”.
Można również zmodyfikować pozostałe parametry:
- okres automatycznie generowanej komendy „strzału” (domyślnie 0,3sek.);
- czas wyłączenia silnika po detekcji „trafienia” (domyślnie 2sek., w tym czasie detekcja „trafień” jest blokowana) ;
- dodatkowy czas blokady detekcji „trafień” (domyślnie 1sek.) po upływie 2 sek. z wyłączeniem silnika);
Warto zaznaczyć, że standardowe diody sygnalizacyjne na płytce procesora pokazują wysyłanie i odbieranie komend z YS-IRTM, natomiast dioda na wyjściu D13 sygnalizuje detekcję (i blokadę) sygnału RC z kanału przepustnicy w następujący sposób:
- doda nie świeci – wejście nie podłączone lub brak sygnału RC na wyjściu odbiornika,
- dioda miga - jest prawidłowy sygnał z odbiornika,
- dioda świeci ciągle przez 3 sekundy – zostało zarejestrowane trafienie, do ESC podawany jest (przez 2 sek.) sygnał „minimum przepustnicy”, w tym czasie kolejne trafienia są ignorowane.
Tak jak moje poprzednie projekty, związane z detekcją sygnału RC, ten również wymaga dołączenia biblioteki <eRCaGuy_Timer2_Counter.h> by Gabriel Staples
Program SGM-irCombat, wersja 1.1 -->pobierz
Instalacja w modelu
Jak wspominałem wcześniej moduł nadawczo-odbiorczy powinien być umieszczony w taki sposób, aby nic nie zasłaniało ani diody nadawczej, ani odbiornika. Najlepszym miejscem w modelu, spełniającym to kryterium jest góra statecznika pionowego.
Ja specjalnie w tym celu przebudowałem mój uniwersalny testowy model DWS, dodając do niego dwa małe stateczniki pionowe. Mocowanie modułu IR (jak na fotkach), powinno zapewnić niezakłócone promieniowanie do przodu oraz detekcję „trafień” w dużym zakresie kątów. Innym możliwym rozwiązaniem jest pionowy wysięgnik mocowany do kadłuba, albo mocowanie modułu IR na skrzydle. W tym drugim przypadku niestety odbiornik może być często zasłonięty przez kadłub lub usterzenie, w zależności od tego, z której strony modelu uciekającego będzie podchodził model ścigający.
Podsumowanie
Funkcjonalność opisana powyżej, to pierwsza wersja oprogramowania. Nie wiem czy będzie dalej rozwijane, ale przyjęte założenia pozwalają na dołożenie kolejnych funkcji, na przykład:
- zliczanie odebranych trafień i ich odczyt po lądowaniu;
- kolejne odebrane trafienia wydłużają czas na jaki wyłącza się silnik;
- całkowite wyłączenie silnika (lub ograniczenie na stałe maks. obrotów do 1/2 przepustnicy) po otrzymaniu określonej liczby trafień;
- detekcja drugiego (poza przepustnicą) kanału RC (dedykowany przycisk/przełącznik w nadajniku), który mógłby pełnić rolę spustu, czyli „strzał” uruchamiany przez pilota, a nie automatyczny, jak to jest obecnie; za tym z kolei mogłaby pójść limitowana ilość „amunicji / strzałów”, resetowana po odłączeniu zasilania (przy wymianie pakietu napędowego);
- dodanie obwodów wyjściowych, umożliwiających dołączenie urządzeń zewnętrznych, sygnalizujących trafienie, na przykład syreny piezo albo wytwornicy dymu;
- programowe (zamiast zworki) „uzbrajanie” modułu, „ostrzał” mógłby zostać aktywowany np. po 10 sekundach lotu, a zworce można byłoby przypisać inne znaczenie (np. wybór zestawu komend, zamiast konieczności oddzielnego programowania modułów);
- połączenie modułu do walki z detektorem napięcia pakietu zasilającego, czyli urządzenie 2w1 (SGM-TGuard + SGM-irCombat).
Urządzenie powstało już jakiś czas temu, ale niestety w sezonie 2019 nie udało się przeprowadzić testów w powietrzu. Na ziemi wszystko działa zgodnie z założeniami, zasięg strzału na otwartej przestrzeni to ok. 4m, co może wydawać za małą odległością. Z drugiej strony przy walkach kontaktowych w grę wchodzi strącenie modelu, albo odcinanie taśmy ciągniętej za modelem. Przegrywa ten, który ląduje z najkrótszą taśmą, czasem te odcinki są naprawdę krótkie. Teoretycznie istnieje potencjał do zwiększenie zasięgu (zastosowanie specjalistycznej diody z wąskim kątem promieniowania, rezygnacja z komend modulowanych na rzecz wykrywania czegokolwiek, co odczyta odbiornik – niekoniecznie prawidłowo), ale na obecnym etapie trudno powiedzieć, czy jest sens tym się w ogóle zajmować. Jeśli w sezonie 2020 uda się przeprowadzić testy w locie, zrelacjonujemy je na łamach SGM.
Demonstracja działania modułu w warunkach domowych:
Uwaga! Nie ponosimy odpowiedzialności za ewentualne błędy i uszkodzenia związane z budową i podłączaniem urządzenia, każdy robi to na własne ryzyko. Projekt do wykorzystania wyłącznie na własny użytek
Aktualizacja 2020-01-31
Test w locie przeprowadziliśmy jesienią 2020. Niestety nie wypadł on pomyślnie. Znalezienie się tuż za ściganym modelem w dobrej pozycji do strzału okazało się bardzo trudne. Tak jak trochę się tego spodziewałem, osiągniecie stabilnej pozycji w odległości 4-5m przez chwilę, pozwalającą na rejestrację strzału, jest praktycznie niemożliwe. Aby system miał szansę zadziałać, trzeba byłoby zwiększyć zasięg oraz kąt promieniowania. Więcej o teście <TUTAJ>