In questo articolo vediamo come realizzare un semplice giroscopio su Home Assistant con ESPHome, dove si può utilizzare? Un’ esempio potrebbe essere monitorare se ci sono scosse telluriche. Vediamo cosa occorre per questo semplice progetto.
Dopo esserci procurato tutto il materiale, vediamo come sono collegamento tra la schedina Mini D1 o NodeMCU e in sensore MPU-6050.
Per primo facciamo i collegamenti tra il MiniD1 e il sensore MPU-6050 come da schema.
Dopo aver fatto tutti i collegamenti passiamo al codice. Apriamo il nostro Home Assistant, e creiamo un nuovo progetto con ESPHome, Mi raccomando far funzionare il progetto, scegliamo la schedina che abbiamo preso, altrimenti si rischia che non funzioni. Il codice in questione ve lo lascio qui sotto come esempio, sta voi a fare ulteriori modifiche personalizzarlo a vostro piacimento.
i2c:
sda: D1
scl: D2
scan: true
id: bus_a
sensor:
- platform: mpu6050
address: 0x68
accel_x:
id: accel_x
name: "accel X"
filters:
- sliding_window_moving_average:
window_size: 5
send_every: 1
- delta: 0.5
accel_y:
id: accel_y
name: "accel Y"
filters:
- sliding_window_moving_average:
window_size: 4
send_every: 1
- delta: 0.5
accel_z:
id: accel_z
name: "accel z"
filters:
- sliding_window_moving_average:
window_size: 4
send_every: 1
- delta: 0.5
gyro_x:
name: "gyro X"
filters:
- sliding_window_moving_average:
window_size: 4
send_every: 1
- delta: 0.5
gyro_y:
name: "gyro Y"
filters:
- sliding_window_moving_average:
window_size: 4
send_every: 1
- delta: 0.5
gyro_z:
name: "gyro z"
filters:
- sliding_window_moving_average:
window_size: 4
send_every: 1
- delta: 0.5
temperature:
name: "MPU6050 Temperature"
update_interval: 1.5s
- platform: template
id: roll
name: pan1roll
accuracy_decimals: 2
lambda: |-
return (atan( id(accel_y).state / sqrt( pow( id(accel_x).state , 2) + pow( id(accel_z).state , 2) ) ) * 180 / PI) ;
update_interval: 250ms
- platform: template
id: pitch
name: pan1pitch
accuracy_decimals: 2
lambda: |-
return (atan(-1 * id(accel_x).state / sqrt(pow(id(accel_y).state, 2) + pow(id(accel_z).state, 2))) * 180 / PI);
update_interval: 250ms
Una volta che abbiamo caricato il programma dovreste avere questo, vi ricordo che potete personalizzarlo a vostro piacere.
Qui sotto vi lascio i link dove recuperare tutto il necessario, cliccando sul link mi aiutate a sostenere i costi, a voi non cambia nulla . a me mi date un piccoli sostegno