Bonjour,
J ai suivi ce tuto pour commander un servo moteur sg90 avec un esp32 :
ButtonBot - A DIY solution to automate any switch with Home Assistant (https://www.youtube.com/watch?v=m4piXUvdtM8)
Je ne suis pas un crack en électronique, et j ai surtout copié/collé et demandé de l’aide a perplexity.
Quand je mesure le voltage aux bornes ground et D5; j’ai 0.25V, puis quand j’appuye sur « turn off » le courant passe temporairement (1 a 2 secondes) a 0.15V et , 0.35V sur « turn on »
Donc, a priori ca devrait tourner… j’ai acheté un lot de esp32 et un lot de servo sur aliexpress, j ai donc testé avec différents esp32 et différents servo. ca ne bouge pas…
NodeMCU CH340 ESP-12E ESP8266 :
SG90 9G Micro Servo, version 360° :
ca doit être tout bête mais je ne trouve pas…
Merci
mon code yaml :
esphome:
name: esphome-web-657e2c
friendly_name: esphome-web-657e2c
min_version: 2025.5.0
name_add_mac_suffix: false
esp8266:
board: esp12e
# Enable logging
logger:
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
ssid: "********"
password: "********"
output:
- platform: esp8266_pwm
id: pwm_output
pin: GPIO14
frequency: 50 Hz
servo:
- id: my_servo
output: pwm_output
number:
- platform: template
id: servo_value
name: "Servo Position"
min_value: -100
initial_value: 0
max_value: 100
step: 1
optimistic: true
set_action:
then:
- servo.write:
id: my_servo
level: !lambda "return x / 100.0;"
- platform: template
id: press_duration
name: "Press Duration"
min_value: 200
initial_value: 500
max_value: 5000
step: 100
mode: box
optimistic: true
- platform: template
id: press_distance
name: "Press Distance"
min_value: 0
initial_value: 60
max_value: 100
step: 1
mode: box
optimistic: true
button:
- platform: template
name: "Turn On"
id: my_btn_on
icon: "mdi:light-switch"
on_press:
- number.set:
id: servo_value
value: !lambda "return id(press_distance).state;"
- delay: !lambda "return id(press_duration).state;"
- number.set:
id: servo_value
value: 0
- platform: template
name: "Turn Off"
id: my_btn_off
icon: "mdi:light-switch-off"
on_press:
- number.set:
id: servo_value
value: !lambda "return id(press_distance).state * -1;"
- delay: !lambda "return id(press_duration).state;"
- number.set:
id: servo_value
value: 0