Cuprins:

Cronograful Nerf și barilul de foc: 7 pași
Cronograful Nerf și barilul de foc: 7 pași

Video: Cronograful Nerf și barilul de foc: 7 pași

Video: Cronograful Nerf și barilul de foc: 7 pași
Video: Armele de tip airsoft rănesc grav 2024, Iulie
Anonim
Image
Image
Cronograf Nerf și Butonul de Rată de Foc
Cronograf Nerf și Butonul de Rată de Foc

Introducere

În calitate de jucător, este întotdeauna foarte satisfăcător să vezi rezultatele numerice ale jocului. Mulți dintre noi am modificat pistoalele Nerf înainte și cui nu îi place să arunce bucăți de spumă peste casă la peste 100 fps?

După ce am modificat multe arme Nerf de-a lungul vieții mele, începând de când aveam ~ 10 ani cu tatăl meu până acum, când eu și colegii mei de cameră continuăm să aruncăm spumă în apartament, am vrut mereu să știu exact cât de repede zboară săgețile, și câte săgeți pe secundă trage de colegii mei de cameră Rapid-Strike. Există cronografe comerciale disponibile pentru Nerf și Airsoft, dar cele de înaltă precizie sunt scumpe și este distractiv să construim unul singur. Dacă doriți să cumpărați unul, Nerf a lansat un butoi aproape identic cu cel prezentat în acest proiect (cu un design industrial mai bun) și poate fi găsit aici:

Nerf Modulus Ghost-Ops Chrono Barrel

Versiunea Nerf este, de asemenea, alimentată cu baterie și afișează un contor pentru săgețile lansate. Instrucțiunile de aici includ, de asemenea, un ecran și un buton de resetare, totuși se bazează pe lungimea săgeții pentru calcularea vitezei și nu pare să utilizeze întreruperi. Accentul principal al acestui proiect va fi comunicarea în serie (ca un exemplu simplu, cum ar fi acesta nu a fost cel mai ușor de găsit online), și utilizarea întreruperilor pentru sincronizarea exactă. Acest lucru poate fi transformat cu ușurință într-un cronograf airsoft din aceleași motive, cu o carcasă mai strânsă și un sistem de montare mai bun pentru tunurile airsoft. Fără a utiliza întreruperi, codul poate fi mai lent și mai puțin eficient, este, de asemenea, mult mai dificil de timp în ceea ce privește microsecundele cu precizie, deoarece milisecundele nu vor produce valori precise pentru viteza de săgeată.

Nu mă voi concentra prea mult pe designul carcasei, deși fișierele STL sunt disponibile în GitHub, deoarece oricine poate cumpăra versiunea Nerf, care este cu siguranță mai bună pentru jocul real, dar o versiune viitoare a acestui lucru poate atenua rezultatele.

Principii de bază (rezultate ale învățării):

  • Are forma unui butoi Nerf standard
  • Utilizarea fototranzistoarelor ca porți de sincronizare a săgeții.
  • Arată utilizarea întreruperilor Adruino pentru sincronizare
  • Utilizarea procesării cu Arduino pentru comunicarea în serie

Domeniul de aplicare al proiectului:

Plănuiesc să trec mai ales pe specificul acestui proiect cu câteva scurte prezentări generale și recomand să citiți referințele pentru Arduino și Processsing pentru informații mai specifice. Acest lucru nu vă va învăța cum să lipiți, ci mai mult despre cum să integrați Arduino și Processing și să utilizați întreruperile. O mare parte din această învățare se va face prin citirea codului comentat, așa că vă rugăm să vă asigurați că ați citit tot codul înainte de a încărca orbește și de a încerca să îl puneți în funcțiune.

Beneficii față de proiecte similare:

  • Utilizarea întreruperilor pentru măsurarea precisă a vitezei mari
  • Secțiune extinsă de depanare pentru fototransistori
  • Calculul ratei de foc (ROF) generând runde pe secundă (RPS)
  • Interfața computerului cu ecran complet - nu este utilă în timpul luptei, dar minunată dacă doriți să le arătați altora rezultatele pe stream sau pe YouTube cu un recorder de ecran.
  • Potențial de adaptat pentru Airsoft sau Paintball prin modificarea doar a carcasei
  • Nu este nevoie de PCB-uri personalizate (ar fi bine într-o actualizare viitoare, dar oricine poate face acest lucru pentru un cost relativ scăzut
  • Cost total total sub 10 USD când piesele sunt despărțite și dacă este disponibilă o imprimantă 3D - La egalitate cu costul comercial, cu adăugare ROF

Pasul 1: Piese și instrumente necesare

Piese și instrumente necesare
Piese și instrumente necesare

Dacă aveți o imprimantă 3D, acesta va fi un proiect minunat pentru dvs., deoarece voi furniza fișierele pentru incintă. Nu ezitați să actualizați carcasa. Nu aveam LCD-uri la îndemână, dar a doua versiune va avea un LCD și va folosi un WEMOS D1 sau o placă similară activată WiFi / BT și o baterie. Acest lucru va permite înregistrarea datelor pe mobil și feedback în timp real - de exemplu, câte săgeți rămân în pistol. Este recomandată o anumită experiență de lipire, dacă nu vă simțiți confortabil, vă recomand să urmați un instructabil pentru lipire și, probabil, să cumpărați componente electronice suplimentare pentru orice eventualitate.

Instrumente necesare:

  1. Ciocan de lipit
  2. Suflantă de aer cald / pistol de căldură / brichetă (dacă se folosește termoretrație)
  3. Dispozitive de decupare a firelor
  4. Cablu USB Mini - B (sau orice cablu este necesar pentru microcontrolerul dvs.)
  5. Hot Glue Gun sau similar (am folosit un stilou de imprimare 3D pentru a atașa toate componentele la carcasa imprimată 3D)

Materiale necesare:

  1. 22AWG Sârmă cu miez solid ex: Set de sârmă cu miez solid 22AWG
  2. Arduino Nano (sau similar, am folosit o clonă) ex: 3 x Arduino Nano (Clonă)
  3. Set de rezistențe (2 x 220 ohm, 2 x 220k ohm) Este posibil să puteți folosi cu succes rezistențe de tip derulant cu valoare redusă, cum ar fi 47k, tocmai am descoperit că am nevoie de această valoare pentru ca aceasta să funcționeze. Ghidul de depanare prezintă cum să determinați dacă rezistența la derulare este valoarea corectă pentru fototranzistorul și setul de LED-uri specifice. Din acest motiv, vă recomand să obțineți un set: ex: Resistor Set
  4. 2 x LED IR ex: LED IR și set PhotoTransistor
  5. 2 x PhotoTransistor
  6. 1 x incintă tipărită 3D - într-un filament opac IR (Hatchbox Silver Worked și a fost singura culoare pe care am testat-o)
  7. Fișierele complete ale proiectului sunt disponibile aici pe GitHub, precum și în fișierul Zip atașat. STL-urile sunt disponibile și pe Thingiverse aici.

Pasul 2: Testarea panoului de calcul

Testarea plăcii de pană
Testarea plăcii de pană
Testarea plăcii de pană
Testarea plăcii de pană

Odată ce electronica a sosit, lipirea duce la fototranzistoare și IR IR ~ 20-30cm pentru depanare, recomand căldura care le micșorează. Nu am avut termocontractorul cu dimensiunea corectă și a trebuit să folosesc bandă electrică pentru acest prototip. Acest lucru vă va permite să le utilizați pentru testarea în incintă. Dacă ați imprimat carcasa și aveți LED-uri și tranzistoare foto în pozițiile corecte, puteți începe testarea.

Asigurați-vă că ați instalat Arduino și Processing.

Fișierul zip de la început conține tot codul, precum și fișierele STL pentru imprimarea carcasei.

Folosiți Arduino pentru a depana la început și utilizați doar procesarea pentru testarea finală (puteți vedea totul în monitorul serial de la Arduino).

Puteți încerca să trageți pur și simplu un dard Nerf prin cronograf cu Chronogrpah_Updated.ino instalat pe Arduino. Dacă acest lucru funcționează, sunteți gata. Dacă acest lucru nu funcționează, va trebui probabil să ajustați valorile rezistenței. Acest lucru este discutat în pasul următor.

Un pic despre modul în care funcționează codul:

  1. Interrupst oprește codul ori de câte ori o săgeată trece printr-o poartă și determină timpul în microsecunde
  2. Viteza se calculează cu aceasta și timpul este stocat
  3. Timpul dintre fotografii este calculat și convertit în runde pe secundă
  4. Timpul dintre porți este calculat și transformat în picioare pe secundă pe baza distanței porții.

    Utilizarea a două porți permite rezultate mai bune cu sincronizare identică (cât din senzor trebuie acoperit) și reduce histerezisul

  5. Viteza și viteza de tragere sunt trimise prin serial, separat de o virgulă, fie la monitorul serial din arduino, fie la schița de procesare, permițând o interfață UI frumoasă (concentrați-vă pe procesare atunci când orice altceva funcționează!).

Pasul 3: Testare și depanare

Dacă nu ați avut succes cu testul inițial, atunci trebuie să ne dăm seama ce a mers prost.

Deschideți exemplul Arduino AnalogReadSerial găsit în Fișier-> Exemple-> 0.1 Noțiuni de bază -> AnalogReadSerial

Vrem să ne asigurăm că fototransistorii funcționează așa cum ne așteptăm. Vrem ca aceștia să citească HIGH când săgeata nu le blochează și LOW când săgeata nu este. Acest lucru se datorează faptului că codul folosește întreruperi pentru a înregistra ora când săgeata trece senzorul, iar tipul de întrerupere utilizat este FALLING, ceea ce înseamnă că se va declanșa atunci când se trece de la HIGH la LOW. Pentru a ne asigura că pinul este ÎNALT, putem folosi pinii analogici pentru a determina valoarea acestor pini.

Încărcați exemplul Arduino AnalogReadSerial și săriți de la pinul digital D2 sau D3 la A0.

D2 ar trebui să fie primul senzor și D3 ar trebui să fie al doilea senzor. Alegeți 1 pentru a citi și începeți acolo. Urmați ghidul de mai jos pentru a determina soluția corectă pe baza citirilor:

Valoarea este 0 sau foarte mică:

Valoarea ar trebui să fie în jur de 1000 inițial, dacă citește o valoare foarte mică sau zero, atunci asigurați-vă că LED-urile dvs. sunt conectate corect și nu sunt arse, precum și aliniate bine. Mi-am ars LED-urile la testare când foloseam un rezistor de 100 ohmi în loc de 220 ohmi. Cel mai bine este să consultați fișa tehnică pentru LED-uri pentru a determina valoarea corectă a rezistorului, dar majoritatea LED-urilor vor funcționa probabil cu rezistorul de 220 ohmi.

LED-urile funcționează, iar valoarea este încă 0 sau foarte mică:

Problema este probabil că rezistența la tragere are o rezistență prea mică. Dacă aveți o problemă cu rezistorul de 220k, s-ar putea să-l măriți mai mult decât acesta, dar puteți obține zgomot. Ar trebui să vă asigurați că tranzistorul foto nu este ars.

Valoarea este un interval mediu:

Acest lucru va cauza o mulțime de probleme, în principal declanșatoare false, sau care nu va provoca niciodată un nivel ridicat. Trebuie să ne asigurăm că se primește un HIGH, pentru a face acest lucru, avem nevoie de o valoare de ~ 600, dar permitem ca 900+ să fie în siguranță. A fi prea aproape de acest prag poate provoca declanșatoare false, așa că dorim să evităm orice fals pozitiv. Pentru a regla această valoare, dorim să creștem rezistența derulantă (220K). Am făcut deja acest lucru de câteva ori în proiectarea mea și probabil că nu va trebui să faceți acest lucru, deoarece aceasta este o valoare foarte mare pentru un rezistor pull-down.

Valoarea este foarte zgomotoasă (sărind mult fără stimuli externi):

Asigurați-vă că cablajul este corect cu rezistența de tragere. Dacă acest lucru este corect, poate fi necesar să măriți valoarea rezistorului.

Valoarea este blocată la 1000+, chiar și atunci când blocați senzorul:

Asigurați-vă că rezistența dvs. de tragere este conectată corect, acest lucru poate apărea dacă nu există nici un pull-down. Dacă aceasta este încă o problemă, încercați să reduceți valoarea rezistenței pull-down.

Valoarea este mare și merge la zero atunci când blocați lumina:

Acest lucru ar trebui să fie suficient pentru ca senzorul să funcționeze, cu toate acestea s-ar putea să nu fim un răspuns suficient de rapid pe măsură ce săgeata traversează calea. Există o anumită capacitate în circuit și, cu rezistența de 220K, poate dura ceva timp ca tensiunea să scadă sub pragul necesar. Dacă acesta este cazul, reduceți acest rezistor la 100K și vedeți cum funcționează testele.

ASIGURAȚI-VĂ CĂTRE MODIFICĂRILE REZISTENTELOR SUNT CONSTANȚE ÎNTRE AMBOSI SENZORI

Asigurarea unor circuite identice pentru ambii senzori menține aceeași latență între rezistențe, ceea ce va permite cea mai bună precizie în măsurători.

Dacă aveți probleme suplimentare, lăsați un comentariu mai jos și voi face tot posibilul să vă ajut.

Pasul 4: Asamblare hardware

Asamblare hardware
Asamblare hardware
Asamblare hardware
Asamblare hardware
Asamblare hardware
Asamblare hardware

Lipiți componentele pe micul PCB așa cum se vede aici:

Conductoarele pentru LED-uri și PhotoTransistors ar trebui să fie tăiate la lungime, aproximativ _.

Lipiți Arduino pe placă și conectați rezistențele de la sol la pinii accesibili. În plus, asigurați-vă că cele 4 fire pozitive pot fi atașate ușor împreună. Dacă aveți probleme cu acest lucru, puteți dezbrăca o bucată de fir și o puteți lipi pe toate cablurile la sfârșit.

Am conectat senzorii la partea opusă a carcasei, totuși nu ezitați să conectați cablul, atâta timp cât păstrați părțile consistente. Am tăiat firele la lungime și am lipit firele la fiecare dintre diode. Am actualizat ușor direcționarea firelor pentru a oferi mai mult spațiu și mai puține îngrijorări pentru faptul că aveți niște fire sub PCB și altele peste acesta pentru o utilizare ușoară. STL-urile se află în fișierul zip complet al proiectului la începutul proiectului.

Pasul 5: Adunarea finală

Asamblarea finala
Asamblarea finala
Asamblarea finala
Asamblarea finala
Asamblarea finala
Asamblarea finala

Dacă orificiile PCB nu se potrivesc cu găurile de pe corpul cronografului principal, probabil că puteți fixa electronica din carcasă cu o bandă sau un adeziv fierbinte, am constatat că nu trebuie să fie securizat după fir și USB au fost la locul lor, cu toate acestea rezultatele dvs. pot varia. Acesta este conceput pentru a permite apăsarea filamentului de 1,75 mm în orificiile șuruburilor pentru montarea la căldură, totuși PCB poate fi de asemenea înșurubat sau lipit. Cea mai importantă parte aici este asigurarea accesului portului USB.

Acoperiți componentele electronice cu capacul pentru electronice, fișierele actualizate ar trebui să se potrivească mai bine decât ale mele și sperăm să le apăsați pe loc, totuși am folosit un stilou de imprimare 3D pentru sudarea capacelor la locul lor. Acum sunteți gata să trageți niște săgeți!

O actualizare viitoare poate utiliza rutare internă pentru fire, dar capacele în acest caz cedează ușor esteticului Nerf.

Pasul 6: Cronograf în acțiune

Image
Image
Cronograf în acțiune
Cronograf în acțiune

Deschiderea fișierului de procesare: Chronograph_Intitial_Release va permite o interfață de utilizator foarte frumoasă pentru cronograf care afișează atât FPS, cât și RPS (Runde pe secundă). Dacă aveți probleme la conectare, asigurați-vă că ați închis monitorul serial Arduino, poate fi necesar să schimbați portul serial din cod, dar acest lucru este comentat și ar trebui să fie simplu. Pentru a reseta valorile maxime, pur și simplu apăsați bara de spațiu de pe computer.

Un pic despre modul în care funcționează codul (fotografia UI poate fi văzută mai sus):

  1. Primește intrări de la Arduino
  2. Compară acest lucru cu datele din trecut pentru a găsi valoarea maximă
  3. Afișează valorile curente și maxime pe ecran complet pentru feedback vizual ușor
  4. Resetează valoarea maximă la apăsarea spațiului

Pasul 7: Planuri de viitor

O actualizare viitoare pentru aceasta va include următoarele îmbunătățiri. Dacă aveți caracteristici suplimentare pe care le-ați dori, anunțați-mă și voi încerca să le implementez.

  1. Includeți ecran LCD
  2. Includeți bateriile
  3. Puncte de atașare compatibile Nerf
  4. Carcasă actualizată
  5. Atracții de fier

Recomandat: