Spisu treści:

Portal 2 Turret - Master Turret Control: 9 kroków (ze zdjęciami)
Portal 2 Turret - Master Turret Control: 9 kroków (ze zdjęciami)

Wideo: Portal 2 Turret - Master Turret Control: 9 kroków (ze zdjęciami)

Wideo: Portal 2 Turret - Master Turret Control: 9 kroków (ze zdjęciami)
Wideo: Let's Play Portal 2 - Episode 9 - Turret Production Destruction 2024, Listopad
Anonim
Image
Image

Ten projekt jest rozszerzeniem lub remiksem mojego oryginalnego Portal Turret na Instructables (Portal-2-Turret-Gun). Może być również używany jako tani kontroler do sterowania wszystkim, co wykorzystuje chip radiowy nRF24L01. Ekran LCD jest szczególnie przydatny podczas dostosowywania.

(Okazuje się, że jest to bardzo przydatne przy sprawdzaniu, kiedy moje radiotelefony nawiązują i tracą połączenia z innymi nRF24L01 w „sieci”. Mogę chodzić i oglądać ekran wyświetlacza pokazujący stan połączenia radiotelefonów! Całkiem pomocne przy dostosowywaniu ustawień i weryfikacji zasięg!)

Po ukończeniu Portal Turret zobaczyłem krótki filmik ze sceny opery Cara Mia na końcu Portal 2. Pomyślałem: „hej, zbudowałem teraz kilka wieżyczek. Mogę to zrobić! Cóż, miałem wieżyczki, ale żeby to działało, musiałyby się teraz komunikować ze sobą lub z jakimś innym urządzeniem. Po zastanowieniu się i pomyśleniu, że ręczne sterowanie również byłoby fajne, zdecydowałem, że zbuduję Master Turret Controller lub MTC.

Ok, więc jak się do tego zabrać? Cóż, nie miałem ochoty zbytnio modyfikować wież, więc to było ograniczenie. Miałem kilka chipów radiowych nRF24L01, których jeszcze nie używałem, i myślałem, że będzie to zgodne z moim celem, jakim jest używanie niedrogich komponentów i poleganie na konstrukcji mechanicznej i kodzie, aby to zadziałało. Musiałem zbudować kontroler i zacząłem zastanawiać się, co będzie zawierał i co dokładnie mógłbym zrobić z wieżyczkami. Cara Mia była już w programie, ale co jeszcze?

Sterowanie ręczne: Więc kiedy skrzydła są otwarte, chciałbym kontrolować wysokość i obrót. 2 osie = joystick, więc sterowanie joystickiem i kilka przycisków. Przycisk 1 wystrzeliłby z wieży, a być może przycisk 2 wypowiedziałby jedno z jej powiedzeń. Brzmi dobrze! Wystarczająco proste…

Czat: Niedawno zobaczyłem ponownie rutynę „Kto jest pierwszy” – Abbott i Costello, i w mojej głowie zapaliło się światło! Zrobiłbym również rutynę skeczową, używając wszystkich powiedzeń, używając wielu wieżyczek! Ok, ten nie był w pełni dopracowany, ale jestem pewien, że posortuję go, gdy moja kompilacja będzie w toku.

Chciałem również, aby ten MTC był bezprzewodowy, więc zdecydowałem się na prostą opcję zasilaną baterią 9 V i zaprojektowałem kontroler tak, aby był zasilany przez wtyczkę mini-USB przez Nano z tyłu. Przydatne również do aktualizacji.

Krok 1: Włączenie radia do wieżyczek

Najpierw uruchomiłem radio z kilkoma gołymi Nano, aby upewnić się, że mogę je uruchomić i przesyłać informacje między wieloma urządzeniami. Kiedy już to zrobiono, należało włączyć radio do istniejących wież. Hmm, dodanie fizycznej płytki drukowanej do wieży było całkiem proste. Właśnie zmodyfikowałem uchwyt chipa, aby zawierał nRF24L01, Nano i chip mp3. Ok. Zmodyfikowano jedną fizyczną część, z pewnym okablowaniem.

Zmodyfikowany uchwyt na wióry jest już częścią drukowanych części wieży. Właśnie usunąłem opcję bez radia z części drukowanych w tej kompilacji. Nie będzie miało znaczenia, jeśli ktoś zechce zbudować wariant nieradiowy. Tylko nie dołączaj układu radiowego nRF24L01.

Krok 2: (Ponowne) okablowanie wieżyczek

(Ponowne) okablowanie wieżyczek
(Ponowne) okablowanie wieżyczek
(Ponowne) okablowanie wieżyczek
(Ponowne) okablowanie wieżyczek
(Ponowne) okablowanie wieżyczek
(Ponowne) okablowanie wieżyczek
(Ponowne) okablowanie wieżyczek
(Ponowne) okablowanie wieżyczek

O o…

To nie wyglądało dobrze. Musiałem dodać 5 połączeń do Nano, a już miałem mało dostępnych pinów. Po przyjrzeniu się temu przez chwilę zdałem sobie sprawę, które połączenia mają pierwszeństwo i uznałem, że aby to zadziałało, będę musiał zmienić mapę większości istniejących połączeń Nano.

Dla tych, którzy chcą zrobić „Radio Turret” i zbudowali już poprzednią generację… Przepraszam…

Teraz zrobiłem tę zmianę kilka razy i okazuje się, że proces nie jest taki zły. Wymaga to powrotu, ale udało mi się cofnąć istniejące połączenia z Nano, a następnie ponownie podłączyć do odpowiednich pinów bez zbytniego żalu. Dodałem 7 przewodów do układu radiowego do nRF24L01 (5 przewodów komunikacyjnych, 3v i GND), a następnie podłączyłem drugie końce do Nano.

Jednak teraz jest tam więcej przewodów, więc o wiele ważniejsze jest utrzymanie porządku podczas prowadzenia przewodów.

WAŻNE: Podczas montażu upewnij się, że przewody nie naciskają przycisku resetowania Nano na płycie!! Zdarzyło mi się to na jednym i rzuciło mnie na niepotrzebną pętlę!

Tak więc konstrukcja wieży ma teraz 2 schematy okablowania: starą, odziedziczoną opcję „bez radia” i poprawioną opcję „wieżyczki radiowej”. Gdybym dzisiaj zbudował wieżę „nie radiową”, nadal używałbym schematu i kodu radiowego. Po prostu usuń lub skomentuj fragmenty radiowe, jeśli jest to wybrana trasa, czy nie. Wieża powinna nadal działać samodzielnie bez radia.

Krok 3: Elementy elektryczne MTC

Podzespoły elektryczne MTC
Podzespoły elektryczne MTC
Podzespoły elektryczne MTC
Podzespoły elektryczne MTC
Podzespoły elektryczne MTC
Podzespoły elektryczne MTC

Po uporządkowaniu wieżyczek nadszedł czas na zrobienie MTC.

MTC wykorzystuje następujące komponenty, wszystkie pozyskiwane za pośrednictwem Amazon, Baggood, Ali Express itp. Pokazuję numery części Amazon, do których powołałem się w celach informacyjnych, ponieważ te elementy są powszechnie dostępne i mają rozsądną cenę (i nie musiałem tego robić poczekaj ponad 2 tygodnie, aby zdobyć to, czego potrzebowałem, zanim będę mógł rozpocząć projektowanie mechaniczne!)

  • Arduino Nano LCD 0,96”, (SSD1306) Użyłem wersji niebiesko-żółtej
  • Mały joystick (HW-504) Moduł joysticka 5 V PS
  • Przełącznik dwustabilny (dx-004) 22mm * 13mm
  • Radio - (nRF24L01)
  • Przyciski 12mm (CLT1088 dla kolorowych przycisków, PBS-33B dla czarnego)
  • Wkręty 2 mm (zestaw wkrętów samogwintujących M2, asortyment z łbem krzyżowym)
  • Diody LED 5 mm do wyboru dla wskaźników. (Nie używaj jasnych diod LED!!)
  • Ogólne złącze baterii 9V z pigtailami
  • Bateria 9V (użyj dobrej, a nie jednej z odmian sklepowych, które nie zawsze zapewniają wystarczającą moc dla tych projektów!)
  • Użyłem drutu w osłonie silikonowej. Lubię go używać do tych projektów.

