Tabla de contenido:

¡TinyLiDAR en tu garaje!: 10 pasos
¡TinyLiDAR en tu garaje!: 10 pasos

Video: ¡TinyLiDAR en tu garaje!: 10 pasos

Video: ¡TinyLiDAR en tu garaje!: 10 pasos
Video: How to connect TFmini Plus with Arduino 2024, Noviembre
Anonim
¡TinyLiDAR en tu garaje!
¡TinyLiDAR en tu garaje!

Proyecto de abridor de puerta de garaje WiFi DIY

El mundo de IoT está comenzando a explotar: todas las empresas de tecnología del mundo están tratando de descubrir cómo encajarán en este nuevo mundo. ¡Es una gran oportunidad! Entonces, para este instructivo, de acuerdo con este tema de IoT, veremos cómo puede hacer su propio demostrador de IoT que sea realmente útil;)

TL; resumen de DR

  • configurar un flujo de trabajo confiable para codificar el módulo WiFi ESP32
  • flashear
  • móntelo en su tablero
  • descarga nuestro código de aplicación y descomprímelo
  • agregue sus credenciales WiFi e IP estática
  • conéctalo a tu red WiFi
  • edite umbrales y móntelo en su garaje
  • conéctelo a los contactos del abre-puertas de garaje
  • ¡y haz clic!
  • NO SE REQUIERE SOLDADURA (excepto para los pines a las placas de conexiones si es necesario)

Piezas necesarias

  • TinyLiDAR módulo de sensor de distancia de tiempo de vuelo
  • Placa WiFi Wipy3.0 o similar basada en ESP32
  • Relé de estado sólido ópticamente aislado (Omron G3VM-201AY1) para controlar el abre-puertas de garaje
  • Resistencia de 470 ohmios (5% 1/8 vatios o más está bien)
  • Interruptor de botón pulsador momentáneo para el pin BOOT (GPIO0) para actualizar el firmware en la placa ESP32
  • Dongle de USB a serie para cargar código e interactuar con REPL en el ESP32 (use la versión de E / S de 3.3v)
  • Protoboard + cables
  • Fuente de alimentación: 3,3 V a 5 V a 500 mA o más. Puede usar un cargador de teléfono celular microUSB para la fuente de alimentación y la placa de conexión microUSB para conectarla a su placa de pruebas.

Paso 1: IoT ¿Qué?

IoT ¿Qué?
IoT ¿Qué?

Sin duda ya has oído hablar del término IoT en todos los medios, pero ¿qué significa?

En términos generales, significa tener todo tipo de sensores y elementos controlables conectados a Internet. En estos días, Internet es sinónimo de inalámbrico y, por lo tanto, tenemos todo lo electrónico que de repente se vuelve inalámbrico conectado a través de algún tipo de enlace inalámbrico como WiFi / BT / LoRa / SigFox, etc. Una vez conectados a Internet, podemos detectar y / o controlar estas cosas desde nuestro controlador móvil favorito, como nuestro teléfono celular, o automatizarlas a través de alguna aplicación que se ejecute en un servidor en algún lugar (es decir, la nube).

Aunque las empresas más grandes han estado comercializando más control de voz, inteligencia artificial y conectividad en la nube últimamente; los conceptos básicos para hacer que todo esto suceda siguen siendo los mismos. Necesita conectar su "cosa" a un enlace inalámbrico antes de que cualquiera de estos conceptos sea posible. Así que comencemos con lo básico y aprendamos a conectar el sensor de distancia de tiempo de vuelo tinyLiDAR a un módulo WiFi de bajo costo y luego mostrar para enviar datos de un lado a otro a través de la red. Al final de este instructivo, tendrá su propio control remoto de puerta de garaje habilitado para WiFi con un monitor en tiempo real para verificar si la puerta está abierta o cerrada.

Técnicamente hablando, como se muestra en el diagrama de bloques anterior, este proyecto implementa un servidor web micropython que se ejecuta en un módulo WiFi ESP32 utilizando el protocolo de comunicación 'websockets' para pasar datos desde cualquier navegador web móvil. Sumado a esto, tenemos el sensor tinyLiDAR de tiempo de distancia de vuelo que toma medidas a pedido para que pueda verificar si la puerta del garaje se dejó abierta.

Paso 2: Pruébelo, no, pruébelo ahora

Pruébelo - No, en serio, pruébelo ahora
Pruébelo - No, en serio, pruébelo ahora

Todo esto es un campo relativamente nuevo en la electrónica, por lo que se requerirá mucha experimentación para que las cosas funcionen correctamente. Esperamos que pueda construir sobre esta base de código y realizar algunos proyectos de IoT más interesantes por su cuenta.

Todo el código utilizado en este artículo funcionaba bien en el momento de escribir este artículo. Sin embargo, a medida que aumenta la tasa de innovación en el espacio de IoT, es posible que las cosas hayan cambiado para cuando lea esto. En cualquier caso, resolver los problemas y adaptarlos para su propio uso al menos le permitirá entrar en este nuevo y emocionante espacio y comenzar a pensar como un ingeniero de IoT.

¿Listo? Comencemos con el primer paso para configurar su propio entorno de desarrollo estable.

Paso 3: Micropython y ESP32

Micropython y ESP32
Micropython y ESP32

Los módulos WiFi ESP32 fueron creados por Espressif y han mejorado mucho desde sus módulos ESP8266 de primera generación de hace unos años. Estas nuevas versiones tienen mucha más memoria, un procesador más fuerte y más funciones que los módulos originales y siguen siendo de bajo costo. El diagrama de arriba le da una idea de cuánto pudieron empaquetar en este pequeño chip ESP32. El ESP32 IC en sí es un microcontrolador de doble núcleo con una radio WiFi 802.11b / g / ny también una radio Bluetooth 4.2 integrada. Los módulos basados en ESP32 generalmente agregarán una antena, memoria FLASH adicional y reguladores de potencia.

Tenga en cuenta que cuando decimos módulo ESP32 en este instructivo, nos referimos a las placas Pycom Wipy3.0 que se basan en el chip / módulo ESP32. En nuestra experiencia, las placas Pycom parecen ser de mayor calidad de construcción que los módulos ESP32 típicos de bajo costo disponibles. Al desarrollar, siempre es útil reducir tantas variables como sea posible, por lo que optamos por las placas Pycom en lugar de los genéricos de bajo costo.

Para aplicaciones OEM, la codificación ESP32 generalmente se realiza en lenguaje C, pero afortunadamente también hay muchas opciones entre las que podemos elegir, por lo que no tendrá que bajar a este nivel bajo si no lo desea. Elegimos usar micropython para toda nuestra codificación en este instructivo.

Micropython, como puede haber supuesto, es un subconjunto del lenguaje de programación Python completo que impulsa algunos motores de búsqueda y sitios web menos conocidos como Google, YouTube e Instagram;)

Micropython-logo
Micropython-logo

Micropython comenzó como un proyecto de kickstarter originalmente para el procesador STM32, pero ahora se ha vuelto muy popular para muchos microcontroladores diferentes. Estamos usando el último puerto oficial Pycom ESP32 de micropython aquí.

Paso 4: la forma más rápida

La forma más rápida
La forma más rápida

El código de micropython tiene una interfaz gráfica de usuario simple que se llama REPL, que significa "Read-Eval-Print Loop". El REPL de ESP32 normalmente se ejecuta a 115,2 Kbaudios desde que se accede a él a través del puerto serie. La imagen de arriba muestra este mensaje REPL representado por sus tres flechas esperando comandos directos. Es una manera fácil de probar nuestros comandos simples y la mayoría de los programadores lo usan para desarrollar su software, pero nos pareció un camino dolorosamente lento. Por lo tanto, decidimos hacerlo de una manera diferente para este instructable …

Como los módulos ESP32 tienen conectividad WiFi rápida, solo necesitamos acceder al módulo a través de WiFi a través de un servidor FTP que ya está integrado dentro del código estándar de micropython. Esto nos permitirá usar clientes FTP como FileZilla para simplemente arrastrar y soltar nuestro código en el ESP32.

Entonces, para hacer esto, primero debemos colocar el módulo ESP32 en su red WiFi. Los módulos Wipy3.0 ejecutan un pequeño punto de acceso de forma predeterminada al momento del encendido para que pueda conectarse directamente a ellos desde una computadora portátil en 192.168.4.1. Consulte más detalles aquí si le gusta este método.

Trabajamos en computadoras de escritorio en nuestro laboratorio, por lo que queríamos que los módulos ESP32 se conectaran a nuestra red. Para hacer esto, solo necesitamos darle al módulo una dirección IP estática y nuestra información de contraseña para iniciar sesión en nuestra red WiFi.

Paso 5: Descarga ahora

Descargar ahora
Descargar ahora
Descargar ahora
Descargar ahora
Descargar ahora
Descargar ahora
Descargar ahora
Descargar ahora

Descargue el código de la aplicación ahora y descomprima los archivos en una carpeta temporal en su computadora. Luego comience a editar los archivos de script mywifi.txt y boot.py con sus propias credenciales de red WiFi.

Por cierto, nuestro editor de texto favorito sigue siendo SublimeText. Se puede descargar aquí.

También debe descargar el software de terminal TeraTerm y el software FileZilla FTP ahora si aún no los tiene en su computadora.

Tendrá que configurar FileZilla como se muestra en las imágenes de arriba. Además, en el administrador del sitio, debe "agregar un nuevo sitio" para el inicio de sesión de ESP32 utilizando la dirección IP estática que eligió, como se muestra arriba. El usuario es "micro" y la contraseña es "python". Es importante utilizar FTP pasivo y limitarlo a conexiones únicas. Descubrimos que limitar la velocidad de carga también ayudó a evitar bloqueos de carga. Aunque no se muestra en las imágenes, sería útil asociar el programa SublimeText para los tipos de archivos para que pueda editar el código haciendo doble clic en el lado izquierdo de la pantalla FTP. Para hacer esto, simplemente vaya al menú Configuración y en Edición de archivo / Asociaciones de tipo de archivo ingrese la ubicación de su archivo exe de SublimeText para cada asociación. Por ejemplo, el nuestro fue:

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 los archivos de la aplicación extraídos para este instructable a una nueva carpeta llamada "FTP" en su computadora como lo hicimos nosotros. Será más fácil arrastrar desde aquí dentro de FileZilla más adelante.

Normalmente es una buena idea tener el firmware más reciente ejecutándose en el ESP32. Actualizar los módulos de Pycom para usar la última micropython es muy simple y se puede hacer en aproximadamente 3 minutos con su herramienta de actualización de firmware.

Solo asegúrese de configurar el puerto COM para su USB en dongle serial y anule la selección del modo de alta velocidad como se muestra en la imagen de "Comunicación" de arriba. El nuestro era el puerto COM 2. Tenga en cuenta que para que los módulos ESP32 entren en este modo de actualización, tendrá que presionar el botón GPIO0 / Boot (en el pin P2) mientras presiona y suelta el botón Reset.

Paso 6: Hora del hardware

Hora del hardware
Hora del hardware
Hora del hardware
Hora del hardware

Ahora sería un buen momento para conectar el hardware en una placa de pruebas como se muestra en el diagrama esquemático pictórico de arriba.

Después de que todo esto esté completo. Inicie el software del terminal con el puerto COM adecuado para su dispositivo USB a serie y configúrelo en 115,2 Kbaudios.

Al encender, el módulo debe mostrar el conocido indicador REPL que muestra tres flechas ">>>".

Ahora vaya a su archivo mywifi.txt editado y copie todo el contenido (CTRL + C). Luego vaya a la pantalla del terminal REPL y presione CTRL + E para entrar en el modo de cortar y pegar. Luego haga clic derecho para pegar el contenido en la pantalla REPL y luego presione las teclas CTRL + D para ejecutar lo que pegó.

Debería comenzar una cuenta regresiva de inmediato para indicar que está tratando de conectarse a su red WiFi. La captura de pantalla anterior muestra un mensaje de conexión exitosa.

Una vez conectado, puede usar FileZilla para conectarse al servidor FTP en los módulos en la dirección IP estática que ya eligió en sus archivos mywifi.txt y boot.py.

Paso 7: ¿Sigues con nosotros?

¿Sigues con nosotros?
¿Sigues con nosotros?
¿Sigues con nosotros?
¿Sigues con nosotros?

Si lo ha hecho bien hasta ahora, ¡bien por usted! El trabajo duro está hecho:) Ahora todo será fácil: solo un montón de cortar y pegar y estará listo y funcionando para que pueda montarlo en su garaje.

Para editar cualquiera de los códigos, puede hacer doble clic en el lado izquierdo de la ventana FTP en FileZilla y se iniciará SublimeText. Guarde sus cambios y luego arrástrelo hacia el lado derecho, que es la ventana ESP32.

Por ahora, simplemente arrastre los archivos del lado izquierdo al lado derecho de FileZilla para cargar cada archivo por separado al módulo ESP32. Esto toma solo unos pocos segundos en lugar de minutos como lo hace el método REPL normal. Tenga en cuenta que todos los archivos deben estar en el directorio raíz llamado "flash" dentro de la placa Pycom. Puede crear un marcador en FileZilla para que sea más fácil volver aquí la próxima vez.

Si alguna vez tiene un problema en el que FileZilla se cuelga y se agota el tiempo de carga, notará un archivo en el lado ESP32 que tiene 0 bytes. ¡Tratar de escribir sobre él puede volverte loco, ya que nunca termina, no importa lo que intentes! Es un estado muy extraño y ocurre con mucha frecuencia. La mejor solución para esto es eliminar el archivo de 0 bytes y apagar y encender el módulo. Luego obtenga una copia NUEVA del archivo fuente para cargar nuevamente al módulo ESP32. Tenga en cuenta que una copia nueva es la clave aquí. De alguna manera, el archivo de origen simplemente no se cargará correctamente si se cuelga así, incluso una sola vez.

Descubrimos que es útil arrastrar cada archivo individualmente hasta el módulo ESP32 comenzando con boot.py. Este primer archivo es responsable de llevar su módulo a la red, por lo que ya no tendrá que cortar y pegar en REPL. Sin embargo, puede tomar la carpeta www y arrastrarla de una sola vez. Esto siempre nos ha funcionado en nuestro desarrollo. Todos estos archivos se almacenan en el almacenamiento flash no volátil integrado en el módulo ESP32, por lo que estarán allí después de que se desconecte la alimentación. Solo para tu información: main.py se ejecutará después de boot.py cada vez que se encienda el módulo.

Paso 8: consejos de piratería

Consejos de piratería
Consejos de piratería

Eche un vistazo a todo el código e intente buscar en Google palabras clave que no reconozca. Una vez que todo esté en funcionamiento, puede intentar cambiar lo que le apetezca para ver qué hace.

Si algo sale mal, siempre puede borrar el código y / o volver a flashear el módulo en aproximadamente 3 minutos como ya lo hizo antes.

Para reformatear el flash y borrar todo su código de una sola vez, puede escribir lo siguiente en REPL:

importar sistema operativo

os.mkfs ('/ flash')

Luego, apague y encienda o presione el botón de reinicio en la placa Wipy.

Tenga en cuenta que también hay otra forma de omitir boot.py y main.py si las cosas se vuelven locas. Simplemente conecte temporalmente el pin P12 al pin de salida de 3.3V y presione el botón Reset como se muestra arriba. Omitirá todo su código e irá directamente a REPL una vez para que pueda resolver las cosas sin eliminar todo su código de la memoria flash.

Una vez que haya terminado de cargar todos los archivos, simplemente presione el botón Restablecer en el módulo ESP32 para reiniciarlo.

Verá la cuenta regresiva familiar en la pantalla del terminal REPL cuando vuelva a iniciar sesión en su red WiFi. La diferencia es que este código ahora se ejecuta desde el archivo boot.py esta vez.

Paso 9: páginas web

Páginas web
Páginas web
Páginas web
Páginas web
Páginas web
Páginas web
Páginas web
Páginas web

El microbservidor debería estar funcionando ahora en el ESP32, así que pruébelo usando su navegador de escritorio o su dispositivo móvil.

Simplemente vaya a su dirección IP estática y debería ver una pantalla similar a la de arriba.

Hay dos páginas web que se sirven desde nuestro microbservidor que se ejecuta en el ESP32.

La primera es la página index.html predeterminada que le brinda un simple botón ABRIR / CERRAR para simular el tipo de abridor de puerta de garaje con clicker. Al presionarlo en su navegador web, verá aparecer un gran icono de engranaje azul. Esta es una confirmación de que la conexión a websocket se realizó correctamente y que recibió un acuse de recibo del servidor de que su comando "presionar" se recibió correctamente. También debería ver una luz LED verde brillante en la placa Pycom cuando presiona este botón. La conexión websockets está transmitiendo los estados del botón enviando mensajes de texto simples de "presionar" cuando lo presionas y "presionar" cuando lo sueltas. Para reconocimiento, el microbservador está enviando este texto pero agregando "_OK" para decir que lo recibió correctamente.

Una vez que haya conectado los terminales de relé de estado sólido (SSR) ópticamente aislados a su abre-puertas de garaje (consulte el diagrama esquemático ilustrado), al presionar el botón también se abrirá / cerrará físicamente la puerta.

Espere unos segundos e intente nuevamente si no ve el ícono de engranaje azul que se muestra, ya que tal vez se esté reiniciando o algo así. Tenga en cuenta que el websocket se cerrará automáticamente en unos 20 segundos si no lo está utilizando para evitar bloqueos. También tenga en cuenta que los websockets están orientados a la conexión, por lo que debe detener el websocket para cambiar de página o, de lo contrario, es posible que no pueda volver a conectarse hasta que presione el reinicio en el módulo ESP32. Para nuestro código de ejemplo, tenemos algunas formas de detener el websocket: toque el texto de estado, los puntos giratorios o el hipervínculo para ir a la página siguiente.

La segunda página web es para leer las mediciones de distancia del sensor de distancia de tiempo de vuelo tinyLiDAR. Simplemente presione el botón una vez y comenzará a transmitir las lecturas de distancia a su dispositivo móvil durante unos 20 segundos. A medida que presiona hacia abajo, se encenderá un LED rojo en la placa Pycom para que pueda saber que está recibiendo el comando de presionar botón de esta página.

Ambas páginas dan una indicación de que la puerta está abierta o cerrada al leer la distancia de tinyLiDAR. La variable doorThreshold debe configurarse en ambos archivos html en la sección de script como se muestra aquí:

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

// **** Ajuste según sea necesario **** var doorThreshold = 100; // distancia en cm var ws_timeout = 20000; // el tiempo máximo en ms para permitir que la puerta se abra / cierre por defecto es 20 segundos // -------------------------- // --- -----------------------

Tendrá que editar este umbral para la configuración de su garaje para que pueda detectar cuándo la puerta del garaje está enrollada y, por lo tanto, ABIERTA o baja y, por lo tanto, CERRADA. Una vez que haya realizado las ediciones para su umbral en ambos archivos html, cargue estos archivos html nuevamente y reinícielo para verificar que todo sigue funcionando correctamente.

Si todo está bien, ahora puede seguir adelante y montar la placa boca abajo en su garaje como se muestra en la imagen de arriba. Conecte también los pines 3 y 4 del SSR al abre-puertas de garaje. La polaridad no es importante ya que estamos usando una versión MOSFET del SSR; solo tiene que cortocircuitar los contactos para simular un clic en un botón en la unidad base de la puerta de su garaje.

Paso 10: ¡Y eso es todo

¡Y eso es!
¡Y eso es!

¡Felicidades! Abrir la puerta de su garaje ahora es tan fácil como tocar su teléfono y puede verificar si se dejó abierta o no tomando medidas en tiempo real con tinyLiDAR:)

Ahora también puede usar ESP32 con websockets a través de WiFi para casi cualquier cosa que desee. Lea más acerca de los "websockets" si no está familiarizado con ellos; son realmente bastante rápidos y fáciles de usar.

La implementación de tinyLiDAR con el ESP32 también fue muy fácil a pesar de que el sensor fue diseñado originalmente para ejecutarse en un Arduino UNO. Tenemos una versión beta más elaborada de la GUI de Terminal que ejecuta la mayoría de los comandos tinyLiDAR en micropython en el ESP32; vea la imagen de arriba. Está disponible en nuestra sección de descargas junto con el manual de referencia, etc.

Eche un vistazo a todo nuestro código para comprender cómo todo se combina e intente cambiar las cosas para que pueda construir sobre él para hacer lo que quiera.

Tenga en cuenta que aquí no se menciona la seguridad. La seguridad es un área enorme en IoT y debe tomarse en serio. Si desea utilizar este proyecto en su garaje, debe mantener sus contraseñas de red WiFi sólidas y seguras. Hay mucha información en la web sobre seguridad, así que asegúrese de leer las últimas novedades y estar al tanto.

¡Gracias por leer y feliz pirateo! Salud.

Recomendado: