Skip to content

technobotanist/table17-rayban

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table 17 - Ray-Ban Meta DAT + Chime

Chime: Screen-free parent-child communication for Ray-Ban Meta glasses.

"You chose Ray-Ban Meta because you want to be present - not buried in your phone. Your kid doesn't have a phone because you want them to play and explore. Chime bridges that gap - no screens required."

Quick Links

Resource Path
Android App android/samples/CameraAccess/
ESP32 Sketch arduino/chime_peripheral/
Concept Doc docs/CHIME_CONCEPT.md
Demo Script docs/DEMO_SCRIPT.md

The Concept

┌─────────────────────────────────────────────────────────────────┐
│              PARENT (Ray-Ban Meta + Android Phone)              │
│                                                                 │
│   TTS Announcements:           Voice Commands:                  │
│   • "Child is getting far"     • "Hey Chime, ping"              │
│   • "Connection status"        • "Hey Chime, check in"          │
│   • "Proximity alerts"         • "Hey Chime, where are you"     │
└─────────────────────────────────────────────────────────────────┘
                              │
                              │ BLE (Bluetooth Low Energy)
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              CHILD (ESP32 Plushy Beacon - "Chime Peripheral")   │
│                                                                 │
│   ┌───────────────┐   Small form factor beacon:                 │
│   │    (LED)      │   • Status LED (blinking indicator)         │
│   │   ~~~~~~      │   • Small speaker for chirps                │
│   │   ~~~~~~      │   • Embedded in plushy/wearable             │
│   └───────────────┘   • Simple, kid-proof, passive              │
└─────────────────────────────────────────────────────────────────┘

Features

Feature Parent Experience Child Experience
Proximity Awareness Glasses announce distance changes LED shows connection status
Check-In Request Say "ping" to locate child Beacon chirps + LED blinks
Range Warning Hears "Child getting far" LED changes pattern
Out of Range Hears "Child out of range" LED flashes alert pattern
Status Updates Voice-prompted status reports Beacon provides passive tracking

What's Working

  • Android app builds and runs
  • DAT registration and camera streaming
  • BLE peripheral advertising from Android
  • Chime debug console with simulation mode
  • Console logging of all messages
  • TTS announcements
  • Proximity zone detection (RSSI-based)
  • ESP32 sketch template ready
  • Live ESP32 ↔ Android communication (needs hardware testing)

Prerequisites

Component Version/Model
Android Phone Android 10+, Pixel recommended
Meta AI App v247+
Ray-Ban Meta Glasses Firmware v20+
Android Studio Flamingo+
JDK 17+
ESP32 Board ESP32 DevKit or similar (BLE-capable)
Arduino IDE 2.0+ (with ESP32 board support)

Android Setup

1. Clone and configure

git clone https://github.com/YourOrg/table17-rayban.git
cd table17-rayban/android/samples/CameraAccess

2. GitHub token for Gradle

Create android/local.properties:

github_token=YOUR_TOKEN_HERE

Token must be a classic PAT with read:packages scope.

3. Build and run

  1. Open android/samples/CameraAccess in Android Studio
  2. File → Sync Project with Gradle Files
  3. Connect phone via USB
  4. Press Shift+F10 to run

4. Access Chime Console

  1. Look for the 🐛 bug icon on the right edge of the screen
  2. Tap it to open the debug menu
  3. Select the "Chime" tab
  4. Enable Simulation Mode to test without ESP32 hardware
  5. Tap "Run Demo Sequence" to see the full flow

ESP32 Beacon Setup

Hardware Required

Component Purpose Pin
ESP32 DevKit Main board with BLE -
LED Status indicator GPIO 2 (built-in on most boards)
Small speaker/buzzer Audio chirps GPIO 25 (DAC-capable)

Wiring Diagram

ESP32 DevKit (or similar)
        ┌─────────────────────┐
        │                     │
 GPIO2 ─┤ ○ LED (built-in)    │
GPIO25 ─┤ ○ Speaker (+)       │
   GND ─┤ ○ Common Ground     │
        └─────────────────────┘

Upload the Sketch

  1. Open Arduino IDE 2.0+
  2. Install ESP32 board support (Tools → Board → Boards Manager → "ESP32")
  3. File → Openarduino/chime_peripheral/chime_peripheral.ino
  4. Tools → Board → ESP32 Dev Module (or your specific board)
  5. Tools → Port → Select your ESP32
  6. Click Upload (→)

ESP32 Serial Monitor

Open Tools → Serial Monitor at 115200 baud to see:

╔═══════════════════════════════════════
║  CHIME PERIPHERAL - ESP32 Beacon
║  Child's screen-free tracking device
╚═══════════════════════════════════════

● [SYS] Initializing...
● [SYS] LED initialized
● [SYS] Starting BLE scan...
● [SYS] Scanning for Table17-RayBan...
● [SYS] Waiting for parent connection...

Protocol Reference

Message Prefixes

Prefix Direction Meaning
A: Child → Parent Alert/Audio command
C: Both Confirmation/Acknowledgement
S: Both Status message
R: Child → Parent RSSI value
B: Child → Parent Battery level
P: Parent → Child Ping/Check-in request
L: Parent → Child LED pattern command
Z: Parent → Child Buzz pattern command

Message Types (Child → Parent)

Message Meaning Description
R:-XX RSSI value Signal strength report (e.g., R:-65)
S:CONN Status Connection established
S:DISC Status Disconnected
C:OK Confirm Confirmation acknowledgement

LED Commands (L:)

Message Effect
L:G Green - connected/OK
L:Y Yellow - getting far
L:R Red - alert/out of range
L:B Blue - incoming message

Buzz Commands (Z:)

Message Pattern
Z:1 Single short buzz
Z:2 Double buzz
Z:L Long buzz
Z:SOS SOS pattern

Proximity Zones (RSSI-based)

Zone RSSI Range Color Announcement
Very Close > -50 dBm Green -
Nearby -50 to -65 Green -
In Range -65 to -80 Green -
Getting Far -80 to -90 Yellow "Child is getting far"
Far -90 to -100 Orange "Warning: Child is far"
Out of Range < -100 Red "Alert: Child out of range"

BLE Service Definition

Service UUID: 12345678-1234-5678-1234-56789abcdef0

Characteristic UUID Properties Purpose
Write ...def1 Write Phone → ESP32 commands
Read ...def2 Read ESP32 → Phone (polled)
Notify ...def3 Notify ESP32 → Phone (pushed)

File Structure

table17-rayban/
├── README.md                          # This file
├── android/
│   └── samples/CameraAccess/
│       └── app/src/main/java/.../
│           ├── chime/
│           │   ├── ChimeProtocol.kt   # Protocol definitions
│           │   └── ChimeViewModel.kt  # State + console logging
│           ├── peripheral/
│           │   ├── BlePeripheralAdvertiser.kt
│           │   ├── ArduinoConnectionManager.kt
│           │   └── ArduinoDebugViewModel.kt
│           ├── audio/
│           │   ├── GlassesAudioManager.kt
│           │   └── VoiceCommandProcessor.kt
│           └── ui/
│               ├── ChimeComponents.kt  # Chime UI + console
│               └── CameraAccessScaffold.kt
├── arduino/
│   └── chime_peripheral/
│       └── chime_peripheral.ino       # ESP32 sketch
├── docs/
│   ├── CHIME_CONCEPT.md               # Full concept document
│   ├── DEMO_SCRIPT.md                 # Demo walkthrough
│   └── TROUBLESHOOTING.md
└── hub/
    └── server.py                      # Optional WebSocket hub

Testing Without Hardware

The Chime console includes Simulation Mode for testing without an ESP32:

  1. Open the app → tap 🐛 → "Chime" tab
  2. Simulation Mode is ON by default
  3. Use the simulation controls:
    • Connect/Disconnect - Simulate BLE connection
    • RSSI buttons (-40 to -90) - Simulate distance changes
    • Confirm OK - Simulate confirmation acknowledgement
  4. Run Demo Sequence - Automated walkthrough of all features

Watch the console log to see all messages being sent/received.


Troubleshooting

Problem Solution
Can't find bug icon 🐛 It's on the RIGHT edge of screen, vertically centered
No Chime tab Make sure you're running a DEBUG build
ESP32 not connecting Ensure it's scanning for "Table17-RayBan", phone BLE is on
No TTS audio Check phone volume, TTS may need download
RSSI always 0 ESP32 must write RSSI to the write characteristic

Next Steps

  1. Hardware Testing - Connect real ESP32 beacon
  2. Range Calibration - Adjust RSSI thresholds for your environment
  3. Enclosure - Design kid-friendly plushy/wearable case
  4. Battery - Add LiPo battery for portable use

Team

Table 17 - Built at Meta Wearables Hackathon 2026

About

Reality Hack 2026

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors