Inhoudsopgave:

Raspberry Pi Cam Tank V1.0 - Ajarnpa
Raspberry Pi Cam Tank V1.0 - Ajarnpa

Video: Raspberry Pi Cam Tank V1.0 - Ajarnpa

Video: Raspberry Pi Cam Tank V1.0 - Ajarnpa
Video: Raspberry Pi Cam Tank 2024, November
Anonim
Image
Image
Raspberry Pi Cam-tank V1.0
Raspberry Pi Cam-tank V1.0

Ik hou van tanks sinds ik een klein kind was. Het bouwen van mijn eigen tankspeelgoed is altijd een van mijn dromen. Maar door het gebrek aan kennis en vaardigheden. Droom is maar een droom.

Na jaren studie in engineering en industrieel ontwerpen. Ik heb vaardigheden en kennis opgedaan. En dankzij de goedkopere hobby 3D-printers. Ik kan eindelijk mijn stap zetten.

Welke functies wil ik dat deze tank heeft?

  • Afstandbestuurbaar
  • Geveerde stationaire wielen (zoals de echte tank!)
  • Heeft een draaibare toren en een kantelbaar BB-kanon kan 6 mm kogels schieten
  • Kan video naar de controller streamen, zodat je hem ver weg kunt bedienen

In het begin was ik van plan arduino als controller te gebruiken, maar na wat onderzoek ontdekte ik dat er geen praktische manier is om zelf video te streamen. Raspberry Pi lijkt echter een goede kandidaat voor het streamen van video. En je kunt het via je vrouw bedienen vanaf je telefoon!

Laten we beginnen.

Stap 1: benodigde onderdelen

Voor het besturen van

Raspberry Pi-versie B

Aangedreven USB-hub (Belkin F4u040)

USB-webcam (Logitech C270)

Wifi-dongle (Edimax)

Vrouw-naar-man startkabel

voor het rijden

Twee hoge koppel blijft servo of motor (voor twee aandrijfwielen)

Een 1/8 staaldraad voor wielassen (gekocht bij thuisdepot en niet duur)

Tien glijlagers (besteld bij Mcmaster)

Sommige veren voor ophanging (gekocht bij Harbor Freight een verenassortiment, goedkoop)

voor torentje

Een automatisch BB-pistool speelgoed

Eén mini-DC-motor met hoog koppel

Een microservo om op en neer te kantelen

Sommige 1/4 staal reed als kanon-as

Andere dingen

Ik heb de meeste onderdelen van deze tank in 3D geprint, als je gemakkelijk toegang hebt tot een lasersnijder, zou dat ook werken.

Ik heb PLA-filament gebruikt om te printen omdat het gemakkelijker is om mee om te gaan (geen wikkelproblemen op ABS). Maar, echt moeilijk om later te schuren, snijden, boren.

Je denkt misschien dat 3D-printen goed is voor op maat gemaakte onderdelen en je kunt heel gecompliceerde onderdelen als één stuk printen. Dat is waar. Ik denk echter dat die manier niet praktisch en economisch is voor een hobbyist. Redenen zijn:

Je hobbyprinter zal niet zo precies zijn.

Je maakt fouten in metingen en berekeningen (tolerantie, uitlijning etc).

Hoe dan ook, de kans is vrij groot dat uw afdrukken niet werken of passen op uw eerste opname. Voor een klein deel is het prima, je kunt het model gewoon veranderen en dan opnieuw afdrukken. Maar voor een groter en ingewikkelder onderdeel is het frustrerend om te weten dat er iets mis is na uren printen. Het is een verspilling van tijd en materiaal. Dus hier is mijn aanpak:

Want alles is symmetrisch, print maar de helft, probeer het uit, als alles goed werkt, print dan het hele ding.

Het onderdeel modelleren terwijl u aan 3D-printen denkt. Kan er een vlak oppervlak zijn om het printerbed te bevestigen? Kan het in kleinere stukken worden opgesplitst om veel ondersteunende structuur te vermijden?

Omdat onderdelen veel functies hebben (interactie met veel andere onderdelen), splitst u het model in modules. Dus als één functie mislukt, hoeft u niet het hele deel opnieuw af te drukken. Pas de module aan en druk die opnieuw af. Ik gebruik schroeven en moeren om ze te verbinden.

Wees een goede vriend met handgereedschap, handzaag, X-acto, boormachine, lijmpistool. Als u een afdrukfout kunt herstellen, herstel deze dan.

Dit verklaart waarom mijn tank zoveel onderdelen heeft. Ik ben die onderdelen nog aan het tweaken en zodra ik een goede combinatie heb gevonden, kan ik ze samen als één stuk afdrukken. Dan zou dat mijn Cam Tank v2.0 zijn.

Stap 2: Het rijsysteem

Image
Image
Het rijsysteem
Het rijsysteem
Het rijsysteem
Het rijsysteem

Oponthoud

In eerste instantie maakte ik een prototype zonder enige ophanging, alleen assen over de onderste romp met lagers en wielen. Maar denkend aan het comfort van de machinist (ik ga ermee rijden terwijl ik de streamingvideo bekijk!), Heb ik besloten om vering toe te voegen om het cooler te maken.

Alles wat ik heb zijn enkele schroefveren, geen hydraulische, geen bladveer. Ik heb eerst met PLA geëxperimenteerd met een torsiestaafmechanisme. (Torsiestaafvering is gebruikelijk bij sommige tanks). Blijkt dat na een paar keer draaien de geprinte PLA-balk zacht zou worden en uiteindelijk zou breken. ABS is misschien beter voor dit doel, maar ik heb het nooit geprobeerd. Dus, na verder onderzoek, vond ik het ontwerp van de Christie-ophanging, hier is een korte video die laat zien hoe het werkt.

De christie-ophanging heeft echter zoveel kleine onderdelen, en ik heb dan geen vertrouwen in mijn printer. Dus ik heb zo'n schorsing gemaakt.

(afbeelding)

Deze configuratie neemt te veel binnenruimte in beslag. Dus ik draai de binnenste arm 90 graden. Merk op dat het eerste en laatste wiel korter zijn geworden

Achterspanner

Ik dacht dat als de tank over een aantal obstakels rijdt, de stationaire wielen omhoog zouden kunnen komen en de baan spanning zou verliezen. Dus heb ik een spanmechanisme op het achterwiel toegevoegd. In feite zijn het twee veren die de echte as de hele tijd duwen en er enige kracht op uitoefenen om de rupsbanden strak te trekken.

Aandrijfwielen en rupsbanden

Deze rupsbanden en aandrijfwielen heb ik ontworpen in solidworks. Ik weet niet veel van werktuigbouwkunde, dus kan de versnellingsberekening niet doen. Dus ik heb onderdelen in solidworks gesimuleerd om te zien of het werkt voordat ik op de knop Afdrukken druk. Elke baan is verbonden met wat reserve 3 mm filament. Met wat schuren lukt het best goed. Maar het baanontwerp heeft een fout, het oppervlak dat de grond raakt is te glad dat het moeilijk vast te pakken is. Als ik het ondersteboven print, zou ik wat loopvlak kunnen toevoegen, maar het kost veel ondersteunend materiaal vanwege de tand. Toekomstige oplossingen: 1: print de tand afzonderlijk en lijm ze vervolgens aan elkaar. 2. Breng wat spuitverf met rubberen coating aan.

Daarna heb ik de behuizing voor servo's geprint en ervoor gezorgd dat het aandrijfwiel met schroeven aan de servo-arm kan worden bevestigd.

Stap 3: Wapensysteem

Image
Image
Wapensysteem
Wapensysteem
Wapensysteem
Wapensysteem

Dit deel is voor mij het spannendst. Je kunt speelgoed voor een cameratank kopen. Maar ik heb geen speelgoed gevonden dat een camera en een wapen combineert.

Ik kocht dit automatische airsoft-pistoolspeelgoed voor $ 9,99 in de uitverkoop. (Het is nu ongeveer 20 dollar en misschien probeer ik later iets goedkopers) En breek het af om het mechanisme te begrijpen. Ik kan het lichaam volledig doorsnijden en aan mijn tank lijmen. Maar ik hou niet van dat lelijke halve lichaam. Dus ik nam wat metingen en remodelleerde het mechanische gedeelte. Van deze stukken heb ik een lesje 3D-printen geleerd: je zult altijd fouten maken. Er zijn 5 prints nodig om elk onderdeel te laten passen, en veel snijden, schuren en warm lijmen om het perfect te laten werken.

Nadat elk onderdeel van het speelgoedpistool correct in mijn gerepliceerde lichaam was bewogen, drukte ik vier andere onderdelen af om het lichaam vast te klemmen. En de kanteluitrusting, BB-kogeltrechter en camera-ondersteuning toegevoegd. Deze onderdelen worden allemaal op het pistoollichaam geschroefd. Uiteindelijk kunnen ze worden gecombineerd tot ten minste twee delen. Maar ik denk dat ik er nog niet klaar voor ben.

Op de torenbasis heb ik een micro-servo toegevoegd, om te kantelen, en een micro-DC-motor voor rotatie.

Toen begon ik het pistool te testen, sluit 4 AA-batterijen aan en het schiet goed. Ik was erg blij dat het goed werkt. Maar de volgende dag vond ik een probleem.

Hier is de video van mijn wapentest. het torentje was aangesloten op een 3v-adapter.

Stap 4: Stel de Pi. in

Dit is het belangrijkste onderdeel, het hart van onze tank - Raspberry Pi!

Als je Raspberry Pi nog niet hebt gespeeld. Ik raad aan om met dit boek te beginnen: Aan de slag met raspberry pi van MAKE. Je kunt de basis en een uitgebreid begrip van Pi krijgen.

Download het nieuwste raspbian-besturingssysteem.

De volgende tool die ik veel aanbeveel, is Remote Desktop. Hier is de tutorial van Adam Riley. Nadat u het hebt ingesteld, kunt u het Pi-bureaublad op uw pc bekijken (niet getest op Mac). Dus om de Pi "naakt" te laten werken, heb je geen beeldscherm, muis en toetsenbord nodig. Sommige van mijn vrienden gebruiken de ssh-opdrachtregel. Maar ik geef de voorkeur aan de desktop.

Op basis van eerder onderzoek wist ik dat Raspberry Pi video kan streamen. Dus begon ik te rommelen met verschillende apps op de Pi. Veel van de apps hebben een lange vertraging (seconden) of hebben een lage framesnelheid. Na een paar weken ronddwalen op online video's en tutorials, heb ik gelukkig de oplossing gevonden. Een video op youtube over webiopi gaf me veel hoop. Meer onderzoek deed me geloven dat dit de juiste weg was.

Webiopi is een raamwerk dat de verbinding tussen Pi en een ander internetapparaat heel eenvoudig maakte. Het bestuurt alle Pi GPIOS en start vervolgens een server met aangepaste html. U kunt toegang krijgen tot deze html vanaf andere apparaten (computer, smartphone, enz.), en op een knop in de browser klikken op wifi-afstand, een GPIO wordt geactiveerd.

De video maakte me hoopvol, is gebaseerd op een webiopi-tutorial - cambot-project. Het staat op het MagPi-magzine #9[html][pdf] en #10[html][pdf]. Bedankt Eric PTAK!

Door de tutorial stap voor stap te volgen, kun je een tweewielige cambot maken! Zo werkt het: verbind twee motoren met een H-brug en bedien vervolgens de H-brug met 6 GPIO-pinnen om de richting en snelheid te regelen. Webiopi wordt gebruikt om de GPIO's te besturen. En MJPG-streamer wordt gebruikt voor het streamen van video.

Als je nieuw bent bij de Pi of Linux zoals ik maanden geleden was, heb je misschien een klein probleem na het volgen van alle stappen. U kunt de python-code voor webiopi en de streamingvideo afzonderlijk uitvoeren, maar weet u niet hoe u ze samen moet uitvoeren? Het kostte me een tijdje om te weten dat je een & na een opdracht kunt toevoegen (& is echt moeilijk te zoeken op Google, BTW), dat betekent dat je deze opdracht op de achtergrond wilt uitvoeren. Dus ik zal dit elke keer doen:

sudo python cambot.py&

sudo./stream.sh

Ik geloof dat je een bash-bestand met bovenstaande opdracht in één bestand maakt en één keer uitvoert. Ik heb het nog niet geprobeerd.

Dus ik probeerde deze basisopstelling met twee gelijkstroommotoren, hij loopt, maar de motor die ik heb is niet krachtig genoeg. Leidt me naar een andere optie: continue servo's.

Nieuwe vraag komt dan: ondersteunt webiopi PWM-gestuurde servo's?

Het antwoord is ja, maar niet op zichzelf: RPIO is nodig om software PWM te genereren

RPIO-installatie (ik heb geen geluk met de eerste apt-get install-methode. De github-methode werkt prima voor mij)

Voorbeeldcode en andere discussies

Nu is je bot geüpgraded met twee servo's! Bedenk wat je kunt doen met de extra armen!

Ik heb de bovenstaande voorbeeldcode aangepast aan mijn tank. Je hebt hiervoor geen informaticadiploma nodig. Je bent goed zolang je de voorbeeldcode begrijpt en weet wat je moet kopiëren en waar je moet veranderen.

Stap 5: Elektronische verbinding

Elektronische verbinding
Elektronische verbinding
Elektronische verbinding
Elektronische verbinding
Elektronische verbinding
Elektronische verbinding

De powerbank die ik heb gekocht, Anker Astro Pro, heeft twee usb-poorten en een 9v-poort (de belangrijkste reden waarom ik deze kocht). Ik heb geprobeerd de Pi, wifi-dongle en webcam van stroom te voorzien met één USB-poort. Start niet op. Dus gebruikte ik de andere USB-poort voor een aangedreven USB-hub.

Toen dacht ik dat ik misschien de servo's kon voeden met de USB-hubpoort. Het werkt, maar de wifi-verbinding is heel erg onstabiel.

Om dit probleem op te lossen, heb ik 4 AA-batterijen meegenomen om de 6V-servobehoeften van stroom te voorzien. Ik heb de USB-kabel gestript om de aardingsdraad (zwart) bloot te leggen en verbinding te maken met de aarde van de AA-batterij.

3 servo's, rood naar 6V, zwart naar aarde en signaalpin aangesloten op GPIO-pinnen.

Zoals geschaafd, moeten de roterende motor van de toren en de kanonmotor ook worden aangedreven door 6V met een H-brugbesturing. Maar als ik alles heb aangesloten, schiet het pistool niet! Het lijkt erop dat de motor probeert te draaien, maar de tandwielen niet kan aandrijven. De uitgangsspanning is goed, maar het lijkt erop dat er niet genoeg stroom is om te rijden. Ik heb ook MOSFET geprobeerd zonder geluk.

Ik moet dit deel om tijdsredenen opgeven. En daarom moet ik bij de pistooltest de pistoolmotor handmatig op de adapter aansluiten. Nog veel te leren op het gebied van elektronica. In het ergste geval zou ik het pistool altijd kunnen besturen met een servo-trekker.

Stap 6: Interface

Image
Image
Koppel
Koppel
Koppel
Koppel

Ik heb ook de interfaces van de cambot- en rasprover-voorbeeldcodes gewijzigd. Omdat ik van plan was om de smartphone als controller te gebruiken, heb ik de lay-out voor mijn telefoon geoptimaliseerd (galaxy note3).

De meeste lay-outs en stijlen kunnen worden bewerkt in de index.html. De standaardknopstijl (donkergrijs met zwarte rand) is echter gedefinieerd in de webiopi.css op /usr/share/webiopi/htdocs. Ik heb terminal gebruikt om sudo nano uit te voeren om het te wijzigen.

De videostream bevindt zich in het midden van het scherm, de stuurbesturing aan de linkerkant en de wapenbesturing aan de rechterkant. Ik heb de rijbesturing ontworpen als twee sets omhoog (vooruit), stop, omlaag (achteruit) die wat fijnere controle willen, maar in de video kun je zien dat het soms onhandig is.

Stap 7: Toekomstplan

Zoals je kunt zien, is dit project nog niet klaar. Dankzij de raspberry pi-wedstrijd heb ik de afgelopen week veel opgevoerd, ik probeerde het gewoon voor de deadline af te ronden. Het draait redelijk goed totdat ik ontdekte dat het pistool niet schiet…

Er moet nog veel verbeterd worden, maar ik hoop dat je iets kunt leren van mijn ervaring.

Korte termijn plan:

Laat het pistool werken!!!

Grotere container voor meer BB

De tank moet de wereld verkennen - ga buiten wifi thuis!

Stel een ad-hocknooppunt in op Pi, zodat de telefoon er overal verbinding mee kan maken

Voer de tankopdracht uit bij het opstarten

Voeg een afsluitknop toe om Pi veilig uit te schakelen.

Langetermijnsplan:

Beter rijsysteem voor stabiliteit en grip

Ontwerp nu mijn eigen printplaat in plaats van een breadboard

Eerste persoon video-opname

Nog een pistool? Laten we er een oorlogsschip van maken!

Sensoren toevoegen voor zelf patrouilleren?

Computervisie voor automatische targeting!

Bedien de tank ver weg: ik zie alles thuis!

Stap 8: Bedankt voor het lezen

Bedankt voor het lezen van mijn slechte Engels (het is niet mijn eerste taal). Ik hoop dat je het leuk hebt gehad of hier iets hebt geleerd. Dit zal een doorlopend project zijn, dus als je expertise hebt op welk gebied dan ook, stel ik je advies op prijs.

Als je vragen hebt, laat dan een reactie achter, ik zal mijn best doen om deze te beantwoorden.

Laat me in de nabije toekomst een update maken--The Cam Tank2.0--.

Eindelijk, hier is een video die het strijdscenario laat zien. Het is best grappig.

Geniet ervan en tot de volgende keer!

Aanbevolen: