MIGUELTECNOLOGÍA
I.E.S. JOSÉ SARAMAGO (Humilladero)
Unidad 2: Programación con Bitbloq
1. INTRODUCCIÓN A LOS SISTEMAS DE COMPUTACIÓN
La computación física es el campo de la computación que estudia la conexión entre el mundo físico y los ordenadores. Esta conexión es bi-direccional, es decir, puede consistir en obtener información del entorno y enviarla a ordenadores para su procesado o bien, el uso de información para controlar motores, relés, luces y otros dispositivos capaces de actuar sobre el entorno. Del mismo modo que a los dispositivos que pueden medir el entorno los llamamos sensores, a los que pueden actuar sobre el mismo, los denominamos actuadores.
La computación física se centra en diseñar dispositivos, objetos e incluso entornos que permitan establecer un canal de comunicación entre el mundo físico y el mundo virtual. Aunque esto suene a algo relacionado con el futuro, la realidad es que llevamos conviviendo con esta disciplina mucho tiempo. Solo tenemos que pensar en un ordenador o en un dispositivo móvil. Estos dispositivos ponen en contacto nuestro mundo, el mundo físico, y el mundo virtual de las máquinas y ordenadores.
En las industrias se han utilizado los sistemas de computación física desde hace varios años, pero eran sistema caros y difíciles de instalar y programar, utilizándose como controladores, uno o varios ordenadores y PLC´s programables.
La computación física se centra en diseñar dispositivos, objetos e incluso entornos que permitan establecer un canal de comunicación entre el mundo físico y el mundo virtual. Aunque esto suene a algo relacionado con el futuro, la realidad es que llevamos conviviendo con esta disciplina mucho tiempo. Solo tenemos que pensar en un ordenador o en un dispositivo móvil. Estos dispositivos ponen en contacto nuestro mundo, el mundo físico, y el mundo virtual de las máquinas y ordenadores.
En las industrias se han utilizado los sistemas de computación física desde hace varios años, pero eran sistema caros y difíciles de instalar y programar, utilizándose como controladores, uno o varios ordenadores y PLC´s programables.
Afortunadamente, en la actualidad, se han desarrollado varias placas controladoras de bajo costo que permiten a cualquier persona casi sin conocimientos sobre electrónica y programación, realizar proyectos de computación física realmente complejos.
1.1. Tipos de sistemas de computación
1.1.1. Placas controladoras
Existen varios tipos de placas controladoras de bajo coste que sustituyen a los ordenadores, permitiendo realizar proyectos de computación por poco dinero y con pocos conocimientos, por lo que actualmente se están utilizando mucho en centros educativos, en proyectos artísticos, en proyectos caseros, etc.
Placas Arduino, clones y derivados: Son las placas más utilizadas, por su bajo coste, su versatilidad y su sencillez. Hay muchísima información en Internet con proyectos realizados por otras personas, foros de consultas, solución a problemas, etc.
Disponen de un microprocesador poco potente, poca memoria y son lentas, pero sus características son suficientes para la mayoría de los proyectos.
Como se trata de un proyecto de hardware libre, existen varios clones compatibles más baratos. También existen muchas variantes adaptadas a distintos tipos de proyectos.
Placas ESP32: Son placas controladores compatibles con Arduino, pero con muchas mejores características. Son más veloces, con más memoria y tienen conexiones WIFI y bluetooth integradas, manteniendo un bajo precio.
Sus posibilidades de conexión, su velocidad y su reducido tamaño las hacen ideales para las aplicaciones IOT.
Al igual que con las placas Arduino, existen muchas variaciones y clones de placas ESP32.
Placas Raspberry pi: La placa controladora Raspberry Pi constituye un ordenador completo, a la que se le pueden conectar un ratón, un teclado, una pantalla, unidades de almacenamiento, etc. Tiene una gran comunidad de usuarios en Internet con proyectos, foros, etc.
Disponen de un procesador rápido, de mucha memoria y son bastante rápidas, por lo que son utilizadas para proyectos más complejos.
Dispone de conectores para dos monitores, cámara web, puertos USB, conexión ethernet, WIFI, etc.
Existen placas parecidas e incluso con mejores especificaciones, pero las Raspberry Pi son las más utilizadas en todo el mundo.
1.1.2. Sensores
Respecto a los sensores, también existen muchos tipos de bajo coste que pueden medir parámetros físicos tan dispares como humedad, concentración de CO2, color, ultrasonidos, presión, etc.
Los sensores son periféricos de entrada para las placas controladoras.
1.1.3. Actuadores
También existen multitud de actuadores que permiten realizar cambios en el medio, permitiendo realizar varios tipos de proyectos de computación. Luces, motores, relés, pantallas, zumbadores, etc.
Los actuadores son periféricos de salida para las placas controladoras.
1.2. Historia de los microcontroladores
Los microcontroladores son relativamente modernos, luego su historia es corta, vamos a ver un resumen en la siguiente presentación:
ACTIVIDADES (1)
¿Qué es un sistema de computación y de qué partes se compone?
¿Qué son las placas controladoras y porqué se usan tanto actualmente?
Elabora una tabla de los tipos de placas derivadas de Arduino de la imagen anterior donde se indique la característica de cada una de ellas.
Busca en Internet proyectos que se pueden realizar con una placa Raspberry Pi.
Piensa en un sistema de computación compuesto por un sensor y un actuador y describe cómo funcionaría.
Para este curso de robótica vamos a utilizar los maletines que nos fueron entregados al participar en el proyecto Retotech de Fundación Endesa en los cursos 19/20 y 20/21.
En primer lugar, vamos a comprobar el contenido de los maletines, que es el siguiente:
1 x Placa controladora Zum Core 2.0
2 x Sensores de Infrarrojos
1 x Botón
1 x Sensor de luz
1 x Zumbador
1 x Sensor de ultrasonidos
1 x Potenciómetro
2 x LED
2 x Servo
2 x Servo de rotación continua (RC)
1 x Cable USB – microUSB 1 m
1x Portapilas: hueco para 8 pilas AAA
CADA DÍA TIENES QUE COGER LA CAJA CON EL NÚMERO QUE SE TE HA ASIGNADO Y TIENES QUE REVISAR QUE ESTÁN TODOS LOS ELEMENTOS. SI FALTA ALGO, COMUNÍCASELO AL PROFESOR.
¡ Cuida todos los elementos, ya que son frágiles y difíciles de conseguir !
2. ARQUITECTURA DE UN ROBOT
La arquitectura de un robot se refiere a las partes que lo componen. En general, se pueden distinguir cuatro unidades funcionales:
Sensores: Que se encargan de medir magnitudes físicas (velocidad, temperatura, humedad, posición, etc.) y los transforman en magnitudes eléctricas. Dentro del robot hay dos tipos de sensores: los que se ocupan del estado interno de la máquina y los que se ocupan del entorno.
Actuadores: Que reciben las órdenes desde el controlador y efectúan movimientos. Los más habituales son motores, relés o accionadores hidráulicos y neumáticos.
Alimentación: Que proporciona la energía para el funcionamiento de todo el sistema. Suelen ser baterías o placas fotovoltaicas, para garantizar autonomía.
Controladores: Que dirigen el trabajo de los actuadores. La entrada es la información obtenida de los sensores. La salida está formada por las órdenes eléctricas enviadas a los actuadores (paro/puesta en marcha). La mayor parte de los robots están controlados por ordenadores.
Como podemos ver, la arquitectura de un robot es similar a la de cualquier sistema automático, básicamente se compone de sensores, controladores (suele ser un microcontrolador, o sea, un ordenador miniaturizado) y actuadores.
Un robot posee componentes electrónicos, mecánicos (reductores de velocidad, motores, etc.) y si es programable, un software. Por lo tanto en la robótica se engloban principalmente conocimientos técnicos de mecánica, electrónica e informática.
En nuestra caja de robótica el controlador es la placa Zum Core 2.0 (Basada en Arduino).
Disponemos de los siguientes sensores:
Botón
Sensor de Infrarrojos
Sensor de luz
Sensor de ultrasonidos
Potenciómetro
Como fuentes de alimentación tenemos:
Cable USB – microUSB
Portapilas
Disponemos de los siguiente actuadores:
LED
Semáforo de LED´s
Zumbador
Servo de rotación continua (RC)
Servomotor
Para programar nuestro robot contamos con la web:
¿Serías capaz de nombrar un aparato que funcione con un sensor y un actuador de las listas anteriores?
3. PROYECTOS
A continuación realizaremos una serie de proyectos guiados con los que aprenderemos el manejo de los distintos actuadores y sensores, así como la programación mediante bloques, a la vez que se introducirán nuevos conceptos:
3.1. ACTUADORES
Vamos a conocer el funcionamiento de los actuadores que tenemos haciendo varios proyectos:
PROYECTO Nº 1. ENCENDIDO Y APAGADO DE UN LED
En este primer proyecto vamos a encender y apagar un LED de forma programada, es un proyecto muy sencillo que pretende la introducción a bitbloq y a la conexión de componentes en la placa de Zum Core 2.0
En principio no vamos a conectar ningún LED físicamente ya que la placa incorpora uno en la patilla 13.
Entra en la web BITBLOQ, elige la placa Zum Core 2.0 del menú de placas y arrastra un LED del menú de componentes hasta el área de trabajo.
Conecta el LED a la placa en la patilla 13.
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento.
Los bloques que se ponen en la sección Bucle principal (Loop) se repiten indefinidamente.
ACTIVIDADES (2)
Conecta uno de los LED a la placa, en la patilla 13 para comprobar que funciona correctamente y luego el otro. (Observa los colores de los cables al conectar a la placa).
Modifica el programa anterior para que el parpadeo del LED se produzca cada segundo.
Conecta uno de los LED a la patilla 13 y el otro a la patilla 12 y realiza la programación necesaria para que parpadeen de forma simultánea cada segundo.
Conecta el pequeño semáforo a la placa en las patillas G, 13, 12 y 11 y realiza la programación necesaria para que funcione correctamente.
Opcional: Conecta los dos LED´s a la placa además de semáforo, para simular el semáforo de las personas.
PROYECTO Nº 2: TOCANDO MÚSICA
En este proyecto vamos producir sonidos a través del zumbador.
Entra en la web BITBLOQ, elige la placa Zum Core 2.0 del menú de placas y arrastra un zumbador del menú de componentes hasta el área de trabajo.
Conecta el zumbador a la placa en la patilla 5.
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento
Incluyendo bloques de Esperar, conseguimos silencios entre las notas.
ACTIVIDADES (3)
Copia el programa anterior, súbelo a la placa y observa su funcionamiento.
Modifica las notas y la duración de los silencios hasta conseguir una melodía reconocible.
Busca en Internet una partitura sencilla e intenta reproducirla mediante un programa.
Opcional: Intenta conseguir el zumbido de una alarma antirrobo.
PROYECTO Nº 3: CONTROLANDO LOS MOTORES
En este proyecto vamos a aprender a controlar los dos tipos de motores de los que disponemos, los servos de rotación continua y los servomotores.
Entra en la web BITBLOQ, elige la placa Zum Core 2.0 del menú de placas y arrastra un servo de rotación continua (RC) del menú de componentes hasta el área de trabajo.
Conecta el servo de rotación continua (RC) a la placa en la patilla 6.
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento
El servo de rotación continua (RC) gira continuamente en sentido horario y en sentido antihorario. No podemos modificar su velocidad.
Se suele utilizar para mover las ruedas de un robot para que éste pueda desplazarse.
¡ No gires los servos con la mano, podrían estropearse !
Ahora vamos a probar el funcionamiento del servo:
Conecta el servo a la placa en la patilla 12.
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento
Un servo solo puede moverse entre 0º y 180º, con una precisión de un grado.
Se suele utilizar para abrir o cerrar barreras, puertas, etc.
ACTIVIDADES (4)
Conecta los dos servos de rotación continua RC y realiza la programación para controlar las ruedas de un robot que se desplace hacia adelante y hacia atrás cada 3 segundos.
Conecta los dos servos y realiza la programación que permita que funcionen como los limpiaparabrisas de un coche.
3.2. SENSORES
En este primer lugar, debemos saber que existen dos clases de sensores: los digitales y los analógicos:
Los sensores digitales solo pueden tener dos estados (Encendido-apagado, on-off, 0-1), es el caso del botón y el sensor de infrarrojos.
Los sensores analógicos pueden tener varios valores (0, 1, 23, 45, 255...), es el caso del potenciómetro, el sensor de luz y el sensor de ultrasonidos.
3.2.1. Sensores digitales
Vamos a conocer el funcionamiento de los sensores digitales que tenemos haciendo varios proyectos:
PROYECTO Nº 4: ENCENDIDO Y APAGADO DE UN LED MEDIANTE UN BOTÓN
En este proyecto vamos a encender y apagar un LED mediante un botón.
Entra en la web BITBLOQ, elige la placa Zum Core 2.0 del menú de placas y arrastra un LED y un botón del menú de componentes hasta el área de trabajo.
Conecta el LED a la placa en la patilla 13 y el botón en la patilla 7.
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento.
En el programa anterior hemos utilizado una sentencia condicional, que es un recurso muy utilizado en programación, ya que con ella le decimos a nuestro robot que haga "algo" cuando suceda "otra cosa".
Ahora vamos a probar el funcionamiento del sensor de infrarrojos:
Conecta el sensor de infrarrojos a la placa en la patilla 13 y el LED en la patilla 7. (Sustituye el botón por el sensor de infrarrojos).
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento
En este caso se ha empleado el bloque "de lo contrario, ejecutar" en lugar de "en cambio, si". El primero se utiliza cuando tenemos varias opciones y el segundo, cuando solo tenemos dos, como en este caso.
Pero... ¿Y si quisiéremos que el LED se quedase encendido al soltar el botón y se apagase al volverlo a pulsar?. En este caso hay que recurrir al uso de variables, para guardar el estado anterior del botón.
Una variable es un sitio donde guardar un valor que vamos a necesitar más tarde.
Las variables hay que declararlas previamente. Se pueden declarar variables en el apartado - Variables globales, funciones y clases, que nos van a servir en toda la programación o se pueden declarar en el apartado - Bucle principal (loop), que solo se pueden utilizar en dicho bloque.
Conecta el LED a la placa en la patilla 13 y el botón en la patilla 7.
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento.
Si declaramos la variable en el bloque Bucle principal (Loop) y subimos el programa para comprobar el funcionamiento, veremos que el LED siempre permanece apagado, ya que con cada bucle, la variable toma el valor de "0".
La solución es declarar la variable en el bloque Variables globales y funciones, aunque si comprobamos ahora el funcionamiento del programa, vemos que el encendido o apagado del LED es aleatorio, ya que el bucle se repite varias veces mientas pulsamos el botón
Para mejorar el funcionamiento del programa, podemos colocar unos bloques de Esperar 500 ms después de cada pulsación, para que nos dé tiempo a quitar el dedo del botón.
Ahora el funciona-miento es mejor, pero todavía falla algunas veces.
¿Serías capaz de modificar el programa para mejorar su funcionamiento?
ACTIVIDADES (5)
Modifica el programa del botón y el LED para que esté siempre encendido y se apague cuando se pulsa el botón.
Escribe un programa y monta el circuito para que se encienda el LED a los 3 segundos de pulsar el botón y se apague a los 3 segundos.
Escribe el programa y monta el circuito para controlar una alarma que suena mediante un sensor de ultrasonidos. Cuando empieza a sonar, la alarma no para hasta que se apague la placa.
3.2.2. Sensores analógicos
Vamos a conocer el funcionamiento de los sensores analógicos que tenemos haciendo varios proyectos:
PROYECTO Nº 5: ENCENDIDO Y APAGADO DE UN LED MEDIANTE EL SENSOR DE LUZ
En este proyecto vamos a encender y apagar un LED mediante un sensor de luz.
Entra en la web BITBLOQ, elige la placa Zum Core 2.0 del menú de placas y arrastra un LED y un sensor de luz del menú de componentes hasta el área de trabajo.
Conecta el LED a la placa en la patilla 13 y el sensor de luz en la patilla A0 (Recuerda que es un sensor analógico).
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento.
El sensor de luz es una resistencia llamada LDR cuyo valor varía con la luz que incide sobre la misma, se suele usa parar para detectar si es de día o de noche y encender las luces automáticamente. (Farolas, coches, etc).
El valor de 200 es el que nos sirve de punto medio entre el encendido y apagado, esto depende del lugar donde probemos el circuito, si no funciona hay que cambiar dicho valor hasta conseguir que funcione correctamente.
¿Cómo podríamos encontrar el valor exacto? (Más tarde lo veremos).
El puerto serie nos permite comunicarnos con la placa de BitBloq mediante el cable USB y nos muestra información de la placa en la pantalla del ordenador.
Monta el siguiente circuito.
Crea el siguiente programa con BITBLOQ y prueba su funcionamiento.
Abre el monitor serie en Ver -> Mostrar Serial Monitor y visualiza los valores que va tomando el sensor de luz cada 500 ms.
El bloque Esperar 500 ms nos permite ver correctamente la lectura de la LDR, ya que se realiza cada medio segundo, si no estuviera, la cifra cambiaría demasiado rápido.
Este sencillo programa nos permite encontrar el valor exacto en el que nuestro sensor de luz debe encender el LED.
En el siguiente ejemplo, declaramos una variable llamada número para hacer un contador de pulsaciones del botón:
Monta el siguiente circuito.
Crea el siguiente programa con BITBLOQ y prueba su funcionamiento.
Abre el monitor serie en Ver -> Mostrar Serial Monitor y visualiza los valores de la variable numero con cada pulsación del botón.
ACTIVIDADES (6)
Modifica el circuito anterior quitando el botón y conectando los dos sensores de infrarrojos y realiza la programación necesaria para realizar un contador de personas en un estadio: las personas entran por una puerta y salen por otra distinta, luego un sensor suma las personas que entran y otras restan las personas que salen. Mediante monitor serie podremos comprobar la cantidad de personas que hay dentro del estadio.
Modifica el programa anterior para conseguir un marcador del partido de futbol colocando un sensor de infrarrojos en cada portería y donde se muestre por el monitor serie el resultado del partido.
PROYECTO Nº 6: ENCENDIDO Y APAGADO DE UN LED MEDIANTE EL POTENCIÓMETRO
En este proyecto vamos a encender y apagar un LED mediante un potenciómetro.
Entra en la web BITBLOQ, elige la placa Zum Core 2.0 del menú de placas y arrastra un LED y un sensor de luz del menú de componentes hasta el área de trabajo.
Conecta el LED a la placa en la patilla 13 y el potenciómetro en la patilla A0 (Recuerda que es un sensor analógico).
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento.
El potenciómetro es una resistencia variable cuyo valor cambia al hacer girar un dial con los dedos.
Se suele usar para ajustar el volumen de sonido de un altavoz, el nivel de luz, etc.
Conecta el Cable USB y utiliza el monitor serie para ver los valores que toma el potenciómetro.
¿Qué pasa si lo ponemos justo en 500?
¿Qué rango de valores podemos conseguir?
Con este otro programa podemos cambiar la velocidad de parpadeo del LED mediante el potenciómetro.
Hemos declarado llamada "tiempo parpadeo" una variable que nos guarda el valor del potenciómetro en todo momento.
Modificando el tono del zumbador
Recordemos que el potenciómetro puede tener valores de entre 0 y 1023, pero en este caso queremos que las frecuencias sigan una escala de 200 a 500 Hz, escala muy próxima a las notas más utilizadas. Para ello, vamos a utilizar un nuevo bloque llamado Mapear.
Mapear es convertir un rango de valores en otro distinto.
Para utilizar el mapeo, vamos a construir y programar el siguiente ejemplo:
Los bloque Mapear y Sonar el zumbador empleados en este ejemplo están ambos en la sección de bloque Avanzados
ACTIVIDADES (7)
En el ejemplo anterior, variábamos el parpadeo del LED entre 0 y 1023 milisegundos. Utiliza el bloque Mapear para hacerlo parpadear de 0 a 10 segundos.
Controla un servomotor mediante el giro del potenciómetro.
PROYECTO Nº 7: MIDIENDO DISTANCIAS EN EL SENSOR DE ULTRASONIDOS
En este proyecto vamos a medir la distancia a la que se encuentra un objeto del sensor de ultrasonidos.
Entra en la web BITBLOQ, elige la placa Zum Core 2.0 del menú de placas y arrastra un LED y un sensor de luz del menú de componentes hasta el área de trabajo.
Conecta el sensor de ultrasonidos a la placa en la patilla 7 y el USB serie (Recuerda que es un sensor analógico, aunque se conecta a los pines digitales).
Entra en la pestaña de Software y construye el siguiente programa de bloques en la sección Bucle principal (Loop).
Conecta la placa al ordenador con el cable USB y sube el programa para comprobar su funcionamiento.
Coloca objetos delante del sensor serie para medir con precisión en el puerto serie la distancia hasta los mismos.
PROYECTO Nº 8: SENSOR DE APARCAMIENTO DE VEHÍCULOS
Seguramente que alguna vez te habrás subido a un coche con sensores de aparcamiento que hacen sonar un zumbador de forma intermitente cuando el vehículo se aproxima a un obstáculo, siendo el sonido de menor la frecuencia del zumbador al acercarnos al mismo.
En este ejemplo vamos a recrear un sensor de aparcamiento de un vehículo:
Monta el siguiente circuito.
Crea el siguiente programa con BITBLOQ y prueba su funcionamiento.
Bucles de control
Un bucle de control es una parte del programa que se repite según una condición; hay dos clases de bucles de control:
Bucle hasta que ...
Bucle mientras ...
ACTIVIDADES (8)
Realiza un programa que haga parpadear un led solo 3 veces.
Realiza un programa con el que podamos encender un led cuando pulsamos un botón y luego se apague a los 3 segundos.
Realiza un programa para controlar un alarma, de forma que la alarma se active cuando un sensor de infrarrojos detecte algún intruso, haciendo sonar un zumbador. La alarma podrá ser desconectada con un pulsador.