Smartwatch Arduino DIY: Construa Seu Próprio Relógio Estilo Apple Watch
Componentes e Materiais
| Componente | Quantidade | Observação |
|---|---|---|
| SparkFun Arduino Pro Mini 328 - 3.3V/8MHz | 1 | |
| Adafruit Bluefruit LE - BLE 4.0 (nRF8001 Breakout v1.0) | 1 | |
| Adafruit Display OLED Monocromático 0.96" 128x64 | 1 | |
| Bateria LiPo 3.7V 100mAh (Adafruit) | 1 | |
| Conectores Micro-USB | 1 | |
| Resistores SMD 1206 1M Ω | 3 | |
| Pulseira 20mm com molas (Watch Band with Springs) | 1 | |
| Cabo USB-A para Micro-USB | 1 | |
| Parafusos 2x5mm | 4 | |
| Carregador LiPo Básico Micro-USB (SparkFun) | 1 | |
| SparkFun FTDI Basic Breakout 3.3V | 1 | Para programar o Pro Mini |
| Chapa Alumínio 50x50mm | 1 | Para tampa traseira |
| Placa Matrix ou Stripboard | 1 |
Ferramentas Necessárias
- Ferro de solda (genérico)
- Impressora 3D (genérica)
- Outras ferramentas comuns: serra, alicates, chaves de fenda, estiletes
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
Queria um smartwatch que mostrasse notificações do iPhone, fosse pequeno o bastante para usar, e tivesse bateria recarregável durando pelo menos um dia. Criei meu próprio Apple Watch baseado em Arduino. É um smartwatch com Arduino Pro Mini, conectado ao iPhone via Bluetooth. Porta USB-micro conectada à bateria para carga fácil. Fios na frente são botões capacitivos que detectam toque do dedo, permitindo interface com o relógio.
O relógio sincroniza automaticamente a hora com o iPhone quando nova notificação chega. Isso torna o relógio mais confiável e menos sensível a atrasos do Arduino. Após 10 segundos, a tela apaga para economizar bateria. Acorda se botão central for tocado ou nova notificação chegar.
Encontrei a página de Luke Brendt (iOS Notifications with Arduino) que fez o que eu queria, mas precisava de algo menor e vestível. Uso a ANCS Arduino Library dele. ANCS = Apple Notification Center Service: "dar a acessórios Bluetooth (conectados a iOS via BLE) forma simples e conveniente de acessar vários tipos de notificações geradas em dispositivos iOS".
Passo 1: Montagem Elétrica do Hardware
Conforme diagrama de circuito, muitos fios para conectar, tudo deve ficar bem junto — um desafio. Após iterações, cheguei a estes passos para facilitar. Olhe as fotos para ver como resolvi conexões.
- Conecte Bluefruit LE ao Arduino com fios flexíveis.
- Crie placa para botões capacitivos e prenda os pinos. Conecte esta placa ao Arduino com fios flexíveis. (Pinos cortados de LEDs)
- Modifique alguns pinos do display OLED e monte no Arduino.
- Passos abaixo podem esperar até carregar código e verificar hardware.
- Conecte fio flexível ao GND, longo o bastante para alcançar traseira do relógio, que deve tocar o corpo. (Necessário porque toque capacitivo precisa referência de terra para funcionar).
- Conecte conector micro USB com fios flexíveis a GND e RAW. Veja pinout USB micro para ver como conectar terra e tensão positiva. Nota: Conecte fio positivo do USB a RAW, não a VCC.
- Conecte bateria com fios flexíveis a GND e RAW. Nota: Positivo da bateria em RAW, não VCC.
Também precisa personalizar um carregador:
- Corte cabo micro USB.
- Conecte fio vermelho do cabo USB ao fio vermelho do conector da bateria, e preto a preto.
IMPORTANTE!
O smartwatch NÃO pode ser carregado diretamente com 5V de USB com cabo micro USB comum. Carregador LiPo é necessário, senão a bateria pode ser danificada.
Comentários: Use fita isolante entre componentes para evitar curto-circuito.
Passo 2: Software
Bibliotecas usadas (algumas precisaram de modificações para funcionar com hardware, explicadas abaixo):
- ANCS Library for Arduino: GitHub
- Bluetooth Low Energy SDK for Arduino: GitHub
- U8glib para tela: GitHub
- Capacitive Sensing Library: Arduino Playground
Modificações Necessárias
- Biblioteca ANCS, Arquivo: notif.cpp, Linha 826. Altere para Bluefruit funcionar:
aci_state.aci_pins.reset_pin = 9; // Era outro valor, mude para 9 - Biblioteca ANCS, Arquivo: ancs_data_source.cpp — Para sincronizar hora corretamente, corrija bugs:
- Substitua TODO o código pelo conteúdo do ancs_data_source.cpp PDF.
- Adicione a linha comentada abaixo na linha 217:
case ANCS_NOTIFICATION_ATTRIBUTE_DATE: debug_print(F(", Date: ")); // YYYYMMDDTHHMM datetime = (char*)malloc(5); // Adicione esta linha! strncpy(datetime, buffer, 4); - Biblioteca ANCS, Arquivo: ancs_notification.h
- Substitua TODO o código pelo conteúdo do ancs_notification.h PDF.
Arduino Pro Mini não tem programador onboard; programador externo necessário. Usei SparkFun FTDI (#9873).
Comentários: Pasta zip anexa contém código rodando no Arduino e todas bibliotecas necessárias, já modificadas. Código comentado explica funções. Tive problema compilando com Arduino IDE 1.8.3 (erro conhecido no GCC). Instalei IDE 1.0.6 e compilei/upload funcionou.
Passo 3: Caixa (Case) do Smartwatch
Desenhe caixa grande o bastante para todos componentes. No zip anexo está o arquivo .stl da caixa usada. (Duas iterações de design; forma pode variar nas fotos.)
Tampa traseira feita de chapa de alumínio de caixa velha. Recorte peça que caiba na caixa e fure para parafusos. Para caixa e pulseira do projeto, precisa espaçamento entre furos. Bom se tampa for material condutor, pois fio terra-corpo será conectado a ela. Para bordas limpas e retas na chapa, segure entre duas madeiras e use serra para metal.
Caixa 3D impressa precisou tratamento:
- Lixe com lixa fina.
- Aplique massa de enchimento (filler) em spray, cubra bem.
- Lixe novamente com lixa fina. (Passos 3 e 4 podem repetir até acabamento liso. Repeti 3 vezes.)
- Pinte com tinta spray, cubra bem.
Siga instruções das latas de spray para melhores resultados.
Passo 4: Montagem Final
Primeiro, insira pinos dos botões capacitivos nos furos inferiores da caixa. Dobre-os para trás e insira nos furos superiores. Pressione fios para ficarem bem ajustados e lisos.
Empurre resto dos componentes, tente posicionar tela bem. Tive problema sério alinhar tela na caixa. Depende tanto da montagem dos componentes quanto do design da caixa. Por isso tela fica levemente rotacionada.
Empurre conector micro USB pelo furo lateral. (Usei fita para ajuste apertado no furo, mantendo conector no lugar.)
Solde fio corpo-terra na tampa traseira, isole tampa com fita. Prenda tampa com 4 parafusos.
Passo 5: Como Usar o Smartwatch
Simples: no iPhone, vá em Ajustes > Bluetooth, ative Bluetooth, procure dispositivo "ANSC rusk", escolha e selecione Emparelhar. Smartwatch e iPhone pareados; relógio receberá mesmas notificações que aparecem no iPhone.
Relógio reinicia se botão central e botão direito forem tocados simultaneamente. Útil se houver problema de conexão.
Para carregar bateria, plugue cabo USB modificado e conecte ao carregador LiPo.
Código
Arduino Apple Watch.zip
No arquivo zip todas bibliotecas modificadas e códigos estão disponíveis.
No preview (download only).
Peças Personalizadas e Gabaritos
Caixa do smartwatch que comporta todos os componentes.
Esquemáticos
Conecte componentes conforme diagrama de circuito.
Processo de manufatura
- A Evolução da Medição do Tempo: Das Soles aos Relógios de Quartzo de Precisão
- Relógio de Parede Estiloso com Anel Neopixel 60 LEDs Adafruit e Arduino
- Construa um Spybot Controlado por Bluetooth com Arduino
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- UnifiedWater v1 – Kit Completo de Sensor de Qualidade da Água com Arduino
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Soluções de Energia Otimizadas para Projetos Arduino
- Arduino 101 BLE + Blynk: Robô Tanque Controlado por Bluetooth DIY