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.

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.

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.

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.

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)

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:

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:

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: 

Como fuentes de alimentación tenemos:


Disponemos de los siguiente actuadores:

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

Los bloques que se ponen en la sección Bucle principal (Loop) se repiten indefinidamente.

ACTIVIDADES (2)


PROYECTO Nº 2: TOCANDO MÚSICA

En este proyecto vamos producir sonidos a través del zumbador.

Incluyendo bloques de Esperar, conseguimos silencios entre las notas.

ACTIVIDADES (3)


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.


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:

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)

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.

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:

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.

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)

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.

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.

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:

ACTIVIDADES (6)

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.

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)

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.

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:

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:

ACTIVIDADES (8)