Początkowo używałem jasnych diod LED, ale okazało się, że są zbyt dobre. Oślepiali mnie! Skończyło się na użyciu starych, słabych diod LED, co miało więcej sensu w tej aplikacji.

Krok 4: Części drukowane 3D

Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D

Zaprojektowałem MTC za pomocą Fusion, podobnie jak zaprojektowałem wieżę.

Wydrukowany montaż wymaga tylko 3 części:

  • Panel górny (wersja 1 lub 2)
  • Dolna obudowa
  • Pasek LCD

Chip nRF, Nano, bateria 9V, przełącznik i diody LED są instalowane w górnej płycie bez elementów mocujących. Diody LED po prostu wciskają się w płytkę i są utrzymywane na miejscu za pomocą wypustek. Powinni po prostu wskoczyć, ale nie przesadzaj. Górna płyta jest zaprojektowana do zatrzaskiwania Nano, a chip nRF powinien delikatnie wchodzić. Ostrożnie z małą zakładką nRF; jest mały i jest wygięty, aby otworzyć i zwolnić, aby uchwycić chip. Mimo że jego podróż jest ograniczona, bądź tu delikatny.

Joystick i wyświetlacz LCD wymagają śrub 2 mm (długości 5 mm), aby przymocować je do górnej płyty. Płytka joysticka ma duże otwory, więc czułem, że potrzebuję małych podkładek, aby upewnić się, że śruby się nie przeciągną.

Odkryłem, że wyświetlacz LCD płytki PCB różni się nieznacznie w zależności od producenta, więc zdecydowałem się użyć prostego paska, aby utrzymać go na miejscu zamiast zaczepów lub haczyków.

Zwróć uwagę, że wyświetlacz LCD można fizycznie zainstalować w górnej płycie w dowolny sposób, ale wyświetlacz pokazuje się w pełni przez otwór tylko w jednej orientacji! Z tego powodu dodałem opcję drugiej górnej płyty podczas korzystania z podzielonego żółtego/niebieskiego ekranu. Jedna wersja ma żółty kolor na górze, a druga pokaże żółty na dole, jak pokazano na moich zdjęciach.

W przypadku wersji jednokolorowej LCD nie ma znaczenia, który z nich jest używany, ponieważ można odwrócić wyświetlacz za pomocą oprogramowania.

Ponieważ całe okablowanie jest wykonane na górnej płycie, dolna część jest właściwie tylko pokrywą przymocowaną do górnej płyty dłuższymi śrubami 2 mm (ilość: 4).

Zamiast opcji „drzwi baterii”, po prostu wbudowałem baterię w górną płytę. Oznacza to usunięcie 4 śrub, które przytrzymują spód do góry, aby wymienić baterię, ale ponieważ może być również zasilany przez kabel USB, a nie koniec świata. Górna płyta jest wykonana z systemu mocowania baterii 9V, który powinien być wystarczająco wytrzymały do wielokrotnego użytku, nie jest zbyt skomplikowany, ale zapobiega przemieszczaniu się baterii.

Górną płytę wydrukowałem w 2 kolorach, jak widać na zdjęciach. Używam Prusa i3 Mk2 bez opcji wielokolorowej, ale używam ich narzędzia do drukowania w kolorze (https://www.prusaprinters.org/color-print/), aby zmienić kolor w trakcie procesu. Sprawdź warstwę, na której tekst zatrzymuje się i staje się jednolity, i utwórz warstwę przejściową. Voila! Kolorowy tekst!

Wydrukowałem części na wysokości warstwy 0,35 mm, ponieważ nie ma potrzeby większej rozdzielczości na tych płaskich częściach. Wolę też, jak wygląda to w tej rozdzielczości. Aha, i drukuje się też dość szybko!

Krok 5: Montaż elektryczny

Montaż elektryczny
Montaż elektryczny
Montaż elektryczny
Montaż elektryczny
Montaż elektryczny
Montaż elektryczny
Montaż elektryczny
Montaż elektryczny

Wszystkie komponenty elektryczne są zainstalowane na spodzie płyty górnej, a całe okablowanie jest wykonane razem. Przyciski i przełączniki muszą być zainstalowane jako pierwsze, a LCD, Nano, Joystick, radio nRF można wstępnie okablować przed zainstalowaniem w górnej płycie. Polecam tę metodę wstępnego okablowania poszczególnych komponentów, a następnie wykonania końcowych połączeń z Nano na końcu. Zalecam również wgranie szkicu do gołego Nano, przed zakończeniem okablowania.

Nie ma nic bardziej satysfakcjonującego niż włączenie urządzenia i obserwowanie, jak po zakończeniu ożywa zgodnie z oczekiwaniami!

Jedynym wymaganym przygotowaniem części elektrycznej było wyjęcie kołków hedera z joysticka, aby zmieściły się pod górną płytą. Ekran LCD można kupić z zainstalowanymi pinami lub bez nich i będzie działać w obie strony. Nano powinno być wybrane bez pinów nagłówka.

Krok 6: Kod

Kod dla MTC, Red turret, White Turret i Blue Turret już dostępny

Cóż, to było doświadczenie w kodowaniu! Miałem wieżę działającą niezależnie, ale włączenie radia było trudniejsze niż początkowo sądziłem! Miałem też trochę zabawy, gdy sekcja „Czat” działała zgodnie z oczekiwaniami (więcej o tym później).

Kod MTC, gdy już został w pełni rozpracowany, zaczął obciążać limity pamięci Nano! Musiałem wprowadzić poprawki i oszczędzić kod, aby był bardziej wydajny pod względem pamięci. Kolejne dobre doświadczenie edukacyjne.

Dołączyłem odpowiedni kod „Wieża w opcji radiowej” w tej kompilacji, ponieważ działają one razem. Zbudowanie wieżyczki opcji radiowej na stronie budowy wieżyczki sprawi, że będzie ona gotowa do użycia z MTC lub do innej metody sterowania nRF24L01.

Ponadto, trochę czasu zajęło przystosowanie dźwięków do pracy z tym kodem, a ponieważ dźwięki zostały zaczerpnięte z innych publicznie dostępnych stron internetowych, włączyłem wszystkie dźwięki, tak jak użyłem ich w kilku plikach ZIP; jeden dla zwykłej wieży i jeden dla uszkodzonej wieży. Dobrą rzeczą dla Ciebie, drogi Czytelniku, jest to, że możesz używać dźwięków na kartach SD z kodami tak, jak zostały napisane i będziesz gotowy!

Krok 7: Menu MTC - Nawigacja

Menu MTC - Nawigacja
Menu MTC - Nawigacja
Menu MTC - Nawigacja
Menu MTC - Nawigacja
Menu MTC - Nawigacja
Menu MTC - Nawigacja

Kod MTC zaczyna się od niestandardowego ekranu powitalnego, a następnie sprawdza stan wieżyczek. Jeśli nie ma wieżyczek, będzie tam siedzieć, dopóki wieżyczki się nie połączą!

Jeśli co najmniej jedna wieżyczka jest podłączona, wyświetli się menu główne i zaświeci się dioda „Gotowy”, chyba że wieżyczki zostaną przerwane lub zajęte „rozprawianiem się z kimś”. Jeśli są zajęte, zostanie wyświetlony ekran „Wieżyczki są zajęte” i zaświeci się dioda „Zajęty”.

Wszystkie aktywnie połączone wieżyczki muszą być w „trybie gotowości”, zanim MTC będzie mógł sterować wieżyczkami.

Użyj joysticka (w górę iw dół), aby przechodzić przez opcje menu:

  • Aria
  • Czat
  • podręcznik

Wybierz żądaną opcję za pomocą przycisku „X” lub naciskając joystick.

Tryb Aria - wybranie tej opcji spowoduje wyświetlenie ekranu „Tryb Arii” i sprawi, że wieżyczki wykonają scenę Arii pod koniec gry Portal 2. Po zakończeniu wieżyczki zamkną się i będą czekać na komendę lub kogoś, kto je obudzi.

Tryb czatu - wybranie tej opcji spowoduje wyświetlenie ekranu „Tryb czatu” i rozpoczęcie sekwencji czatu. Po zakończeniu wieżyczki zamkną się i będą czekać na komendę lub kogoś, kto je obudzi.

Tryb ręczny - Wybranie tej opcji spowoduje wyświetlenie ekranu „Tryb ręczny”, zaświecenie diody LED „Ręczny” i umożliwienie ręcznej obsługi wieżyczek. Joystick kontrola skoku i obrotu. Naciśnięcie przycisku „X” aktywuje sekwencję wypalania. Naciśnięcie przycisku „T” sprawi, że „rozmawiają”, a wieżyczki wypowiadają losowe powiedzenie ze swojej biblioteki.

Naciśnięcie przycisku „<” lub przycisku wstecz spowoduje anulowanie tych trzech trybów, zamknięcie wieżyczek i powrót do menu głównego.

Jeśli chcesz zobaczyć stan połączenia swojego roju wieżyczek (obecnie ograniczony do 3), naciśnij przycisk „T” w menu głównym. Zostaniesz przeniesiony do ekranu „Status wieży”, gdzie możesz zobaczyć stan połączenia każdej wieży.

Na ekranie „Status wieży” zobaczysz stan każdej wieży.

  • Gotowy - gotowy do kontroli
  • Zajęty - wieżyczka jest zajęta „opiekowaniem się” kimś
  • Niedostępne - MTC nie może połączyć się z tą wieżą

Naciśnij przycisk „<”, aby powrócić do menu głównego.

Krok 8: Dostosowywanie kodu

Dostosowywanie kodu
Dostosowywanie kodu

Pokazany tutaj zrzut ekranu pokazuje, na co patrzyłem zbyt długo… 4 szkice na raz! Kto powiedział, że debugowanie nie jest zabawne!

Kod zapewnia kontrolę i opcje pokazane powyżej, ale co z dostosowywaniem kodu?

Oczywiście! Ale dzieje się tu sporo, więc oto kilka wskazówek lub wskazówek.

Wskazówka1 - Modyfikacja sekwencji „Czat”. Ta modyfikacja odbywa się w kodzie wieży.

Próbowałem wymyślić sposób, aby kod działał dla mnie, gdzie tylko mogłem. Uczynienie sekwencji czatu bardziej edytowalną (czy to słowo?), abym mógł skupić się na historii, wymagało więcej pracy na początku, ale ułatwia późniejsze dostosowywanie.

Zmiana sekwencji czatu za pomocą dostarczonej struktury kodowania może być wykonana w dość prosty sposób, pod warunkiem, że postępujesz zgodnie z metodą użytą w kodzie. Korzystając z dostarczonych plików dźwiękowych z gry Portal 2, wystarczy zmienić tabelę (chatSayings).

Wybierz powiedzenie dla zwykłej wieży lub uszkodzonej wieży. Powiedzenie to plik mp3, który jest identyfikowany przez „00XX -”, po którym następuje tekst opisujący powiedzenie. Ważną częścią jest liczba. Wieżyczka nr 1 użyje tej wartości XX w tabeli. Wieżyczka nr 2 poprzedziła wartość XX cyfrą „1”, a wieża nr 3 poprzedziła wartość XX cyfrą „2”. Tak więc, na przykład, jeśli wybierasz wyrażenie „0040 - przepraszam” i chcesz, aby wieżyczka nr 3 to powiedziała, wstawiasz „240” do tabeli we właściwej kolejności. Gdyby wieżyczka nr 1 miała to powiedzieć, wstawilibyśmy „40” do tabeli.

Zrób to samo dla następnego wyrażenia i tak dalej. Może to być kilka wyrazów twarzy między wieżyczkami lub całkiem sporo. (Nie jestem świadomy ograniczeń tej metody, innych niż pamięć).

Nie musisz zmieniać wartości innych tabel, ponieważ są to czasy odpowiadające powiedzeniu w tabeli. Jedyna inna linia do zmiany to linia 520.

if (i >= 43) { // koniec sekwencji

Wartość i tutaj musiałaby być ustawiona na liczbę powiedzeń w tabeli chatSayings.

Aby stworzyć całkowicie spersonalizowane powiedzonka (gdzie zaczyna się prawdziwa zabawa!), musisz ustawić wyrażenia w ponumerowanych plikach i znać czas potrzebny do odtworzenia pliku. Zapisz plik w folderze „mp3” w katalogu głównym karty SD przy użyciu metody czterocyfrowej („0001”, „0002” itp.). Następnie zarejestruj czas w milisekundach potrzebny do odtworzenia tego pliku. Wstaw te wartości do odpowiedniej tabeli.

Tak więc dla wyrażenia zapisanego jako „0037 - [twoje wyrażenie]”, którego odtworzenie zajmuje 5400 milisekund, należy umieścić '37' w tabeli chatSayings w odpowiednim miejscu (i dodać prefiks w zależności od tego, która wieżyczka mówi it) i 5400 w tabeli NormaTimings w tej samej lokalizacji (np. piąty element w każdej tabeli).

Teraz, gdy wartość „i” zostanie zwiększona, kod będzie odtwarzał 0037 przez 5400 milisekund.

Zauważ, że dodałem zmienną "timeadder", która dodaje trochę więcej czasu do każdego powiedzenia podczas grania. Daje to niewielką odległość między wypowiedziami, aby nie wydawały się pokrywać.

Piękno tej metody polega na tym, że ukończone stoły są dokładnie takie same w każdej wieży! Nie ma potrzeby dostosowywania tych stołów do każdej wieży. Wystarczy uporządkować tylko jedną tabelę, a kod określa, co mówi każda wieżyczka na podstawie tej samej tabeli.

Oznacza to, że możesz skupić się na pisaniu skryptów zamiast na kodowaniu!

Jeśli ktoś ma lepszy sposób na zrobienie tego, chciałbym to usłyszeć!!

Krok 9: Podsumowanie

Streszczenie
Streszczenie

Zajęło to więcej czasu, niż myślałem, ale wynik mnie raczej łaskocze. Niektóre rutyny czatu wciąż mnie rozśmieszają!

Chciałbym usłyszeć inne metody wykonywania rzeczy, które zrobiłem w swoim kodzie. Jestem pewien, że istnieją sekcje, które można przepisać i zużywają mniej pamięci, co pozwala na więcej funkcji lub opcji.

Chciałbym również zobaczyć inne pomysły włączone do MTC i sterowania wieżami!

Mam nadzieję, że udostępniłem platformę dla innych projektantów i programistów, z których mogą korzystać / kraść / uczyć się. Widziałem, jak to jest używane, aby pomóc ludziom w nauce kodowania. Usuń sekcję z MTC i/lub wieżyczki, na przykład „tryb ręczny”, i poproś uczniów, aby opracowali własny sposób na włączenie sterowania ręcznego!

Wiele się nauczyłem od tej społeczności i ogólnie z szerszej sieci. Wciąż jestem zdumiony, jak wiele osób spędza mnóstwo czasu na zastanawianiu się i dzieleniu się nimi ze światem. Myślę, że powinienem wziąć to, czego się nauczyłem, zastosować to, a następnie podzielić się tym z tobą!

Powodzenia i baw się dobrze, budując własną armię wieżyczek!

Zalecana: