KITtyBot: DIY slim robotkit met Arduino Pro Mini, servo's, IR-bediening en voeding
Onderdelen en benodigdheden
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | 1 |
| Servo's (Tower Pro MG996R of SG-90 9g) | 12 |
| Adafruit UBEC DC/DC Step-Down (Buck) Converter - 5V @ 3A | 1 |
| Adafruit Mini Remote Control (elke NEC-remote werkt) | 1 |
| Adafruit IR-ontvanger TSOP38238 | 1 |
| Weerstand 1kΩ | 1 |
| Weerstand 2.2kΩ | 1 |
| 7.4V / 500mAh LiPo-batterij (RC-hobby formaat) | 1 |
Benodigde tools
- 3D-printer (voor robotdelen)
- Solderbout (optioneel bij breadboard-versie)
Apps en online diensten
- Arduino IDE
Over dit project
Introductie
Ik wilde een lopende vierpotenrobot bouwen in "zoogdier"-stijl (niet spin/insect), geïnspireerd op Boston Dynamics. Een dergelijke robot is uitdagend door het hoge zwaartepunt en de poten onder het lichaam (in plaats van uitgespreid).
Doel: een goedkope robot met Arduino en lage-kost micro-servo's. Natuurlijk zijn er beperkingen, maar ik heb diverse robots gebouwd die de beschreven loopgedrag vertonen. Op een klein budget het beste halen is een uitdaging op zich.
Direct was duidelijk dat inverse kinematica (IK) essentieel is. De code bevat vergelijkingen om gewrichtshoeken te berekenen op basis van gewenste voetbewegingen. Hierop bouwen functies voor herhalende taken: lichaamsbeweging (alle vier poten tegelijk) en complete voetbeweging (omhoog, verplaatsen, neerzetten).
Vervolgens ganganalyses (gaits): definiëren hoe de robot loopt en draait in termen van lichaams- en voetbewegingen. Mijn robot gebruikt statisch stabiele gangen: één poot tegelijk omhoog, de overige drie vormen een driepoot waarop het zwaartepunt moet blijven. Ik ontwikkelde vier standaardgangs: vooruit, achteruit, links, rechts.
Ik programmeerde ook synchrone servo-bewegingen: meerdere servo's maken verschillende slagen in een vaste tijd, gesynchroniseerd voor vloeiende beweging.
Tot slot: een onbeveiligde LiPo-batterij. Risico's: te diep ontladen of te snel ontladen. De UBEC beperkt stroom tot 2A (batterij kan 12A leveren). Software bewakt spanning: onder 7.0V → robot gaat in rustmodus. Belangrijk: Laad LiPo's alleen met een speciale lader, nooit onbegeleid, in brandvaste tas/container. Raadpleeg een RC-hobbyshop voor advies.
De robot bouwen
Print de onderdelen volgens de meegeleverde bestanden. Bestudeer de foto's voordat je begint. Ik gebruik dubbelzijdig tape van goede kwaliteit om onderdelen te verbinden (lijm maakt reparatie onmogelijk).
- Heupgewricht: Zet servo-ondersteuning onderaan één servo, in lijn met de as. Monteer een tweede servo met as loodrecht. Maak gespiegelde versies voor de andere hoeken.
- Servo's centreren: Monteer PCB/breadboard, sluit alle servo's aan, laad code. Bij opstart centreren alle servo's (90° signaal). Later fijn afstellen.
- Dij (bovenbeen): Lijm servo-hornen in de uitsparingen. Bevestig aan heupgewricht onder ~60° hoek (zo dicht mogelijk bij gecentreerde servo's). Zet de bijgeleverde schroef.
- Onderbeen: Servo bevestigen met schroeven aan het onderbeen-deel.
- Poten aan lichaam monteren: Voor- en achterbumper hebben uitsparingen voor servo-hornen. Schuif bovenpoten in lichaam, bevestig met bumper. Laat poten ~12° naar buiten wijzen (20 mm "toe-out").
- Onderpoten bevestigen: Hoektegenovergesteld aan dij, zodat voet onder heup komt.
Elektronica aansluiten
Twee opties: breadboard of printplaat (Fritzing-bestand meegeleverd). Breadboard kan spanningval problemen geven door slechte contacten; PCB heeft brede koperbanen voor stroomlijnen.
Geen aan/uit-schakelaar: robot aan/uit door batterij (teken) te (de)koppelen. Eventueel schakelaar na batterijconnector (7.4V naar zowel Arduino als UBEC).
Breadboard-versie
Pro Mini, servo-connectoren en overige elektronica op half-grootte breadboard. Gebruik korte draadjes, zeker voor 5V en GND naar servo's. Servo-connectoren = lange male headers in stukjes van 3. Batterij en UBEC: soldeer connector voor batterij, twee draden naar onderste "stroomrail" (RAW en GND van Pro Mini). Spanningsdeler voor batterijmeting: 2.2kΩ van +7.4V naar A0, 1kΩ van A0 naar GND (deelt spanning tot <5V). UBEC-uitgang (servo-connector) → twee male headers op bovenste stroomrail (midden) voor gebalanceerde stroomverdeling. IR-ontvanger op A1 met 5V voeding.
PCB-versie
Fritzing-bestand voor PCB-productie (via Fritzing service of eigen export). PCB heeft connectors voor alle servo's, IR, spanningmeting, plus extra pinnen voor toekomstige uitbreiding. PCB wordt met dubbelzijdig tape op de voorziene "pads" op het lichaam gekleefd (hoek met D3-D5 connector voor-links).
Batterij
LiPo (7.4V/500mAh, ~55x30x10mm) wordt met klettband onderaan het lichaam bevestigd (vlakke oppervlakte voorzien).
Ten slotte: servo-draden in bundles vastzetten (voorkomt verstrikken, ziet er netter uit).
Afstellen
Voordat je de robot gebruikt, moeten de neutrale posities (servodeg0 array) worden afgesteld. Waarden in volgorde: alfa, beta, gamma voor voor-links, achter-links, voor-rechts, achter-rechts. Bijvoorbeeld:
const float servodeg0[12] = {80, 95, 100, 100, 110, 90, 100, 115, 100, 80, 80, 100};
Ook servodir array definieert draairichting van servo's (mijn servo's: 0-180° = tegenwijzerzin). Controleer alle hoeken en afstanden na opstart; herhaal tot robot recht en symmetrisch staat.
Verder verbeteren
De code is herbruikbaar voor andere afmetingen/indelingen (zie schets met constanten). Uitbreidingen: meer toetsen op remote (dansen, andere sequenties), analoge besturing, "draaien tijdens lopen", gyro/kompas correctie, ultrasoon sensor voor autonom gedrag, smartphone-besturing via Blynk/ESP8266.
Code (KITtyBot2)
Upload naar Arduino Pro Mini. Gebruikt IRLib2 bibliotheek (NEC-protocol). De volledige code is te lang om hier volledig weer te geven, maar bevat:
- IK-berekeningen (gamma, beta, alfa voor elke poot)
- Gang-functies:
forwardcreep(),reversecreep(),leftturn(),rightturn() - Synchrone servo-beweging (
servomove()met timing) - Spanningsbewaking (
voltmeasure()) - IR-ontvangst en modus-selectie (
IRread())
Bekijk de volledige code in de originele bron of op GitHub.
Productieproces
- Adafruit 10DOF IMU-data van Raspberry Pi 2 naar Azure Event Hubs Sturen met Windows 10 IoT Core
- Een stijlvolle wandklok bouwen met Adafruit 60-LED Neopixel Ring & Arduino
- UnifiedWater v1 – Complete Arduino Waterkwaliteit Sensor Kit
- Bouw je eigen Iron Man-helm & Arc Reactor met Arduino – Stap-voor-stap handleiding
- Draagbaar stemstysteem met GSM-connectiviteit
- Arduino 101 BLE + Blynk: DIY Bluetooth-gestuurde Tank Robot
- Slimme Match-Making Zonnebril Maken met Arduino 101 en tinyTILE BLE
- DIY Whac-A-Mole Arcade Spel (Knoppen Editie) – Arduino Project
- Moderne Jukebox: Raspberry Pi & Arduino LED Muziekspeler
- DIY Arduino Smartwatch: Bouw Je Eigen Apple Watch-stijl Tijdwijzer
- Dankbaarheid tonen naar beleefde automobilisten – LED-tekstscherm in auto