Bouw een Arduino Mier Hexapod Robot – Stap-voor-Stap Handleiding
Overzicht
In deze tutorial bouw je een Arduino-hexapod (6 poten) die eruitziet als een mier: met staart, hoofd, antennes, kauwwerk en functionele ogen (ultrasonische sensor). De robot wordt bestuurd via een zelfgemaakte Android-app met Bluetooth. De app heeft knoppen voor vooruit, achteruit, links, rechts, en extra functies: hoofd/staart bewegen, bijten, grijpen, loslaten, aanvallen.

De ogen zijn een HC-SR04 ultrasonische sensor. Als je je hand naderbrengt, bereidt de robot een aanval voor. Trek je terug, dan stopt hij. Blijf je naderkomen, dan valt hij aan en bijt.

3D-model
Ontworpen in 3D-software. 6 poten × 3 gewrichten = 18 servos (MG996R). Staart: 1 MG996R. Hoofd: 2 vrijheidsgraden (rollen/kantelen) = 2 MG996R. Kauwwerk: 1 SG90 microservo. Totaal: 21 MG996R + 1 SG996R. Alle delen tussen twee platen, met een gebogen bovenplaat om elektronica te verbergen.



STL-bestanden beschikbaar op Thangs.
3D-printen
Geprint op Creality CR-10. Het hoofd was lastig (één stuk, ondersteuningen 60°, ondersteuningsblokkers), maar is perfect uitgekomen.


Hexapod monteren
Poten: M3 bouten/moeren (16 mm), veerringen. Rondhorens van servos: 3 mm gaten boren of metalen horens met M3-gewinde gebruiken. Zorg dat servos in middenstand gemonteerd worden voor volle bereik. Driehoekste steuntje op servos afknippen (stanleymes). Voor de derde servo: M4 bout in het been voor bevestiging aan basisplaat.




6 poten maken. Dan aan de twee platen bevestigen: rondhoren op bovenplaat, servos in middenstand, poten bevestigen. Achterkant: staartservo horen vastzetten.


Onderplaat: M4 bouten door poten, platte ringgen en zelfborgende moeren. Niet te vast: poten moeten kunnen draaien.

Hoofd mechanisme
Eerste servo (rollen) loodrecht op platen: twee kleine plaatjes als adapter. U-vormige beugel voor tweede servo (kantelen). M4 bout in beugel voor kopkoppeling. Servo in middenstand monteren.



Hoofd samenstellen
Kauwwerk: SG90 servo, M4 bout (gat in ooggebied voor schroevendraaier). Tweede kauwwerk: armhoorn op SG90, tanden paren, vastschroeven. Ultrasonische sensor in ooggatjes (AC-lijm). Antennes: 3 mm draad, 13 cm, gebogen, AC-lijm. Hoofd op rol/kantel mechanisme schroeven (4 bouten).






Staart in staarthoren schuiven, gebogen hoes erover. Resultaat: blauw/wit mier-robot.

Schakelschema
22 servos, HC-05 Bluetooth, condensators, weerstanden. Arduino Mega (enige board dat >12 servos aan kan met Servo-bibliotheek). Voeding: 3S LiPo (12 V), DC-DC buck converter naar 5 V (servos 4,8-7,2 V). Buck converter minimaal 8 A, beter 10-15 A. Maximale stroom gemeten: ~6 A.

Componenten
- MG996R Servomotor
- SG90 Microservo
- HC-05 Bluetooth-module
- Arduino Mega
- 3S LiPo accu
- DC-DC Buck Converter (10-15 A)
PCB-ontwerp (Arduino Mega Shield)
Custom PCB in EasyEDA: fungeert als shield op de Mega. Servoaansluitingen gegroepeerd, grote condensators, NRF24L01-aansluiting voor radiobesturing, extra digitale/analoge pinnen, 2 LED-aansluitingen, batterijspanningsmonitoring via spanningsdeler (R1, R2) op analoog pin.

Besteld bij JLCPCB (blauw, passend bij Mega). Goede kwaliteit.



PCB assembleren
Mannelijke pinheaders solderen (onderkant, omkeren op plaat). Servoaansluitingen (ook pinheaders), weerstanden, condensators, klemblokken. Shield op Mega prikken.


Buck converter op 5 V instellen (potentiometer). Stroomschakelaar in voeding. 12 V op PCB-pin voor batterijmonitoring. Elektronica tussen platen: batterij (tape), Mega+shield, Bluetooth/NRF24L01, LED (laagspanningswaarschuwing <11 V), alle servos aansluiten (pinnummers noteren!). Gebogen hoes erover. Klaar.

Arduino Hexapod Code
Code in secties uitgelegd. Complete code aan het einde.
Bibliotheken: Servo.h, SoftwareSerial.h (Bluetooth). 22 servo-objecten definiëren, variabelen.
#include <Servo.h>
#include <SoftwareSerial.h>
#define trigPin 7
#define echoPin 6
#define ledB 10
SoftwareSerial Bluetooth(12, 9); // Arduino RX, TX - HC-05 TX, RX
// Servo objecten (s1...s24)
Servo s24; Servo s23; Servo s22; // ... etc.
setup(): Bluetooth 38400 baud, pinmodes, servo-pinnen koppelen (met min/max pulsen 600-2400 µs). Initiele posities instellen (kalibratie).
void setup() {
Serial.begin(38400);
Bluetooth.begin(38400);
Bluetooth.setTimeout(1); delay(20);
pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(ledB, OUTPUT);
// Hoofd
s15.attach(36, 600, 2400); s14.attach(35, 600, 2400); s13.attach(34, 600, 2400);
// Kauwwerk
s5.attach(26, 600, 2400);
// Staart
// Poot 4
s10.attach(31, 600, 2400); s11.attach(32, 600, 2400); s12.attach(33, 600, 2400);
// Poot 5
s7.attach(28, 600, 2400); s8.attach(29, 600, 2400); s9.attach(30, 600, 2400);
// Poot 6
s1.attach(22, 600, 2400); s2.attach(23, 600, 2400); s3.attach(24, 600, 2400);
// Poot 1
s18.attach(39, 600, 2400); s17.attach(38, 600, 2400); s16.attach(37, 600, 2400);
// Poot 2
s21.attach(42, 600, 2400); s20.attach(41, 600, 2400); s19.attach(40, 600, 2400);
// Poot 3
s24.attach(45, 600, 2400); s23.attach(44, 600, 2400); s22.attach(43, 600, 2400);
// Initiele posities (kalibratie)
s15.write(72); s14.write(50); s13.write(90); // Hoofd
s5.write(65); // Kauwwerk
// Poot 4
s10.write(65); s11.write(35); s12.write(40);
// Poot 5
s7.write(80); s8.write(50); s9.write(25);
// Poot 6
s1.write(90); s2.write(45); s3.write(60);
// Poot 1
s18.write(60); s17.write(90); s16.write(100);
// Poot 2
s21.write(50); s20.write(85); s19.write(75);
// Poot 3
s24.write(50); s23.write(80); s22.write(80);
}
Loopalgoritme
Geen inverse kinematica (servos te onprecies). Elke poot heeft een custom functie moveLegX() met tellers voor swing-fase (lucht) en stance-fase (grond). 3 poten tegelijk in swing, 3 in stance (tripod gait). Voor achteruit, links, rechts: tegenovergestelde functies.

void moveLeg1() {
// Swing fase
if (i1L1 <= 10) { s18.write(60 - i1L1*2); s17.write(90 - i1L1*3); i1L1++; }
if (i2L1 <= 30) { s16.write(100 - i2L1); i2L1++; }
if (i2L1 > 20 && i3L1 <= 10) { s18.write(40 + i3L1*2); s17.write(60 + i3L1*3); i3L1++; }
// Stance fase
if (i2L1 >= 30) { s16.write(70 + i4L1); i4L1++; l1status = HIGH; }
// Reset tellers
if (i4L1 >= 30) { i1L1=0; i2L1=0; i3L1=0; i4L1=0; i5L1=0; }
}
Vooruit: roep moveLeg1(), moveLeg3(), moveLeg5() aan; als l1status HIGH, dan moveLeg2(), moveLeg4(), moveLeg6().
if (m == 2) { // Vooruit
moveLeg1(); moveLeg3(); moveLeg5();
if (l1status == HIGH) { moveLeg2(); moveLeg4(); moveLeg6(); }
}
Bluetooth-commando's: dataIn = Bluetooth.read(). App stuurt getallen (2=vooruit, 0=stop, etc.).
Android App (MIT App Inventor)
Afbeeldingen als knoppen. Snelheidsregelaar. Bluetooth-connectieknoppen. Blokken: bij "Vooruit" knop → stuur '2', verander afbeelding naar ingedrukte versie. Tweede druk → stuur '0', reset afbeelding. Hetzelfde voor andere knoppen.



App-bestanden (project + APK) beschikbaar.
Batterijmonitor & Ultrasonische sensor
// Batterijspanning
int sensorValue = analogRead(A3);
float voltage = sensorValue * (5.00 / 1023.00) * 2.9;
Serial.println(voltage);
if (voltage < 11) digitalWrite(ledB, HIGH); else digitalWrite(ledB, LOW);
// Ultrasonische sensor
if (getDistance() > 40) att = 0;
if (getDistance() <= 40) { att = 1; dataIn = 99; }
Aanvalslogica: att==1 → voorbereiden; als afstand >30 cm → afwijzen (att=2); als afstand <30 cm → aanvallen (att=3). Tijdsvertragingen met while-lussen en delay(2000).
Complete code beschikbaar als download. Let op: goedkope MG996R servos kunnen problemen geven (kracht, nauwkeurigheid). Veel succes!
Productieproces
- Bouw een Bluetooth-gecontroleerde Raspberry Pi Robot met Audio Feedback
- Servo-gestuurde obstakelvermijdende robot: Bouw met Arduino & HC-SR04
- Bouw Een Autonome Lijnvolgende Robot Met Arduino UNO
- Bestuur Je Roomba Create 2 Met Arduino En Android: Stapsgewijze Handleiding
- Bouw een Stemgecontroleerde Robot met Arduino Nano
- PiBot: De Arduino-aangedreven pianorobot voor precisiemuziek
- LittleArm 2C: Bouw een Duurzame 3D-geprinte Arduino Robotarm voor STEM Onderwijs
- Bouw een Autonome Thuisassistent Robot: Complete Onderdelenlijst & Opzetgids
- Arduino robotarm besturen via speciale Android-app
- Slim Indoor Navigatie Robot Kit voor Arduino Projecten
- WiDC: Wi‑Fi FPV-robot – Externe bediening met live video