Serial_bitbloq__USB_mini

En este post os vamos a enseñar cómo realizar una comunicación por puerto serie USB entre vuestro ordenador y la placa controladora. Lo diré de otra forma más sencilla: transferir información y órdenes a tu placa por el cable USB.

Una comunicación consta siempre de dos partes, un emisor y un receptor. Por tanto, vamos a necesitar dos cosas:

  1. Programa dentro de la placa controladora que envíe/reciba datos. (Lo haremos con bitbloq)
  2. Programa dentro del ordenador que envíe/reciba datos. (Usaremos el Monitor Serial de la IDE de Arduino)

Serial_bitbloq__USB

Abre bitbloq y descarga el IDE de Arduino. Tanto si tienes una placa ZUM BT-328 como una placa FreaduinoUNO, conectala al ordenador con el cable USB y… ¡Comenzamos!

“”Aquí robonauta llamando a Base Eco, ¿me recibe?””

ESCRIBIR POR PUERTO SERIE


Serial_bitbloq__USB__1

El ejemplo siguiente envía desde la placa controladora la palabra ‘NEGRO‘ cuando un sensor IR detecta ese color. Conecta dicho sensor al pin digital 3:

zum_IR3

Parte 1: EMISOR – Programación en bitbloq

Para programar un envío de un dato desde la placa en bitbloq, tan sólo será necesario el bloque llamado “Imprimir por puerto serie”

bit_serie_5

Es así sencillo entonces crear un programa en el que se compara cada segundo (1000 ms) el valor del sensor y si éste vale 0 envia la palabra. Carga este programa en tu placa:

bit_serie_3

Parte 2: RECEPTOR – Usando el Monitor Serial de Arduino IDE

Como hemos dicho, utilizaremos el Monitor Serial del IDE de Arduino. Con la placa conectada, abre el programa Arduino y cierra bitbloq.

Ahora selecciona la placa controladora en Herramientas/Tarjeta. En caso de usar la ZUM BT-328 selecciona “Arduino BT w/ATmega328” y en caso de usar una FreaduinoUNO selecciona “Arduino UNO“.

ardu_seleccion_placa

Selecciona el puerto donde está conectada la placa en Herramientas/Puerto Serial:

ardu_seleccion_puerto

Ya podemos abrir el Monitor Serial en Herramientas/Monitor Serial o pulsando aquí:

ardu_seleccion_MonitorSerial

Se abrirá esta ventana donde debemos comprobar que esté marcada una velocidad de 9600 baudios.

ardu_serie_sol_1

Si el sensor IR de nuestro ejemplo comienza a detectar varias veces, en el monitor irá apareciendo la palabra ‘NEGRO’ sin cesar:

ardu_serie_sol_2

Si queremos ver el resultado un poco más ordenado, podemos utilizar el bloque bitbloq “Imprimir por puerto serie con salto de linea“:

bit_serie_4

De esta forma conseguiremos una respuesta más separada así:

ardu_serie_sol_3

LEER EL PUERTO SERIE


Serial_bitbloq__USB__2

Parte 1: RECEPTOR – Programación en bitbloq

En este caso el receptor es la placa controladora. Para toda recepción desde la placa, usaremos este bloque bitbloq que comprueba si ha llegado algo por el puerto serie:

bit_serie_1

Si es así, leeremos el dato recibido y lo guardamos en una variable:

bit_serie_6

Ahora podemos compararlo y actuar dependiendo del valor dicho dato. Por ejemplo, si recibimos una ‘A‘ mayúscula, encenderemos el LED integrado en la placa (D13). Si en cambio el dato recibido es cualquier otro, apagaremos dicho LED. El programa queda así:

bit_serie_8

“- Pero… ¡Has comparado el dato con un 65!¿? – ” Pues sí querido robonauta, porque ahora mismo en bitbloq no hay un bloque para comparar variables de texto tipo char de momento sólo pueden ser tipo String. No te preocupes si te suena a chino, tan sólo debes saber que para este ejemplo usamos números para identificar letras.

La letra ‘A‘ corresponde con el número decimal 65 en código Ascii (mira la tabla al final de este post).

Parte 2: EMISOR – Usando el Monitor Serial de Arduino IDE

Ya tenemos la placa preparada para recibir. Cierra bitbloq y abre de nuevo el Monitor Serie de Arduino IDE. Esta vez asegurate no sólo de marcar 9600 baudios de velocidad sino también la opción “No hay fin de línea“.

ardu_serie_sol_4

Escribe una A mayúscula y pulsa Enviar. ¿Se enciende el LED integrado? Prueba a enviar cualquier otra cosa para apagar dicho LED D13.

Aquí te dejo la tabla Ascii para que compares las letras y caracteres que viajan por el puerto serie:

Ascii_A

6 comentarios

  1. Hello Anita de Prado,
    Ask for help again.I read this tutorial.And I got a idea—to replace the Monitor Serial to a UART(RS232-TTL) IO device.The IO device’s manual tells me to send four Hex code 0xAA 0x13 0xA0 0x0A to control it.May you give me a help?How to write it in BitBloq ?Thanks in advances.

    1. Anita de Prado

      Hi again!

      To send this Hexadecimal code, try the bloq “Convert” but first you have to know the Decimal equivalence.
      This could be your program:
      cap_Serial_hexa

      Hex code ( 0xAA 0x13 0xA0 0x0A ) = ( 170 19 160 10 ) Decimal code

  2. Hola Ana , mi pregunta es la siguiente es factible instalar un emulador android en mi ordenador personal y desde este con RoboPad poder mover al renacuajo( lo intente pero no conseguí que funcionara el Bluetooth casi seguro por que no estaban enlazados).

    1. Anita de Prado

      Hola Jose María,
      Es posible hacerlo pero depende de tu sistema operativo y del bluetooth de tu ordenador. Por ejemplo, aquí tienes una solución para usar el bluetooth desde máquina virtual: http://stackoverflow…..how-to-test-bluetooth-based-application-on-androidx86-on-top-of-virtualbox-with

  3. Hola Ana;

    Me gustaría saber cómo implementar la intrucción de Processing Serial.parseInt() usando los bloques de bitbloq

    Muchas gracias

    1. Anita de Prado

      Hola Manuel,

      Ahora mismo no hay un único bloque en bitbloq que cumpla esa función. Te recomiendo que escribas un correo al equipo de bitbloq directamente: support-bitbloq@bq.com. Ellos pueden responderte con más detalle e incluso aceptar propuestas para la creación de nuevos bloques bitbloq :)

Los comentarios están cerrados.