ESP32 - Joystick - Servo Motor
In deze handleiding leren we hoe u een ESP32 en een joystick gebruikt om twee servo motoren of een pan-tilt kit met servo’s aan te sturen.
Een joystick heeft twee ingebouwde potentiometers die loodrecht op elkaar staan (de zogenaamde X-as en Y-as). Deze potentiometers leveren analoge waarden (de X-waarde en Y-waarde) op de VRX- en VRY-pinnen. We gebruiken deze analoge waarden om twee servo motoren onafhankelijk van elkaar te bedienen: de X-waarde bestuurt servo #1 en de Y-waarde bestuurt servo #2. Bij een pan-tilt kit zorgt de beweging van de twee servo motoren voor een driedimensionale beweging.
Er zijn twee toepassingsscenario's:
- Scenario 1: De servo motoren draaien mee met de beweging van de joystickknop:
- De hoeken van de servo motoren zijn evenredig met de waarden van de joystick X-waarde en Y-waarde.
- Wanneer we de joystick loslaten ⇒ keren alle waarden terug naar de middenwaarde ⇒ draaien de servo motoren automatisch terug naar de middenpositie
- Scenario 2: Gebruik de joystick om commando’s aan servo motoren te geven (omhoog/omlaag/links/rechts):
- Wanneer de joystickknop naar links wordt geduwd, beweegt servo motor #1 stapsgewijs met de klok mee
- Wanneer de joystickknop naar rechts wordt geduwd, beweegt servo motor #1 stapsgewijs tegen de klok in
- Wanneer de joystickknop omhoog wordt geduwd, beweegt servo motor #2 stapsgewijs met de klok mee
- Wanneer de joystickknop omlaag wordt geduwd, beweegt servo motor #2 stapsgewijs tegen de klok in
- Wanneer we de joystick loslaten ⇒ zullen de servo motoren niet terugkeren naar de middenpositie
- Als de joystick wordt ingedrukt (drukknop), keren de servo motoren terug naar de middenpositie
- Hoe ESP32 te verbinden met joystick en servo motor met behulp van een breadboard (experimenteerprint)
- Hoe ESP32 te verbinden met joystick en servo motor met behulp van een schroefconnector breakout board
- Als dit uw eerste keer is dat u een ESP32 gebruikt, zie hoe u de omgeving instelt voor ESP32 in Arduino IDE.
- Verbind de joystick en servo motoren met de ESP32 board volgens het bovenstaande bedradingsschema.
- Verbind de ESP32 board met uw pc via een micro USB-kabel.
- Open Arduino IDE op uw pc.
- Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM poort.
- Klik op het Libraries icoon in de linkerbalk van Arduino IDE.
- Typ ESP32Servo in het zoekvak en zoek naar de servomotor library van Kevin Harrington, John K. Bennett.
- Klik op de Installeren-knop om de servo motor library voor ESP32 te installeren.
- Kopieer bovenstaande code en open deze in Arduino IDE.
- Klik op de Uploaden-knop in Arduino IDE om de code naar ESP32 te uploaden.
- Open de Seriële Monitor
- Duw de joystick in een willekeurige richting
- Kijk naar de rotatie van de servo motor
- Bekijk het resultaat in de Seriële Monitor
- Klik op het Libraries icoon in de linkerbalk van Arduino IDE.
- Zoek naar “ezButton” en vind de button library van ArduinoGetStarted.com.
- Klik op de Installeren-knop om de ezButton library te installeren.
- Kopieer bovenstaande code en open deze in Arduino IDE.
- Klik op de Uploaden-knop om de code naar ESP32 te uploaden.
- Open de Seriële Monitor.
- Duw de joystick in een willekeurige richting.
- Kijk naar de rotatie van de servo motor.
- Bekijk het resultaat in de Seriële Monitor.
- De ESP32 ADC is niet perfect nauwkeurig en kan kalibratie vereisen voor correcte resultaten. Elke ESP32 board kan iets verschillen, dus u moet de ADC per board kalibreren.
- Kalibratie kan lastig zijn, vooral voor beginners, en geeft mogelijk niet altijd exact de gewenste resultaten.
In de volgende delen zullen we de code voor beide scenario’s bespreken.
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables ESP32 Starterskit (ESP32 inbegrepen) | |
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over Joystick en Servo Motor
Als u nog niet bekend bent met joystick en servo motor (pinout, werking, programmeren ...), leer er dan meer over in de volgende tutorials:
Bedradingsschema

This image is created using Fritzing. Click to enlarge image
Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

ESP32 Code
ESP32 Code - De servo motoren draaien mee met de beweging van de joystickknop
Snelle stappen


U zult merken dat de servo motor niet proportioneel beweegt met de joystickbeweging. Dit probleem ligt niet aan de joystick of servo motor zelf, maar komt door de ADC van de ESP32. Aan het einde van deze tutorial leggen we uit waarom dit gebeurt.
ESP32 Code - Gebruik de joystick om servo motoren aan te sturen
Snelle stappen

Code Uitleg
Lees de regel-voor-regel uitleg in de commentaarregels van de broncode!
※ Notiz:
Deze tutorial gebruikt de functie analogRead() om waarden te lezen van een ADC (Analog-to-Digital Converter) die verbonden is met de joystick. De ADC van de ESP32 is geschikt voor projecten die GEEN hoge nauwkeurigheid vereisen. Echter, voor projecten die precisie nodig hebben, let op:
Voor projecten die hoge precisie vereisen, overweeg het gebruik van een externe ADC (bijv. ADS1115) met de ESP32 of een Arduino, die een betrouwbaardere ADC heeft. Als u toch de ESP32 ADC wilt kalibreren, raadpleeg dan ESP32 ADC Calibratie Driver
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.