Tabla de contenido:

Botón de puerta virtual con Mongoose OS y XinaBox: 10 pasos
Botón de puerta virtual con Mongoose OS y XinaBox: 10 pasos

Video: Botón de puerta virtual con Mongoose OS y XinaBox: 10 pasos

Video: Botón de puerta virtual con Mongoose OS y XinaBox: 10 pasos
Video: Internet button on ESP32, Google IoT Core and Mongoose OS in 5 minutes 2024, Mes de julio
Anonim
Botón de puerta virtual con Mongoose OS y XinaBox
Botón de puerta virtual con Mongoose OS y XinaBox

Usando Mongoose y algunos xChips, creamos un botón de puerta virtual. En lugar de un botón físico para llamar al personal, ahora pueden hacerlo ellos mismos.

Paso 1: Cosas utilizadas en este proyecto

Componentes de hardware

  • XinaBox CW02 x 1 Podrías usar el CW01 en su lugar
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Puede usar el IP01 como fuente de alimentación, si no tiene la intención de programar más módulos.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 ¡El "pegamento" que hace que todo funcione!

Aplicaciones de software y servicios en línea

Mongoose OS Una herramienta de desarrollo de IoT realmente impresionante y sencilla … ¡y gratuita

Paso 2: historia

En nuestra recepción, nuestro personal necesitaba ser llamado, por lo que decidimos tomar nuestro propio medicamento y crear un botón virtual. Este código le permite enviar una RPC (llamada a procedimiento remoto), que parece una llamada HTTP normal desde cualquier navegador. Usamos Mongoose, ya que es realmente fácil y rápido trabajar con él y su actualización de código OTA (Over The Air) incorporada, significa que podríamos instalar nuestra tecnología y aún así actualizar el firmware con el tiempo, sin tener que desmontarlo para reprogramarlo.

Paso 3: preparación

  • Instale Mongoose-OS: Sencillo, siga estos sencillos pasos para su sistema operativo aquí:
  • Haga clic en IP01 y CW02 juntos usando un conector XC10. Vea la imagen a continuación:
Imagen
Imagen
  • Inserte el IP01 en su puerto USB
  • Asegúrese de que los interruptores IP01 estén en la posición B y DCE.
  • Actualice Mongoose-OS a CW02 desde su línea de comando. Como esto:

CD

exportar MOS_PORT = bin / mos flash esp32

También puede ingresar a la consola y hacer la mayor parte desde allí, pero aquí lo hacemos desde la línea de comandos, por lo que el trabajo se realiza rápidamente. Para ingresar a la consola:

CD

bin / mos

Paso 4: configuración

Si bien estos pasos se pueden realizar en una declaración larga, decidimos dividirlos y, dado que los copiaría y pegaría de todos modos, hagámoslo más fácil:

Establezca los pines I2C en el estándar xChips:

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

Conecte su CW02 a su WiFi:

bin / mos wifi

Desconecte WiFi en modo AP y configure un nombre de dominio, para que pueda conectarse al CW01 por nombre de host en lugar de encontrar la dirección IP correcta. Esto solo funcionará si:

  • Desconecta WiFi en modo AP como lo hacemos a continuación.
  • Utilice una Mac o instale Bonjour en su 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- nombre ":" xinabox_switch "}}}

Y finalmente tienes que reiniciar el CW02 para que la configuración funcione

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

Muy rápidamente después de esto, debería poder hacer ping a xinabox_switch.local

Paso 5: instalación

Desenchufe el IP01 de su computadora y monte un circuito como se muestra en la imagen superior.

Conecte el PU01 (o si decidió quedarse con el IP01) a una fuente de alimentación USB. Conecte los cables en paralelo desde su interruptor existente (déjelo, por si acaso) al OC03 (la polaridad no importa). Ver dibujo de Fritzing.

Una vez encendido y para ver que realmente está hablando con su xCW02, ¿qué pasa con el escaneo del BUS, también conocido como el bus I2C?

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

Si todo funciona y su xOC03 está instalado correctamente, debería ver que se devuelve un número '56'. Esa es la dirección I2C del OC03 en decimal (en hexadecimal es 0x38).

Paso 6: programación

  • Ahora abre Mongoose en modo consola, mira arriba. Debería abrirse con una ventana donde solicite un número de puerto, ingrese: ws: //xinabox_switch.local/rpc
  • Se comunicará con el CW02 y se dará cuenta de que la unidad ya está flasheada y conectada a WiFi, por lo que solo dará 3 marcas de verificación. Cerrar la ventana y actualizar la lista de archivos
  • Copie y pegue el código a continuación en init.js, y haga clic en guardar + reiniciar
  • Su circuito ahora está programado.

Paso 7: prueba

Ahora ha implementado otra llamada RPC por lo que desde su terminal puede ingresar:

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

… Y su zumbador debería sonar durante 2 segundos. También puede hacerlo desde, casi, cualquier navegador:

xinabox_switch.local/rpc/Switch

… Con el mismo efecto.

Paso 8: siguiente paso

Puede utilizar cualquier herramienta que pueda disparar una URL. Lo hago desde una App de Apple llamada Workflow, que me permite hacerlo desde mi teléfono o como complicación desde mi Apple Watch, pero hay muchas otras opciones por ahí. Aquí está mi secuencia de comandos de flujo de trabajo, pero con una dirección IP codificada: ¡Disfrute!

Imagen
Imagen

Aplicación de Apple: flujo de trabajo, aquí con dirección IP codificada

Paso 9: esquemas

Circuito del zumbador Instale el OC03 en paralelo con el botón pulsador existente.

Descarguelo aqui.

Circuito OC03 Instale el OC03 en paralelo con el botón pulsador existente.

Descarguelo aqui.

Imagen
Imagen

Paso 10: Código

init.js JavaScript Su código principal y único para este proyecto.

load ('api_config.js');

load ('api_gpio.js'); cargar ('api_i2c.js'); load ('api_net.js'); load ('api_sys.js'); load ('api_timer.js'); cargar ("api_rpc.js"); let led = Cfg.get ('pins.led'); sea adr = 0x38; let bus = I2C.get (); I2C.writeRegB (bus, adr, 3, 0); I2C.writeRegB (bus, adr, 1, 0); / * apagar solo para estar seguro * / let delay = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', function (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * en caso de que el OC03 se vuelva a conectar * / I2C.writeRegB (bus, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});

Recomendado: