le moteur SG90 est une petite unité fréquemment utilisé en modélisme. Il se pilote facilement avec un ESP32 ou autre micro-controleur. Voici comment tester son fonctionnement.
Il est livré avec un connecteur Dupont compatible avec l’ESP32. Sauf que les broches ne sont pas dans le bon ordre sur le SG90. Il s’alimente avec 3 fils : 5V, GND et data. On peut trouver ces 3 broches contigües sur l’ESP32 à condition d’inverser les fils 5V et GND. Faisable avec une aiguille pour sortir le connecteur de son logement

Ensuite un simple code Arduino permet de le mettre en action.
#include <ESP32Servo.h>
Servo monServo;
const int pinServo = 13; // GPIO 13
void setup() {
// Configuration de la fréquence standard pour un servo (50 Hz)
monServo.setPeriodHertz(50);
// Attache le servo au GPIO 13 avec les largeurs d'impulsion min/max du SG90 (500µs à 2400µs)
monServo.attach(pinServo, 500, 2400);
}
void loop() {
monServo.write(0); // Position 0°
delay(1000);
monServo.write(90); // Position 90° (centre)
delay(1000);
monServo.write(180); // Position 180°
delay(1000);
}
ou bien un code ESPHOME
esphome:
name: esp32-servo
friendly_name: ESP32 Servo SG90
esp32:
board: esp32dev
# Connexion Wi-Fi et API Home Assistant (à adapter)
wifi:
ssid: "2.4GHz-MEMOIRE-VIVE"
password: "xxxxxxxxxxxxxxxx"
api:
logger:
ota:
platform: esphome
# Optionnel : active l'interface web intégrée pour tester le curseur sans Home Assistant
web_server:
port: 80
# 1. Définition de la sortie PWM sur le GPIO 13 à 50 Hz (fréquence requise pour un servo)
output:
- platform: ledc
id: pwm_output
pin: GPIO13
frequency: 50Hz
# 2. Définition du composant Servo
servo:
- id: my_servo
output: pwm_output
# 3. Création d'un curseur (slider) de 0 à 180 degrés
number:
- platform: template
name: "Angle Servo SG90"
min_value: 0
max_value: 180
step: 1
optimistic: true
icon: "mdi:axis-arrow"
set_action:
then:
- servo.write:
id: my_servo
level: !lambda 'return (x - 90.0) / 90.0;'
