Tutorial ESP32 30/55 - Controllare il Servo tramite il web utilizzando MQTT con il servizio Adafruit IO | Kit di apprendimento IoT ESP32 di SunFounder
In questo tutorial, impareremo come controllare la posizione di un servomotore utilizzando il microcontrollore ESP32 e il protocollo MQTT tramite web. Sfruttando il servizio Adafruit IO, sarai in grado di posizionare il servomotore in vari angoli come 0°, 90° o 180° da remoto. Questo progetto dimostra le capacità dell'ESP32, che include Wi-Fi e Bluetooth integrati, rendendolo uno strumento potente per le applicazioni IoT.

In questo progetto, configureremo un broker MQTT utilizzando Adafruit IO, creeremo un dashboard per controllare il servo e collegheremo l'ESP32 ad esso. La posizione del servo sarà regolabile tramite uno slider sul dashboard, consentendo un controllo in tempo reale da qualsiasi dispositivo abilitato a internet (nel video alle 5:30).
Hardware Spiegato
I componenti principali di questo progetto includono il microcontrollore ESP32 e il servomotore. L'ESP32 è un microcontrollore versatile con capacità Wi-Fi e Bluetooth integrate, rendendolo ideale per applicazioni IoT. Comunica con il servizio Adafruit IO utilizzando il protocollo MQTT, che è leggero ed efficiente per trasmettere messaggi su Internet.
Il servomotore è un attuatore rotativo che consente un controllo preciso della posizione angolare. Funziona ricevendo un segnale di modulazione di ampiezza dell'impulso (PWM) che determina la sua posizione. In questo progetto, collegheremo il servomotore a uno dei pin digitali sull'ESP32, consentendoci di controllare il suo angolo da remoto.
Dettagli della scheda tecnica
| Produttore | Parallasse |
|---|---|
| Numero di parte | SG90 |
| Tensione di logica/ingresso e uscita | 3,3 V - 5 V |
| Tensione di alimentazione | 4,8 V - 6,0 V |
| Corrente di uscita (per canale) | 1 A max |
| Linee guida sulla frequenza PWM | 50 Hz |
| Soglie logiche di ingresso | 0,3 V - 0,7 V |
| Caduta di tensione / RDS(on)/ saturazione | 0,2 V max |
| Limiti termici | Temperatura di funzionamento: -10°C a 60°C |
| Pacchetto | Custodia in plastica |
| Note / varianti | Mini servo, rotazione 180° |
- Assicurati di fornire la giusta tensione al servo (4,8 V - 6,0 V).
- Usa un comune riferimento tra l'ESP32 e il servo.
- Monitora il segnale PWM per evitare di superare i limiti del servocomando.
- Collegare saldamente il servocomando per evitare disconnessioni durante il funzionamento.
- Aggiorna la libreria Adafruit MQTT per garantire la compatibilità.
Diagrammi MQTT
Istruzioni di cablaggio

Per collegare il servo motore all'ESP32, inizia collegando il filo di massa del servo al pin di massa dell'ESP32. Successivamente, collega il filo di alimentazione (di solito rosso) del servo al pin 5V dell'ESP32. Infine, collega il filo del segnale (spesso giallo o bianco) al pin digitale 25 dell'ESP32. Assicurati che i collegamenti siano sicuri per evitare disconnessioni durante il funzionamento.
Se stai utilizzando una batteria per alimentare l'ESP32, assicurati che la tensione della batteria sia entro l'intervallo accettabile sia per l'ESP32 che per il servo. Inoltre, controlla di nuovo che il cablaggio corrisponda alle definizioni dei pin utilizzate nel tuo codice per evitare problemi (nel video alle 12:45).
Esempi di codice e guida passo passo
Nel codice fornito, prima includiamo le librerie necessarie per l'ESP32 e MQTT. Definiamo l'oggetto servo e specificiamo il pin a cui è collegato conconst int servoPin = 25;. L'angolo predefinito è impostato anche conconst int defaultServoAngle = 90;, che sarà la posizione iniziale quando l'ESP32 si avvia.
Servo myServo;
const int servoPin = 25;
const int defaultServoAngle = 90;
int servoAngle = defaultServoAngle;
Questo frammento inizializza il servocomando sul pin 25 e imposta il suo angolo predefinito a 90°. La variabileservoAngleverrà aggiornato in base ai messaggi ricevuti dal broker MQTT.
Nellasetup()funzione, ci connettiamo al Wi-Fi e configuriamo il client MQTT. Le credenziali per Adafruit IO sono definite qui, inclusi il nome utente e la chiave:
#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_xmIW58uNNsjJCSOqzZ9QoHyq29wu"
Questa sezione stabilisce la connessione al servizio Adafruit IO. Assicurati di sostituire questi valori con le tue credenziali Adafruit IO personali quando implementi il codice.
Infine, il ciclo principale garantisce che la connessione al server MQTT rimanga attiva e elabora i messaggi in arrivo. La posizione del servo viene aggiornata in base all'angolo ricevuto:
mqtt.processPackets(500);
int pulseWidth = map(servoAngle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
Questo codice mappa l'angolo del servomotore alla corrispondente larghezza dell'impulso e lo invia al servomotore. IlprocessPackets()La funzione consente all'ESP32 di gestire i messaggi MQTT in arrivo, garantendo che il servo reagisca ai comandi inviati tramite il pannello di controllo Adafruit IO.
Dimostrazione / Cosa Aspettarsi
Una volta che tutto è configurato, dovresti essere in grado di controllare il servo dal dashboard di Adafruit IO utilizzando il cursore che hai creato. Man mano che muovi il cursore, il servo regolerà il suo angolo in tempo reale. Assicurati che il tuo ESP32 sia connesso al Wi-Fi e che la connessione MQTT sia stabile. Se il servo non risponde, controlla il cablaggio e l'alimentazione del servo (nel video alle 20:15).
Fai attenzione ai limiti di gamma per il servo; inviare un valore al di fuori di 0° a 180° potrebbe causare un comportamento imprevisto. Il codice include controlli per prevenire tali situazioni limitando l'angolo all'interno di questo intervallo.
Timestamp video
- 00:00 Inizio
- 1:54 Introduzione al progetto
- 2:52 Introduzione a MQTT
- 6:50 Configurazione di Adafruit IO
- 9:54 Cablaggio del servo
- 11:07 Codice spiegato
- 18:59 Selezionare la scheda ESP32 e la porta COM
- 22:10 Dimostrazione del progetto
Common Course Links
Common Course Files
Cose di cui potresti avere bisogno
-
AliExpressAcquista il servo motor SG90 180 o 360 da AliExpresss.click.aliexpress.com
Risorse e riferimenti
-
DocumentazioneTutoriale ESP32 17/55 - Documentazione del servo motore SunFunderdocs.sunfounder.com
-
EsternoSG90 servo su Amazon USAamzn.to
File📁
Altri file
-
Scheda tecnica del motore SG90 Seroo
robojax-servo-SG90_datasheet.pdf0.12 MB