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:
- Programa dentro de la placa controladora que envíe/reciba datos. (Lo haremos con bitbloq)
- Programa dentro del ordenador que envíe/reciba datos. (Usaremos el Monitor Serial de la IDE de Arduino)
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
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:
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”
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:
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“.
Selecciona el puerto donde está conectada la placa en Herramientas/Puerto Serial:
Ya podemos abrir el Monitor Serial en Herramientas/Monitor Serial o pulsando aquí:
Se abrirá esta ventana donde debemos comprobar que esté marcada una velocidad de 9600 baudios.
Si el sensor IR de nuestro ejemplo comienza a detectar varias veces, en el monitor irá apareciendo la palabra ‘NEGRO’ sin cesar:
Si queremos ver el resultado un poco más ordenado, podemos utilizar el bloque bitbloq “Imprimir por puerto serie con salto de linea“:
De esta forma conseguiremos una respuesta más separada así:
LEER EL PUERTO SERIE
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:
Si es así, leeremos el dato recibido y lo guardamos en una variable:
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í:
“- 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“.
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: