Sesión 6: IoT y siguientes pasos

Currículo: aquí encontrarás el desarrollo detallado de los contenidos que forman parte del Curso de pensamiento computacional, robótica e internet de las cosas, organizado por el CEP de Huelva – Isla Cristina.

Tabla de contenidos

1. Introducción a IoT

Llamamos «Internet de las Cosas» (IoT, del inglés Internet of Things) a la conexión de objetos de uso cotidiano a internet.

La finalidad, por tanto, es la interconexión de diferentes objetos que utilizamos con cierta frecuencia, con el objetivo de hacernos la vida más fácil, por ejemplo en la administración eficiente de la energía o en potenciar nuestra propia seguridad.

Por las características inherentes a este objetivo, el internet de las cosas se basa en sensores, en redes de comunicaciones y en una inteligencia que maneja todo el proceso junto con los datos que se generan. Los sensores serían los sentidos del sistema y, para que puedan ser empleados de forma masiva, deben tener bajo consumo a un coste lo más pequeño posible, un reducido tamaño y una gran flexibilidad para su uso en todo tipo de circunstancias.

El IoT implica que todo objeto puede ser una fuente de datos.

Por todo lo anterior, necesitamos un hardware adaptable y un software compatible que sea capaz de manejar las distintas partes de este tipo de sistemas.

Siendo esto así, este podría ser un esquema conceptual de la tarea que tenemos por delante:

Según el diagrama anterior, esta sería la foto completa del proceso:

  1. Sensores: distintos dispositivos electrónicos leen magnitudes físicas y se las entregan a los dispositivos de procesamiento.
  2. Placas controladoras: las placas controladoras organizan el modo en el que se capturan los datos (como su periodicidad), realizan cálculos (como conversiones entre valores, o fórmulas matemáticas) y activan otros elementos en función de la finalidad del sistema (activar o desactivar un sensor, enviar una señal a un actuador, etc…).
  3. Red de comunicaciones: es el canal a través del cual la placa controladora envía los resultados de sus cálculos a una plataforma IoT.
  4. Plataforma IoT: recibe los datos procesados por las placas controladoras a través de la red de comunicaciones y elabora distintas visualizaciones de los datos para que el administrador pueda entender lo que está ocurriendo.
  5. Aplicación móvil: opcionalmente, la plataforma IoT puede enviar mensajes, alertas o notificaciones al usuario a través de una app móvil. En algunos casos, el propio usuario a través de esa aplicación, podría controlar la activación o desactivación de algunos componentes del sistema, ajustarlos, calibrarlos, etc.

Por poner sólo algunos ejemplos de la potencia que nos ofrecen este tipo de sistemas, citaremos:

  • Sensores de calidad del aire: ubicados en puntos estratégicos de las ciudades, pueden detectar niveles de contaminación en tiempo real, proporcionando datos muy importantes para iniciativas de salud pública.
  • Dispositivos de monitoreo de salud: incluyen pulseras y otros wearables que miden constantemente variables vitales como la frecuencia cardíaca, la temperatura corporal o los niveles de actividad física, permitiendo un seguimiento continuo de la salud individual.
  • Sistemas de riego inteligente: en la agricultura, sensores instalados en el campo pueden determinar la humedad del suelo y ajustar automáticamente el riego para optimizar el consumo de agua y mejorar así el rendimiento de los cultivos.
  • Iluminación inteligente: farolas equipadas con sensores que ajustan la intensidad de la luz según las condiciones ambientales y la presencia de personas, reduciendo así el consumo energético y mejorando la seguridad ciudadana.
  • Gestión de residuos inteligente: contenedores de basura que notifican cuando están llenos, mejorando la eficiencia de los servicios municipales de recogida y reduciendo el impacto ambiental.
  • Etiquetas RFID en logística: utilizadas para rastrear el movimiento de mercancías en almacenes y durante el transporte, mejorando la precisión del inventario y la eficiencia de la cadena de suministro.

El mundo es ya una inmensa superficie que genera constantemente una cantidad de datos que no para de crecer.

Todo ello gracias al IoT.

Bien, ahora que ya sabes de lo que hablamos, vamos a ver cómo podemos implementar este modelo de sistemas con las os placas controladoras que tenemos a nuestro alcance Micro:bit y Arduino UNO.

Cuando hablamos de transmitir los datos por una red de comunicaciones, tenemos dos opciones: establecer una comunicación por Bluetooth o hacerlo por una red WiFi. Será la naturaleza de nuestro proyecto la que recomiende el uso de una u otra opción, así que lo primero que haremos con cada una de nuestras placas será configurarlas para que funcionen con ambas variantes de comunicaciones.

Comencemos por Micro:bit.

2. IoT con Micro:bit

La tarjeta Micro:bit por sí sola, ya es capaz de gestionar sistemas IoT, puesto que aunque no tenga conectividad WiFi integrada, sí que posee una antena de radiofrecuencia que podemos configurar para la comunicación por Bluetooth.

Para el caso de la comunicación por WiFi lo más recomendable es usar las tarjetas de expansión que se comercializan 100% compatibles con nuestra placa controladora. En un momento veremos una de ellas, pero primero vamos a explorar las capacidades Bluetooth de Micro:bit.

2.1. Bluetooth con Micro:bit

Para activar las capacidades Bluetooth de Micro:bit, debemos instalar una extensión que nos proporcione los bloques que necesitamos, pero antes, le vamos a facilitar las cosas a las aplicaciones que quieran comunicarse por Bluetooth con nuestra Micro:bit.

En Makecode, accedemos a la configuración de nuestro proyecto y le decimos que no es necesario escribir una contraseña para vincular un dispositivo con nuestra Micro:bit, es decir, que todos puedan usar el Bluetooth de Micro:bit:

A continuación, vamos al bloque de extensiones, buscamos «Bluetooth» e instalamos la primera que nos sale:

Makecode nos indicará que para usar Bluetooth necesita deshabilitar las capacidades de radiofrecuencia, porque ambos usos simultáneamente son incompatibles:

Después de esto, ya aparecerá una nueva categoría de bloques en Makecode.

Probar las capacidades Bluetooth de la Micro:bit, en este punto, es tan sencillo como hacer este programa y cargarlo en la placa:

Si ahora, te vas a tu móvil, activas el Bluetooth, escaneas los dispositivos a tu alcance y pulsas sobre el de la Micro:bit, tu placa reaccionará y quedará funcionando:

Vale, estamos emparejados, pero ¿cómo hago para que mi programa reciba por Bluetooth algo desde por ejemplo un móvil?

Sencillo, este es el programa que lee lo que se recibe por el Bluetooth y lo muestra en el panel de LEDs:

Para enviar datos al Bluetooth desde un móvil, procedemos igual que hicimos en el caso de Arduino: instalamos la app Serial Bluetooth Terminal, la emparejamos con el dispositivo Bluetooth Micro:bit, y le enviamos cualquier dato que nos interese.

En el ejemplo anterior, nos hemos limitado a mostrar en la pantalla de la Micro:bit el dato que hemos enviado desde el móvil.

Si todavía no se te ocurre qué usos podríamos darle a esto, piensa que crear una app que controle un coche Maqueen desde el móvil estaría prácticamente hecho, simplemente desde el móvil podríamos enviar «AV» (para avanzar), «PA» (para parar), «IZ» (para girar a la izquierda), «DE» (para girar a la derecha), «RE» (para retroceder) y cuando estos caracteres lleguen a la Micro:bit, programar cómo debe moverse el coche en función de los caracteres recibidos.

Por ejemplo, si desde el móvil se envió «AV»:

De manera similar podemos usar este esquema de comunicación para enviar al móvil la lectura de cualquier sensor o activar desde el móvil cualquier actuador que esté conectado a la Micro:bit.

2.2. WiFi con Micro:bit

Como decíamos más arriba, existen tarjetas de expansión generalistas, pero también, tarjetas enfocadas a un uso concreto, como la que tenemos en nuestro Smart Agriculture Kit de Electfreaks:

No te dejes engañar por su nombre, porque a pesar de que está orientada para gestionar una instalación agrícola, los componentes que incorpora podemos usarlos en una amplia variedad de aplicaciones IoT. Veamos los componentes que trae:

A la izquierda el cable USB para alimentar al sistema, a la derecha varios cables para conectar componentes. Dentro de la caja, en el centro una pantalla OLED; y en las filas superior e inferior, de izquierda a derecha:

  • Sensor PIR, para detectar presencia humana.
  • Sensor DS18B20, para leer la temperatura en líquidos.
  • Sensor DHT11, detecta cambios de temperatura y humedad en el ambiente.
  • Rainbow LED, un LED multicolor que se caracteriza por operar bajo un voltaje bajo mientras ofrece una alta luminancia y una dispersión angular amplia, lo que significa que puede iluminar de manera eficiente y uniforme sobre un área extensa.
  • Microservo EF92A, un servo motor de 180º.
  • Sensor de humedad, su resistencia entre los dos electrodos nos permite calcular la humedad del suelo.
  • Sensor de nivel de agua, se sumergen las bandas conductoras y es capaz de detectar el nivel.
  • Sonar de ultrasonidos, muy útil para medir la distancia a un objeto en cm y mm.
  • Placa IoT:bit, además de funcionar como expansión para Micro:bit, incorpora otros elementos interesantes como un módulo WiFi.

No solo es compatible con Micro:bit sino que es plenamente funcional para la programación por bloques con Makecode. De la misma manera que necesitamos activar una extensión para trabajar con Maqueen, también tenemos disponible una específica de este kit. Lo encontrarás así:

Una vez activada la extensión, verás que se han añadido tres nuevas categorías de bloques:

El primero añade todos los bloques relacionados con la comunicación por WiFi, el segundo todo lo relacionado con la pantalla OLED, el tercero todo lo que tiene que ver con fechas y horas, y el último es un compendio de otros bloques sin relación entre ellos pero que nos permiten controlar una cantidad ingente de magnitudes que ofrecen los sensores.

Bueno pues hechas las presentaciones, vamos a hacer un proyecto de ejemplo monitorizando la temperatura.

2.3. Monitorizar la temperatura

El pequeño proyecto que vamos a programar ejemplificará el uso de los componentes midiendo la temperatura del agua contenida en dos vasos. El primero está a temperatura ambiente, y el segundo ha sido calentado hasta el punto de ebullición en un microondas. Además, mostraremos la lectura de la temperatura en la pantalla OLED.

Aunque lo hemos hecho con agua, el mismo sistema funcionará con cualquier líquido que se te ocurra.

🛠 Materiales:

  • 1 x Micro:bit.
  • 1 x IoT:bit.
  • 1 x Sensor DS18B20.
  • 1 x cable terminador metálico.
  • 1 x pantalla OLED.
  • 1 x cable de 3 jumpers.
  • 1 x cable USB.
  • 2 x vaso de agua a distintas temperaturas.

El montaje es muy intuitivo, debemos dejarlo así:

Turno para el código.

Como ya avanzamos, debes tener instalada la extensión de Makecode: iot environment kit.

Nuestro código va a ser muy sencillo, tanto como esto:

  • Al iniciar, vamos a configurar la pantalla para decirle sus dimensiones de ancho x alto.
  • Luego, el funcionamiento repetido de nuestro programa será: en una variable que debemos crear, llamada TEMP meteremos el valor de la temperatura leída por el sensor. A continuación, borraremos la pantalla y luego escribiremos en ella Temp: y el valor que hayamos guardado en la variable TEMP. Esperamos 5s para realizar una nueva lectura del sensor, y así indefinidamente.

Ahora, como siempre, guarda tu proyecto y descarga el archivo.

Conecta sólo la Micro:bit y carga el archivo dentro de ella.

Desconecta la Micro:bit e insertala en la IoT:bit.

Conecta el cable USB a la IoT:bit y enciéndela con su interruptor.

Así de simple.

Esto podemos extenderlo más para que nuestro sistema active una alerta cuando se supere un umbral de temperatura, o active un calentador para subir la temperatura, o active un servomotor para que entre aire y baje la temperatura, o cualquier otra cosa que necesites.

Este es el esquema de trabajo que habíamos aplicado hasta ahora, pero como acabamos de ver al inicio de esta sesión, un sistema IoT puro, necesita enviar los datos de procesamiento a alguna plataforma de IoT que consiga visualizar los datos recogidos por los sensores y procesados por la placa controladora.

Para ello, vamos a configurar una de estas plataformas. Se llama Kids’ IoT y nos permite tener un sistema monitorizado en 3 minutos.

Para acceder a ella vamos a Kids’ IoT y nos registramos (no acepta cuentas @g.educaand.es).

ACTUALIZACIÓN Febrero 2025: Kids’ IoT ha cambiado de nombre comercial y ahora se llama Smart IoT. De ahora en adelante siempre que aparezca Kids’ IoT estaremos haciendo referencia a Smart IoT, todo funciona exactamente igual, aunque en las imágenes salga un nombre distinto.

Una vez completado el formulario de registro, debes ir al correo que has indicado y activar tu cuenta:

Cuando pulses el enlace de activación, se te mostrará esta pantalla:

Pulsa sobre el botón Skip now, y luego inicia sesión pulsando en Log in.

Si lo has hecho todo bien, llegarás a esta pantalla:

Fíjate bien porque ahí aparece el dato más importante de todos: el User Token. Se trata de una cadena de caracteres que te identifica en la plataforma. Ese es el token que debes usar en el programa de tu Micro:bit, para conectarla de forma remota a la plataforma de IoT para que tu sistema se identifique en la nube de Kids’ IoT.

Ahora vamos a preparar nuestra nube para que recoja los datos de la temperatura que registra nuestro sistema.

Pulsamos en Create new device, y usando el icono del lápiz le ponemos nombre a nuestro dispositivo:

Si pulsamos en View details, podremos ver el aspecto que tendrá nuestra nube cuando empiece a graficar los datos recibidos por nuestro sistema:

La plataforma está lista.

Lo único que debemos modificar en este punto es el código de nuestro programa, para que se conecte a la plataforma y envíe los datos.

Los bloques implicados en esta tarea los encontrarás en la categoría verde cuyo icono es el símbolo de la WiFi:

Lo primero que necesitamos hacer es indicarle a nuestro programa algunos datos técnicos de la conexión que va a usar nuestro sistema para hacer uso de la red de comunicaciones. Completamos nuestro bloque inicial, así:

A continuación necesitamos comprobar si nuestro sistema está conectado a Internet, y si no lo está, conectarlo. Para ello, usaremos la WiFi que tengamos disponible. En mi caso usaré la WiFi de mi móvil:

Seguidamente, y antes de enviar un dato, necesitamos comprobar que tenemos acceso a la plataforma de IoT. Esto lo hacemos encadenando otro condicional justo debajo del anterior:

Como puedes ver, ahí debemos indicar nuestro token de usuario y también el número del proyecto que queremos usar de todos los que tenemos en la nube. Nosotros sólo tenemos uno, así que dejamos el 1.

Por último, en caso de que tengamos acceso, simplemente subimos nuestra lectura de la temperatura:

Ya tenemos todo nuestro sistema preparado para pasar a producción.

Primero descargamos el programa y lo escribimos en la Micro:bit, luego insertamos la Micro:bit en el zócalo del IoT:kit y la encendemos. Tras unos segundos en los que está configurándose la conexión, empezará a enviar datos (puedes verlo por los iconos que se muestran en la Micro:bit) y la plataforma Kids’ IoT empezará a graficar resultados.

2.4. Detección de intrusos

En este otro proyecto que vamos a programar veremos cómo detectar la presencia de una persona y que el sistema avise de manera sonora, luminosa y también con un mensaje de correo electrónico al propietario de la instalación.

🛠 Materiales:

  • 1 x Micro:bit.
  • 1 x IoT:bit.
  • 1 x Rainbow LED
  • 1 x sensor PIR
  • 1 x sensor de ultrasonidos.
  • 3 x cable de 3 jumpers.
  • 1 x cable USB.

El montaje es muy intuitivo, debemos dejarlo así:

Para que queden más claras las conexiones de cada componente, el sensor de ultrasonidos está conectado así al Pin 1 de la placa IoT:bit:

Observa bien el coloreado de cables.

Veamos ahora cómo conectaríamos el sensor PIR, insertado en el Pin 2:

Finalmente, tenemos la conexión del Rainbow LED, que está en el Pin 9:

Es posible que todavía te estés preguntando cuál es la función de cada uno de los sensores, especialmente cómo se justifica el uso del sensor de ultrasonidos al mismo tiempo que el PIR.

El sensor de ultrasonidos detectará si existe algún objeto a una distancia de entre 10 y 100 cm. Pero es posible que ese objeto sea una bolsa que la arrastra el viento, el paso de algún animal o un vehículo. Por eso lo combinamos con el sensor PIR, porque es capaz de detectar la variación de la radiación infrarroja con respecto a lo que tiene a su alrededor. Así, es capaz de detectar si el objeto detectado es una persona o no.

El otro elemento, el Rainbow LED, lo usaremos únicamente para que nos ofrezca un aviso visual de cuándo se ha detectado la presencia humana.

Con nuestro circuito ya montado, es hora de programar.

En esta ocasión, necesitaremos trabajar con dos extensiones: la que ya conocemos iot-environment-kit y otra necesaria para configurar el Rainbow LED, llamada neopixel:

Como se trata de un único píxel que está conectado al Pin 9, lo configuraremos así:

A continuación, vamos a crearnos dos variables que van a almacenar, por un lado la DISTANCIA que está leyendo el sensor de ultrasonidos, y por otro si el sensor INFRARROJO está detectando presencia humana:

Ahora que ya tenemos ambas lecturas almacenadas en variables, vamos a comprobar si se detecta un objeto a una distancia entre 10 y 100 cm. Si se detecta, luego veremos qué hacemos, pero si no, el LED deberá permanecer apagado:

En caso de que el sensor de ultrasonidos haya detectado un objeto cerca, vamos a comprobar si se detecta presencia humana. Si se detectara, encenderemos la señal visual (el LED lo pondremos en rojo) y reproduciremos un sonido. Si no se detectara, se trataría de un objeto cualquiera, no tendríamos que hacer nada, salvo mantener el LED apagado (en negro):

Ahora, ya podemos probar nuestro sistema a ver si funciona:

Para crear el sistema de avisos necesitamos registrarnos en dos nuevas plataformas:

  1. ThingSpeak: nuestra plataforma de IoT, que recibirá los datos de nuestro sistema.
  2. Zapier: una plataforma de automatizaciones que recibirá el aviso de ThingSpeak cuando nuestro sensor PIR haya detectado presencia humana, y nos enviará un correo electrónico avisándonos.

Pues, sabiendo lo anterior, vamos a registrarnos en ThingSpeak.

Introducimos nuestro correo electrónico corporativo @g.educaand.es y pulsamos en Create one!

Rellenamos el formulario que nos aparece y llegamos a esta pantalla:

Ahora debes ir a tu correo corporativo y pulsar sobre el botón Verify email:

Ya se habrá verificado nuestra cuenta.

Ahora volvemos a la pestaña del navegador donde dejamos esto y pulsamos en Continue:

Metemos la contraseña que hayamos elegido y habrá terminado el proceso de registro:

Finalmente, tras pulsar en OK y rellenar algunos datos estadísticos, llegamos a esta página:

Ahí es donde crearemos un nuevo canal de comunicación para poder recibir datos desde nuestro circuito.

Pulsamos sobre New Channel, y rellenamos estos datos:

Luego bajamos hacia abajo del todo y pulsamos en:

Se habrá creado el nuevo canal de comunicación y se te mostrará el resumen del mismo, junto con un gráfico que ya está disponible para recibir datos.

Sin embargo, necesitamos conocer alguna manera de que nuestro circuito se comunique con esta plataforma. Para ello, necesitamos conocer cómo nuestro sistema se identificará en la plataforma.

Esto lo sabremos pulsando en la pestaña API Keys:

Esa numeración que aparece bajo Write API Key es el dato que necesitamos.

Teniendo esto, ya podemos modificar el código de nuestro circuito para que envíe datos a la plataforma.

Para empezar, establecemos las propiedades técnicas de la comunicación y la conexión a la WiFi que vamos a usar (igual que hicimos en el caso anterior):

Hecho esto, tan solo nos quedaría añadir el código necesario para subir a ThingSpeak los valores de nuestro sensor.

¿Cuándo haremos esto?

Como tenemos un LED que se enciende en rojo cuando se detecta presencia humana, y se apaga a negro cuando no, podemos aprovechar esos puntos del programa, y siempre que detecte presencia humana enviaremos un 1, y cuando no, enviaremos un 0.

Si ahora probamos nuestro sistema, veremos cómo la gráfica de ThingSpeak va mostrando 0 hasta que detecta una presencia humana:

Lo único que nos quedaría por resolver, sería enviar una notificación por correo electrónico cuando se produzca ese 1 (hay presencia humana).

Para ello, ya adelantamos más arriba que usaríamos una herramienta de automatizaciones llamada Zapier.

Para registrarnos, accedemos a su web y nos registramos usando nuestra cuenta corporativa de Google.

Una vez que estemos dentro rellenaremos una pequeña encuesta con datos estadísticos del uso que tenemos pensado darle (puedes poner cualquier cosa) y terminamos el proceso.

Cuando haya terminado el proceso de registro pulsamos en el + de Create y seleccionamos Zaps:

Podemos crear paso a paso nuestra automatización, pero ya Zapier incorpora una herramienta IA que nos permite escribir lo que queremos y ella nos dirá cómo hacerlo.

Así que, escribimos:

Su sugerencia es esta, así que la aceptamos y la añadimos a nuestro Zap:

De los dos pasos que nos salen que forman parte de nuestra automatización, vamos a configurar la segunda:

Nos conectamos a nuestra cuenta de correo, le damos permisos y cuando termine pulsamos en Continue.

Después rellenamos los campos necesarios para que se envíe el correo y pulsamos en Continue.

Pulsa en Test step, y si todo ha ido bien, recibirás un correo tal y como sería en caso de que lo hubiera lanzado tu circuito.

Bien, ya solo nos quedaría el primer paso. Atento, que este es un poco más complejo.

Pulsa en el primer paso:

Copia esa URL:

Ahora vete a ThingSpeak y en Apps, pulsa en ThingHTTP:

Ahora pincha en New ThingHTTP.

En URL pega la URL que copiaste en Zapier.

En Method, selecciona POST.

En Content Type escribe exactamente application/json

En HTTP Version deja 1.1

Y en Body, escribe exactamente esto: {“value1″:”%%channel_XXXXXXX_field_1%%”} siendo las XXXXXXX el ID de tu canal de ThingSpeak (recuerda: lo copiaste al principio).

Ya puedes pulsar en:

Por último, pulsa en Apps > React. Crea un nuevo React.

Lo único que tienes que configurar es asegurarte de que hay un 1 en el último campo de la Condition:

Guardalo.

Todo listo.

Vuelve a Zapier y pulsa en Test trigger:

Tan pronto como le les al botón, observa el botón superior derecho. En cuanto cambie de gris a azul pulsa en Publish:

Felicidades, tu automatización está terminada.

Tu proyecto también.

Ahora vuelve a encender tu circuito y prueba a lanzar una presencia humana, asegurándote de que en ThingSpeak se detecta un 1. Segundos después, tendrás en tu bandeja de correo el aviso:

3. IoT con Arduino

No existe ninguna diferencia con respecto a la forma de trabajar el campo del IoT, entre lo que hemos visto con Micro:bit y el IoT:bit, y el mundo de Arduino. Los procesos son exactamente los mismos.

Sin embargo, para ponerlo en práctica tenemos una limitación importante: nuestras placas son el modelo Arduino UNO R3, que no dispone de conectividad Bluetooth ni tampoco WiFi. La buena noticia es que en el mundo del hardware libre todo es posible, por lo que podemos adquirir componentes que conectados con nuestra placa nos aporten la funcionalidad que buscamos.

3.1. Bluetooth en Arduino.

Como decíamos, nuestra placa Arduino UNO R3, no dispone de conectividad Bluetooth, pero podemos adquirir un módulo Bluetooth HC-05 (usa comunicación serial) y configurarlo con nuestra placa. Este es su aspecto:

Anverso del módulo Bluetooth HC-05

Reverso del módulo Bluetooth HC-05

Para usar nuestro módulo bluetooth, primero debemos configurarlo, ya que tenemos que asegurarnos de que está funcionando bien antes de que confiemos en enviar o recibir datos con él.

Esta configuración la haremos una única vez después de comprar el módulo, para saber cuál es su dirección física, qué contraseña de emparejamiento trae, con qué nombre aparecerá cuando haya un escaneado Bluetooth, etc.; y también para poder cambiar todo lo anterior y colocar los valores que nosotros queramos.

Lo conectaremos así:

Y a continuación, subiremos a la placa nuestro programa de configuración:

#include <SoftwareSerial.h>

SoftwareSerial BT1(10, 11); // RX | TX
void setup() { 
  pinMode(8, OUTPUT);        
  pinMode(9, OUTPUT);        
  digitalWrite(9, HIGH);     // Forzar el modo AT
  delay (500);              // Espera antes de encender el modulo
  Serial.begin(9600);
  Serial.println("Levantando el modulo HC-05");
  digitalWrite (8, HIGH);    //Enciende el modulo
  Serial.println("Esperando comandos AT:");
  BT1.begin(38400); // Según el fabricante podría ser 57600, 38400 o 9600
}

void loop() {  
  if (BT1.available())			// Mostrar en el Serial Monitor lo que recibimos por Bluetooth
  	Serial.write(BT1.read());
  if (Serial.available())		// Enviar al Bluetooth lo que escribimos en el Serial Monitor
    BT1.write(Serial.read());
 }

Si ahora desde nuestro «Serial Monitor» enviáramos el comando AT+PSWD? al Bluetooth, nos respondería con el PIN de emparejamiento que tiene configurado el Bluetooth.

De esta manera podemos ir lanzándole comandos AT tanto para conocer su configuración, como para cambiarla.

En este enlace tienes una larga lista de comandos AT con explicaciones sobre su modo de uso y su utilidad.

Ahora que ya sabemos configurarlo, vamos a hacer un pequeño proyecto donde hagamos uso de este interesante módulo.

3.2. Comunicarnos con Arduino a través del móvil por Bluetooth

La idea es que seamos capaces de modificar el estado de algún sensor conectado a nuestra placa Arduino usando un teléfono móvil. De esta manera, podríamos encender la calefacción, abrir una cerradura o levantar las persianas. Todos estos ejemplos, y muchos otros que se te ocurran, son posibles simplemente si somos capaces de hacerle llegar a nuestra placa una señal eléctrica a través del móvil usando Bluetooth (recuerda que la comunicación es serial). Pues vamos a hacerlo de la manera más simple posible que es encender y apagar un LED.

Ahora, ya no queremos configurar el módulo, sino usarlo, así que presta atención a nuestro programa:

int led = 5;
char letra;

void setup() {
  pinMode(led,OUTPUT);
  Serial.begin(9600);
}

void loop() {  
  if(Serial.available()) {
    letra = Serial.read();
  }
  switch (letra) {
    case 'a':
      digitalWrite(led,HIGH);
      break;
    case 'b':
      digitalWrite(led,LOW);
      break;
  }
}

Si te fijas, aquí ya no aparece nada de Bluetooth, sin embargo al funcionar nuestro módulo Bluetooth como la comunicación serial, vamos a usar los pines de lectura (Rx) y escritura (Tx) del USB de la placa para que nuestros datos vayan y vengan a través del Bluetooth, no a través del Monitor Serie del Arduino IDE.

Primero (es muy importante este orden), cargamos nuestro programa en la placa controladora, y luego conectamos los cables así:

El cable azul será el VCC del módulo e irá al pin 5V de la placa.

El cable verde será el GND del módulo e irá a un pin GND de la placa.

Los cables amarillo (Tx) y naranja (Rx) del módulo irán cruzados conectándose respectivamente al pin Rx y Tx de la placa. Esto último lo que hace es usar la comunicación serie del USB para ponerla al servicio del Bluetooth.

De esta manera, cuando enviemos por Bluetooth una «a» el LED se encenderá y cuando enviemos una «b» el LED se apagará.

Bien, nuestro circuito está listo, y nuestro programa también.

¿Cómo le enviamos esa ‘a’ o ‘b’ al Bluetooth de nuestro circuito?

Usando una app móvil: o bien la construyes tú mismo (usando MIT App Inventor, Thunkable o similar) o utilizas una app diseñada para la comunicación serie con dispositivos Bluetooth.

Como esta última opción es la más rápida, lo haremos así.

Ve a la tienda de aplicaciones de tu móvil y busca e instala algo relacionado con «Bluetooth serial». Hay muchas, yo he instalado esta:

A continuación, necesitamos emparejar nuestro móvil con el módulo Bluetooth HC-05. Así que, activa el Bluetooth de tu móvil, realiza un escaneo y sincronízalo con HC-05 (como si estuvieras emparejando unos auriculares o un ratón). La clave de emparejamiento ya vimos que es 1234, aunque podría ser distinta si la has cambiado o estás usando un módulo de otro fabricante.

Hecho esto, ya podemos abrir la app Serial Bluetooth Terminal.

Su funcionamiento es muy sencillo, primero vamos a Devices, escaneamos, seleccionamos HC-05, volvemos a Terminal, pulsamos sobre el iconito de conexión superior derecho y ya podemos escribir abajo una letra y enviarla.

Si la letra que enviamos es una «a», nuestro LED debe encenderse. Igualmente, si enviamos una «b» nuestro LED se apagará.

De esta manera da igual si nuestro sensor es un LED, una cerradura o una bomba de agua, la cuestión es que con una pulsación de nuestro móvil somos capaces de hacerle llegar una señal eléctrica por Bluetooth.

Las aplicaciones prácticas son infinitas.

3.3. WiFi en Arduino.

Al igual que sucedía en el caso del Bluetooth, nuestras placas Arduino UNO R3 no cuentan con módulos integrados de conectividad WiFi. Para estos casos, podemos recurrir a dos posibles soluciones: adquirir una placa Arduino UNO R4 Wifi (que ya vienen con conectividad integrada), o adquirir módulos externos Wifi ESP8266 que podríamos conectarles a nuestras placas para añadirles esa funcionalidad.

Arduino UNO R4 con WiFi integrada

Módulo externo WiFi ESP8266

Desde el punto de vista de la funcionalidad, debes entender que no existe ninguna diferencia: conectaremos nuestros sensores (como hicimos en sesiones anteriores) a nuestra placa, enviaremos los datos por WiFi a una de las plataformas que hemos visto en esta sesión, y opcionalmente, añadimos automatizaciones para recibir notificaciones de los eventos que están ocurriendo.

En este curso por razones de tiempo es imposible cubrir toda la casuística derivada de la configuración y uso de estos dispositivos (aunque se cubre con mucho detalle en el curso avanzado).

Si aún te queda curiosidad por conocer los detalles, puedes revisar este vídeo en el que se explica cómo usar nuestras placas, con el componente WiFi externo, para leer datos de un sensor y enviarlos para su monitorización en ThingSpeak:

4. Raspberry Pi

Con este último concepto cerramos la última sesión y, en consecuencia, también el curso.

Se trata de un sistema de computación completamente distinto a todo lo que hemos visto anteriormente, y también de mucha más complejidad que todo lo anterior.

Aquí sí que es completamente necesario programar en modo texto, y también tener conocimientos sobre el terminal de comandos en sistemas operativos basados en Linux.

Por ese motivo, el aprendizaje práctico de esta tecnología no forma parte del curso intermedio, sino del curso avanzado, donde se estudia y practica con bastante profundidad.

Sin embargo, sí que es interesante que cerremos nuestro curso descubriendo qué es Raspberry Pi y cómo podemos usarlo para sacarle partido en proyectos más complejos que los que hemos visto a lo largo de estas 6 sesiones.

4.1. ¿Qué es Raspberri Pi?

A diferencia de Micro:bit y Arduino -que como sabes son placas controladoras-, Raspberry Pi es un ordenador completo, muy pequeño eso sí, diseñado para hacer la informática accesible a todos. Fue lanzada al mercado en febrero de 2012 por la Raspberry Pi Foundation con el objetivo de promover la enseñanza de la informática en escuelas y universidades del Reino Unido.

Su gran potencia radica en su bajo coste, gran conectividad, bajo consumo eléctrico y posibilidades de desarrollo. Todos los diseños de Raspberry Pi se basan en hardware libre, y habitualmente se utilizan sistemas operativos libres basados en GNU/Linux.

Se usa para infinitas aplicaciones prácticas, pero las más habituales son estas:

  • Centro multimedia: puedes usar tu Raspberry Pi como un centro de medios para reproducir películas, música o fotos, como el Netflix de tu casa.
  • Servidor web o de archivos: puedes configurarla como un servidor para alojar sitios web o compartir archivos en tu red local.
  • Estación meteorológica: puedes conectarle sensores y crear una estación meteorológica personalizada.
  • Automatización del hogar: puedes usarla como si fuera Kids’ IoT o ThingSpeak, controlando luces, termostatos y otros dispositivos inteligentes. En vez de tener una cuenta de usuario remota en una plataforma de IoT -como las que hemos visto hoy-, montas tu propia plataforma de gestión y visualización de datos en casa.
  • Proyectos educativos: desde programación hasta robótica pasando por IoT, la Raspberry Pi es ideal para aprender conceptos avanzados de tecnología, muy usada en universidades y ciclos de formación profesional.

La que tienes en tus manos es una Raspberry Pi 4 Model B. Estas son sus partes más importantes:

Además, es plenamente funcional para trabajar con todos los componentes electrónicos que hemos ido programando a lo largo del curso, ya que incluye conectores GPIO (los que ves en la parte superior de la imagen).

No te dejes engañar por su tamaño, es capaz de manejar una salida dual para dos monitores 4K, no tiene ventiladores por lo que es extremadamente silenciosa, y tiene versiones de 1 a 8GB de RAM.

Si estás pensando en el disco duro, efectivamente, no tiene. En su lugar toma el sistema operativo de una tarjeta de memoria.

Con respecto al software, usa Raspberry Pi OS, un sistema operativo libre basado en Debian, una de las distribuciones más potentes de Linux, que está optimizado para el hardware que incorpora.

4.2. Trabajando con Raspberry Pi

La pregunta que siempre nos hacemos al principio cuando descubrimos este microordenador, es ¿y el monitor?¿Cómo trabajamos con el ordenador?

Pues lo cierto es que no lo necesitamos. Es verdad que podemos usar algunas de sus salidas HDMI o USB para conectarle cualquier pantalla y trabajar como lo hacemos con cualquier otro ordenador, pero su utilidad radica precisamente ahí, es tan pequeño que está diseñado para hacer su trabajo sin monitor, alojado en pequeños espacios donde una pantalla no tendría cabida. Ni tampoco la necesitamos.

Lo que hacemos es conectarnos de forma remota al ordenador, lo configuramos, le aplicamos los cambios que necesitemos (actualizaciones, reinicios, instalaciones de aplicaciones, etc.) y lo dejamos funcionando sin ni siquiera tocarlo.

En este video se explica de manera muy sencilla, cómo instalarle el sistema operativo y cómo interactuar con él, sin necesidad de conectarle un monitor:

4.3. Casos de uso de Raspberry Pi

Como decíamos más arriba, las aplicaciones prácticas de este microordenador son innumerables y muy variadas.

Una de las más usadas en la actualidad es como centro de recursos multimedia para el hogar. Con ella podemos almacenar todo nuestro contenido en vídeo, audio e imágenes y acceder a ellos directamente desde nuestro televisor con la misma estética de plataformas de streaming como Netflix, HBO o Amazon Prime. Te dejo el vídeo donde se explica cómo se puede conseguir esto:

Otras de las áreas de aplicación son las que se basan en el aprendizaje de la computación física, es decir, la programación orientada al control de componentes electrónicos. En este vídeo, podemos ver cómo programar directamente en Raspberry Pi el encendido de un LED:

A partir de aquí tienes lo necesario para empezar a profundizar, si es tu deseo, en el aprendizaje de esta interesante tecnología. En la web del fabricante https://www.raspberrypi.com/ tienes una cantidad enorme de recursos para aprender todo lo necesario de este ordenador.

Pero si quieres aprender desde cero, en español y de forma sencilla, te recomiendo que empieces por aquí:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *