Puerto-kawai_imagen_principal

¿Qué es el puerto serie?

El puerto serie es el medio que tiene tu placa controladora para comunicarse con otro aparato como el ordenador o tu móvil. Es muy útil para comprobar de un vistazo el valor de un sensor o una variable, ver el estado de tu programa y, en definitiva, corregir y entender mejor los posibles errores que éste tenga.



Para usar el puerto serie con el ordenador deberás conectar tu placa mediante un cable USB. En la pestaña Hardware selecciona el icono del puerto serie y arrástralo, se conectará automáticamente al puerto USB de tu placa. El baudrate es la cantidad de información que se transmite en un segundo y se mide en baudios (bits/segundo). Durante el curso utilizaremos el baudrate por defecto: 9600 baudios.

zum_serial_port_web

Normalmente, cuando programamos, lo primero que hacemos es mostrar un mensaje por pantalla. Vamos a saludar a nuestro ordenador utilizando el puerto serie.

¡Hola otra vez! Enviando mensajes


ejemplo-puertoserie

Dentro de la pestaña Componentes encontrarás el bloque enviar. Este bloque te permitirá enviar información mediante el puerto serie a tu ordenador. Clica sobre la pestaña Texto y selecciona el bloque texto. Escribe el mensaje ¡Hola mundo!, añade una espera de un segundo y carga el programa en tu placa.

Utilizando el monitor del puerto serie


Para poder visualizar que los mensajes llegan correctamente necesitas utilizar el Monitor serie. Clica sobre Ver->Mostrar serial monitor, verás como aparece el mensaje que estamos enviando de forma muy rápida. Cambia la opción Con salto de línea a Sin salto de línea y observa como cada mensaje se escribe uno seguido de otro. Puedes pausar el serial monitor, borrar todo lo escrito e, incluso, enviar información desde el ordenador a la placa.

Recibiendo mensajes en la placa mediante el puerto serie

Vamos a hacer un pequeño ejemplo de cómo enviar un mensaje a la placa, que ésta lo reciba, y repetirlo como si fuera un eco escribiéndolo mediante el puerto serie.


ejemplo2-puerto_serie

Utilizamos el bloque Serial_Port Recibir para almacenar la información que recibamos por puerto serie en la variable mensaje. Una variable es un contenedor, un sitio donde podemos almacenar la información que necesitemos más adelante. Si el mensaje es distinto que una palabra vacía, es decir, si hemos enviado algo, devolveremos la información almacenada en la variable mensaje para verla por el monitor serie.


Este ejemplo te será útil en muchas ocasiones. Si deseas que el programa solo reaccione ante una palabra, modifica el programa anterior introduciendo la palabra clave dentro del bloque de texto.

Aún hay más

    A continuación te proponemos un par de ideas para seguir practicando:

  • Imita a un reloj de pared de forma que por el puerto serie haga tic y luego tac con una frecuencia de un segundo.
  • Envía a la placa el mensaje ON para encender un LED. Envía OFF para apagarlo.
  • Crea un reloj que cuente los minutos que pasan y los muestre por el puerto serie.
  • Crea una casa domótica que controle las luces y otros elementos mediante puerto serie.


Para practicar aún más, puedes ver el siguiente vídeo

El puerto serie es muy importante para realizar un buen programa y entender el funcionamiento de tus sensores y actuadores. Lo utilizaremos muy a menudo por lo que pronto descubrirás todas sus posibilidades.

19 comentarios

  1. Hola, tengo una cuestión relativa a “Recibiendo mensajes en la placa mediante el puerto serie”:
    Ejecuto sólo la primera línea de vuestro ejemplo y al introducir un texto me lo escribe , sin necesidad del condicional siguiente. Además la variable “mensaje” se queda vacía. ¿Es esto posible? Gracias.

  2. Pablo Lozano

    Hola Toni,

    La variable te queda vacía porque esta en el bucle loop, y va leyendo del buffer de entrada y este, se va vaciando, por lo que una vez leída, en la siguiente vuelta del bucle, ya no hay nada en el buffer de entrada y la variable obtiene el valor de lo que hay en el buffer vacío.

    La condicional es por si quieres buscar entre los datos recibidos por el puerto, unos caracteres concretos, como pueda ser una palabra.

    Espero haberte ayudado.

    Un saludo.

  3. Amaia

    BitBloq 2 no me permite compilar ningún programa usando el puerto serie, siempre me aparece “error when uploading project:{value}”. Lo mismo me ocurre al usar el ultrasonidos.

    Sin embargo, con el resto de componentes (IR, LED, zumbador etc) la compilación y la carga en la placa son correctas…¿Cuál puede ser mi problema?.

    Por si os sirve de ayuda estoy usando un viejo portátil con windows 7, ya que el nuevo cifrador del sistema operativo de MacOSX (capitán 10-11) no ejecuta la aplicación webtoboard por el cifrado (protocolos de seguridad) y no puedo usar Mac tal y como solía hacer con el antiguo BitBloq…

    1. SGracia

      Hola Amaia,

      Prueba lo siguiente. Ve a Inicio > Documentos > Arduino > libraries y, dentro de esta carpeta, borra todos los archivos que haya. Una vez hecho, ejecuta manualmente Web2board (no tienes más que ir a la carpeta donde lo instalaste y hacer doble clic sobre “web2board.bat”). Verás que aparece un mensaje que indica que está descargando las librerias (debería ser la versión 0.0.5). Una vez terminado, comprueba si te deja compilar.

  4. Hola,

    He creado un proyecto y lo único que he hecho es conectar el puerto serie a la placa. No he añadido código ninguno, y al verificar el proyecto me sale el siguiente error:

    Error al compilar: C:/Users/ricardo/.web2board/tmp.ino:8: error: ‘bqSoftwareSerial’ does not name a type

     

    Lo he instalado todi de nuevo, he borrado caché y he reiniciado el PC…

    1. SGracia

      Buenos días, Ricardo:

      Por favor, comprueba lo que le indiqué a Amaia más arriba, borrando las librerías (Inicio > Documentos > Arduino > libraries) para después ejecutar manualmente Web2board. Una vez hecho, comprueba si te compila el programa.

  5. Buenas tardes.

    Tengo el mismo problema que Ricardo. Se que a él le habéis dicho que la solución se encuentran en seguir los mismos pasos que le ofrecisteis a Amaia, sin embargo por más que lo intento sigue ocurriendo el mismo fallo durante la compilación del proyecto ¿Qué puede estar pasando? ¿Habría alguna otra posible solución?

    Gracias de antemano.

    1. SGracia

      Buenos días, Javier:

      ¿Recibes el mismo error con la librería bqSoftwareSerial? ¿Qué versión de Sistema Operativo usas?

  6. Hola! En BitBloq2, en el apartado de hardware de la izquierda, conecto el puerto de serie y todo correcto, pero al programar en el apartado software no me aparece la pestaña de comunicación para coger el bloque del puerto serie.
    Gracias

    1. SGracia

      Buenos días, Iván:

      En la actual versión de Bitbloq esto ha cambiado ligeramente. Puedes encontrar los bloques del puerto serie que necesitas en el apartado de “Componentes”.

      Un saludo.

  7. Buenos días.

    Tengo el mismo problema que Ricardo y que Amaia y, aunque sigo las instrucciones que les habéis dado, el problema persiste ¿Podría deberse a algo más?

    Un saludo.

    1. SGracia

      Buenos días, Javier:

      ¿Puedes decirnos qué Sistema Operativo usas? ¿Qué error recibes exactamente y qué tipo de programa estás intentando cargar?

      Un saludo.

      1. Buenas tardes.

        El sistema que estoy utilizando es Windows 10. En el caso del error que recibo lo adjunto aquí copiado textualmente.

        Error al compilar: C:/Users/human/.web2board/tmp.ino:8: error: ‘bqSoftwareSerial’ does not name a type C:/Users/human/.web2board/tmp.ino: In function ‘void setup()': C:/Users/human/.web2board/tmp.ino:11: error: ‘puerto_serie_0′ was not declared in this scope

        Un saludo.

        1. Agustín Parra

          Buenas tardes, Javier:

          En este caso, te recomiendo que vuelvas a borrar las librerías de Arduino. Después, desinstala Web2board para volverlo a instalar como administrador. También, para descartar cualquier otro origen del fallo, sería recomendable que borrases caché y datos del navegador.

          Un saludo.

          1. Durante la instalación me sale un mensaje que me dice:

            bq (silabenm) Ports (03/19/2014 6.7.0.0) Install failed

            Quizá tenga algo que ver con todo esto.

            Un saludo.

  8. Buenas tardes:
    Sigo teniendo el mismo problema que Ricardo, Amaia y Javier:

    Error al compilar: C:/Users/maria/.web2board/tmp.ino:8: error: ‘bqSoftwareSerial’ does not name a type C:/Users/maria/.web2board/tmp.ino: In function ‘void loop()': C:/Users/ENCARNA/.web2board/tmp.ino:14: error: ‘puerto_serie_0′ was not declared in this scope C:/Users/maria/.web2board/tmp.ino:14: error: expected primary-expression before ‘{‘ token

    Ya he borrado las librerías de Arduino y he desinstalado y vuelto a instalar como administrador Web2board, así como borrado la caché del navegador y otros datos.

    Ya no sé qué más hacer.

    Muchas gracias

    1. SGracia

      Buenos días, Nikita:

      ¿Puedes facilitarnos una captura del programa que estás intentando cargar para que comprobemos que es todo correcto?

      Un saludo.

  9. Hola, pues yo estoy intentando poner zowi en marcha con bitbloq y tras instalar web2board, borrar las libraries, desinstalar y volver a instalar sigo con problemas. En mi caso me pone esto

    Error al compilar: C:/Users/Santiago/.web2board/tmp – copia.ino: In function ‘void loop()': C:/Users/Santiago/.web2board/tmp – copia.ino:19: error: expected primary-expression before ‘,’ token C:/Users/Santiago/.web2board/tmp – copia.ino:19: error: expected primary-expression before ‘,’ token C:/Users/Santiago/.web2board/tmp.ino: At global scope: C:/Users/Santiago/.web2board/tmp.ino:13: error: redefinition of ‘Zowi zowi’ C:/Users/Santiago/.web2board/tmp – copia.ino:13: error: ‘Zowi zowi’ previously declared here C:/Users/Santiago/.web2board/tmp.ino: In function ‘void setup()': C:/Users/Santiago/.web2board/tmp.ino:16: error: redefinition of ‘void setup()’ C:/Users/Santiago/.web2board/tmp – copia.ino:16: error: ‘void setup()’ previously defined here C:/Users/Santiago/.web2board/tmp.ino: In function ‘void loop()': C:/Users/Santiago/.web2board/tmp.ino:19: error: redefinition of ‘void loop()’ C:/Users/Santiago/.web2board/tmp – copia.ino:19: error: ‘void loop()’ previously defined here

    y no se que puedo hacer. En administrador de dispositivos en puerto com aparece silicon labs cp210 (com3) y todo parece estar bien, pero no consigo que verifique o cargue el programa a zowi.

    1. SGracia

      Buenos días, Santiago:

      Nos sería de utilidad que nos facilitases una captura de pantalla del programa que estás intentando cargar, así como que nos indicases qué Sistema Operativo estás empleando en ese ordenador.

      Un saludo.

Los comentarios están cerrados.