Crie Óculos Inteligentes de Matchmaking com Arduino 101 e tinyTILE BLE
Componentes e Materiais
| Componente | Quantidade | Observações |
|---|---|---|
| Intel tinyTILE | 2 | Ou outros módulos BLE |
| Arduino 101 | 2 | Opcional |
| Painel LCD Controlável Adafruit (Liquid Crystal Light Valve) | 2 | |
| Bateria Li-Ion 100mAh | 2 | |
| Conector JST-PH 2 pinos Adafruit | 4 | |
| Cabo Extensor Bateria JST-PH Adafruit | 2 | |
| Chave Deslizante | 2 | |
| Resistor 10k ohm | 3 | |
| Chave Pushbutton 12mm SparkFun | 1 | |
| LED (genérico) | 2 | Usados na fase de desenvolvimento |
| Protoboard (genérica) | 1 | Fase de desenvolvimento |
| Fios jumpers (genéricos) | 1 | Fase de desenvolvimento |
Ferramentas Necessárias
- Impressora 3D
- Ferro de solda
Aplicativos e Serviços Online
- Arduino IDE
- Arduino Web Editor
Sobre o Projeto
Em vez de usar um app, e se você pudesse enviar um sinal para fazer contato visual com alguém em quem tem interesse, em um ambiente social, mesmo à distância? Não proponho uma nova forma de encontro. Exploro novo uso do Bluetooth em interações humanas.
Ao descobrir que módulos Intel Curie podem atuar como dispositivos BLE central e periférico, quis fazer esses óculos. Graças a tutorial da Adafruit, a estrutura de referência de óculos LCD impressos em 3D está disponível. Adicionei controle BLE (em vez de interruptor) de dois óculos simultaneamente, um como mestre e outro como escravo, e redesenhei as armações 3D.
Desenvolvido primeiro no Arduino 101 e prototipado no tinyTILE, ambos com módulos Intel Curie. Mesmo que não consiga módulos Curie no futuro, a metodologia ainda é útil. Imagino muitas formas de aplicar capacidades central/periférico Bluetooth.
Passo 1 - Desenvolvimento
Dois Arduino 101 e dois LEDs usados para desenvolver circuito e testar códigos. Devido à complexidade, é bom começar na protoboard antes de soldar tudo.
Para periférico, use o código dos exemplos CurieBLE → Peripheral → LED e inverta HIGH/LOW. O código para central está no final do projeto, similar ao CurieBLE → Central → LEDcontrol com linhas adicionadas para LCDs.
O tinyTILE é miniatura do Arduino 101. Podem ser flashados com mesmos códigos. Pinos do Arduino 101 são mais fáceis, mas tamanho do tinyTILE é melhor para wearables. Gosto de desenvolver no Arduino 101 e transferir para tinyTILE.
Passo 2 - Impressão 3D
Redesenhei as armações no SolidWorks baseando no design da Adafruit. Pode baixar o design básico deles e modificar. Se gostar exatamente do meu visual (coração e universo), estão nos anexos. Assista ao vídeo para explicação.
Passo 3 - Montagem
Conselhos da Adafruit sobre fiação, soldagem e montagem são ótimos. Só adicionei os tinyTILEs extras e o botão. Cuidado para cortar fios nos comprimentos certos.
Passo 4 - Pronto e Divirta-se!
Quando ligado, há tensão nos LCDs, mantendo-os como óculos escuros. Ao pressionar o botão no mestre, a tensão desliga no mestre e, via Bluetooth, sinaliza o escravo para desligar também, tornando ambos transparentes.
Os dois óculos funcionam bem afastados, dentro do alcance BLE. Testado em casa: o Coração consegue atenção do Universo a pelo menos 15 passos.
Imagine não usar botão, mas um gesto, um aceno de cabeça ou batimentos cardíacos combinando!
Coração (mestre=central): "I like your sophisticated mind <3"
Universo (escravo=periférico): "I see you. Let's talk."
Código
Controle de Botão para Central
/*
* Copyright (c) 2016 Intel Corporation. All rights reserved.
* Sketch: LedControl.ino
* Descrição: Central que procura Service/Characteristic específico de Periférico.
* Ao descobrir, lê estado de botão e escreve valor no Characteristic do Periférico.
*/
#include
const int buttonPin = 3;
int oldButtonState = LOW;
const int ledPin = 5;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
BLE.begin();
Serial.println("BLE Central - LED control");
BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
}
void loop() {
BLEDevice peripheral = BLE.available();
if (peripheral) {
Serial.print("Found ");
Serial.print(peripheral.address());
Serial.print(" '");
Serial.print(peripheral.localName());
Serial.print("' ");
Serial.print(peripheral.advertisedServiceUuid());
Serial.println();
BLE.stopScan();
controlLed(peripheral);
BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
}
}
void controlLed(BLEDevice peripheral) {
Serial.println("Connecting ...");
if (peripheral.connect()) Serial.println("Connected");
else { Serial.println("Failed to connect!"); return; }
Serial.println("Discovering attributes ...");
if (peripheral.discoverAttributes()) Serial.println("Attributes discovered");
else { Serial.println("Attribute discovery failed!"); peripheral.disconnect(); return; }
BLECharacteristic ledCharacteristic = peripheral.characteristic("19b10001-e8f2-537e-4f6c-d104768a1214");
if (!ledCharacteristic) { Serial.println("Peripheral does not have LED characteristic!"); peripheral.disconnect(); return; }
else if (!ledCharacteristic.canWrite()) { Serial.println("Peripheral does not have a writable LED characteristic!"); peripheral.disconnect(); return; }
while (peripheral.connected()) {
int buttonState = digitalRead(buttonPin);
if (oldButtonState != buttonState) {
oldButtonState = buttonState;
if (buttonState) {
Serial.println("button pressed");
ledCharacteristic.writeByte(0x01);
digitalWrite(ledPin, LOW);
} else {
Serial.println("button released");
ledCharacteristic.writeByte(0x00);
digitalWrite(ledPin, HIGH);
}
}
}
Serial.println("Peripheral disconnected");
}
Esquemático
Central usa pino 3 para botão e 5 para LCD. Periférico usa pino 6 para LCD.
Processo de manufatura
- Óculos de Sol: Design, Materiais e Normas de Proteção Ocular
- Baterias: Da Pilha de Volta às Modernas Células de Lítio
- UnifiedWater v1 – Kit Completo de Sensor de Qualidade da Água com Arduino
- Soluções de Energia Otimizadas para Projetos Arduino
- Construa seu Próprio Capacete e Reator Arc do Homem de Ferro com Arduino – Guia Passo a Passo
- Sistema de Votação Portátil com Conectividade GSM
- Arduino 101 BLE + Blynk: Robô Tanque Controlado por Bluetooth DIY
- O Papel Essencial das Baterias Automotivas: Alimentando o seu Veículo
- Como Testar Seu Alternador: Métodos Especializados para Resultados Confiáveis
- 7 Sinais Claros de Que Seu Alternador Está Falhando