Índice:

TinyLiDAR na sua garagem !: 10 etapas
TinyLiDAR na sua garagem !: 10 etapas

Vídeo: TinyLiDAR na sua garagem !: 10 etapas

Vídeo: TinyLiDAR na sua garagem !: 10 etapas
Vídeo: Technical Presentation of tinyLiDAR's Command Terminal Sketch 2024, Novembro
Anonim
TinyLiDAR em sua garagem!
TinyLiDAR em sua garagem!

Projeto DIY WiFi Abridor de Porta de Garagem

O mundo da IoT está apenas começando a explodir - todas as empresas de tecnologia do mundo estão tentando descobrir como se encaixarão neste novo mundo. É uma oportunidade tão grande! Portanto, para que seja instrutível, de acordo com o tema IoT, veremos como você pode fazer seu próprio demonstrador de IoT que é realmente útil;)

Resumo de TL; DR

  • configurar um fluxo de trabalho confiável para codificar o módulo WiFi ESP32
  • piscar
  • monte-o em sua placa de ensaio
  • baixe o código do nosso aplicativo e descompacte-o
  • adicione suas credenciais de WiFi e IP estático
  • conecte-o à sua rede WiFi
  • edite limites e monte-os em sua garagem
  • conecte-o aos contatos do abridor da porta da garagem
  • e clique fora!
  • NÃO É NECESSÁRIA SOLDA (exceto para os pinos para quebrar as placas, se necessário)

Peças necessárias

  • tinyLiDAR tempo de módulo de sensor de distância de voo
  • Wipy3.0 ou placa WiFi baseada em ESP32 semelhante
  • Relé de estado sólido opticamente isolado (Omron G3VM-201AY1) para controlar o mecanismo de abertura da porta da garagem
  • Resistor de 470 ohm (5% 1 / 8watt ou maior está certo)
  • Botão de pressão momentâneo para o pino BOOT (GPIO0) para atualizar o firmware na placa ESP32
  • USB para dongle serial para carregar o código e interagir com REPL no ESP32 (use a versão 3.3v I / O)
  • Placa de ensaio + fios
  • Fonte de alimentação: 3,3 V a 5 V a 500 mA ou superior. Você pode usar um carregador de telefone celular microUSB para a fonte de alimentação e placa de breakout microUSB para conectar em sua placa de ensaio.

Etapa 1: IoT O quê?

IoT O quê?
IoT O quê?

Sem dúvida, você já ouviu falar do termo IoT em toda a mídia, mas o que isso significa?

Em termos gerais, significa conectar todos os tipos de sensores e coisas controláveis à Internet. Hoje em dia, a Internet é sinônimo de wireless e, portanto, temos tudo eletrônico de repente se tornando conectado através de algum tipo de link wireless como WiFi / BT / LoRa / SigFox etc. Uma vez conectado à Internet, podemos sentir e / ou controlar essas coisas de nosso controlador móvel favorito, como nosso celular, ou automatizá-los por meio de algum aplicativo em execução em um servidor em algum lugar (ou seja, a nuvem).

Embora as empresas maiores tenham comercializado mais controle de voz, IA e conectividade em nuvem recentemente; os fundamentos para fazer tudo isso acontecer ainda são os mesmos. Você precisa conectar seu "objeto" a um link sem fio antes que qualquer um desses conceitos seja possível. Portanto, vamos começar com o básico e aprender como conectar o sensor de distância de tempo de voo tinyLiDAR a um módulo WiFi de baixo custo e, em seguida, mostrar o envio de dados para frente e para trás pela rede. No final deste instrutível, você terá seu próprio controle remoto de porta de garagem habilitado para WiFi funcional com um monitor em tempo real para verificar se a porta está aberta ou fechada.

Tecnicamente falando, conforme mostrado no diagrama de blocos acima, este projeto implementa um servidor web micropython rodando em um módulo WiFi ESP32 usando o protocolo de comunicação 'websockets' para passar dados de qualquer navegador móvel. Somado a isso, temos o minúsculo sensor de tempo de distância de vôo LiDAR que faz medições sob demanda para que você possa verificar se a porta da garagem foi deixada aberta.

Etapa 2: Experimente - Não, Realmente, Experimente Agora

Experimente - Não mesmo, experimente agora
Experimente - Não mesmo, experimente agora

Este é um campo relativamente novo na eletrônica, então haverá muita experimentação necessária para fazer as coisas funcionarem corretamente. Nossa esperança é que você seja capaz de construir nesta base de código e fazer seus próprios projetos IoT mais interessantes.

Todo o código usado neste artigo funcionava bem no momento da redação deste artigo. No entanto, como a taxa de inovação no espaço de IoT está aumentando, as coisas podem ter mudado no momento em que você lê isto. Em qualquer caso, trabalhar os problemas e adaptá-los para seu próprio uso irá pelo menos colocar sua cabeça neste novo espaço empolgante e começar a pensar como um Engenheiro de IoT!

Preparar? Vamos começar com a primeira etapa de configuração de seu próprio ambiente de desenvolvimento estável.

Etapa 3: Micropython e ESP32

Micropython e ESP32
Micropython e ESP32

Os módulos ESP32 WiFi foram criados pela Espressif e melhoraram muito desde a sua primeira geração de módulos ESP8266 de apenas alguns anos atrás. Essas novas versões têm muito mais memória, processador mais forte e mais recursos do que os módulos originais e ainda são de baixo custo. O diagrama acima dá uma ideia de quanto eles foram capazes de incluir neste pequeno chip ESP32. O próprio ESP32 IC é um microcontrolador dual core com um rádio WiFi 802.11b / g / n e também um rádio Bluetooth 4.2 integrado. Os módulos baseados em ESP32 normalmente adicionam uma antena, memória FLASH extra e reguladores de energia.

Observe que quando dizemos módulo ESP32 neste instrutível, estamos nos referindo às placas Pycom Wipy3.0 que são baseadas no chip / módulo ESP32. Em nossa experiência, as placas Pycom parecem ter uma qualidade de construção superior do que os módulos ESP32 de baixo custo típicos disponíveis. Durante o desenvolvimento, é sempre útil reduzir o máximo de variáveis possível, por isso optamos pelas placas Pycom em vez de genéricos de baixo custo.

Para aplicativos OEM, a codificação ESP32 é normalmente feita em linguagem C, mas felizmente também há muitas opções para escolhermos, então você não terá que descer a esse nível se não quiser. Optamos por usar micropython para toda a nossa codificação neste instrutível.

Micropython, como você deve ter imaginado, é um subconjunto da linguagem de programação Python completa que capacita alguns mecanismos de pesquisa menos conhecidos e sites como Google, YouTube e Instagram;)

Micropython-logo
Micropython-logo

Micropython começou como um projeto kickstarter originalmente para o processador STM32, mas se tornou muito popular para muitos microcontroladores diferentes agora. Estamos usando a porta Pycom ESP32 oficial mais recente do micropython aqui.

Etapa 4: o caminho mais rápido

O Caminho Mais Rápido
O Caminho Mais Rápido

O código do micropython possui uma interface de usuário simples chamada REPL, que significa "Read – Eval – Print Loop". O REPL do ESP32 normalmente é executado a 115,2 Kbaud, pois é acessado por meio da porta serial. A imagem acima mostra este prompt REPL representado por suas três setas esperando por comandos diretos. É uma maneira fácil de tentar nossos comandos simples e a maioria dos programadores a usa para desenvolver seu software, mas descobrimos que é uma maneira dolorosamente lenta de prosseguir. Por isso decidimos fazê-lo de uma forma diferente para este instrutível …

Como os módulos ESP32 têm conectividade WiFi rápida, só precisamos acessar o módulo por WiFi por meio de um servidor FTP que já está embutido no código do micropython padrão. Isso nos permitirá usar clientes FTP como o FileZilla para simplesmente arrastar e soltar nosso código no ESP32.

Então, para fazer isso, precisamos primeiro colocar o módulo ESP32 em sua rede sem fio. Os módulos Wipy3.0 executam um pequeno ponto de acesso por padrão na inicialização, para que você possa se conectar diretamente a eles de um laptop em 192.168.4.1. Confira mais detalhes aqui se você gosta deste método.

Trabalhamos em desktops em nosso laboratório, por isso queríamos que os módulos ESP32 se conectassem à nossa rede. Para fazer isso, só precisamos fornecer ao módulo um endereço IP estático e nossas informações de senha para fazer logon em nossa rede sem fio.

Etapa 5: Baixe agora

Baixe Agora
Baixe Agora
Baixe Agora
Baixe Agora
Baixe Agora
Baixe Agora
Baixe Agora
Baixe Agora

Baixe o código do aplicativo agora e descompacte os arquivos em uma pasta temporária em seu computador. Em seguida, comece a editar os arquivos de script mywifi.txt e boot.py com suas próprias credenciais de rede sem fio.

A propósito - nosso editor de texto favorito ainda é o SublimeText. Ele pode ser baixado aqui.

Você também deve baixar o software de terminal TeraTerm e o software FileZilla FTP agora, se ainda não os tiver em seu computador.

Você terá que configurar o FileZilla conforme mostrado nas imagens acima. Também no gerenciador de sites você precisa "adicionar novo site" para o login do ESP32 usando o endereço IP estático que você escolheu como mostrado acima. O usuário é "micro" e a senha é "python". É importante usar FTP passivo e limitá-lo a apenas conexões únicas. Descobrimos que limitar a velocidade de upload também ajudou a evitar travamentos de upload. Embora não seja mostrado nas fotos, seria útil associar o programa SublimeText aos tipos de arquivo para que você possa editar o código clicando duas vezes no lado esquerdo da tela do FTP. Para fazer isso, basta ir ao menu Configurações e em Edição de arquivo / Associações de tipo de arquivo inserir a localização do seu arquivo exe SublimeText para cada associação. Por exemplo, o nosso era:

js "C: / Sublime Text Build 3065 x64 / sublime_text.exe"

. "C: / Sublime Text Build 3065 x64 / sublime_text.exe" htm "C: / Sublime Text Build 3065 x64 / sublime_text.exe" html "C: / Sublime Text Build 3065 x64 / sublime_text.exe" py "C: / Sublime Text Build 3065 x64 / sublime_text.exe "css" C: / Sublime Text Build 3065 x64 / sublime_text.exe"

Copie os arquivos do aplicativo extraídos para este instrutível para uma nova pasta chamada "FTP" em seu computador como fizemos. Será mais fácil arrastar daqui para dentro do FileZilla mais tarde.

Normalmente, é uma boa ideia ter o firmware mais recente em execução no ESP32. Atualizar os módulos Pycom para usar o micropython mais recente é muito simples e pode ser feito em cerca de 3 minutos com sua ferramenta de atualização de firmware.

Apenas certifique-se de definir a porta COM do seu USB como dongle serial e desmarque o modo de alta velocidade conforme mostrado na imagem "Comunicação" acima. A nossa era a porta COM 2. Observe que para colocar os módulos ESP32 neste modo de atualização, você terá que pressionar o botão GPIO0 / Boot (no pino P2) enquanto pressiona e solta o botão Reset.

Etapa 6: Tempo de Hardware

Tempo de Hardware
Tempo de Hardware
Tempo de Hardware
Tempo de Hardware

Agora seria um bom momento para conectar o hardware em uma placa de ensaio, conforme mostrado no diagrama esquemático ilustrado acima.

Depois que tudo estiver concluído. Inicie o software do terminal com a porta COM adequada para o seu dongle USB para serial, defina-o para 115,2 Kbaud.

Na inicialização, o módulo deve mostrar o prompt REPL familiar que fornece três setas ">>>".

Agora vá para o arquivo mywifi.txt editado e copie todo o conteúdo (CTRL + C). Em seguida, vá para a tela do terminal REPL e pressione CTRL + E para entrar no modo recortar e colar. Em seguida, clique com o botão direito para colar o conteúdo na tela REPL e pressione as teclas CTRL + D para executar o que colou.

Deve iniciar uma contagem regressiva imediatamente para dizer que está tentando se conectar à sua rede sem fio. A captura de tela acima mostra uma mensagem de conexão bem-sucedida.

Uma vez conectado, você pode usar o FileZilla para se conectar ao servidor FTP nos módulos no endereço IP estático que você já escolheu em seus arquivos mywifi.txt e boot.py.

Etapa 7: Ainda está conosco?

Ainda está conosco?
Ainda está conosco?
Ainda está conosco?
Ainda está conosco?

Se tudo bem feito até agora, bom para você! O trabalho árduo está feito:) Agora será uma viagem tranquila - basta cortar e colar um monte e você estará pronto e funcionando para poder montá-lo em sua garagem.

Para editar qualquer código, você pode clicar duas vezes no lado esquerdo da janela do FTP no FileZilla e ele iniciará o SublimeText. Salve suas alterações e arraste-o para o lado direito, que é a janela ESP32.

Por enquanto, basta arrastar os arquivos do lado esquerdo para o lado direito do FileZilla para fazer upload de cada arquivo separadamente para o módulo ESP32. Isso leva apenas alguns segundos curtos em vez de minutos, como o método REPL normal faz. Observe que todos os arquivos devem estar no diretório raiz chamado "flash" dentro da placa Pycom. Você pode fazer um favorito no FileZilla para tornar mais fácil voltar aqui na próxima vez.

Se você tiver um problema onde o FileZilla trava e atinge o tempo limite para o upload, você notará um arquivo no lado ESP32 que tem 0 bytes. Tentar escrever sobre ele pode deixá-lo louco, pois nunca termina, não importa o que você tente! É um estado muito estranho e acontece com muita frequência. A melhor solução para isso é excluir o arquivo de 0 byte e desligar e ligar o módulo. Em seguida, obtenha uma cópia FRESH do arquivo de origem para fazer o upload novamente para o módulo ESP32. Observe que uma nova cópia é a chave aqui. De alguma forma, o arquivo de origem simplesmente não carrega corretamente se ele travar assim, mesmo que uma única vez.

Descobrimos que ajuda arrastar cada arquivo individualmente para o módulo ESP32 começando com boot.py. Este primeiro arquivo é responsável por colocar seu módulo na rede para que você não precise mais fazer o recortar e colar no REPL. No entanto, você pode pegar a pasta www e arrastá-la de uma só vez. Isso sempre funcionou para nós em nosso desenvolvimento. Todos esses arquivos são armazenados no armazenamento flash não volátil integrado no módulo ESP32 para que estejam lá depois que a energia for removida. Apenas fyi - o main.py será executado após boot.py cada vez que o módulo for ligado.

Etapa 8: dicas de hacking

Dicas de hacking
Dicas de hacking

Dê uma olhada em todo o código e tente pesquisar no Google por palavras-chave que você não reconhece. Depois que tudo estiver instalado e funcionando, você pode tentar mudar o que quiser para ver o que faz.

Se algo der errado, você sempre pode limpar o código e / ou atualizar o módulo em cerca de 3 minutos, como você já fez anteriormente.

Para reformatar o flash e limpar todo o seu código de uma vez, você pode digitar o seguinte em REPL:

importar os

os.mkfs ('/ flash')

Em seguida, desligue e ligue a alimentação ou pressione o botão de reinicialização na placa Wipy.

Observe que também há outra maneira de contornar boot.py e main.py se as coisas ficarem loucas para você. Apenas conecte temporariamente o pino P12 ao pino de saída de 3,3 V e pressione o botão Reiniciar conforme mostrado acima. Ele irá ignorar todo o seu código e ir direto para o REPL uma vez para que você possa descobrir as coisas sem excluir todo o seu código do flash.

Depois de fazer o upload de todos os arquivos, basta clicar no botão Reiniciar no módulo ESP32 para reiniciá-lo.

Você verá a familiar contagem regressiva na tela do terminal REPL conforme ele se conecta à sua rede WiFi novamente. A diferença é que agora esse código está sendo executado a partir do arquivo boot.py desta vez.

Etapa 9: páginas da web

Paginas web
Paginas web
Paginas web
Paginas web
Paginas web
Paginas web
Paginas web
Paginas web

O microwebserver deve estar instalado e funcionando agora no ESP32, portanto, experimente-o usando o navegador do seu desktop ou dispositivo móvel.

Basta acessar seu endereço IP estático e você verá uma tela semelhante à acima.

Existem duas páginas da web sendo servidas de nosso microwebserver que está sendo executado no ESP32.

A primeira é a página index.html padrão, que oferece um botão ABRIR / FECHAR simples para simular o controle de abertura de porta de garagem que você possui. Ao pressioná-lo no navegador da web, você verá um grande ícone de engrenagem azul aparecendo. Esta é uma confirmação de que a conexão do websocket foi feita com sucesso e você recebeu uma confirmação do servidor de que seu comando "pressione" foi recebido corretamente. Você também deve ver um LED verde brilhante acender na placa Pycom ao pressionar este botão. A conexão websockets está transmitindo os estados do botão enviando mensagens de texto simples de "pressione" ao pressioná-lo e "pressione para cima" ao soltá-lo. Para reconhecimento, o microwebserver está enviando de volta este texto, mas adicionando "_OK" a ele para dizer que o recebeu corretamente.

Depois de conectar os terminais de relé de estado sólido (SSR) opticamente isolado ao abridor de porta de garagem (consulte o diagrama esquemático ilustrado), pressionar o botão também abrirá / fechará fisicamente a porta.

Aguarde alguns segundos e tente novamente se você não vir o ícone de engrenagem azul aparecendo, pois pode ser reiniciado ou algo assim. Observe que o websocket fechará automaticamente em cerca de 20 segundos se você não o estiver usando para evitar travamentos. Observe também que os websockets são orientados à conexão, então você precisa interromper o websocket para mudar as páginas ou então você não será capaz de se conectar novamente até que você reinicie o módulo ESP32. Para nosso código de exemplo, temos algumas maneiras de parar o websocket: toque no texto de status, pontos giratórios ou no hiperlink para ir para a próxima página.

A segunda página da Web é para leitura de medições de distância do tinyLiDAR tempo de sensor de distância de vôo. Basta pressionar o botão uma vez e ele começará a transmitir as leituras de distância para o seu dispositivo móvel por cerca de 20 segundos. Conforme você pressiona, um LED vermelho acende na placa Pycom para que você possa dizer que está recebendo o comando de pressionar o botão desta página.

Ambas as páginas fornecem uma indicação de que a porta está aberta ou fechada ao ler a distância do tinyLiDAR. A variável doorThreshold precisa ser definida em ambos os arquivos html na seção de script, conforme mostrado aqui:

//--------------------------

// **** Ajuste conforme necessário **** var doorThreshold = 100; // distância em cm var ws_timeout = 20000; // tempo máximo em ms para permitir que a porta abra / feche o padrão é 20 segundos // -------------------------- // --- -----------------------

Você terá que editar este limite para a configuração de sua garagem para que ele possa detectar quando a porta da garagem é fechada e, portanto, ABERTA ou aberta e, portanto, FECHADA. Depois de fazer as edições para seu limite em ambos os arquivos html, carregue esses arquivos html novamente e reinicie-o para verificar se tudo ainda está funcionando bem.

Se tudo estiver certo, você pode agora ir em frente e montar a prancha de cabeça para baixo em sua garagem, conforme mostrado na imagem acima. Ligue os pinos 3 e 4 do SSR ao controle remoto da porta da garagem também. A polaridade não é importante, uma vez que estamos usando uma versão MOSFET do SSR - ele só precisa encurtar os contatos para simular um clique de botão na unidade de base da porta da garagem.

Etapa 10: E é isso

E é isso!
E é isso!

Parabéns! Abrir a porta da garagem agora é tão fácil quanto tocar em seu telefone e você pode verificar se ela foi deixada aberta ou não fazendo medições em tempo real com tinyLiDAR:)

Agora você também pode usar o ESP32 com websockets sobre WiFi para quase tudo que quiser. Leia mais sobre "websockets" se você não estiver familiarizado com eles - eles são muito rápidos e fáceis de usar.

Implementar o tinyLiDAR com o ESP32 também foi muito fácil, embora o sensor tenha sido originalmente projetado para funcionar em um Arduino UNO. Temos uma versão beta mais elaborada da GUI do Terminal que executa a maioria dos comandos tinyLiDAR em micropython no ESP32 - veja a imagem acima. Está disponível em nossa seção de downloads junto com o manual de referência, etc.

Dê uma olhada em todo o nosso código para entender como tudo se junta e tente mudar as coisas para que você possa construir sobre ele para fazer o que quiser.

Lembre-se de que não houve menção de segurança aqui. A segurança é uma área enorme na IoT e deve ser levada a sério. Se você deseja usar este projeto em sua garagem, você deve manter suas senhas de rede WiFi fortes e seguras. Há muitas informações na web sobre segurança, portanto, certifique-se de ler as últimas novidades e ficar por dentro delas.

Obrigado por ler e feliz hacking! Saúde.

Recomendado: