1 pontos por GN⁺ 2023-08-17 | 1 comentários | Compartilhar no WhatsApp
  • Projeto de uma campainha DIY que se integra localmente ao Home Assistant usando ESP32-CAM e ESPHome, para usuários que querem evitar campainhas inteligentes dependentes da nuvem
  • A configuração básica inclui Home Assistant, o add-on ESPHome e o app complementar móvel do Home Assistant; ao acionar o botão, uma captura da câmera é enviada como notificação ao celular
  • O hardware é composto por ESP32-CAM, botão de pressão momentâneo, anel de LED RGB 8, cabo Micro USB de 10 m e um gabinete impresso em 3D; o LED embutido pode substituir o flash
  • Dependendo da variante do ESP32-CAM, a disposição dos pinos e o comportamento de pulldown podem variar, então é necessária uma ligação com resistor de pulldown de 10kΩ entre a entrada do botão no GPIO14 e o GND
  • O gabinete em PLA foi usado no exemplo de impressão, mas PETG ou ABS são mais adequados para resistência à água, e por causa da abertura da câmera é necessário instalar em um local protegido da chuva

Configuração da campainha local e materiais necessários

  • Esta campainha inteligente tem como objetivo uma configuração amigável à privacidade e se integra ao Home Assistant por meio do ESPHome
  • Para começar, é necessário ter a seguinte configuração
    • Uma instância do Home Assistant em execução
    • O add-on ESPHome
    • O app complementar móvel do Home Assistant para receber notificações de pressionamento do botão
  • Na montagem de exemplo foi usado um anel de luz RGB 8, mas ele pode ser omitido para simplificar, usando o LED embutido do ESP32-CAM como flash
  • A versão AI-Thinker do ESP32-CAM pode não ter todos os resistores de pull-up e pull-down como um ESP32 comum
    • Foi tentado o recurso INPUT_PULLDOWN do ESPHome no GPIO14, mas não funcionou
    • Como existem muitas variantes chinesas do ESP32-CAM, pode haver diferenças entre placas

Componentes e arquivos públicos

  • Os principais componentes são os seguintes
    • ESP32-CAM
      • Recomenda-se uma placa com botão flash/download/io0 para facilitar a primeira gravação com o ESPHome
      • Placas sem esse botão precisam ser gravadas usando um adaptador FTDI
    • Botão de pressão momentâneo
    • Anel de luz RGB 8
    • Cabo Micro USB de 10 m
  • Os arquivos de impressão 3D e de configuração estão disponíveis publicamente

Impressão e montagem do gabinete

  • O gabinete é impresso em três partes
    • Corpo principal
    • Placa de fixação do ESP32-CAM
    • Placa traseira que também serve como suporte de parede
  • Os gabinetes frontal e traseiro devem ser impressos com suportes
  • A impressão de exemplo usou PLA, mas para resistência à água são recomendados filamentos PETG ou ABS com preenchimento de 20 a 30%
  • Após a impressão, são adicionados dois inserts roscados M2.5
    • Inseridos na tampa frontal para apertar o suporte de fixação do ESP32-CAM
    • Inseridos na parte inferior da placa traseira para fixar a faceplate com parafusos M2.5 de 10 mm

Gravando o ESP32-CAM com ESPHome

  • Para iniciar o ESP32-CAM em modo de gravação, mantenha pressionado o botão flash/download/io0 enquanto conecta-o ao computador com um cabo Micro USB
  • No Home Assistant, abra o add-on ESPHome e crie um novo dispositivo
    • O caminho é Settings -> Add-ons -> ESPHome -> Open Web UI
    • O nome do novo dispositivo pode ser definido, por exemplo, como Doorbell
    • Selecione ESP32 como tipo de dispositivo e marque use recommended settings
  • No YAML gerado, cole o código de configuração do repositório GitHub abaixo de captive_portal:
  • Clique em Save e Install, depois escolha Plug into this computer
  • Grave o firmware pelo navegador usando o ESPHome Web
    • O Google Chrome é o navegador mais estável para gravar firmware no ESP32-CAM
    • Após a compilação do firmware, é possível clicar em Download Project, e isso pode levar alguns minutos
  • Depois que o novo firmware for gravado, o Home Assistant detectará o novo dispositivo e você poderá adicionar as entidades desejadas ao dashboard

Automação de notificação do botão

  • Quando o botão da campainha é pressionado, é configurada uma automação para tirar uma captura da câmera e enviá-la ao celular
  • No Home Assistant, crie uma nova automação
    • O caminho é Settings -> Automations -> + Create Automation
    • Crie uma nova automação do zero e, no menu no canto superior direito, selecione Edit in YAML
  • Cole o YAML de automação do repositório GitHub e ajuste o nome da entidade do dispositivo, como o celular, de acordo com o seu ambiente
  • Depois de salvar, reinicie o Home Assistant para ativar a nova automação

Limitações de fiação e instalação

  • Existem várias variantes da placa ESP32-CAM, então é necessário verificar a disposição dos pinos da placa real
  • A fiação é montada soldando na parte traseira da PCB inferior onde fica a porta Micro USB
  • Adicione um resistor de pulldown de 10kΩ entre o GPIO14 e o GND
    • Sem esse resistor, foi observado que o GPIO14 frequentemente ficava flutuando em estado high
    • Recomenda-se envolver o resistor com tubo termoencolhível
  • Por causa da abertura da câmera embutida, a estrutura não é totalmente à prova d’água e deve ser instalada em um local protegido da chuva
  • A alimentação é fornecida por meio do cabo Micro USB de 10 m incluído na lista de componentes

1 comentários

 
GN⁺ 2023-08-17
Opiniões no Hacker News
  • Legal. Também gostei da iluminação
    Também dá para prender um reed switch (como um sensor comum de abertura/fechamento de porta) perto da bobina magnética que toca a campainha burra e fazer isso enviar a informação para o Home Assistant
    Conectei um reed switch de US$ 0,50 à campainha existente e o levei até uma porta digital de E/S de um ESP alimentado pela mesma fonte da bobina da campainha. Quando a campainha é pressionada, ele envia um snapshot por e-mail da câmera local da entrada e toca uma gravação do carrilhão da campainha no estéreo do andar de cima. Originalmente eu tentei monitorar a tensão da bobina com uma entrada analógica, mas era instável demais; o método mais simples com reed switch detecta a corrente de forma muito estável

    • A ideia de usar a mesma fonte da bobina da campainha é ótima. Fico pensando que outras fontes de tensão meio ambíguas existem dentro de casa. Unidades de controle de HVAC, linhas telefônicas analógicas e coisas do tipo
      Linhas telefônicas POTS (Plain Old Telephone Service) devem fornecer cerca de 48 V DC quando todos os telefones estão no gancho. Quando um telefone na mesma linha sai do gancho, cai para a faixa de 3 a 9 V. Um telefone fora do gancho normalmente consome cerca de 20 mA DC para operar, e sua resistência DC é de cerca de 180 Ω. O restante da queda de tensão ocorre no caminho do fio de cobre e nos circuitos da companhia telefônica, que normalmente têm resistores em série de 200 a 400 Ω para proteção contra curto-circuito e isolamento do circuito de áudio
      https://www.jkaudio.com/article_03.htm
    • Fiz exatamente da mesma forma, e coloquei um sensor de contato Aqara Zigbee que tem um reed switch interno dentro da campainha propriamente dita. Havia um espaço plano bem em cima da bobina, então funciona bem
    • Você tem problema de o reed switch grudar e não soltar? Para esse uso, um sensor Hall funcionou muito bem para mim, mas talvez eu só tenha visto reed switches de baixa qualidade
    • Reed switches são excelentes para usar desse jeito
      Usei de forma parecida, preso na parte superior da caixa de um relé, para detectar se a bobina estava energizada sem cutucar diretamente o circuito de controle ou o circuito da carga
  • Tudo o que quero nesses dispositivos IoT é que não dependam da nuvem e usem PoE. Prefiro passar bilhões de fios a lidar com baterias burras que morrem o tempo todo. O preço das baterias também está ficando caro demais

    • Para DIY IoT, veja ESP32 com PoE
      Sem isolamento: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
      Com isolamento: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
    • Exato. Passar um cabo uma vez dá bastante trabalho, mas no pior caso cresce linearmente. Quanto mais dispositivos, mais fios são necessários, e como dá para ramificar a partir de caixas de conexão existentes, talvez até fique mais perto de um crescimento logarítmico
      Trocar uma bateria uma vez por ano é pouco trabalho, mas com dezenas de dispositivos isso se acumula rápido e se repete periodicamente, então não é melhor que crescimento linear
    • Para esse tipo de uso, acho que Zigbee é um ótimo protocolo. Funciona localmente, nem entra no Wi-Fi, e os sensores duram anos com uma única bateria tipo moeda
    • Quero energia solar. A campainha não é pressionada, sei lá, uma vez a cada 5 dias? Basta cobrir a caixa com um painel solar e colocar um supercapacitor para alimentar à noite
    • Essas baterias são realmente um saco. Dispositivos a bateria também tendem a ser instáveis. Toda semana é preciso parear alguma coisa de novo ou trocar bateria
      Quando eu tiver minha própria casa, pretendo ir de KNX
  • Fugindo um pouco do assunto, minha esposa tem ADD bem forte e vive perdendo coisas. Tile só encontra objetos dentro de uma certa distância e parece quebrar com frequência
    Sei que é pouco provável, mas fico curioso se alguém já criou um sistema de localização indoor que encontre objetos em um espaço 3D com erro de alguns centímetros usando beacons Bluetooth Low Energy dentro de casa
    Mais próximo do tema: o ESP32 é bem incrível. Só que com MicroPython ou CircuitPython eu não consegui manter a conexão Wi-Fi de forma confiável, mas a gama de coisas possíveis é surpreendente. Minha placa é bem antiga, então talvez comprar uma placa nova faça diferença

    • DIY AirTags: https://github.com/seemoo-lab/openhaystack
    • Tenho uma placa ESP32 devkit rodando MicroPython, conectada a Wi-Fi e MQTT, enviando valores de sensores 24 horas por dia, e ela funciona sem problemas há semanas
    • Não corresponde exatamente aos requisitos, mas você já experimentou https://www.room-assistant.io/?
    • Se era MicroPython ou CircuitPython, não sei o que você esperava. Em sistemas embarcados que exigem confiabilidade, isso é praticamente proibido
  • É interessante que, em algumas partes do mundo, a existência da campainha seja tão importante que surge até a necessidade de torná-la “inteligente”. O sucesso dos produtos de campainha inteligente mostra bem essa demanda
    Eu não tenho campainha. Se um visitante não sabe como entrar em contato comigo ou com outra pessoa da casa, é bem provável que ele não tenha muito motivo para estar ali, para começo de conversa
    E não sou só eu. Em uma pesquisa nada científica que fiz caminhando na semana passada, a maior parte da minha rua parecia igual, e provavelmente a maior parte da minha cidade também

    • Isso soa bem frio. Quando comprei minha casa e me mudei, os vizinhos vieram se apresentar, e alguns até trouxeram presentes de boas-vindas. Eu não gostaria de me desconectar assim da vida comunitária do bairro
    • Parte da demanda por campainhas inteligentes parece ser para lidar com o problema de visitantes desconhecidos. Elas avisam quem está à porta mesmo quando o morador não está em casa, e podem esconder o fato de que a casa está vazia
    • As casas no Reino Unido são tão pequenas que normalmente bater à porta basta
      Campainhas parecem anacrônicas. Quase ninguém na minha rua tem uma
    • Você nunca pede entregas pela internet? Nunca recebeu uma carta registrada da autoridade fiscal? O motivo de a campainha inteligente ter se popularizado em especial é que ela fica em um local onde é fácil se conectar à energia que já existe do lado de fora da casa
    • Acho que não foi tanto que as pessoas realmente quisessem tornar a campainha “inteligente”; foi mais que a evolução dos eletrônicos de consumo tornou fácil instalar uma câmera de segurança/vigilância em um ponto de alta prioridade, a entrada, usando uma alimentação de cerca de 20 V que já está cabeada até um local perfeito na maioria das casas
  • Pelas avaliações que vi, a câmera de campainha da Reolink parece ser a única opção comercial que atende aos requisitos do autor. Funciona localmente e pode ser integrada ao Home Assistant
    Porém, para o interfone é necessário um app separado. A solução feita pelo próprio autor não parece oferecer comunicação de áudio e, pelo menos usando só o protocolo da câmera, também não parece haver uma forma de usar áudio bidirecional diretamente no Home Assistant

    • E a UniFi Doorbell? Ela não exige conexão com a nuvem, fica local e pode ser integrada ao HomeAssistant / Scrypted / Homebridge
    • A Amcrest também fabrica produtos que oferecem suporte a uso apenas local e se integram ao Home Assistant
  • O ESP32 parece mesmo uma toca de coelho profunda. Já existem muitos projetos que usam ESP32 ou estão sendo desenvolvidos com ele, e agora tenho mais uma coisa para considerar

    • Que tipo de coisas você está construindo?
  • Projeto bacana. A câmera ESP32 pode ter qualidade de imagem bem ruim. Seria útil se o blog tivesse uma foto em resolução completa tirada pela campainha

  • Excelente projeto. É legal ver a variedade de campainhas ESP32 que os makers estão criando
    Seria bom ter um vídeo ou fotos de exemplo. Usei uma ESP32 Cam no passado e, embora ela impressione por si só, pessoalmente não tinha a qualidade que eu queria. Claro que, no meu caso, o uso de uma campainha inteligente é mais voltado para segurança do que simplesmente para “ver quem está lá”

  • No momento estou usando uma campainha PoE bem cara que comprei no estado AS-IS para economizar. É um produto da Axis Communications
    Gosto muito da capacidade de receber eventos ONVIF. Se você consegue consumir os eventos, basicamente pode fazer o que quiser, o que aumenta a flexibilidade desse tipo de produto. Por exemplo, há até uma forma de criar eventos personalizados, como quando alguém cobre a lente da câmera com a mão
    O Home Assistant tem excelente suporte a ONVIF. Eu gostaria de criar uma espécie de wrapper em torno de scripts (como um booleano de porta aberta/fechada) para obter eventos ONVIF nativos

  • Um dos comentários deste site apontou o problema de desempenho do ESP32. Nunca mexi com dispositivos IoT nem com placas desse tipo, mas elas são relativamente baratas, então fiquei com vontade de experimentar; ao pesquisar, descobri que o ESP32 é fabricado em processo de 40 nm
    Fiquei curioso para saber se existe uma versão mais recente fabricada em um processo mais avançado, com desempenho maior dentro de um orçamento de energia semelhante

    • Dois núcleos RISC de 240 MHz são bem potentes. 40 nm não é ruim para um microcontrolador. Por exemplo, a série nRF52 da Nordic, concorrente, é fabricada em processo de 55 nm
    • Não exatamente. Existem versões mais recentes do chip, incluindo versões RISC-V e Zigbee/Thread, mas é difícil ver melhorias dramáticas em desempenho/energia. Nesse segmento de mercado, limitações de desempenho são comuns, e esse é o trade-off aceito
      Há famílias de SoC que oferecem trade-offs melhores, mas poucas são tão amigáveis para hobbystas quanto o ESP32. Talvez a Nordic, ou ir para o lado de pequenos computadores de placa única, como o Pi Zero
      Ainda assim, o ESP32 é muito mais potente do que a maioria dos dispositivos de automação residencial precisa. Ele só começa a bater em limites em algumas tarefas mais pesadas, como streaming de vídeo ou machine learning. Mesmo assim, com alguma esperteza, dá para fazer bastante coisa