Índice:

Botão de porta virtual usando Mongoose OS e XinaBox: 10 etapas
Botão de porta virtual usando Mongoose OS e XinaBox: 10 etapas

Vídeo: Botão de porta virtual usando Mongoose OS e XinaBox: 10 etapas

Vídeo: Botão de porta virtual usando Mongoose OS e XinaBox: 10 etapas
Vídeo: NODEJS E EXPRESS: USANDO MONGOOSE E CRIANDO MODELO 2024, Novembro
Anonim
Botão de porta virtual usando Mongoose OS e XinaBox
Botão de porta virtual usando Mongoose OS e XinaBox

Usando o Mongoose e alguns xChips, criamos um botão de porta virtual. Em vez de um botão físico para chamar a equipe, eles agora podem fazer isso sozinhos.

Etapa 1: Coisas usadas neste projeto

Componentes de hardware

  • XinaBox CW02 x 1 Você pode usar o CW01 em vez disso
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Você pode apenas usar o IP01 para energia, se você não pretende programar mais módulos.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 A "cola" que faz tudo funcionar!

Aplicativos de software e serviços online

Mongoose OS Ferramenta de desenvolvimento de IoT realmente incrível e fácil … e grátis

Etapa 2: História

Na nossa recepção o nosso pessoal precisava de um zumbido, por isso decidimos tomar o nosso próprio remédio e criar um botão virtual. Este código permite enviar um RPC (Remote Procedure Call), que se parece com uma chamada HTTP normal a partir de qualquer navegador. Usamos o Mongoose, já que é muito fácil e rápido de trabalhar e tem atualização de código OTA (Over The Air) embutida, significa que poderíamos instalar nossa tecnologia e ainda com o tempo atualizar o firmware, sem desmontá-lo para reprogramação.

Etapa 3: Preparação

  • Instale o Mongoose-OS: direto, basta seguir estas etapas muito fáceis para o seu sistema operacional aqui:
  • Clique em IP01 e CW02 juntos usando um conector XC10. Veja a imagem abaixo:
Imagem
Imagem
  • Insira o IP01 em sua porta USB
  • Certifique-se de que as chaves IP01 estão na posição B e DCE.
  • Atualize o Mongoose-OS para CW02 a partir de sua linha de comando. Assim:

CD

export MOS_PORT = bin / mos flash esp32

Você também pode simplesmente entrar no console e fazer mais a partir dele, mas aqui fazemos isso na linha de comando, então o trabalho é feito rapidamente. Para entrar no console:

CD

bin / mos

Etapa 4: Configuração

Embora essas etapas possam ser executadas em uma longa instrução, decidimos dividi-las e, como você iria copiá-las e colá-las de qualquer maneira, vamos facilitar:

Defina os pinos I2C para o padrão xChips:

bin / mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2

Conecte seu CW02 ao seu WiFi:

bin / mos wi-fi

Desconecte o WiFi no modo AP e configure um nome de domínio, para que você possa se conectar ao CW01 pelo nome do host em vez de encontrar o endereço IP correto. Isso só funcionará se:

  • Você desconecta o WiFi no modo AP como fazemos a seguir.
  • Use um Mac ou instale o Bonjour em sua máquina Windows.

bin / mos call Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin / mos call Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin / mos call Config. Set '{"config": {"dns_sd": {"host- nome ":" xinabox_switch "}}}

E, finalmente, você tem que reiniciar o CW02 para que a configuração funcione

bin / mos chamar Config. Save '{"reboot": true}'

Muito rapidamente depois disso, você deve ser capaz de executar ping em xinabox_switch.local

Etapa 5: Instalando

Desconecte o IP01 do seu computador e monte um circuito de acordo com a imagem superior.

Conecte o PU01 (ou se você decidiu ficar com o IP01) em uma fonte de alimentação USB. Conecte os fios paralelos do seu switch existente (deixe isso, por precaução) ao OC03 (a polaridade não importa). Veja o desenho de Fritzing.

Depois de ligado e ver se você está realmente falando com seu xCW02, que tal fazer a varredura do BUS, também conhecido como barramento I2C:

bin / mos --port ws: //xinabox_switch.local/rpc chamada I2C. Scan

Se tudo funcionar e seu xOC03 estiver instalado corretamente, você verá o número '56' retornado. Esse é o endereço I2C do OC03 em decimal (em hexadecimal é 0x38).

Etapa 6: Programação

  • Agora abra o Mongoose no modo de console, veja acima. Deve abrir com uma janela onde pede um número de porta, digite: ws: //xinabox_switch.local/rpc
  • Ele se comunicará com o CW02, e perceberá que a unidade já está piscando e conectada ao WiFi, então dará apenas 3 marcas de seleção. Feche a janela e atualize a lista de arquivos
  • Copie e cole o código abaixo em init.js e clique em salvar + reiniciar
  • Seu circuito agora está programado.

Etapa 7: Teste

Agora você implementou outra chamada RPC, portanto, em seu terminal, você pode inserir:

bin / mos --port ws: //xinabox_switch.local/rpc call Switch

… E sua campainha deve tocar por 2 segundos. Você também pode fazer isso em - quase - qualquer navegador:

xinabox_switch.local/rpc/Switch

… Com o mesmo efeito.

Etapa 8: Próxima etapa

Você pode usar qualquer ferramenta que possa disparar um URL. Eu faço isso de um aplicativo da Apple chamado Workflow, que me permite fazer isso do meu telefone ou como complicação do meu Apple Watch, mas existem muitas outras opções por aí. Aqui está meu script de fluxo de trabalho, mas com endereço IP codificado: Divirta-se!

Imagem
Imagem

App da Apple: Fluxo de trabalho - aqui com endereço IP codificado

Etapa 9: esquemas

Circuito de campainha Instale o OC03 em paralelo com o botão de pressão existente.

Baixe aqui.

Circuito OC03 Instale o OC03 em paralelo com o botão de pressão existente.

Baixe aqui.

Imagem
Imagem

Etapa 10: Código

JavaScript init.js Seu código principal e único para este projeto.

load ('api_config.js');

load ('api_gpio.js'); load ('api_i2c.js'); load ('api_net.js'); carregar ('api_sys.js'); load ('api_timer.js'); load ("api_rpc.js"); deixe led = Cfg.get ('pins.led'); deixe adr = 0x38; deixe bus = I2C.get (); I2C.writeRegB (barramento, adr, 3, 0); I2C.writeRegB (barramento, adr, 1, 0); / * desligue apenas para ter certeza * / let delay = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', function (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * no caso de o OC03 ser reconectado * / I2C.writeRegB (bus, adr, 1, 1); Timer.set (atraso, falso, função () {GPIO.toggle (led); I2C.writeRegB (barramento, adr, 1, 0);}, nulo); retornar verdadeiro;});

Recomendado: