Ir para conteúdo
3DFinder
Entrar

Você está no 3DFinder

Buscamos em Thingiverse, MakerWorld e Printables ao mesmo tempo para te dar o melhor de cada uma.

Buscar mais como este
Modelo 3D Motion Sensor - magic cube por hokagegano no Thingiverse

Descrição

Petit projet sur l'idée d'un pote.

Cube réalisé sous Fusion360, avec 4 faces utilsables. chaque face à sa fonction :

  • Eteint les lumieres du salon
  • Allume les lumières du salon
  • Mode soirée (change les couleurs des lampes du salon toutes les 3 minutes avec transition)
  • Mode Cinéma (basé sous le statut de plex)

A imprimer en 0.20 avec 15% de remplissage, activer les supports pour chacune des pièces.

Code ESPHome

esphome:
  name: chambreami
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "wifi SSID"
  password: "*******"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Chambreami Fallback Hotspot"
    password: "Ax48LmP4nlLxI"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "*******"

ota:
  password: "*******"

i2c:
  - sda: D5
    scl: D3
    scan: True


sensor:
  - platform: wifi_signal
    name: "Chambre ami WiFi Signal Sensor"
    update_interval: 60s
  - platform: uptime
    name: 3D Uptime Sensor
  - platform: mpu6050
    address: 0x68
    update_interval: 2s
    accel_x:
      id: accel_x
      name: "MPU6050 Accel x"      
    accel_y:
      id: accel_y    
      name: "MPU6050 Accel Y"
    accel_z:
      id: accel_z    
      name: "MPU6050 Accel z"
    gyro_x:
      name: "MPU6050 Gyro X"
    gyro_y:
      name: "MPU6050 Gyro Y"
    gyro_z:
      name: "MPU6050 Gyro z"
    temperature:
      name: "MPU6050 Temperature"
  - platform: template
    name: "AccelX"
    id: accelx
    lambda: |-
      if ((id(accel_x).state) > 5) {
      return 10;
      }
      else
      {
      if ((id(accel_x).state) > 0) {
      return 1;
      }
      else {
      return -1;
      }
      }
    update_interval: 2s
  - platform: template
    name: "AccelY"
    id: accely
    lambda: |-
      if ((id(accel_y).state) > 5) {
      return 10;
      }
      else
      {
      if ((id(accel_y).state) > 0) {
      return 1;
      }
      else {
      return -1;
      }
      }
    update_interval: 2s
  - platform: template
    name: "AccelZ"
    id: accelz
    lambda: |-
      if ((id(accel_z).state) > 5) {
      return 10;
      }
      else
      {
      if ((id(accel_z).state) > 0) {
      return 1;
      }
      else {
      return -1;
      }
      }
    update_interval: 2s    
    
text_sensor:    
  - platform: version
    name: "ESPHome Version"
  - platform: wifi_info
    ip_address:
      name: Chambre ami IP Address    
  - platform: template
    update_interval: 2s  
    name: "Move"
    lambda: |-
      if ((((id(accelx).state) == -1.0) && ((id(accely).state) == -1.0) && ((id(accelz).state) == 1.0)) || (((id(accelx).state) == -1.0) && ((id(accely).state) == 1.0) && ((id(accelz).state) == 1.0))) {
      return {"Eteint"};
      }
      else
      {
      if ((((id(accelx).state) == 1.0) && ((id(accely).state) == 10.0) && ((id(accelz).state) == 1.0)) || (((id(accelx).state) == 1.0) && ((id(accely).state) == 10.0) && ((id(accelz).state) == -1.0)) || (((id(accelx).state) == 1.0) && ((id(accely).state) == 10.0) && ((id(accelz).state) == -1.0)) || (((id(accelx).state) == -1.0) && ((id(accely).state) == 10.0) && ((id(accelz).state) == -1.0))) {
      return {"Allume"};
      }
      else
      {
      if ((((id(accelx).state) == 10.0) && ((id(accely).state) == -1.0) && ((id(accelz).state) == -1.0)) || (((id(accelx).state) == 10.0) && ((id(accely).state) == 1.0) && ((id(accelz).state) == 1.0)) || (((id(accelx).state) == 10.0) && ((id(accely).state) == 1.0) && ((id(accelz).state) == -1.0))) {
      return {"Cinema"};
      }
      else
      {
      if ((((id(accelx).state) == 1.0) && ((id(accely).state) == -1.0) && ((id(accelz).state) == -1.0)) || (((id(accelx).state) == 1.0) && ((id(accely).state) == -1.0) && ((id(accelz).state) == 1.0))) {
      return {"Soiree"};
      }
      else
      {
      return {"Rien"};
      }
      }
      }
      }
      

Partie electronique

Brancher :

  • la pin SDA du MPU6050 sur la pin 5 du NodeMCU
  • la pin SCL du MPU6050(parfois SCK) sur la pin 3 du NodeMCU
  • brancher l'alimentation sur 3V (ou VIN)
  • brancher le GND

Exemple de configuration pourHome Assistant

- id: '1585155954250'
  alias: CubeMotionLightOff
  description: CubeMotionLightOff
  trigger:
  - entity_id: sensor.move
    platform: state
    to: Eteint
  condition: []
  action:
  - scene: scene.eteint

- id: '1585155954251'
  alias: CubeMotionLightOn
  description: CubeMotionLightOn
  trigger:
  - entity_id: sensor.move
    platform: state
    to: Allume
  condition: []
  action:
  - scene: scene.allume

A améliorer car le dispositif chez moi se déconnecte regulierement et se reconnecte. Son etat passe donc de Eteint à unknown,et inversement ce qui peut rappeler le script lancé si le cube est encore sur la même face.

EDIT: probleme corrigé ajouter a la balise wifi dans ESPHOME l'option suivante :

power_save_mode: none

Thingiverse

Motion Sensor - magic cube

20
Curtidas
0
Downloads
24
Coleções
Tags
electronics ESP8266 Homeassistant home automation mpu6050 nodemcu NodeMCU ESP8266
Licença Creative Commons - Attribution
Arquivos (2)
Socle_Box_test2.stl 118.5 KB
Box_test1.stl 919.9 KB
Ver no Thingiverse (abre em nova aba)

Gostou deste modelo? Crie uma conta grátis para salvar seus favoritos e voltar a eles depois.

Criar conta