Tabla de contenido:

MicroPython IoT Rover basado en WEMOS D1 (ESP-8266EX): 7 pasos (con imágenes)
MicroPython IoT Rover basado en WEMOS D1 (ESP-8266EX): 7 pasos (con imágenes)

Video: MicroPython IoT Rover basado en WEMOS D1 (ESP-8266EX): 7 pasos (con imágenes)

Video: MicroPython IoT Rover basado en WEMOS D1 (ESP-8266EX): 7 pasos (con imágenes)
Video: MicroPython IoT Rover Based on WeMos D1 (ESP-8266EX) 2024, Mes de julio
Anonim
Image
Image
MicroPython IoT Rover basado en WEMOS D1 (ESP-8266EX)
MicroPython IoT Rover basado en WEMOS D1 (ESP-8266EX)

** Actualización: publiqué un nuevo video para la v2 con una lanza **

Realizo talleres de robótica para niños pequeños y siempre estoy buscando plataformas económicas para construir proyectos interesantes. Si bien los clones de Arduino son baratos, utiliza el lenguaje C / C ++ con el que los niños no están familiarizados. Además, no tiene WiFi incorporado, que es imprescindible para los proyectos de IoT. Por otro lado, si bien Raspberry Pi tiene WIFI y los niños pueden programarlo usando Python, sigue siendo una plataforma costosa para controlar solo algunos puertos GPIO para encender y apagar los dispositivos. Necesito algo intermedio que tenga capacidades WIFI y Python. Parece que encontré mi respuesta en MicroPython en una placa barata basada en ESP8266.

¿Qué es Micropython?

Según su sitio web, MicroPython es una implementación ajustada y eficiente de los lenguajes de programación Python 3 que incluye un pequeño subconjunto de la biblioteca estándar de Python y está optimizado para ejecutarse en microcontroladores y en un entorno restringido (como ESP8266). Es esencialmente Python IDE en un chip. Un beneficio importante es que puede crear código y cambiarlo sobre la marcha utilizando un cliente de navegador web llamado Webrepl. (Intente hacer eso en Arduino). También puede ver los datos del sensor en tiempo real en Webrepl en lugar de confiar en el registro de datos o una pantalla LED en Arduino.

¿Qué es ESP8266?

En resumen, considérelo un Arduino con capacidad de red incorporada. Puede usar el IDE de Arduino para programar placas ESP8266 en C / C ++ o puede actualizarlo con NodeMCU o MicroPython. En este proyecto, mostraré MicroPython en una placa ESP8266.

Decidí obtener un WEMOS D1 que se basa en ESP8266-12EX para este proyecto simple en el que navegaré en un automóvil 2WD usando un navegador web. Hay otras placas diseñadas para MicroPython, pero quería algo barato que pudiera tirar si no cumplía con mis criterios. Como esperaba, cumplió con todos mis requisitos y lo más probable es que incorpore WeMos y Micropython en proyectos futuros.

Paso 1: Partes

Partes
Partes
Partes
Partes
Partes
Partes
Partes
Partes
  • Wemos D1 o cualquier placa basada en ESP8266
  • Escudo del motor (estoy usando un L293D barato de AliExpress)
  • Soportes de batería para 4 x AA y 9V (4 x AA baterías son para motores y 9V son para la placa Wemos)
  • Chasis de automóvil 2WD
  • Cables Dupont

Puede necesitar un soldador, un destornillador y una pistola de pegamento para unir todo.

Paso 2: Montaje de hardware

Ensamblaje de hardware
Ensamblaje de hardware
Ensamblaje de hardware
Ensamblaje de hardware
Ensamblaje de hardware
Ensamblaje de hardware

Primero, ensamble el chasis de acuerdo con las instrucciones.

Luego, aplique pegamento caliente a otros componentes como se muestra.

Los cables del motor deben soldarse a los terminales del motor y usar pegamento caliente para reforzar las uniones de los terminales.

Colocó un pequeño interruptor en el soporte de la batería 4AA. Esto encenderá / apagará la energía del protector del motor.

Paso 3: cableado

Alambrado
Alambrado
Alambrado
Alambrado
Alambrado
Alambrado

Siga mi diagrama de cableado como se muestra.

Wemos a Motor Shield:

D1 IN2

D2 IN1 D3 IN4 ** omitir D4 D5 IN3 GND -> GND

Blindaje del motor a motor / potencia:

Un terminal -> Motor izquierdo

Terminal B -> Motor derecho VCC -> Batería (+) GND -> Batería (-)

Paso 4: Instalación de MicroPython

Primero, Wemos tiene un chip serial / USB basado en CH304G. Este es el mismo chip que se encuentra en los clones baratos de Arduino y debe instalar un controlador adecuado para Mac o PC. Siga las instrucciones de este sitio para instalar el controlador.

Conecte Wemos a su computadora y confirme que su computadora podría detectar Wemos. En Mac, ejecute el siguiente comando y verá un dispositivo llamado /dev/tty.wchusbserial640.

$ ls -lt / dev / tty * | cabeza

crw-rw-rw- 1 rueda raíz 17, 4 2 de marzo 23:31 /dev/tty.wchusbserial640

Si está en la PC, puede usar este Instructable como referencia.

A continuación, deberá configurar Python 2 o 3 en su computadora, ya que la herramienta flash, esptool.py, está basada en Python. Si bien la guía de MicroPython puede indicar que la herramienta solo funciona con Python 2.7, pude ejecutarla en Python 3 sin ningún problema. Descargue la última versión de Python de https://www.python.org y siga las instrucciones de instalación para su PC o Mac.

Por último, deberá instalar MicroPython en Wemos. El sitio de MicroPython tiene un excelente tutorial sobre cómo configurar MicroPython en ESP8266. Simplemente siga las instrucciones de instalación en Introducción a MicroPython en el ESP8266.

A continuación se muestran los comandos que utilicé:

$ esptool.py --port /dev/tty.wchusbserial640 erase_flash

esptool.py v1.3 Conectando…. Ejecutando el talón del destellador Cesanta… Borrando el destello (esto puede llevar un tiempo)… El borrado tomó 10.5 segundos

$ esptool.py --port /dev/tty.wchusbserial640 write_flash -fm dio -fs 32m -ff 40m 0x00000 esp8266-20170108-v1.8.7.bin

esptool.py v1.3 Conectando…. Ejecutando el stub del flasher Cesanta … Parámetros de flash establecidos en 0x0240 Escribieron 589824 bytes a 0x0 en 50,8 segundos (92,8 kbit / s) … Saliendo …

¡MicroPython ahora está instalado en su placa!

Paso 5: configurar la red

Configurar red
Configurar red

Si bien MicroPython ahora está instalado en su Wemos, aún no está conectado a su red. Primero deberá habilitar la red. En Mac, ejecute el comando PANTALLA para iniciar la sesión de terminal serial en Wemos.

$ screen /dev/tty.wchusbserial640 115200

Cuando vea una pantalla en blanco, presione RETORNO para ver un mensaje:

>>

(Nota: para salir, escriba CTRL-A CTRL-)

Ahora, habilitemos el acceso al cliente web. Escriba "import webrepl_setup" para ejecutar el programa de instalación. Ingrese E para habilitar WebREPL y luego configure la contraseña. Reinicie para activar los cambios.

>> importar webrepl_setup

Estado de inicio automático del demonio WebREPL: deshabilitado. (Línea vacía para salir)> E Para habilitar WebREPL, debe establecer una contraseña para ella Nueva contraseña: xxxxx Confirmar contraseña: xxxxx Los cambios se activarán después del reinicio. ¿Desea reiniciar ahora? (s / n) y

Por último, descargue el cliente Webrepl en su máquina. Esto es opcional, pero el cliente viene con otras herramientas útiles que quizás desee utilizar más adelante. Por ejemplo, webrepl_cli.py es un comando para copiar archivos a Wemos en una sintaxis similar a scp. Usa git para descargar el cliente. (Instale la herramienta git si aún no la tiene).

clon de git

Abra su navegador web y en el campo URL, ingrese la ubicación de su archivo de cliente webrepl descargado, como por ejemplo:

archivo: ///Users/xxxxx/wemos/webrepl/webrepl.html

Esto debería mostrar el cliente webrepl en su navegador. Antes de poder conectarse a él, primero debe conectarse a su punto de acceso WIFi. Si observa WIFI disponible para su computadora, verá que una red comienza con MicroPython-xxxx. Conéctese a esa red. (Advertencia: una vez que se conecte a esa red, perderá su acceso a Internet).

Regrese a su cliente webrepl y haga clic en Conectar. Debería solicitar la contraseña. Ingrese su contraseña de Wemos y debería conectarse.

¡Bienvenido a MicroPython!

Contraseña: WebREPL conectado >>>

Su Wemos todavía se está ejecutando en modo AccessPoint. Si bien esto está bien, prefiero que se ejecute en el modo de estación, donde se conecta al WIFI de mi hogar para que mi computadora pueda acceder a él a través del WIFI de mi hogar y aún tenga acceso a Internet. Para hacer eso, tendrás que crear un archivo llamado boot.py con configuración de red y subirlo a Wemos.

Aquí hay una muestra de boot.py. Cambie el ssid y la contraseña a la red WIFI de su hogar. Además, quiero darle una IP estática de 192.168.0.32. Cámbielo a la dirección IP disponible de su WIFI doméstico.

boot.py (puede descargarlo desde abajo)

importar gc

import webrepl def do_connect (): import network sta_if = network. WLAN (network. STA_IF) if not sta_if.isconnected (): print ('conectando a la red …') sta_if.active (True) sta_if.ifconfig (('192.168. 0.32 ',' 255.255.255.0 ',' 192.168.0.1 ',' 192.168.0.1 ')) sta_if.connect (' ',' ') while not sta_if.isconnected (): pass print (' configuración de red: ', sta_if.ifconfig ()) do_connect () webrepl.start () gc.collect ()

Utilice el formulario "Enviar un archivo" del cliente Webrepl para enviar su archivo boot.py a su Wemos. Presione el botón de reinicio para reiniciar. Si todavía está conectado a través de USB usando el comando SCREEN, verá:

conectándose a la red … configuración de red: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1') El demonio WebREPL se inició en ws: //192.168.4.1: 8266 El demonio WebREPL se inició en ws: //192.168.0.32: 8266 Webrepl iniciado en modo normal no pudo abrir el archivo 'main.py' para leer MicroPython v1.8.7-7-gb5a1a20a3 el 2017-01-09; Módulo ESP con ESP8266 Escriba "ayuda ()" para obtener más información. >>>

Esto valida que su Wemos esté conectado a la red WIFI de su hogar usando la dirección IP 192.168.0.32.

Puede hacer ping a esa dirección IP para validar.

$ ping 192.168.0.32

PING 192.168.0.32 (192.168.0.32): 56 bytes de datos

64 bytes de 192.168.0.32: icmp_seq = 0 ttl = 255 tiempo = 9.334 ms 64 bytes de 192.168.0.32: icmp_seq = 1 ttl = 255 tiempo = 11.071 ms..

Paso 6: Instale el programa principal

Instalar el programa principal
Instalar el programa principal
Instalar el programa principal
Instalar el programa principal

Por último, deberá instalar el programa principal que seguirá ejecutándose en su Wemos.

Vuelva a su navegador web y ejecute el programa cliente webrepl. Cambie la dirección IP a la dirección IP de su Wemos. En mi caso, ahora es 192.168.0.32. Ingrese su contraseña de Wemos y ahora debería estar conectado a Wemos.

Carguemos el programa main.py adjunto. Descarga el archivo adjunto a tu computadora. Haga clic en Elegir archivo para elegir el archivo main.py descargado y haga clic en Enviado al dispositivo.

Deberá presionar el botón Rest para cargar el programa main.py. Después de presionar el botón Restablecer, verá:

conectándose a la red…

configuración de red: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1')

El demonio WebREPL se inició en ws: //192.168.4.1: 8266 El demonio WebREPL se inició en ws: //192.168.0.32: 8266 Se inició webrepl en modo normal Escuchando, conecta tu navegador a…

Esto significa que su programa main.py está activado y listado en el puerto 80.

Para probar, abra su navegador web e ingrese

Esto debería mostrar la pantalla de control del automóvil como se muestra en el video. Si sus cables están conectados correctamente, los botones de control enviarán señales adecuadas a sus puertos GPIO para mover el automóvil.

Paso 7: mejoras futuras

Los siguientes elementos de tareas pendientes están en mi lista v2:

  • Utilice PWM para controlar la velocidad del motor
  • Mejora la interfaz web. Quizás use un marco REST. No creo que aREST lib esté disponible en MicroPython en este momento, por lo que es posible que tenga que piratearlo.

Gracias por leer este Instructable. Sígueme en Facebook, Youtube e Instructables para ver más proyectos en el futuro.

Recomendado: