Cuprins:

Portal 2 Turret - Master Turret Control: 9 Pași (cu imagini)
Portal 2 Turret - Master Turret Control: 9 Pași (cu imagini)

Video: Portal 2 Turret - Master Turret Control: 9 Pași (cu imagini)

Video: Portal 2 Turret - Master Turret Control: 9 Pași (cu imagini)
Video: Wheatley's Unscientific Tests Full Walkthrough (No Commentary) 2024, Noiembrie
Anonim
Image
Image

Acest proiect este o extensie sau un remix al portalului meu original Turret pe Instructables (Portal-2-Turret-Gun). Poate fi folosit și ca un controler ieftin pentru a controla orice utilizează cipul radio nRF24L01. Ecranul LCD este deosebit de util la personalizare.

(Se dovedește a fi destul de util pentru a verifica când radiourile mele stabilesc și pierd conexiunile cu alte nRF24L01 din „rețea”. Pot să mă plimb și să mă uit pe ecranul afișării stării conexiunii radiourilor! Destul de util pentru ajustarea setărilor și verificarea gamă!)

După ce am terminat Turnul Portalului, am văzut un scurt videoclip cu scena operei Cara Mia la sfârșitul Portalului 2. M-am gândit: „hei, am construit câteva turele acum. Pot sa fac asta! Ei bine, am avut turele, dar pentru a-l face să funcționeze, acum ar trebui să comunice între ele sau cu un alt dispozitiv. După ce m-am gândit și am crezut că și controlul manual ar fi grozav, am ajuns să decid că voi construi un Master Turret Controller sau un MTC.

Bine, deci cum să faci asta? Ei bine, nu am avut chef să modific turelele prea mult, așa că a fost o constrângere. Aveam niște cipuri radio nRF24L01 pe care nu le folosisem încă și am crezut că vor ține linia cu obiectivul meu de a folosi componente ieftine și de a mă baza pe designul mecanic și codul pentru a face acest lucru să funcționeze. Ar trebui să construiesc un controler și am început să mă gândesc la ce ar conține controlerul și ce anume aș putea face turelelor. Cara Mia era deja pe ordinea de zi, dar ce altceva?

Control manual: Deci, odată ce aripile sunt deschise, aș dori să controlez pitch-ul și pivotul. 2 axe = un joystick, deci controlul joystick-ului și câteva butoane. Butonul 1 ar declanșa turela și poate că butonul 2 l-ar face să spună unul dintre cuvintele sale. Sună bine! Destul de simplu …

Chat: Am văzut recent „Who’s on First” - rutina Abbott și Costello din nou și mi s-a stins o lumină în cap! Aș face, de asemenea, o rutină de comedie de schiță folosind toate zicalele, folosind mai multe turnulețe !! Ok, acesta nu a fost pe deplin descoperit, dar sunt sigur că o voi rezolva odată ce construirea mea va fi în curs.

De asemenea, am vrut ca acest MTC să fie wireless, așa că am optat pentru o opțiune simplă alimentată de baterie de 9V și am proiectat controlerul să fie alimentat de mufa mini-USB prin Nano din spate. Util și pentru actualizare.

Pasul 1: încorporarea radioului în turele

Mai întâi am pus radioul să funcționeze cu câteva Nanos goale, pentru a mă asigura că pot funcționa și a trimite informații între mai multe dispozitive. Odată ce s-a făcut acest lucru, a fost vorba de încorporarea radioului în turelele existente. Hmm, adăugarea PCB-ului fizic în turelă a fost destul de ușoară. Tocmai am modificat suportul pentru cip pentru a include nRF24L01, Nano și cipul mp3. Bine. O parte fizică modificată, cu unele cabluri.

Suportul pentru cipuri modificat face deja parte din piesele tipărite de turelă acum. Tocmai am șters opțiunea non-radio din părțile tipărite din acea versiune. Nu va face nicio diferență dacă cineva dorește să construiască varianta non-radio. Doar nu includeți cipul radio nRF24L01.

Pasul 2: (Re) cablarea turelelor

(Re) cablarea turelelor
(Re) cablarea turelelor
(Re) cablarea turelelor
(Re) cablarea turelelor
(Re) cablarea turelelor
(Re) cablarea turelelor
(Re) cablarea turelelor
(Re) cablarea turelelor

Uh oh …

Nu arăta bine. Trebuia să adaug 5 conexiuni la Nano și deja nu aveam decât pini disponibili. După ce am analizat puțin acest lucru, mi-am dat seama ce conexiuni au avut prioritate și am recunoscut că, pentru ca acest lucru să funcționeze, va trebui să re-mapez majoritatea conexiunilor Nano existente.

Celor care doresc să facă o „Radio Turret” și au construit deja generația anterioară … Ne pare rău …

Acum, am făcut această schimbare de câteva ori și se dovedește că procesul nu este prea rău. Aceasta implică revenirea înapoi, dar am reușit să anulez conexiunile existente la Nano și apoi să mă reconectez la pinii corespunzători fără prea multă durere. Am adăugat cele 7 fire pentru cipul radio la nRF24L01 (5 fire de comunicare, 3v și GND), apoi am conectat celelalte capete la Nano.

Totuși, există mai multe fire acolo, așa că este mult mai important să păstrezi lucrurile ordonate atunci când treci firele.

IMPORTANT: La asamblare, asigurați-vă că firele nu apasă butonul Nano reset de pe placă !! Asta mi s-a întâmplat pe unul și m-a aruncat pentru o buclă inutilă!

Așadar, versiunea de turelă are acum 2 scheme de cablare: vechea opțiune „non-radio” moștenită și opțiunea „radio-turelă” revizuită. Dacă construiesc astăzi o turelă „non-radio”, aș folosi în continuare schema și codul radio. Ștergeți sau comentați porțiunile radio dacă acesta este traseul ales sau nu. Turela ar trebui să funcționeze în continuare singură fără radio.

Pasul 3: Componente electrice MTC

Componente electrice MTC
Componente electrice MTC
Componente electrice MTC
Componente electrice MTC
Componente electrice MTC
Componente electrice MTC

Având turelele sortate, a venit timpul să facem un MTC.

MTC folosește următoarele componente, toate provenind din Amazon sau Baggood sau Ali Express, etc. Afișez numerele de piese Amazon la care am făcut referință pentru referință, deoarece aceste articole sunt disponibile în mod obișnuit și la un preț rezonabil (și nu a trebuit să așteptați peste 2 săptămâni pentru a pune mâna pe ceea ce aveam nevoie înainte de a putea începe proiectarea mecanică!)

  • LCD Arduino Nano 0,96”, (SSD1306) Am folosit versiunea Albastru / Galben
  • Mic joystick (HW-504) modul de joystick 5V PS
  • Comutator de comutare (dx-004) 22mm * 13mm
  • Radio - (nRF24L01)
  • Butoane de 12 mm (CLT1088 pentru butoane colorate, PBS-33B pentru negru)
  • Șuruburi de 2 mm (set de șuruburi autofiletante M2, sortiment de cap Pan Pan Drive)
  • LED-uri de 5 mm la alegere pentru indicatori. (Nu utilizați LED-uri luminoase !!)
  • Conector generic de baterie de 9V cu treceri
  • Baterie de 9V (folosiți una bună, nu una dintre varietățile de magazin de dolari care nu pot furniza întotdeauna suficientă energie pentru aceste proiecte!)
  • Am folosit sârmă învelită din silicon. Îmi place să-l folosesc pentru aceste proiecte.

Am folosit inițial câteva LED-uri luminoase, dar am găsit că erau prea bune. Mă orbeau! Am ajuns să folosesc niște LED-uri vechi, slabe, și asta avea mai mult sens pentru această aplicație.

Pasul 4: Părți imprimate 3D

Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D

Am proiectat MTC folosind Fusion, similar modului în care am făcut designul turelei.

Ansamblul tipărit necesită doar 3 părți:

  • Panoul superior (versiunea 1 sau 2)
  • Carcasă inferioară
  • Curea LCD

Cipul nRF, Nano, bateria de 9V, comutatorul de comutare și LED-urile sunt instalate în placa superioară fără elemente de fixare. LED-urile doar apasă în placă și sunt ținute în poziție de file. Ar trebui să se conecteze, dar nu exagerați. Placa superioară este concepută pentru a fixa Nano, iar cipul nRF ar trebui să intre ușor. Aveți grijă cu fila mică nRF; este mic și este îndoit înapoi pentru a se deschide și elibera pentru a captura cipul. Chiar dacă călătoria sa este limitată, fii blând aici.

Joystick-ul și ecranul LCD necesită șuruburi de 2 mm (5 mm lungime) pentru a le ține de placa superioară. PCB-ul joystick-ului are găuri mari, așa că am simțit că am nevoie de șaibe mici pentru a mă asigura că șuruburile nu se trag.

Am constatat că PCB-urile LCD-urilor variază ușor dimensional de la producător la producător, așa că am ales să folosesc o curea simplă pentru a o menține în loc în loc de cleme sau cârlige.

Rețineți că ecranul LCD poate fi instalat fizic pe placa superioară în ambele sensuri, dar afișajul se afișează complet numai prin deschidere într-o singură orientare! Din acest motiv, am inclus o a doua opțiune de placă superioară atunci când folosesc ecranul galben / albastru divizat. O versiune are galbenul în partea de sus, iar cealaltă va arăta galbenul în partea de jos așa cum se arată în fotografiile mele.

Pentru versiunea LCD cu o singură culoare, nu contează care este cea utilizată, deoarece puteți răsfoi ecranul utilizând software-ul.

Deoarece toate cablurile sunt realizate pe placa superioară, partea inferioară este efectiv doar un capac ținut de placa superioară cu șuruburi mai lungi de 2 mm (cantitatea: 4).

În loc de opțiunea „ușă a bateriei”, tocmai am încorporat bateria în placa superioară. Aceasta înseamnă îndepărtarea celor 4 șuruburi care țin partea de jos în partea de sus pentru a schimba o baterie, dar din moment ce poate fi alimentată și prin cablu USB, nu la sfârșitul lumii. Placa superioară este realizată cu un sistem de suport pentru baterii de 9V care ar trebui să fie suficient de robust pentru o utilizare repetată, nu este prea complicat, dar împiedică mișcarea bateriei.

Am imprimat placa superioară în 2 culori așa cum se vede în fotografii. Folosesc un Prusa i3 Mk2 fără opțiunea pentru mai multe culori, dar folosesc instrumentul lor de imprimare color (https://www.prusaprinters.org/color-print/) pentru a schimba culoarea pe parcursul procesului. Verificați stratul ca textul să se oprească și să devină solid și faceți acest strat de tranziție. Voila! Text colorat!

Am imprimat piesele la înălțimea stratului de 0,35 mm, deoarece nu este nevoie de o rezoluție mai fină pe aceste piese plate. De asemenea, prefer modul în care arată această rezoluție. Oh, și se imprimă destul de repede!

Pasul 5: Ansamblu electric

Ansamblu electric
Ansamblu electric
Ansamblu electric
Ansamblu electric
Ansamblu electric
Ansamblu electric
Ansamblu electric
Ansamblu electric

Componentele electrice sunt instalate pe partea inferioară a plăcii superioare și toate cablurile sunt realizate împreună. Butoanele și comutatorul trebuie să fie instalate mai întâi, iar ecranele LCD, Nano, Joystick, radio nRF pot fi pre-cablate înainte de a fi instalate pe placa superioară. Recomand această metodă de pre-cablare a componentelor individuale, apoi realizarea conexiunilor finale la Nano la final. De asemenea, vă recomand să încărcați schița pe un Nano gol înainte de a finaliza cablarea.

Nu este nimic mai satisfăcător decât pornirea dispozitivului și vizionarea acestuia prind viață așa cum era de așteptat când ați terminat!

Singura pregătire a pieselor electrice necesare a fost scoaterea știfturilor antetului de pe joystick pentru a se potrivi sub placa superioară. Ecranul LCD poate fi achiziționat cu sau fără pini instalate și va funcționa în orice mod. Nano trebuie selectat fără știfturi de antet.

Pasul 6: Cod

Cod pentru MTC, turelă roșie, turelă albă și turelă albastră acum sus

Ei bine, aceasta a fost o experiență în codificare! Am avut turela funcționând independent, dar încorporarea radioului a fost mai dificilă decât am crezut inițial! De asemenea, m-am amuzat să obțin secțiunea „Chat” să funcționeze după dorință (mai multe despre asta mai târziu).

Codul MTC, odată calculat complet, a început să taxeze limitele de memorie ale Nano! A trebuit să fac ajustări și să economisesc codul pentru a fi mai eficient din punct de vedere al memoriei. O altă experiență bună de învățare.

Am inclus codul „Turret w radio option” corespunzător în această versiune, deoarece funcționează împreună. Construirea turelei opțiunii radio pe pagina de construire a turelei o va pregăti pentru utilizare cu MTC sau pentru cealaltă metodă de control nRF24L01.

De asemenea, funcționarea sunetelor cu acest cod a durat ceva timp și, din moment ce sunetele au fost preluate de pe alte site-uri web accesibile publicului, am încorporat toate sunetele pe măsură ce le-am folosit în câteva fișiere ZIP; una pentru turela obișnuită și una pentru turela defectă. Lucrul bun pentru dvs., dragă cititoare, este că puteți utiliza sunetele de pe cardurile SD cu codurile scrise și veți fi bine să mergeți!

Pasul 7: Meniu MTC - Navigare

Meniu MTC - Navigare
Meniu MTC - Navigare
Meniu MTC - Navigare
Meniu MTC - Navigare
Meniu MTC - Navigare
Meniu MTC - Navigare

Codul MTC pornește cu un ecran Splash personalizat, apoi verifică starea turelelor. Dacă nu sunt prezente turele, va rămâne acolo până se vor conecta turele!

Dacă este conectat cel puțin o turelă, se va afișa meniul principal și LED-ul „Gata” se va aprinde, cu excepția cazului în care turelele sunt întrerupte sau sunt ocupate cu „relația cu cineva”. Dacă sunt ocupați, va fi afișat un ecran „Turelele sunt ocupate”, iar LED-ul „Ocupat” se va aprinde.

Toate turelele conectate activ trebuie să fie în „Modul gata” înainte ca MTC să poată controla turelele.

Utilizați joystick-ul (sus și jos) pentru a parcurge opțiunile din meniu:

  • Aria
  • conversație
  • Manual

Selectați opțiunea dorită folosind butonul „X” sau apăsând în jos pe joystick.

Mod Aria - selectarea acestei opțiuni va afișa ecranul „Mod Aria” și va face ca turelele să execute scena Aria la sfârșitul jocului Portal 2. Odată finalizate, turelele se vor închide și vor aștepta o comandă sau cineva să le trezească.

Mod Chat - Selectarea acestei opțiuni va afișa ecranul „Chat Mode” și va începe secvența Chat. Odată finalizate, turelele se vor închide și vor aștepta o comandă sau cineva să le trezească.

Mod manual - Selectarea acestei opțiuni va afișa ecranul „Mod manual”, va aprinde LED-ul „Manual” și va permite funcționarea manuală a turelelor. Controlul joystick-ului pitch și pivot. Apăsând butonul „X” se va activa secvența de tragere. Apăsarea butonului „T” îi va face să „vorbească”, unde turelele rostesc o vorbă aleatorie din biblioteca lor.

Apăsând butonul „<” sau butonul Înapoi se vor anula aceste trei moduri, se vor închide turelele și se va întoarce la meniul principal.

Dacă doriți să vedeți starea conexiunii roiului dvs. de turele (în prezent limitat la 3), apăsați butonul „T” în meniul principal. Veți fi condus la ecranul „starea turelei”, unde puteți vedea starea conexiunii fiecărei turele.

Când vă aflați în ecranul „starea turelei”, veți vedea starea fiecărei turele.

  • Gata - gata pentru control
  • Ocupat - turela este ocupată cu „îngrijirea” cuiva
  • Indisponibil - MTC nu se poate conecta cu această turelă

Apăsați butonul „<” pentru a reveni la meniul principal.

Pasul 8: Personalizarea codului

Personalizarea codului
Personalizarea codului

Captura de ecran prezentată aici arată la ce mă uitam mult prea mult timp … 4 schițe odată! Cine a spus că depanarea nu este distractivă!

Codul oferă controlul și opțiunile prezentate mai sus, dar ce zici de personalizarea codului?

Desigur! Dar există o cantitate echitabilă aici, așa că iată câteva linii directoare sau sfaturi.

Sfat 1 - Modificarea secvenței „Chat”. Această modificare are loc în codul turelei.

Am încercat să vin cu un mod de a face codul să funcționeze pentru mine oriunde am putut. Creșterea editării secvenței de chat (Este un cuvânt?), Astfel încât să mă pot concentra asupra poveștii, a făcut mai multă muncă în față, dar facilitează personalizarea ulterioară.

Schimbarea secvenței de chat folosind structura de codificare furnizată se poate face într-un mod destul de simplu, cu condiția să urmați metoda utilizată în cod. Folosind fișierele sonore furnizate, din jocul Portal 2, ar trebui să schimbați tabelul (chatSayings ).

Selectați zicala pentru turela obișnuită sau turela defectă. Zicala este fișierul mp3 care este identificat prin „00XX -” urmat de text care descrie zicala. Numărul este partea importantă. Turela # 1 ar folosi această valoare XX în tabel. Turela nr. 2 ar prefixa valoarea XX cu „1”, iar turela nr. 3 ar prefixa valoarea XX cu „2”. De exemplu, dacă ați selecta expresia „0040 - îmi pare rău” și ați dori ca turela nr. 3 să o spună, ați insera „240” în tabel în secvența corectă. Dacă turela nr. 1 ar spune-o, ați insera „40” în tabel.

Faceți același lucru pentru următoarea expresie și așa mai departe. Ar putea fi câteva expresii între turnulețe sau destul de puține. (Nu sunt conștient de limitările acestei metode, altele decât memoria).

Nu ar trebui să modificați valorile celorlalte tabele, deoarece acestea sunt calendarele care corespund cu zicala din tabel. Singura altă linie de modificat este în jurul liniei 520.

if (i> = 43) {// sfârșitul secvenței

Valoarea lui i aici ar trebui setată la numărul de cuvinte din tabelul chatSayings.

Pentru a face cuvinte complet personalizate, (unde începe distracția reală!), Va trebui să configurați expresiile în fișiere numerotate și să cunoașteți durata de timp necesară pentru a reda fișierul. Salvați fișierul în folderul „mp3” din directorul rădăcină al cardului SD folosind metoda din patru cifre („0001”, „0002” etc.). Apoi, jurnalizați timpul în milisecunde necesar pentru ca fișierul respectiv să fie redat. Introduceți aceste valori în tabelul corespunzător.

Deci, pentru o expresie salvată ca „0037 - [expresia ta]”, care durează 5400 de milisecunde pentru a fi redată, ai pune „37” în tabelul chatSayings la locația corespunzătoare (și ai adăuga prefixul în funcție de ce turelă spune it), și 5400 în tabelul NormaTimings în aceeași locație (cum ar fi elementul 5 din fiecare tabel).

Acum, când valoarea „i” este mărită, codul va juca 0037 pentru 5400 de milisecunde.

Rețineți că am adăugat o variabilă „cronometru” care adaugă puțin timp suplimentar fiecărei cuvinte atunci când jucați. Acest lucru oferă o mică distanță între cuvinte, astfel încât acestea să nu se suprapună.

Frumusețea acestei metode este că tabelele completate sunt exact aceleași în fiecare turelă! Nu este nevoie să personalizați aceste tabele pentru fiecare turelă. Trebuie doar să sortați un singur tabel, iar codul descrie ce spune fiecare turelă pe baza aceluiași tabel.

Aceasta înseamnă că vă puteți concentra pe scrierea de scripturi în loc de codificare!

Dacă cineva are un mod mai bun de a face acest lucru, mi-ar plăcea să-l aud !!

Pasul 9: Rezumat

rezumat
rezumat

Așadar, acest lucru a durat mai mult decât credeam, dar sunt destul de gâdilat de rezultat. Unele dintre rutinele de chat încă mă fac să râd!

Mi-ar plăcea să aud alte metode de a face lucrurile pe care le-am făcut în cadrul codului meu. Sunt sigur că există secțiuni care ar putea fi rescrise și ar putea utiliza mai puțină memorie, permițând mai multe funcții sau opțiuni.

Mi-ar plăcea, de asemenea, să văd alte idei încorporate în MTC și controlul turelelor!

Sper că am oferit o platformă pentru ca alți designeri și codificatori să o poată folosi / fura / învăța. Am putut vedea acest lucru fiind folosit pentru a ajuta oamenii să învețe să codeze. Eliminați o secțiune din MTC și / sau turelă, cum ar fi „modul manual”, de exemplu, și determinați elevii să-și dezvolte propriul mod de a încorpora controlul manual!

Am învățat multe de la această comunitate și de la web-ul mai larg în general. Încă sunt uimit de cât de mulți oameni își petrec vremea să descopere lucrurile și să le împărtășească lumii. Cred că ar trebui să iau ceea ce am învățat, să-l aplic, apoi să-l împărtășesc și vouă!

Noroc și distrează-te construindu-ți propria armată de turnulețe!

Recomandat: