sábado, 11 de febrero de 2017

Proyecto DoitCar kit

Hace algún tiempo adquirí un kit para montarme un pequeño "coche robot" y lo he tenido abandonado hasta ahora. 


En este primer artículo voy a explicar el montaje del kit y la utilización del software oficial (versión 1) que acompaña al mismo.

Presentación

Después de un mes me llegó el kit compuesto por los siguientes elementos:
  • 1 x Chasis con sus dos motores, ruedas, etc...
  • 1 x ESP-12E motor shield
  • 1 x NodeMCU development board
  • Algunos cables (no los que aparecen en la siguiente figura), tornillos y un portapilas


El módulo motor shield me llegó con un pequeño desperfecto (el interruptor power venía suelto) pero después de un apaño lo he conseguido colocar en su sitio. El pinout de este módulo es el siguiente:

El kit está desarrollado por la empresa Doit (Doctors of Intelligence & Technology) y lo denomina Doit Smart 4wd Car C200. Junto con el kit se puede descargar un par de aplicaciones para controlarlo desde un smartphone:
  • Car (AP Mode) desarrollado para controlarlo con el módulo wifi en modo AP (Access Point o punto de acceso wifi)
  • Remote Car (STA Mode) desarrolado para controlarlo con el módulo wifi en modo STA(station o modo cliente)
Existe un foro del fabricante donde poder obtener más información sobre el uso del software. Aquí me he enterado que existe una primera generación (que es la que yo dispongo) y una segunda generación de este kit y una nueva aplicación en google play pero eso lo estudiaré más adelante.

El código fuente en formato LUA lo puedes descargar de GitHub. Además  existe una completa documentación on-line y en formato pdf en inglés sobre el DoitCar kit.

Una cosa que no me ha gustado del kit (además del desperfecto ya descrito) es que los orificios del chasis no coinciden ni por casualidad con los del módulo motor shield con lo que, a no ser que realices un apaño, no podrás montar el módulo en el chasis. El resto de elementos (motores, ruedas, portapilas, interruptor) se puede instalar sin problemas. Al final atornillo el módulo en el chasis y me preparo para realizar las conexiones.

Montaje

El montaje del kit es sencillo y si tienes alguna duda en internet encontrarás un montón de tutoriales de como hacerlo. En este enlace, por ejemplo, se muestra el montaje de un modelo parecido. El único problema es el ya mencionado de los orificios pero al final consigo cuadrarlos y, aunque no me gusta el resultado final, para las pruebas es suficiente.


En este video de YouTube podrás ver el montaje de un kit similar.

Conexiones

El módulo motor shield tiene 8 conectores: A-, A+, B-, B+, VM, GND, VIN y GND. El motor izquierdo lo conectaré a los bornes A- y A+ mientras que el motor derecho lo conectaré a los bornes B- y B+ (cable rojo a + y cable negro a -). Con respecvto a la alimentación, después de pasar por el interruptor de encendido, conectaré el positivo (cable rojo) de las baterías a VIN y el negativo (cable negro) a GND.

Se podrán utilizar 4 baterías AA Alkalinas con lo que se obtendrá 6.0v. o 4 baterías NIMH recargables con lo que obtendremos 4.8v, suficientes para alimentar el kit cuyo rango de funcionamiento está entre 4.5 y 9.0 voltios. Para este modo de funcionamiento (modo 1) el puente shorcut se conectará entre VIN y VM.También es posible alimentar los motores separamente (modo 2) cuyo rango de funcionamiento está entre 4.5 y 36 boltios (aunque los motores funcionan como máximo a 10 voltios). Esta alimentación se conectará entre los bornes VM y GND y el puente shorcut se conectará entre VM y NC. En mi caso utilizaré una sola fuente para alimentar tanto al módulo ESP8266 como a los motores (modo 1).

Encendido 

Una vez realizado todas las conexiones introduzco las baterías y coloco el interruptor situado en el chasis en la posición ON y la primera en la frente, no pasa nada ya que el apaño que hice con el power switch no funciona así que, como tengo un interruptor general en el propio chasis, sueldo los pins del interruptor del módulo y lo puenteo.

Una vez solventados estos problemas alimento el kit, se iluminan los leds y conecto el dispositivo android (en mi caso una tablet Nexus 7 versión 2012) a la red WiFi que genera el módulo ESP8266 ya que, según leo en la documentación on-line, por defecto el módulo ESP viene cargado con el software para dicho modo.

El SSID de la red WiFi que genera el kit es DoitWifi y el password es 12345678. Una vez que hemos introducido estos datos el dispositivo android se conecta a la red WiFi del módulo.

A continuación ejecuto la aplicación Car (AP Mode) y me indica que la conexión se ha establecido y pruebo pulsando todos los botones. La experiencia es bastante mala ya que no funcionan todos los botones entre ellos los del desplazamiento continuo del kit ya que cada vez que pulso una de las flechas el kit se mueve un poco y se detiene..

La siguiente prueba que realizo es cargar en el módulo las versión del software que se encuentra en GitHub por si la que viene instalada por defecto es una versión más antigua.

Actualización del software Arduino

Debemos descargar y descomprimir en nuestro ordenador el software ESPlorer con el que programar nuestro módulo ESP8266 con Lua y descargamos el software de GitHub, en este caso el modo AP. La última actualización de este software es del 2015 por lo que dudo que sea una versión más reciente del software que viene grabado en el módulo.

Si quieres ver una introducción a este programador puedes hacerlo en el artículo Introducción a NodeMCU.

Una vez descomprimido nos encontramos con dos ficheros,  init.lua y DoitCarControl.lua y ambos debemos cargarlos en ESPlorer. Primero desconectamos el módulo del motor shiel y lo conectamos a través del puerto usb al ordenador. Ejecutamos ESPlorer, lo configuro a 9.600 y comprueba que lo ha detecytado en el puerto COM5. A continuación conecto con el dispositivo (Open), pulso reset en el módulo y ya tenemos la comunicación establecida con lo que cargamos los ficheros init.lua y DoitCarControl.lua (File-Open).


Primero cargamos el programa DoitCarControl.lua pulsando en el botón Save to ESP. A continuación seleccionamos init.lua y los cargamos repitiendo la operación anterior.

Una vez instalado el software, desconectamos el módulo ESP8266 del ordenador y lo volvemos a conectar al motor shield. Encendemos el KitCar, conectamos nuestro dispositivo android a la red WiFi del módulo y ejecuntamos el programa Car. Para mi sorpresa el funcioaniento ha mejorado produciéndose un movimiento continuo en todas direcciones al pulsar sobre los botones correspondientes.

Un fallo que yo achaco al android es que despues de unos segundos se pierde la conexión. Pienso que es como si, al no detectar conexión con internet, el dispositivo android hace una especie de reset y vuelve a intentar la conexión con lo que se pierde la conexión continuamente.

Modo STA

A continuación voy a probar en el modo STA. En este modo, el módulo se debe conectar a la red WiFi de casa con lo que en teoría estas desconexiones no se debe producir.

En modo STA no encontramos con tres ficheros,  init.lua, sta.lua  y DoitCarControl.lua así que los cargamos en el ESPlorer. En el fichero sta.lua debemos configurar el SSID y el password de nuestra red wifi:

wifi.sta.config("DoitRemoteWireless","12345678")

 y repetimos las operaciones anteriores con los tres ficheros cargándolos en el módulo ESP8266


Una vez obtenida la IP me aparece en el monitor serie un error que indica:

PANIC: unprotected error in call to Lua API (?:0: attempt to compare nil with number)
Wifi setup time more than 20s, Please verify wifi.sta.config() function. Then re-download the file.


Luego se resetea y vuelve a comenzar. No sé cuál es el problema. Además ejecuto la aplicación Remote Car y resulta que está en perfecto chino mandarín y no qué que es lo que me pide inicialmente.

Bueno, analizando el fichero veo que intenta conectar con un server en la dirección 182.92.178.210

print("Try connect Server");
    local conn=net.createConnection(net.TCP, false)
    conn:connect(6005,"182.92.178.210");


Pienso que esta dirección IP debe de ser la IP del dispositivo android por lo que averiguo la IP de mi tablet y sustituyo el valor de dicha IP, en mi caso la 192.168.1.36. Tambien veo en la documentación que podemos cambiar el nombre del kit y que por defecto es car así que pienso que es ese el nombre que debo introducir en el programa Remote Car.

Vuelo a cargar el programa DoitCarControl.lua con las modificaciones realizadas y cruzo los dedos pero tampoco funciona. La verdad es que ha sido un poco decepcionante así que voy a probar con la segunda versión del programa, pero eso será en un próximo artículo.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.