SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Spanish)
This Tutorial is Retired!
This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.
Experimento 21: Usar Bluetooth de baja energía integrado (BLE)
Introducción
Ya estamos en el experimento final y ha vuelto al punto de partida: un solo LED. Esta vez el experimento tiene un giro inesperado. En lugar de hacer que un LED parpadee, lo podrá controlar desde su teléfono o tableta.
La placa 101 tiene Bluetooth de baja energía (BLE) incorporado. Esto significa que puede comenzar a controlar la placa 101 desde su teléfono. La tecnología BLE usa un enfoque basado en servicios/propiedades para establecer comunicación con el dispositivo. Este enfoque facilita el desarrollo en varios dispositivos para usuarios expertos, pero si usted es un nuevo usuario, puede plantear dificultades. En este experimento tendrá que cargar una aplicación en su dispositivo que le ayudará con la comunicación y analizaremos un boceto de ejemplo que usa la tecnología BLE.
Este es el último experimento, pero aún le queda mucho por aprender sobre la placa 101. Le recomendamos encarecidamente que consulte el sitio web de Arduino para obtener más información sobre la placa 101 y cómo han evolucionado y mejorado los materiales de apoyo.
Elementos necesarios
Necesitará los siguientes elementos:
- 1x placa de pruebas
- 1x placa Arduino 101 o Genuino 101
- 1x LED
- 1x resistencia de 100 Ω
- 3 cables puente
¿No tiene el SIK?
Si está realizando este experimento y no dispone del SIK, le sugerimos que use estos elementos:
También necesitará una placa Arduino 101 O Genuino 101.
Lectura sugerida
Antes de continuar con este experimento, le recomendamos que se familiarice con los conceptos en los siguientes tutoriales:
Presentación de Bluetooth de baja energía (BLE)
El Bluetooth de baja energía (BLE) es un protocolo de comunicación relativamente recienta que usa Bluetooth. La tecnología BLE se emplea cada vez más en las aplicaciones de dispositivos para llevar puestos y el Internet de las cosas (IoT), donde la gestión de la alimentación es motivo de preocupación. Además, su dispositivo debe ser capaz de comunicarse con una amplia variedad de dispositivos como teléfonos, coches u otros dispositivos con BLE.
Para estandarizar el protocolo de comunicación con una gran variedad de dispositivos, la tecnología BLE utiliza un sistema basado en el atributo genérico (GATT), que utiliza una jerarquía de lo que se denomina "servicios basados en la función del dispositivo". Por ejemplo, un Fitbit puede tener un servicio de frecuencia cardíaca así como un servicio de podómetro. A cada servicio se le pueden asignar atributos. Estos atributos contienen los datos sin procesar para el servicio.
Un ejemplo de atributo sería transmitir información acerca del dispositivo con el que se está comunicando, así como qué datos son importantes para un servicio determinado. En el ejemplo de un Fitbit, el número de pasos o su pulso serían un atributo. La idea principal es que hay servicios que permiten a los dispositivos saber lo que se espera de cada uno y ponerse de acuerdo para compartir atributos. En pocas palabras, el GATT permite a los dispositivos realizar suposiciones entre sí e ir a lo importante: compartir la información que está intentando comunicar.
**Nota: La tecnología BLE está integrada en el módulo de Curie en la placa 101, y no se requieren cables salvo lo que desee conectar para controlarlo mediante la tecnología BLE. **
Conexión del hardware
¿Preparado para comenzar a conectar todo? Consulte el diagrama de cableado siguiente para ver cómo está conectado todo.
Componentes polarizados | Preste especial atención a las marcas de los componentes que indican cómo colocarlo en la placa de pruebas. Los componentes polarizados solo se pueden conectar a un circuito en una sola dirección. |
Diagrama de cableado del experimento
Instalación de la aplicación de BLE
Para comenzar a utilizar la tecnología BLE con Arduino 101, le recomendamos usar la aplicación Master Control Panel de nRF. Está disponible tanto para dispositivos iOS como Android, y lo mejor es que es gratis.
Para descargar la aplicación vaya a Google Play Store o a la App Store de Apple y busque nRF. Hay muchas herramientas de nRF que recomendamos que pruebe una vez ponga en marcha la tecnología BLE, pero por ahora solo necesitaremos Master Control Panel. Busque, descargue e instale la aplicación y estará listo para continuar.
Abrir el boceto
Abra el software IDE de Arduino en su ordenador. La codificación en el lenguaje de Arduino controlará el circuito. Abra el código del circuito 21; para ello, acceda a "101 SIK Guide Code" (Guía de códigos de SIK 101) que ha descargado y guardado en la carpeta "Examples" (Ejemplos) anteriormente.
Para abrir el código vaya a: File > Examples > 101 SIK Guide Code > Circuit_21 (Archivo > Ejemplos > Guía de códigos de SIK 101 > Circuito_21)
También puede copiar y pegar el siguiente código en el IDE de Arduino. Cárguelo y observe lo que ocurre.
language:cpp
/*
SparkFun Inventor's Kit
Example sketch 21
BASIC BLE CONTROL
Turn an LED on and off using BLE and either a phone or tablet. Android and iOS devices only!
Based off of the BLE LED example written by Intel Corporation and included with the Curie BLE Arduino Library.
*/
#include
BLEPeripheral blePeripheral; // BLE Peripheral Device (the board you're programming)
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service
//set BLE characteristic
switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
const int ledPin = 13; // pin to use for the LED
void setup()
{
// set LED pin to output mode
pinMode(ledPin, OUTPUT);
// set advertised local name and service UUID:
blePeripheral.setLocalName("101 Board");
blePeripheral.setAdvertisedServiceUuid(ledService.uuid());
// add service and characteristic:
blePeripheral.addAttribute(ledService);
blePeripheral.addAttribute(switchCharacteristic);
// set the initial value for the characeristic:
BLEUnsignedCharCharacteristic switchCharacteristic.setValue(0);
// begin advertising BLE service:
blePeripheral.begin();
}
void loop()
{
// listen for BLE peripherals to connect:
BLECentral central = blePeripheral.central();
// if a central is connected to peripheral:
if (central)
{
// while the central is still connected to peripheral:
while (central.connected())
{
// if the remote device wrote to the characteristic,
// use the value to control the LED:
if (switchCharacteristic.written())
{
// any value other than 0, turn on the LED
if (switchCharacteristic.value())
{
digitalWrite(ledPin, HIGH);
}
//else turn the LED off
else
{
digitalWrite(ledPin, LOW);
}
}
}
}
}
Código a tener en cuenta
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214");
BLE se basa en el servicio y se han predefinido varios servicios con una cadena personalizada denominada identificador único universal (UUID). Esta cadena es de 16 bytes y, como su nombre indica, es universalmente única. Esto crea instancias del objeto ledService de BLEService con un UUID específico.
switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
Las características y los atributos se agrupan en los servicios. Puede crear características con sus propios UUID y configurarlos para que sean de lectura, escritura o ambos. Hemos optado por ambos. Tenga en cuenta que el UUID de la característica se diferencia en un dígito del UUID de servicio.
blePeripheral.setLocalName("101 Board");
Puede asignar un nombre a la placa 101 con el método setLocalName(). Cree una cadena entre comillas. Recomendamos que utilice algo que pueda identificar con facilidad, especialmente si está utilizando la placa 101 en el aula.
blePeripheral.setAdvertisedServiceUuid(ledService.uuid());
// add service and characteristic:
blePeripheral.addAttribute(ledService);
blePeripheral.addAttribute(switchCharacteristic);
// set the initial value for the characeristic:
switchCharacteristic.setValue(0);
// begin advertising BLE service:
blePeripheral.begin();
En este fragmento de código podemos agregar un servicio a nuestro periférico; a continuación, podemos vincular o agregar atributos al periférico. Agregamos ledService y lo controlamos mediante switchCharacteristics. Finalmente, establecemos el valor de inicio de switchCharacteristics en 0 y ponemos en marcha el periférico.
Con la función loop, nos aseguramos de que existe una conexión entre nuestro periférico y un dispositivo central (un teléfono). Mientras tengamos conexión, comprobaremos si hay alguna característica presente y si se ha escrito en ella. Si hay un valor distinto de 0, encenderemos el LED; si no hay ningún valor o el valor es 0, el LED se apagará.
Lo que debería ver
Abra la pantalla de conexiones Bluetooth en su dispositivo e inicie la aplicación Master Control Panel. Busque dispositivos y seleccione la placa 101 para conectarse a ella.
Una vez que se conecte, abra el servicio desconocido y seleccione un valor para switchvalue. Haga clic en el icono para cargar (flecha hacia arriba). Se abrirá un cuadro de diálogo. Introduzca un número distinto de 0 y haga clic para enviar.
El LED se debería encender. Abra el mismo cuadro de diálogo, introduzca el número 0 y haga clic para enviar. El LED debería apagarse.
Solución de problemas
El LED no se enciende
Ya conoce el procedimiento: compruebe el cable, verifique si el LED se ha insertado al revés.
No hay conexión por Bluetooth con la placa 101
Asegúrese de que el boceto está cargado. Debe cargar el boceto para que la señal de BLE se transmita desde la placa 101.
Sigue sin funcionar
Reinicie el Bluetooth de su tableta o teléfono y busque de nuevo los dispositivos locales.