Cuando conectamos nuestro mBot a mBlock se crea un enlace que, desde el punto de vista del microcontrolador que está en la placa del mBot, siempre es una comunicación serie asincrónica a 115200 bps. El medio físico de la conexión puede ser por cable, bluetooth o wifi. He puesto un analizador lógio en la entrada/salida serial (pines nombrados TX, RX) y he hecho capturas de los paquetes en los tres citados casos y he encontrado que, a pesar que el comando y la respuesta conllevan muy poco tiempo (un par de milisegundos comando y respuesta), los comandos se encuentran separados entre si unos 32 milisegundos (mejor caso: conexión por cable) y unos 60-64 milisegundos (en las conexiones inalámbricas).
He aqui unas capturas de pantalla y por último un video analizando una comunciación inalámbrica.

Conexión por cable:
5aef9755a1f46.png

Conexion por bluetooth:
5aef973b114ea.png

Conexion por 2.4 GHz:
5aef97656a50a.png

En todos los casos, cada línea vertical gris, representa 100 milisegundos, como se puede apreciar hay mas paquetes (rayitas verticales blancas y marrones) en el mismo tiempo si la conexión es por cable que si es inalámbrica.

Ampliando un poquito:
5aef9a03d1931.png
Aqui las rayas grises están cada 8 milisegundos.

Y si ampliamos bastante más, se pueden ver los cambios de las señal bit a bit y su significado hexadecimal:

Comando

5aef9bda00d63.png

Respuesta

5aef9a7abb739.png

El mBot en el quirófano:

5aef97e70a899.jpeg

Le quité la cubierta, para poder levantar un poco el módulo wifi y poder intercalar las puntas de adquisición de datos del analizador lógico.

https://youtu.be/9QtT6o7STvc

¿Para que sirve todo esto?
Bien, si en el bucle principal tenemos 4 comandos al mBot, por ejemplo leer sensor de ultrasonidos, leer siguelinea, actuar sobre el motor 1 y actuar sobre el motor 2. Y si cada trasacción lleva aproximadamente 60 ms, esas cuatro transacciones llevan 240 milisegundos: 1/4 de segundo asi que nuestro bucle principal se ejecuta 4 veces por segundo.
En tiempos humanos eso es bastante rápido. Pero en 1/4 de segundo un mBot puede recorrer digamos 1cm o 2cm dependiendo de a que velocidad se encuentren sus motores.
Mas exactamente, a una velocidad de 100 mBot recorre unos 18cms por segundo y en 1/4 de segundo recorre algo menos que 2 cms.
Si estamos resolviendo la salida de un laberinto y tenemos el siguelinea hacia el frente, entre un bucle y otro: entre una consulta y otra mBot puede recorrer 2cm y darse contra la pared que tiene enfrente, antes que el programa pueda reaccionar.

¿es esto grave?
No, para nada, pero debemos tomarlo com un comportamiento normal.

Cuanto más sabemos de como funciona, mejor podemos ayudar a nuestro mBot a relacionarce con su entorno y seguramente perderemos menos tiempo tratando de refinar algoritmos que, de hecho no tienen nada de malo, simplemente hay cosas que mBot no puede hacer a tiempo.

Algo que he notado en las capturas es que el ritmo no es exactamente constante, asi que, dos ejecuciones simultaneas pueden devolver resultados parecidos pero no iguales, lo cual hace, según creo, más interesante la programación de estos aparatitos smile

Saludos

Juan

Cuando conectamos nuestro mBot a mBlock se crea un enlace que, desde el punto de vista del microcontrolador que está en la placa del mBot, siempre es una comunicación serie asincrónica a 115200 bps. El medio físico de la conexión puede ser por cable, bluetooth o wifi. He puesto un analizador lógio en la entrada/salida serial (pines nombrados TX, RX) y he hecho capturas de los paquetes en los tres citados casos y he encontrado que, a pesar que el comando y la respuesta conllevan muy poco tiempo (un par de milisegundos comando y respuesta), los comandos se encuentran separados entre si unos 32 milisegundos (mejor caso: conexión por cable) y unos 60-64 milisegundos (en las conexiones inalámbricas). He aqui unas capturas de pantalla y por último un video analizando una comunciación inalámbrica. Conexión por cable: ![5aef9755a1f46.png](serve/attachment&path=5aef9755a1f46.png) Conexion por bluetooth: ![5aef973b114ea.png](serve/attachment&path=5aef973b114ea.png) Conexion por 2.4 GHz: ![5aef97656a50a.png](serve/attachment&path=5aef97656a50a.png) En todos los casos, cada línea vertical gris, representa 100 milisegundos, como se puede apreciar hay mas paquetes (rayitas verticales blancas y marrones) en el mismo tiempo si la conexión es por cable que si es inalámbrica. Ampliando un poquito: ![5aef9a03d1931.png](serve/attachment&path=5aef9a03d1931.png) Aqui las rayas grises están cada 8 milisegundos. Y si ampliamos bastante más, se pueden ver los cambios de las señal bit a bit y su significado hexadecimal: **Comando** ![5aef9bda00d63.png](serve/attachment&path=5aef9bda00d63.png) **Respuesta** ![5aef9a7abb739.png](serve/attachment&path=5aef9a7abb739.png) El mBot en el quirófano: ![5aef97e70a899.jpeg](serve/attachment&path=5aef97e70a899.jpeg) Le quité la cubierta, para poder levantar un poco el módulo wifi y poder intercalar las puntas de adquisición de datos del analizador lógico. https://youtu.be/9QtT6o7STvc **¿Para que sirve todo esto?** Bien, si en el bucle principal tenemos 4 comandos al mBot, por ejemplo leer sensor de ultrasonidos, leer siguelinea, actuar sobre el motor 1 y actuar sobre el motor 2. Y si cada trasacción lleva aproximadamente 60 ms, esas cuatro transacciones llevan 240 milisegundos: 1/4 de segundo asi que nuestro bucle principal se ejecuta 4 veces por segundo. En tiempos humanos eso es bastante rápido. Pero en 1/4 de segundo un mBot puede recorrer digamos 1cm o 2cm dependiendo de a que velocidad se encuentren sus motores. Mas exactamente, a una velocidad de 100 mBot recorre unos 18cms por segundo y en 1/4 de segundo recorre algo menos que 2 cms. Si estamos resolviendo la salida de un laberinto y tenemos el siguelinea hacia el frente, entre un bucle y otro: entre una consulta y otra mBot puede recorrer 2cm y darse contra la pared que tiene enfrente, antes que el programa pueda reaccionar. **¿es esto grave?** No, para nada, pero debemos tomarlo com un comportamiento normal. Cuanto más sabemos de como funciona, mejor podemos ayudar a nuestro mBot a relacionarce con su entorno y seguramente perderemos menos tiempo tratando de refinar algoritmos que, de hecho no tienen nada de malo, simplemente hay cosas que mBot no puede hacer a tiempo. Algo que he notado en las capturas es que el ritmo no es exactamente constante, asi que, dos ejecuciones simultaneas pueden devolver resultados parecidos pero no iguales, lo cual hace, según creo, más interesante la programación de estos aparatitos :) Saludos Juan

Juan

editado 8 May '18 a las 3:01 am
261
vistas
0
respuestas
1
seguidores
vista previa (en vivo)
introduzca al menos un 10 caracteres
Advertencia: Mencionaste a %MENTIONS%, pero ellos no pueden ver el mensaje y no serán notificados
Guardando...
Guardado
Todos los posteos de este tema serán borrados ?
Borrador pendiente ... Click para continuar editando
Descartar borrador