Bouw Je Eigen Arduino-aangedreven Mars Perseverance Rover Replica – Stap-voor-stap Handleiding
In deze tutorial laat ik zien hoe ik een replica bouwde van de Mars Perseverance Rover. Geïnspireerd door de echte rover die momenteel Mars verkent, ontwierp ik deze rover zo dat iedereen die van deze technologie houdt – studenten, makers, mechatronica- of robotica-liefhebbers – de instructies kan volgen en een eigen Mars-rover kan bouwen.
Bekijk de video of lees de geschreven handleiding hieronder.
Overzicht
De belangrijkste kenmerken van deze rover:
- Rocker-bogie vering: laat de rover soepel over oneffen terrain rijden en obstakels beklimmen (tot 2× wiel-diameter) terwijl alle zes wielen constant contact met de grond houden.
- Elk wiel heeft een eigen DC-motor voor vooruit/achteruit rijden.

De vier hoekwielen hebben individuele stuur-servomotoren. Voor efficiënt sturen en bandenslijpen bij bochten te voorkomen, implementeer ik Ackermann-stuurgeometrie. Hiermee berekenen we snelheid en hoek van elk wiel afhankelijk van de bochtradius.

Bij een bocht hebben de binnenste stuurwielen een grotere hoek dan de buitenste. Tegelijkertijd draaien de binnenste wielen langzamer dan de buitenste.

Besturing: een goedkope commerciële RC-zender stuurt commando's naar de rover. Aan boord een passende RC-ontvanger die de signalen doorgeeft aan een Arduino MEGA. Voor nette bedrading maakte ik een custom PCB die direct op de Arduino MEGA past.

De rover heeft ook een FPV-camera in de camera-eenheid, bestuurd door een stappenmotor en een servomotor. Real-time video ontvang ik op een smartphone.

Let op: veel onderdelen zijn niet functioneel, alleen voor de uitstraling van de echte rover. De robotarm ontbreekt, maar ik plan die in toekomstige video's toe te voegen met meer functies.

Nu loop ik je door het bouwproces: ontwerp, elektronica aansluiten, Arduino programmeren.
DIY Mars Rover 3D-model
Ik ontwierp deze rover met 3DEXPERIENCE SolidWorks (sponsor van deze video).

3DEXPERIENCE SolidWorks is een cloud-versie van SolidWorks via het 3DEXPERIENCE-platform. Alles werkt via de cloud: jij of teamleden hebben altijd en overal toegang tot data/modellen. Het platform bevat ook productiviteits- en datamanagement-apps.

Voorbeelden: Project Planning app voor takenorganisatie, 3D Markup app voor modellen bekijken/annoteren op elk apparaat. Er is ook SOLIDWORKS xDesign, een cloud-based 3D-modeler in je browser, standalone of gecombineerd met SolidWorks.

Vanaf halve 2022 komt een maker-versie van 3DEXPERIENCE SolidWorks voor $99/jaar. Dank aan SolidWorks voor het sponsoren van educatieve content.
Meer info: Probeer 3DEXPERIENCE gratis | Meer over 3DEXPERIENCE SOLIDWORKS | 3DEXPERIENCE SOLIDWORKS for Makers
Terug naar het model. Mijn doel: zo dicht mogelijk bij de echte Mars Perseverance Rover. Op de NASA-website is een 3D-model beschikbaar; ik downloadde het en opende in Blender.

Ik maakte drie foto's (voor-, boven-, zijzicht) en importeerde ze in SolidWorks. Wiel-diameter: 130 mm, dus foto's daarop geschaald.

Hieruit haalde ik alle sleutelafmetingen: breedte, lengte, hoogte, wielafstanden, rocker-bogie afmetingen, etc.
Op basis van deze afmetingen en de geplande DC-motoren/servo's ontwierp ik de onderdelen voor 3D-printen en montage, met zo veel mogelijke uitstraling als het origineel.

Voor rocker-bogie: 20 mm ronde aluminiumprofielen; voor basisframe: 20 mm T-slot aluminiumprofielen.
Je kunt het 3D-model vinden, downloaden en bekijken op Thangs.

STL-bestanden voor 3D-printen:
3D-printen van de Mars Rover Replica Onderdelen
Voor 3D-printen gebruikte ik mijn oude Creality CR-10 en de nieuwe CR-10 V3. Als je wielen met flexibel filament wilt printen, heb je zeker een printer met directe extruder nodig (zoals de CR-10 V3).

Beide printers leveren grote kwaliteit tegen betaalbare prijs. Links: Creality CR-10 | Creality CR-10 V3
Zie ook: Beste Budget Oscilloscopen voor Beginners en Makers – 2021 Update
Belangrijk bij 3D-printen: gebruik Horizontal Expansion in je slicer. Ik gebruik –0,1 mm. Dit compenseert filamentextensie tijdens printen.

Zonder deze instelling: een gat van 20 mm in het model wordt ~19,8 mm in de print → past niet.
Hier zijn alle 3D-geprinte onderdelen.

Het is best veel printwerk, maar de enige manier om de unieke uitstraling te krijgen. Je kunt de printtijd halveren door alleen de functionele onderdelen te printen.
Onderdelenlijst voor de DIY Mars Rover
Componenten voor mechanische assemblage. Elektronica-lijst staat in het schema-deel.
- T-slot aluminiumprofielen 20×20 mm ……….. Amazon / Banggood / AliExpress
- T-slot profiel hoekbeugels ……………..… Amazon / Banggood / AliExpress
- Aluminium Ronde Buis 20 mm ………………. Amazon / AliExpress
- Rod End Gewricht 8 mm ………………………………….. Amazon / Banggood / AliExpress
- 8 × Lager 608RS – 8×22×7 mm ……..…… Amazon / Banggood / AliExpress
- 8 × Lager 626RS – 6×19×6 mm ………….… Amazon / Banggood / AliExpress
- 5 × Lager 625RS – 5×16×5 mm …………… Amazon / Banggood / AliExpress
- M3 Bouten diverse lengtes ………………………… Amazon / Banggood / AliExpress
- 4 × Servo-armen …………………………………………. Amazon / Banggood / AliExpress
Ook diverse M4, M5, M6 bouten nodig. Volledige lijst bouten/moeren hieronder. Ook bij lokale bouwmarkt te verkrijgen.
De Rover Monteren
We beginnen met de aluminiumprofielen voorbereiden. Ik zaagde ze op maat met een metalsag.

We nodig: 10 T-slot profielen voor de basis en 8 ronde profielen voor rocker-bogie met volgende afmetingen.

Voor het T-slot frame: hoekbeugels, bouten, moeren. Boven- en onderframe klaar → basis completeren met rocker-gewricht 3D-geprinte delen aan de zijkanten, en 3D-geprinte beugels voor/achter. Bevestigen met M3-bouten en T-slot moeren.

Rocker-gewichten: M5 bouten/moeren. Afstand van voorprofiel tot rocker-gewricht: 134 mm.
Rocker-bogie Vering Monteren
Hoofdlagers voor rocker-bogie plaatsen. Dan het rocker-gewrichtas-deel dat met een M8-bout aan de basis bevestigd wordt.

De as heeft een gat voor een M8-moer om hem aan de basis te bevestigen. Gat is 7,5 mm voor strakke verbinding tussen bout en as. Zo versterken we de 3D-geprinte as: de bout draagt deel van het rover-gewicht. Dit is het meest belaste deel van de hele assemblage. Printoriëntatie is cruciaal voor sterkte.

Ik printte de as eerst de makkelijke manier (geen support), maar de print faalde.

De hoofdkracht werkt op de lagen (niet sterk), maar als we de print sideways printen (kracht op wandcontouren), is het veel sterker en faalt niet.

Nu rocker-bogie assemblage verder bouwen met wielgewichten en motorbeugels, later op de rocker-assen monteren.
Gaten in onderdelen voor 20 mm ronde profielen zijn strak gedimensioneerd; soms rasperen of schuurpapier nodig.

Nu gaten boren in ronde profielen op exacte posities. Eerst een rechte lijn markeren op het profiel.

Profiel in 3D-geprint deel steken met markering door het gat. Dan gatposities markeren aan beide zijden van dat deel.

Deze procedure herhalen aan de overzijde van het profiel.
Gaten geboord met 2,5 mm boor, dan met M3-bout een draadgat in het profiel getapt voor bevestiging.

Aluminium is zachter dan de bout → makkelijk tappen met de bout zelf. Deze methode zorgt dat alle delen correct ten opzichte van elkaar staan.

Bogie-gewricht: twee lagers en een M8-bout.

Rocker-bogie arrangement compleet → stuurwielgewichten monteren. Stuurwielgewricht bestaat uit twee delen bebolt.

Voor het gewricht tussen servo-beugel en DC-motor-beugel: twee lagers en een M6-bout.
Bovenaan de bout: servo-arm bevestigen met 3D-geprinte koppeling en M3-bouten.

De koppeling heeft een zeshoekgat waardoor de servobeweging naar de bout overgedragen wordt. Onderaan het andere deel op de bout schroeven.

Bevestigen met M6-moer. Stuurwielgewricht klaar, maar later bleek: nog een M6-moer onderaan nodig, vastgedraaid tegen de andere moer.

Waarom? De servobeweging wordt over de moer zelf overgedragen op de DC-motor-beugel. Zonder tweede moer draait het gewricht los.
Deze procedure herhalen voor het andere hoekgewricht. Alles correct aangesloten als de assemblage op een vlakke oppervlakte staat en alle drie motorbeugels plat liggen (parallel).

Deze procedure herhalen voor de andere zijde. Let op: sommige delen lijken identiek maar zijn gespiegeld.
Nu sub-assemblages op de rocker-gewrichtassen van het chassis monteren. Eerst: gegolfde messing inserts in de as.

Met soldeerbout eenvoudig inpersen → betrouwbare draadgaten. Vier M4-bouten voor bevestiging.

Nu valt/roteert het chassis vrij. Er ontbreekt nog iets voor werkende rocker-bogie: de differentieel.

Met differentieel zijn de twee rockers met elkaar en het chassis verbonden. Bij rotatie van één kant, roteert de ander in tegengestelde richting → gelijke wielcontact. Het chassis heeft een gemiddelde pitch-hoek van beide rockers.

Onderdelen voor differentieel:

Differentieelstaaf is lang → gemaakt uit drie stukken bebolt (past op kleinere 3D-printers). Staaf kantelt in midden chassis met gewricht van twee lagers en M8-bout.

Voor verbinding differentieel met rocker: rod end balgewricht (M8) en M8-gedraaide stang (50 mm). Stang in 3D-geprint deel met M8-moer aan één kant, andere kant in rod end.

Afstand tussen 3D-geprint differentieel-link en rod end: ~20 mm voor horizontaal chassis. Differentieel-link met rocker-hefboom: twee lagers en M5-bout.

Herhalen voor andere zijde. Rocker-bogie klaar: één kant omhoog → andere omlaag en vice versa.

Alle wielen blijven constant contact met de grond. Chassis beweegt half de beweging van het been (gemiddelde pitch-hoek).
Zie ook: Arduino Robotarm en Mecanum Wiel Platform Automatische Bediening
Motoren voor Mars Rover Monteren
DC-motoren installeren. Mijn motoren: 37 mm diameter, 12V, tandwielkast 50 RPM.

Let op: 50 RPM is wat te snel; ik raad 20 of 10 RPM versies aan.
Voor wielbevestiging maakte ik as-koppelingen.

M3 threaded inserts voor koppeling-as bevestiging, M4 moeren voor wiel-koppeling bevestiging. Bij moeren lijm toevoegen of threaded inserts gebruiken.
Wielen bevestigen. Wielen: twee delen. Één wiel (flexibel filament, hoeft niet), één band (normaal PLA).

Band heeft sleuven die in wiel passen → krachtoverbrenging. Paar druppels lijm aan sleuven voor extra zekerheid. Wielen aan koppelingen/DC-motoren met 4 M4-bouten.

Stuur-servomotoren installeren. Ik gebruik high-torque digitale servo's (25 kg·cm, 4,8-6,8V). Bevestiging: vier M3-bouten in M3 threaded inserts in servo-beugel 3D-deel.

Camera-eenheid Monteren
Camera-eenheid assembleren. Voor panning: NEMA 17 stappenmotor (andere motortypes mogelijk).

Motorbeweging naar bovenste sectie via M5-gedraaide stang (3D-geprinte askoppeling aan motor, andere kant: lager en twee moeren). Voor tilting: servo (dezelfde als stuurwielen).

Veel camera-eenheid onderdelen zijn niet functioneel, alleen voor uitstraling. Montage: diverse M3-bouten en threaded inserts.

Wel een echte FPV-camera installeren. Custom houder voor mounting op camera-eenheid behuizing. Camera bereikbaar vanaf boven (snap-fit deksel). Eindresultaat camera-eenheid:

Deze sub-assemblage monteur ik in de voor-rechter hoek van het chassis.

Nu ofwel de rest van 3D-geprinte onderdelen (niet functioneel, alleen uitstraling) monteren, ofwel elektronica aansluiten. Ik koos voor eerst alle 3D-onderdelen, daarna elektronica.
Rest van de Rover Monteren
De volgende onderdelen zijn puur voor uitstraling; ik ga niet in detail. Zie 3D-model voor verbindingen.

Ik stak veel moeite in het ontwerp met aandacht voor details.

Deze onderdelen zijn groot en printen lang.

Snelle blik hoe ik ze installeerde.
De laatste twee bovenpaneelen in het midden: snap-fit in de rover.

Ze fungeren als kap die gemakkelijk af te nemen is (elektronica zit hieronder).

Elektronica-houder: twee 3D-geprinte delen bebolt, aan onderframe van chassis.
Elektronica
Nu de elektronica. Eerst meet hoeveel draad per motor nodig. Ik soldeerde draden direct op motoren (geen motorconnectors). Krimpkous voor isolatie.

Met tyraps draden netjes leiden.

Voor servo's: servo-verlengkabels naar elektronica-compartiment. Elektronica-houder heeft sleuven voor draaddoorvoering naar midden rover.

Bedrading is netjes achter zichtbare delen weggewerkt.
Zie ook: SCARA Robot | Hoe Je Je Eigen Arduino Robot Bouwt
Schakelschema DIY Mars Rover
Bekijk het schema nu.

Componenten (affiliate links):
- DC Motor 12V 37 mm …….……………….…
- Digitale Servo 25 kg …………………………….
- DRV8871 DC Motor Driver ……………….
- Stappenmotor – NEMA 17…………………
- A4988 Stappenstuurdriver………………..…..…
- Arduino MEGA…………………….…..………
- DC-DC Buck Converter …………………….
- 3S LiPo Accu ………………………..………..
- XT60 Connector ………………………………
- FLYSKY RC Zender …………………..
- FPV Camera en Video Zender …. Amazon / Banggood / AliExpress
- FPV Ontvanger naar keuze
Zes DC-motoren → zes DRV8871 DC-motor drivers (PWM, tot 3,6A piek). DC-motoren: 12V, 1A nominaal, 3A stalling. Voeding: 3S LiPo (~12V).
Servo's: 4,8-6,8V → DC-DC buck converter (12V → 6V). Converter moet ~8A aan (servo's krachtig, ~2A stalling). Camera stappenmotor: A4988 of DRV8825 driver. Twee weerstanden voor spanningsdeler voor batterijspanning monitoring.
RC-ontvanger: 6V van buck converter. FPV-camera + video-zender: 12V van accu.
Custom PCB
Voor nette elektronica: custom PCB ontworpen.

Deze PCB fungeert als Arduino MEGA shield (direct op MEGA te monteren). Naast motor drivers: 3,3V spanningsregelaar, speciale NRF24L01 aansluiting (voor alternatieve besturing), DHT22 sensor, kompas, I2C, seriële communicatie, 12V/5V/3,3V/GND. PCB is toekomstbestendig voor upgrades.
PCB besteld bij PCBWay. Gerber uploaden, eigenschappen kiezen, redelijke prijs.

Alleen kleur gewijzigd naar blauw (match Arduino). Gerber download hieronder, of via PCBWay project sharing community direct bestellen.

Download Gerber bestand voor deze DIY Mars Rover PCB:
Na कुछ dagen PCB's ontvangen. Kwaliteit geweldig, identiek aan ontwerp.

PCB assembleren: simpel, alles gelabeld. Begin met pin-headers onderkant (Arduino MEGA verbinding), daarna bovenkant. Alle verbindingen met pin-headers (flexibiliteit). 3,3V regelaar en vrije Arduino-pinnen niet gesoldeerd (nog niet nodig).

Arduino op elektronica-houder bevestigen (twee bouten), PCB erop.

Motoren aan drivers, drivers in PCB. Servo's in servo-pinnen, stappenstuurdriver (één jumper voor 1/8 microstepping).

Radio: FLYSKY RC zender/ontvanger (goedkoop, goed werkend).

Ontvanger aan Arduino: servo-verlengkabels (3 draden: VCC, GND, Signaal). Communicatie via I-BUS en seriële poort. Voor data terugsturen (batterijspanning): sensor I-BUS van ontvanger naar andere Arduino seriële poort.
Buck converter: twee bouten. LiPo accu: twee rubberen bandjes (makkelijk te verwijderen voor laden).

Stroomschakelaar in achter-rechter paneel. 20-gauge draad (stroom tot meerdere amps). Dubbelcheck verbindingen – fout = brandgevaar.
FPV-camera: 12V voeding, videosignaal naar video-zender (ook 12V). Elektronica klaar.

Dekpaneelen terug, rover bijna klaar. Nog: Arduino programmeren.
DIY Mars Rover Programmeren – Arduino Code
Download de Arduino-code voor dit project:
Code-overzicht
Met IBusBM library lezen we inkomende data van RC-zender.
// Reading the data comming from the RC Transmitter IBus.loop(); ch0 = IBus.readChannel(0); ch1 = IBus.readChannel(1); ch2 = IBus.readChannel(2); ch3 = IBus.readChannel(3); ch6 = IBus.readChannel(6);
Deze waarden converteren we naar bochtradius rechts, bochtradius links, en rover-snelheid (0-100%).
// Convertign the incoming data // Steering right if (ch0 > 1515) { r = map(ch0, 1515, 2000, 1400, 600); // turining radius from 1400mm to 600mm } // Steering left else if (ch0 < 1485) { r = map(ch0, 1485, 1000, 1400, 600); // turining radius from 600mm to 1400mm } // Rover speed in % from 0 to 100 s = map(ch2, 1000, 2000, 0, 100); // rover speed from 0% to 100%
De bochtradius "r" gebruiken we voor stuurwielhoeken en wielsnelheden.
void calculateMotorsSpeed() { // if no steering, all wheels speed is the same - straight move if (ch0 > 1485 && ch0 < 1515) { speed1 = speed2 = speed3 = s; } // when steering, wheels speed depend on the turning radius value else { // Outer wheels, furthest wheels from turning point, have max speed // Due to the rover geometry, all three outer wheels should rotate almost with the same speed. They differe only 1% so we asume they are the same. speed1 = s; // Inner front and back wheels are closer to the turing point and have lower speeds compared to the outer speeds speed2 = s * sqrt(pow(d3, 2) + pow((r - d1), 2)) / (r + d4); // Inner middle wheel is closest to the turning point, has the lowest speed speed3 = s * (r - d4) / (r + d4); } // speed value from 0 to 100% to PWM value from 0 to 255 speed1PWM = map(round(speed1), 0, 100, 0, 255); speed2PWM = map(round(speed2), 0, 100, 0, 255); speed3PWM = map(round(speed3), 0, 100, 0, 255); } void calculateServoAngle() { // Calculate the angle for each servo for the input turning radius "r" thetaInnerFront = round((atan((d3 / (r + d1)))) * 180 / PI); thetaInnerBack = round((atan((d2 / (r + d1)))) * 180 / PI); thetaOuterFront = round((atan((d3 / (r - d1)))) * 180 / PI); thetaOuterBack = round((atan((d2 / (r - d1)))) * 180 / PI); }
We gebruiken Ackermann-geometrie voor berekeningen. Waarden sturen servo's via ServoEasing library (soepelere beweging).
// Servo motors servoW1.startEaseTo(97 - thetaOuterFront); servoW3.startEaseTo(97 + thetaOuterBack); servoW4.startEaseTo(94 - thetaInnerFront); servoW6.startEaseTo(96 + thetaInnerBack);
DC-motoren via analogWrite() (PWM naar motor drivers).
// Motor Wheel 1 - Left Front analogWrite(motorW1_IN1, speed2PWM); // PWM value digitalWrite(motorW1_IN2, LOW); // Forward
Code is niet complex (rover heeft geen complexe functies). Toekomstige video's: GPS-navigatie, sensoren, robotarm, grondmonstername, etc.
Ik hoop dat je dit project leuk vond en er iets van hebt geleerd. Vragen? Reacties hieronder. Bekijk mijn Arduino Projecten Collectie.
Productieproces
- Bouw een Windows IoT Core Rover met Raspberry Pi 2 – Beginner tot Gevorderde Gids
- Arduino Audio Frequentie Detector – Meet de luidste geluidspieken met hoge gevoeligheid
- Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
- Bouw een DIY Voltmeter met Arduino en Nokia 5110 Display – Stap-voor-Stap Handleiding
- Bouw een Betrouwbare Arduino Afteltimer met SparkFun 7‑Segment Display
- Bouw je eigen RC Porsche-auto met Arduino: Stap-voor-stap handleiding
- Bouw een Betrouwbare Slimme Energiemonitor met Arduino UNO – Stapsgewijze Handleiding
- Bouw een draagbare RFID-deurslot met Arduino – Stap-voor-stap handleiding
- Objectkleuren detecteren met Arduino Nano en TCS3200-sensor
- DIY Arduino lengtemeter – nauwkeurig en eenvoudig te bouwen
- Arduino Nano Pulse-Inductie Metaaldetector – DIY Kit & Handleiding