Arduino101 / tinyTILE BLE:Gafas de sol para combinar
Componentes y suministros
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 4 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
| ||||
|
Aplicaciones y servicios en línea
| ||||
|
Acerca de este proyecto
En lugar de usar una aplicación, ¿qué pasaría si pudieras enviar una señal para hacer contacto visual con alguien con quien estás interesado en hablar, en un entorno social, incluso desde lejos? No propongo una forma diferente de comenzar una cita. Estoy explorando un nuevo uso de Bluetooth en el campo de las interacciones humanas.
Cuando descubrí que los módulos Intel Curie se pueden asignar para actuar como dispositivos BLE centrales y periféricos, inmediatamente quise hacer estas gafas. (Obtenga más información sobre CurieBLE aquí.) Gracias a un tutorial sobre Adafruit, el marco de referencia de un cristal LCD impreso en 3D está disponible. Lo que agregué al tutorial de Adafruit es el control BLE (en lugar de un control de interruptor) de dos vasos al mismo tiempo, uno es el maestro y el otro el esclavo, y marcos impresos en 3D rediseñados.
Este proyecto se desarrolló primero en Arduino 101 y se hizo un prototipo en tinyTILE, ambos tienen módulos Intel Curie. Incluso si es posible que no pueda obtener módulos Intel Curie en el futuro, espero que la metodología aquí pueda ser útil. Puedo imaginar muchas formas diferentes de aplicar las capacidades centrales y periféricas de Bluetooth y espero con ansias las discusiones sobre este tema.
Paso 1:desarrollo
Se utilizaron dos Arduino101 y dos LED para desarrollar el circuito y probar los códigos. Debido a la complejidad de los circuitos finales, siempre es una buena idea comenzar con una placa de pruebas antes de soldar todo junto.
Para el periférico, puede usar el código de los ejemplos de CurieBLE -> Periférico -> LED e intercambiar el ALTO y el BAJO (encuentre la razón en el último paso). El código de central se proporciona al final del proyecto. Es casi lo mismo que CurieBLE -> Central -> LEDcontrol con un par de líneas agregadas para las pantallas LCD.
TinyTILE es casi exactamente una miniatura de Arduino101. El rectángulo central principal es el módulo Intel Curie. Se pueden flashear con los mismos códigos. Los pines de Arduino101 siempre son más fáciles de usar, pero el tamaño de tinyTILE es más atractivo para los wearables. Me gusta desarrollar primero en Arduino 101 y transferir todo a tinyTILE. Mira otro proyecto usando tinyTILE aquí. Si el factor de forma no es un problema para su proyecto, no dude en usar Arduino101 (vea el ejemplo aquí).
Probé cada componente paso a paso, cuando cambié el Arduino101 a tinyTILE y cambié los LED a LCD.
Paso 2:Impresión 3D
Rediseñé los marcos usando SolidWorks además del proporcionado por Adafruit. Puede descargar su diseño básico aquí y modificarlo con el software que prefiera para la impresión 3D. Si te gustan exactamente los estilos que diseñé, puedes encontrarlos en los archivos adjuntos a continuación. ¿Por qué diseñé una forma de corazón y un universo? Vea el video para obtener una explicación y use su imaginación.
El diseño podría modificarse para adaptarse mejor a su rostro. Me resultó un poco difícil sujetarme la nariz pequeña. Hay algunas empresas hoy en día que hacen un escaneo 3D de tu rostro y personalizan las gafas para ti, lo cual es genial.
Creo que la impresora 3D que utilizó Ruiz Brothers de Adafruit debe ser mejor que la mía. Porque el mío imprimió tantos materiales de apoyo dentro de lugares que son muy difíciles de sacar. Como diseñador de UX, tengo mucho que decir sobre los inconvenientes de mi impresora 3D. Me gustaría tener materiales de soporte solubles en agua o una impresora que no necesite materiales de soporte o una impresora 3D de base líquida / que solidifique la luz.
Paso 3:montaje
Los consejos del tutorial de Adafruit sobre cableado, soldadura y montaje son muy buenos. Usted deberia comprobar esto. Solo tuve que agregar los tinyTILE adicionales y el botón. Tenga cuidado de cortar los cables en las longitudes correctas.
Paso 4:¡Listo y diviértete!
Cuando está encendido, se aplica voltaje a las pantallas LCD, lo que las mantiene oscuras. Cuando se presiona el botón en el maestro, el voltaje se apaga en el maestro, lo que al mismo tiempo indica que el voltaje en el esclavo se apaga a través de Bluetooth, lo que hace que ambas gafas sean transparentes.
Los dos vasos se pueden controlar bastante separados, siempre que estén dentro del rango BLE. Probé en casa. El corazón puede llamar la atención del Universo al menos a 15 pasos de distancia.
¡Imagínese no usar un botón, sino un gesto, un asentimiento o los latidos del corazón!
Corazón (maestro =central):"Me gusta tu mente sofisticada <3" Universo (esclavo =periférico):"Te veo. Hablemos".
Código
- Botón de control para central
Control de botones para Arduino central
Esto es casi lo mismo que el del ejemplo de CurieBLE./ * * Copyright (c) 2016 Intel Corporation. Reservados todos los derechos. * Consulte la parte inferior de este archivo para conocer los términos de la licencia. * // * * Sketch:LedControl.ino * * Descripción:* Este es un boceto Central que busca un Servicio en particular con una * Característica determinada de un Periférico. Tras un descubrimiento exitoso, * lee el estado de un botón y escribe ese valor en la * Característica periférica. * * Notas:* * - Servicio periférico esperado:19b10000-e8f2-537e-4f6c-d104768a1214 * - Característica periférica esperada:19b10001-e8f2-537e-4f6c-d104768a1214 * - Esquema periférico esperado:* * / # include// variables para buttonconst int buttonPin =3; int oldButtonState =LOW; const int ledPin =5; // pin que se utilizará para la configuración de LEDvoid () {Serial.begin (9600); // configura el pin del botón como entrada pinMode (buttonPin, INPUT); pinMode (ledPin, SALIDA); // inicializa el hardware BLE BLE.begin (); Serial.println ("BLE Central - Control LED"); // iniciar la búsqueda de periféricos BLE.scanForUuid ("19b10000-e8f2-537e-4f6c-d104768a1214");} void loop () {// comprobar si se ha descubierto un periférico BLEDevice periférico =BLE.available (); si (periférico) {// descubrió un periférico, imprima la dirección, el nombre local y el servicio anunciado Serial.print ("Encontrado"); Impresión serial (dirección.periférica ()); Serial.print ("'"); Serial.print (periférico.localName ()); Serial.print ("'"); Serial.print (periférico.advertisedServiceUuid ()); Serial.println (); // dejar de escanear BLE.stopScan (); controlLed (periférico); // periférico desconectado, comience a escanear nuevamente BLE.scanForUuid ("19b10000-e8f2-537e-4f6c-d104768a1214"); }} void controlLed (periférico BLEDevice) {// conectar al periférico Serial.println ("Conectando ..."); if (periférico.conectar ()) {Serial.println ("Conectado"); } else {Serial.println ("¡Error al conectar!"); regreso; } // descubre atributos periféricos Serial.println ("Descubriendo atributos ..."); if (periférico.discoverAttributes ()) {Serial.println ("Atributos descubiertos"); } else {Serial.println ("¡Falló el descubrimiento de atributos!"); periférico.disconnect (); regreso; } // recuperar la característica LED BLECharacteristic ledCharacteristic =periférico.characteristic ("19b10001-e8f2-537e-4f6c-d104768a1214"); if (! ledCharacteristic) {Serial.println ("¡El periférico no tiene característica LED!"); periférico.disconnect (); regreso; } else if (! ledCharacteristic.canWrite ()) {Serial.println ("¡El periférico no tiene una característica LED de escritura!"); periférico.disconnect (); regreso; } while (periférico.conectado ()) {// mientras el periférico está conectado // lee el pin del botón int buttonState =digitalRead (buttonPin); if (oldButtonState! =buttonState) {// botón cambiado oldButtonState =buttonState; if (buttonState) {Serial.println ("botón presionado"); // se presiona el botón, escriba 0x01 para encender el LED ledCharacteristic.writeByte (0x01); digitalWrite (ledPin, BAJO); } else {Serial.println ("botón liberado"); // se suelta el botón, escriba 0x00 para encender el LED de ledCharacteristic.writeByte (0x00); digitalWrite (ledPin, ALTO); }}} Serial.println ("Periférico desconectado");} / * Arduino BLE Central LED Control example Copyright (c) 2016 Arduino LLC. Todos los derechos reservados. Esta biblioteca es software gratuito; puede redistribuirlo y / o modificarlo según los términos de la Licencia Pública General Reducida GNU publicada por la Free Software Foundation; ya sea la versión 2.1 de la Licencia o (a su elección) cualquier versión posterior. Esta biblioteca se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general reducida de GNU para obtener más detalles. Debería haber recibido una copia de la Licencia Pública General Reducida GNU junto con esta biblioteca; si no es así, escriba a Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 EE. UU. * /
Piezas y carcasas personalizadas
Esquemas
Central usa el pin 3 para botón y 5 para LCD. El periférico utiliza el pin 6 para LCD.Proceso de manufactura
- Gafas de sol
- Batería
- UnifiedWater v1
- Arduino Power
- Avenger ensamblado:casco de Iron Man y reactor de arco
- Cuadro de votación móvil
- Intel Arduino 101 BLE Blynk Tank
- Whac-A-Mole (Edición Botón)
- Comprender la batería utilizada en los automóviles
- Diferentes formas de probar un alternador
- 7 signos de alternador malo o defectuoso