Bouw een robotwagen die je via Bluetooth of wifi bestuurt
Een robotwagen die je vanaf je telefoon bestuurt via Bluetooth of wifi, die op slag stilstaat zodra de verbinding wegvalt in plaats van er vandoor te rijden.
Wat je bouwt
Een robotwagen die je vanaf je telefoon bestuurt — via Bluetooth met een HC-05, of via wifi met een ESP32 die zijn eigen bedienpagina serveert.
Dit is de meest toegankelijke robot op deze site: geen regeltheorie, geen algoritme dat je goed moet krijgen, en de storingsmodi zijn zichtbaar in plaats van mathematisch. Het is ook de robot waarvan elke andere robot iets kan leren — wat je moet doen zodra je niet meer de bestuurder bent.
De twee radio’s
| HC-05 (Bluetooth) | ESP32 (wifi) | |
|---|---|---|
| Extra hardware | Een module, plus een spanningsdeler op RX | Geen — de radio zit op de controller |
| Op de telefoon | Een Bluetooth-serieterminalapp | Elke browser |
| Bereik | Ongeveer 10 m | 30 m+ buiten |
| Telefoon houdt internet | Ja | Nee, in accesspointmodus |
| Beste voor | Een eerste draadloze build | Alles wat je aan iemand anders wilt geven |
Geen van beide is verkeerd. De HC-05 is de kortste route naar een robot die beweegt; de ESP32 is de betere ervaring zodra het werkt, want “verbind met deze wifi en open een browser” hoeft niet te worden uitgelegd.
Onderdelenlijst
Twee routes, en je hebt er maar één nodig. Bouw de Bluetooth-versie als je al een Arduino hebt; bouw de wifi-versie als je vandaag onderdelen gaat kopen.
| Onderdeel | Bluetooth-route | Wifi-route | Richtprijs |
|---|---|---|---|
| Controller | Arduino Uno | ESP32 | $5–8 |
| Radio | HC-05-module | Ingebouwd | $4 / $0 |
| Spanningsdeler | 1 kΩ + 2 kΩ op de RX van de module | Nodig op elke 5 V-sensoringang | $0.10 |
| Motordriver | 1 | 1 | $2–4 |
| TT-gearmotor | 2 | 2 | $4 |
| 2WD-chassis | 1 | 1 | $6–10 |
| Accupakket | 1 | 1 | $6 |
| App op de telefoon nodig | Ja — een Bluetooth-serieterminalapp | Nee — elke browser | — |
Totaal: ongeveer $25–35, hoe dan ook.
Het doorslaggevende verschil zit niet in de kosten, maar in de bedieninterface. Een HC-05 geeft je een bytestroom, dus de telefoon heeft een app nodig die bytes kan versturen. Een ESP32 serveert zijn eigen webpagina, dus de telefoon heeft een browser nodig — en dat betekent dat iedereen de robot kan besturen door een URL te openen, zonder iets te installeren. Voor een robot die je aan iemand anders wilt geven is dat een groot verschil zonder extra kosten.
De Bluetooth-route verdient zijn plek wanneer je al een Arduino hebt, of wanneer je de eenvoudigst mogelijke verbinding wilt zonder enige netwerkconcepten. Een byte in, een byte uit.
Bouwvolgorde
1 — Laat hem op een werkbank rijden. Motoren, driver, accu, wielen van de grond, helemaal geen radio. Volg DC-motoren aansturen met PWM en bevestig vooruit, achteruit en elke draai met vaste commando’s. Een radio en een motordriver tegelijk debuggen is hoe middagden verdwijnen.
2 — Voeg de radio toe en laat tekst heen en weer lopen. Bedraad de HC-05 of breng het accesspoint van de ESP32 op, en krijg tekst in beide richtingen vóordat je het aansluit op iets dat beweegt.
3 — Verbind het met een protocol. Eén letter plus een waarde, afgesloten met een newline. Lees door tot de afsluiter in plaats van op elke byte te reageren, want “er zijn bytes binnen” is niet “het bericht is binnen”.
4 — Maak hem veilig bij storing. Dit is de stap die iedereen overslaat, en juist die is belangrijk.
De deadman-timeout
Een draadloze robot blijft het laatste commando uitvoeren dat hij heeft ontvangen. Was dat “vooruit op volle snelheid” en ben je net uit bereik gelopen, dan stopt de robot niet — hij zet door.
De oplossing heeft twee helften en je hebt ze allebei nodig:
- De controller herhaalt. De telefoon stuurt het commando van de ingedrukte knop elke 100 ms, niet één keer bij het indrukken.
- De robot rekent erop. Komt er niets binnen voor ~400 ms, stop dan.
if (millis() - lastCommandAt > 400) stop();
Nu levert een losgelaten knop, een gesloten app, een lege telefoonaccu en een wandeling uit bereik hetzelfde resultaat op. Je leunt nooit op een stopbericht dat weleens nooit verstuurd wordt.
Gebruik millis() in plaats van delay(). Een delay(200) ergens in de lus is 200 ms waarin de robot
niets leest en niets controleert.
Hardwaretips
Geef de radio een schone voeding. Beide modules trekken scherpe stroompieken tijdens het zenden. Een spanningsrail die onder belasting inzakt delen met motoren veroorzaakt resets die precies op softwarecrashes lijken — de robot stopt halverwege met reageren en komt een seconde later terug. Voed de motoren via de driver uit het accupakket en houd de voeding voor de logica gescheiden.
Let op de 3,3 V-pinnen. De RX van de HC-05 en elke GPIO van de ESP32 zijn 3,3 V-onderdelen. Een 5 V-Arduino die daar naartoe zendt heeft een spanningsdeler nodig. De schade is geleidelijk en gedeeltelijk, en juist daarom zo lastig vast te stellen.
Een L298N is hier prima. De spanningsval ervan telt bij een robot die op snelheid een lijn volgt; bij een handmatig bestuurde wagen corrigeer je er eenvoudig voor met de stand van het gas, dus de goedkopere, gangbare driver is de verstandige keuze.
Hoe goed het eruit moet zien
| Meting | Bluetooth (HC-05) | Wifi (ESP32) |
|---|---|---|
| Commandovertraging | 20–60 ms | 30–100 ms op een lokaal netwerk |
| Bereik, vrij zicht | ~10 m | ~50 m, of overal op het netwerk |
| Bereik door één binnenwand | 3–5 m | 15–25 m |
| Tijd tot eerste besturing na het opstarten | ~2 s na het koppelen | ~5 s om met wifi te verbinden |
| Opnieuw verbinden na een storing | Meestal handmatig | Automatisch |
| Bruikbare deadman-timeout | 300–500 ms | 300–500 ms |
De deadman-timeout is het getal dat je zorgvuldig moet afstellen, en beide radio’s hebben hem nodig. Te lang en de robot blijft merkbaar rijden nadat de verbinding wegvalt — wat bij 0,3 m/s en een timeout van 1 s neerkomt op 30 cm onbeheerde verplaatsing. Te kort en normale packetjitter stopt de robot voortdurend, wat als kapot aanvoelt.
300–500 ms is het bruikbare frequentiebereik voor beide. Onder ongeveer 250 ms gaat gewone wifi-jitter hem al activeren; boven ongeveer 700 ms rijdt de robot bij een weggevallen verbinding zichtbaar op eigen houtje door.
Waar dit hierna heen gaat
De commandolaag die je hebt gebouwd staat los van elke gedragslaag, en juist daarom is het een goede fundering. Voeg een ultrasone sensor toe en de robot kan weigeren tegen een muur in te rijden, zelfs terwijl je vooruit ingedrukt houdt — het begin van de obstakelvermijdende robot.
Die combinatie, een robot die je kunt besturen én die jou kan overstemmen, is ook de eenvoudigste manier om autonomie te ontwikkelen: je kunt de robot precies daar neerzetten waar een bug zich voordoet, zonder heen te lopen en hem op te pakken.
Projectroadmap
De bouwroute
Volg de techboom van onderdelen tot een werkende robot. Elk knooppunt wordt ontgrendeld zodra de voorwaarden klaar zijn, en je voortgang wordt op dit apparaat opgeslagen.
0 / 14 klaar
Componenten
- ControllerArduino UnoHet vergevingsgezinde 8-bits bord waarmee de meeste mensen robotica leren.
- CommunicatieHC-05 Bluetooth-moduleDraadloze seriële communicatie via Bluetooth; bestuur een robot vanaf je telefoon met twee pinnen.
- ControllerESP32Een microcontroller met twee kernen, Wi-Fi en Bluetooth; de draadloze stap omhoog vanaf een Uno.
- DriverL298N-motordriverDe dubbele H-brug die zwakke logica-pins omzet in motorvermogen.
- ActuatorDC-gelijkstroommotor (TT Motor)De gele tandwielmotor die een kale basis in een rijdende robotauto verandert.
- Chassis2WD-robotchassisDe basis waarop twee motoren, een vrij zwenkwiel en je elektronica worden gemonteerd.
- VoedingAccu- en voedingspakket voor robotsHet verschil tussen een robot die blijft draaien en een robot die steeds opnieuw opstart.
Tutorials in deze route
- Beginner · 1 uurBestuur een robot via Bluetooth met een HC-05-moduleKoppel een HC-05 aan je telefoon en bestuur een robot via Bluetooth-serieel, zonder de klassieke 5 V-fout.
- Gevorderd · 1,5 uurBestuur een robot vanuit een browser met een ESP32-webserverServeer een bedieningspagina rechtstreeks vanaf een ESP32, zodat elke browser de robot kan besturen — zonder app.
- Beginner · 18 min lezenBestuur gelijkstroommotoren met PWM en een H-brugBedraad en bestuur een gelijkstroommotor met borstels veilig met PWM, een H-brug en realistische stroomgrenzen.
- Beginner · 17 min lezenToestandsmachines voor het gedrag van een robotVervang rommelige robotvoorwaarden door expliciete toestanden, gebeurtenissen, overgangen, timeouts en herstel.
Veelgestelde vragen
Moet ik Bluetooth of wifi gebruiken voor een robotwagen?
Bluetooth met een HC-05 is het eenvoudigst aan de praat te krijgen en koppelt één keer, maar je hebt een serieterminalapp nodig en het bereik is ongeveer tien meter. Een ESP32 over wifi heeft helemaal geen app nodig — hij serveert zijn eigen bedienpagina aan elke browser — en haalt meer afstand, maar de telefoon verliest zijn internetverbinding zodra hij met het netwerk van de robot is verbonden. Voor een eerste build is Bluetooth de kortste route; voor alles wat je gaat demonstreren is de app-loze bedienpagina van de ESP32 het extra uur waard.
Waarom blijft mijn Bluetooth-robot rijden nadat ik de knop loslaat?
Omdat hij het loslaten nooit heeft gehoord. Een bedraadde robot stopt zodra je loslaat; een draadloze blijft het laatste commando herhalen dat hij kreeg. De oplossing heeft twee kanten: laat de telefoon het huidige commando elke 100 ms herhalen zolang een knop ingedrukt is, en laat de robot vanzelf stoppen als er een paar honderd milliseconden niets binnenkomt. Dan levert een losgelaten knop en een verbroken signaal hetzelfde veilige resultaat op, en ben je nooit afhankelijk van een stopbericht dat weleens nooit kan aankomen.
Kan ik de HC-05 beschadigen door hem direct aan een Arduino te hangen?
Ja, op één pin. De logica van de module is 3,3 V en de RX-pin is niet 5 V-bestendig, dus een Arduino die rechtstreeks naar binnen zendt, belast die ingang. Wat het zo frustrerend maakt, is dat de schade meestal gedeeltelijk is — de module koppelt nog en zendt nog, maar maakt de gegevens stilletjes ongeldig of negeert ze. Twee weerstanden als spanningsdeler op die ene lijn voorkomen dat.
Heb ik een app nodig om de robot vanaf mijn telefoon te besturen?
Alleen voor Bluetooth. Een HC-05 heeft een Bluetooth-serieterminalapp op de telefoon nodig om de poort te openen. Een ESP32 heeft niets nodig: hij maakt zijn eigen wifinetwerk en serveert een HTML-pagina, dus je maakt verbinding en opent een browser. Dat is het sterkste praktische argument voor de ESP32 bij een robot die anderen ook moeten kunnen besturen.
Kan een met de telefoon bestuurde robot zichzelf ook besturen?
Ja, en dat is de logische volgende stap. De commandolaag die je hier bouwt staat los van de gedragslaag, dus met sensoren erbij kan de robot jou overstemmen — hij weigert tegen een muur in te rijden, zelfs als je vooruit ingedrukt houdt. Bouw de handmatige laag eerst: een sensor debuggen is een stuk makkelijker als je de robot met de hand van de andere kant van de kamer kunt neerzetten.