Crea gafas inteligentes de match-making con Arduino 101 y tinyTILE BLE
Componentes y materiales
| Componente | Cantidad | Notas |
|---|---|---|
| Intel tinyTILE | 2 | O otros módulos BLE |
| Arduino 101 | 2 | Opcional |
| Panel LCD controlable Adafruit (Light Crystal Light Valve) | 2 | |
| Batería Li-Ion 100mAh | 2 | |
| Conector JST-PH 2-pin SMT ángulo recto Adafruit | 4 | |
| Cable extensora batería JST-PH Adafruit | 2 | |
| Interruptor deslizante | 2 | |
| Resistencia 10k ohm | 3 | |
| Pulsador 12mm SparkFun | 1 | |
| LED (genérico) | 2 | Solo para desarrollo |
| Protoboard (genérico) | 1 | Solo para desarrollo |
| Cables de conexión (genéricos) | 1 | Solo para desarrollo |
Herramientas necesarias
- Impresora 3D
- Soldador
Aplicaciones y servicios en línea
- Arduino IDE
- Arduino Web Editor
Sobre el proyecto
En lugar de usar una app, ¿qué tal si pudieras enviar una señal para hacer contacto visual con alguien que te interesa, en un entorno social, incluso desde lejos? No propongo una nueva forma de ligar, sino explorar un nuevo uso de Bluetooth en interacciones humanas.
Al descubrir que los módulos Intel Curie pueden actuar como dispositivos BLE central y periférico, quise hacer estas gafas. Gracias a un tutorial de Adafruit, el marco de referencia de unas gafas LCD impresas en 3D ya estaba disponible. Añadí control BLE de dos gafas simultáneamente (una maestra, otra esclava) y rediseñé las monturas 3D.
El proyecto se desarrolló primero en Arduino 101 y se prototipó en tinyTILE, ambos con módulos Intel Curie. Aunque ya no se puedan conseguir, la metodología sigue siendo útil.
Paso 1 - Desarrollo
Se usaron dos Arduino 101 y dos LEDs para desarrollar el circuito y probar el código. Por la complejidad final, es buena idea empezar en protoboard antes de soldar.
Para el periférico, usar el ejemplo CurieBLE → Peripheral → LED intercambiando HIGH y LOW. El código para central se proporciona al final; es casi igual a CurieBLE → Central → LEDcontrol con líneas añadidas para los LCDs.
tinyTILE es casi una miniatura exacta de Arduino 101. El rectángulo central es el módulo Intel Curie. Se programan con el mismo código. Los pines de Arduino 101 son más fáciles, pero el tamaño de tinyTILE es mejor para wearables.
Paso 2 - Impresión 3D
Rediseñé las monturas con SolidWorks sobre el diseño de Adafruit. Puedes descargar su diseño base aquí y modificarlo. Si te gustan mis diseños (corazón y universo), están en los adjuntos. ¿Por qué corazón y universo? Mira el vídeo para la explicación.
Paso 3 - Montaje
Los consejos de Adafruit sobre cableado, soldadura y montaje son excelentes. Solo tuve que añadir los tinyTILEs y el botón. Cuidado con cortar los cables a la longitud correcta.
Paso 4 - ¡Listo y a disfrutar!
Al encender, hay voltaje en los LCDs, manteniéndolas como gafas de sol oscuras. Al pulsar el botón en la maestra, se corta el voltaje en ella y, vía Bluetooth, también en la esclava, haciendo ambas transparentes.
Las dos gafas se controlan a distancia mientras estén en rango BLE. Probé en casa: el corazón consigue la atención del universo a al menos 15 pasos.
Imagina no usar un botón sino un gesto, un asentimiento o latidos coincidentes!
Corazón (maestra=central): "Me gusta tu mente sofisticada <3"
Universo (esclava=periférica): "Te veo. Hablemos."
Código
Control por botón para central
/* Copyright (c) 2016 Intel Corporation. All rights reserved. */
#include <CurieBLE.h>
const int buttonPin = 3;
int oldButtonState = LOW;
const int ledPin = 5; // pin para LCD
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
BLE.begin();
Serial.println("BLE Central - Control LED");
BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
}
void loop() {
BLEDevice peripheral = BLE.available();
if (peripheral) {
Serial.print("Encontrado ");
Serial.print(peripheral.address());
Serial.print(" '");
Serial.print(peripheral.localName());
Serial.print("' ");
Serial.println(peripheral.advertisedServiceUuid());
BLE.stopScan();
controlLed(peripheral);
BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
}
}
void controlLed(BLEDevice peripheral) {
Serial.println("Conectando...");
if (!peripheral.connect()) {
Serial.println("Falló conexión!");
return;
}
Serial.println("Conectado");
Serial.println("Descubriendo atributos...");
if (!peripheral.discoverAttributes()) {
Serial.println("Fallo descubrimiento!");
peripheral.disconnect();
return;
}
Serial.println("Atributos descubiertos");
BLECharacteristic ledCharacteristic = peripheral.characteristic("19b10001-e8f2-537e-4f6c-d104768a1214");
if (!ledCharacteristic || !ledCharacteristic.canWrite()) {
Serial.println("Característica LED no disponible o no escribible!");
peripheral.disconnect();
return;
}
while (peripheral.connected()) {
int buttonState = digitalRead(buttonPin);
if (oldButtonState != buttonState) {
oldButtonState = buttonState;
if (buttonState) {
Serial.println("Botón pulsado");
ledCharacteristic.writeByte(0x01);
digitalWrite(ledPin, LOW);
} else {
Serial.println("Botón soltado");
ledCharacteristic.writeByte(0x00);
digitalWrite(ledPin, HIGH);
}
}
}
Serial.println("Periférico desconectado");
}
Partes personalizadas y envolventes
Archivos CAD en Thingiverse para imprimir las monturas.
Esquemáticos
Central usa pin 3 para botón y 5 para LCD. Periférica usa pin 6 para LCD.
Proceso de manufactura
- Gafas de sol: Diseño, materiales y estándares de protección ocular
- Baterías: De la pila de Volta a las modernas celdas de litio
- UnifiedWater v1 – Kit completo de sensor de calidad de agua con Arduino
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Construye tu Propio Casco y Reactor Arc de Iron Man con Arduino - Guía Paso a Paso
- Sistema de votación portátil con conectividad GSM
- Arduino 101 BLE + Blynk: Robot Tanque Controlado por Bluetooth DIY
- Juego Arcade Whac-A-Mole DIY (Edición Botones) – Proyecto Arduino
- Baterías de Automóvil: El Corazón Eléctrico de tu Vehículo
- Cómo probar tu alternador: Métodos expertos para resultados fiables
- 7 Indicadores Claros de que tu Alternador Está Fallando