Estou fazendo um projeto para abrir uma cortina aqui em casa usando um motor de passos Nema.
Basicamente a ideia é controlar o motor usando o Home Assistant, este tutorial pode ajudar para vários outros projetos, como comedouro que dispensa ração, ou abrir janelas… em fim, vai da criatividade de cada um.
O que precisa:
1 - Nodecom
1 - Motor Nema (Meu modelo é o 17)
1 - Drive A4988
1 - Fonte 12v (para alimentar o motor)
1 - Fonte 5v (para alimentar o Nodecom)
Eu comprei no aliexpress o drive e motor: Onde comprei
Esquema de ligação:
Segui este esquema, a única diferença que como não tinha capacitor, eu não usei.
Ligação do Nodecom X A4988
Nodecom (D0) <-> A4988 (STEP)
Nodecom (D1) <-> A4988 (DIRECTION)
Nodecom (GND) <-> A4988 (GND)
Nodecom (3,3V) <-> A4988 (VCC)
Ligação Motor X A4988
Comprei junto o chicote para esta ligação veio pronto, no motor possui 6 terminais, mais para este drive você vai utilizar apenas os 4 abaixos:
Motor (1A) <-> A4988 (1A)
Motor (1B) <-> A4988 (1B)
Motor (2A) <-> A4988 (2A)
Motor (2B) <-> A4988 (2B)
Fonte 12v X A4988
Fonte para alimentar o motor passa pelo drive A4988, deve alimentar:
Fonte (12v) <-> A4988 (Vmot)
Motor (GND) <-> A4988 (GND)
Fonte 5v X Nodecum
Fonte para alimentar o nodecum, estou usando cabo USB e fonte 5v
Fonte (5v) <-> Nodecum (USB)
A4988 X A4988
Tem que fazer um jumper no proprio drive, ligando:
A4988 (SLEEP) <-> A4988 (RESET)
Para comunicar o nodecum com o home assistant optei por esphome, o código que usei
Código para Nodecum:
esphome:
name: cortina_sala
platform: ESP8266
board: nodemcuv2
wifi:
ssid: "SEU_WIFI"
password: "SUA_SENHA"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Cortina Sala Fallback Hotspot"
password: "***************"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
services:
- service: control_stepper
variables:
target: int
then:
- stepper.set_target:
id: my_stepper
target: !lambda 'return target;'
ota:
stepper:
- platform: a4988
id: my_stepper
step_pin: D0
dir_pin: D1
max_speed: 250 steps/s
Código no Home Assistant:
Dentro de Input_number:
controle_cortina_sala:
name: Controle Cortina Sala
initial: 0
min: 0
max: 6000
step: 1
mode: slider
Dentro de automation:
- alias: Abrir cortina sala
trigger:
platform: state
entity_id: input_number.controle_cortina_sala
action:
- service: esphome.cortina_sala_control_stepper
data_template:
target: '{{ trigger.to_state.state | int }}'
Assim que reiniciar, no Home Assistant vai aparecer:
No caso 0 ele está na posição de origem, assim que aumenta o motor roda para sentido horário, e quando diminui ele roda anti horário.
No meu exemplo eu usai mínimo=0, mas é possível usar valor negativo.
Para mais informações: https://esphome.io/components/stepper/index.html
Este projeto ainda está no começo, caso tenha alguma sugestão, por favor envie nos comentários.
Obrigado!