feel
warm.
connect.

carbonized bamboo · bluetooth proximity · heartbeat · warmth

9:41· · ·
Phone
Messages
Mail
Safari
Music
Clock
Health
Weather
Activity
Notes
Calendar
Search

63.5 × 88.9 × 12mm  ·  playing card form factor  ·  № 0001

People finding
each other.

every dot · a heartbeat · in the city

0
connections made
0
ommphones active
0
synced heartbeats

A phone
with no screen.

Most devices demand your attention. ommphone asks for something different — your presence. A piece of carbonized bamboo that pulses with a heartbeat. That grows warm when another one is near.

Not a notification. Not a message. Just warmth. Just a heartbeat. Just the quiet signal that another human being chose the same thing you did.

7s
meditation beat
45°
max warmth
15m
proximity range
LUB DUB 7s interval
How it works

Three modes.
One object.

01

Meditation
mode

Hold it. Breathe with the pulse. A double thump — lub-dub — every 7 seconds. Your breath slows to match. No instructions. No timer. No streak. Just bamboo and a heartbeat.

02

Proximity
mode

BLE scans continuously. Another ommphone detected nearby — the heartbeat quickens. The bamboo grows warm. The closer you get, the faster it beats. At <3m both devices sync to the same rhythm simultaneously.

03

Sync
mode

Two strangers. Two devices beating in perfect phase. They both feel it at the same moment. No words needed. The device already said everything. A connection without a screen in sight.

Materials

Made from
the earth.

🎋
Carbonized bamboo
Vietnamese origin
Heat treated
Hand finished
Unique grain per unit
nRF52832
Nordic BLE SoC
QFN-48
2.4GHz
32MHz crystal
🔋
LiPo 100mAh
3.7V · 370mWh
USB-C charging
3–6 months/charge
TP4056 managed
🌡
Copper + NTC
15mm spreader
Resistive pad 5V
45°C safety cutoff
PWM controlled

Every file.
Open source.

PCB · Gerber

Manufacturing files

Complete Gerber package for JLCPCB. Upload and order. 2-layer FR4, all layers included.

  • omphone-F_Cu.gtl — front copper
  • omphone-B_Cu.gbl — ground plane
  • omphone-Edge_Cuts.gm1 — outline
  • omphone-F_Mask.gts — soldermask
  • omphone-F_SilkS.gto — silkscreen
  • omphone.drl — drill file
BOM · CPL · Assembly

Assembly files

Complete JLCPCB SMT assembly package. BOM with LCSC part numbers. CPL with exact coordinates.

  • omphone_BOM.csv — 21 components
  • omphone_CPL.csv — placement coords
  • nRF52832 · TP4056 · DW01A
  • FS8205A · TTP223 · USB-C
  • All passives 0402
  • 4× JST-PH 2-pin connectors
CAD · 3D Print

Enclosure files

Playing card form factor. 63.5 × 88.9 × 12mm. Double groove, icon recesses, USB-C slot.

  • omphone_v2.stl — 3D print ready
  • omphone_v2.step — editable CAD
  • 8mm corner radius
  • Icon grid 4×5 recesses
  • Heartbeat ECG zone
  • Serial number engraving
C firmware · nRF52

Firmware

531 lines of production C. nRF5 SDK 17.1.0. Three modes, NTC safety, BLE scanning and advertising.

  • Meditation heartbeat 7s
  • Proximity RSSI mapping
  • Dual-device beat sync
  • NTC 45°C safety cutoff
  • 10min auto-sleep
  • IIR RSSI smoothing
Build plan · Excel

Complete build guide

18-step build plan. Every cost itemised. Who does what. Every file mapped to every vendor.

  • 5 phases from design to done
  • JLCPCB ordering walkthrough
  • Off-board parts shopping list
  • Firmware flash instructions
  • Assembly sequence
  • Cost breakdown per unit
Engineer JD

Hire guide

Full embedded engineer job description for ITviec / TopDev HCMC. Firmware + Gerber review.

  • nRF52 firmware scope
  • Gerber review checklist
  • EasyEDA conversion notes
  • SWD flashing guide
  • Budget: ~$200–300
  • Timeline: 1 week
Firmware

The heartbeat
in code.

/* OMPHONE FIRMWARE v1.0 — nRF52832
   Three modes: meditation · proximity · sync     */

#define BEAT_INTERVAL_MEDITATION  7000   // 7s — meditation
#define BEAT_INTERVAL_MIN          800   // fastest — very close
#define LUB_DURATION                70   // first thump ms
#define LUB_DUB_GAP               180   // gap between lub + dub
#define NTC_ADC_THRESHOLD         680   // ~45°C safety cutoff

static void heartbeat_beat(void) {
    /* Scale pulse to proximity */
    uint32_t pulse = (rssi >= RSSI_CLOSE) ? MOTOR_STRONG : MOTOR_SOFT;

    motor_pulse(pulse);        // LUB
    nrf_delay_ms(LUB_DUB_GAP);
    motor_pulse(pulse);        // DUB
}

static void heartbeat_timer_handler(void *p) {
    heartbeat_beat();
    heater_set_duty(proximity_to_heat(m_nearest_rssi));

    uint32_t next = map_range(m_nearest_rssi,
        RSSI_FAR, RSSI_CLOSE,
        BEAT_INTERVAL_MAX, BEAT_INTERVAL_MIN);

    app_timer_start(m_heartbeat_timer,
        APP_TIMER_TICKS(next), NULL);
}
Bill of materials

21 components.
JLCPCB handles all.

RefComponentPackageLCSC #Qty
U1nRF52832 — BLE SoCQFN-48C1128851
X132MHz CrystalSMD-3225C90021
U2TTP223 Cap Touch ICSOT-23-6C807571
U3TP4056 LiPo ChargerSOP-8C165811
U4DW01A Batt ProtectionSOT-23-6C3513701
Q1FS8205A Dual N-FETSOT-23-6C322541
Q22N7002 NPN MOSFETSOT-23C85451
J1–J4JST-PH 2-pin connectorJST-PH-2C1579294
J5USB-C ReceptacleUSB-C-SMDC27651861
LED1Red LED 04020402C22861
C1–C8MLCC 100nF / 4.7uF / 10uF0402C496788
R1–R3Resistors 1.2k / 10k / 100Ω0402C258673
PCB Layout

58 × 80mm board.
Every component.

2-layer FR4 · HASL lead-free · all SMT · JLCPCB assembly ready

OMPHONE REV1.0 · 58×80mm · TOP LAYER
ANTENNA KEEPOUT ANT nRF52832 QFN48 X1 32MHz TTP223 CAP PAD J1-HEAT J2-MOT J3-NTC J4-BATT TP4056 SOP-8 DW01A FS8205 Q2 NPN LED1 C1 C2 C4 C5 R1 R2 R3 LiPo 100mAh 25×38×4mm · 3.7V USB-C OMPHONE REV1.0 · FR4 · 2L nRF52832 QFN48 X1 · 32MHz crystal TTP223 touch IC J1 heater pad J2 motor TP4056 charger J3 NTC · DW01A J4 battery LiPo 100mAh USB-C VBAT 3.3V VBUS GPIO Heater download full pcb layout ↓
Off-board parts

Buy these
separately.

Not on the PCB — these live inside the bamboo enclosure and connect via JST-PH cables

Amazon · ~$8–15

12mm Coin Vibration Motor

3V DC · 70mA · glue to inner bamboo wall for resonance · connects to J2

search Amazon ↗
Amazon / Digikey · ~$3–5

NTC 10k Thermistor

10kΩ at 25°C · B=3950 · leads ≥80mm · sits at copper spreader · connects to J3

search Amazon ↗
Adafruit / Amazon · ~$5–8

LiPo 100mAh Battery

3.7V · JST-PH 2-pin · check polarity (red=+) before connecting · connects to J4

search Adafruit ↗
Amazon / AliExpress · ~$5–10

Flexible Heating Pad 15mm

5V · 15×15mm · stick under copper spreader at grip zone · connects to J1

search Amazon ↗
Amazon · ~$6–10

JST-PH 2-pin Cables

100mm pre-crimped · pack of 10 · connects all off-board components to J1–J4

search Amazon ↗
Amazon · ~$18–25 · one-time

J-Link EDU Mini Programmer

Flashes nRF52832 firmware via SWD · 4 wires to PCB · reuse forever

search Amazon ↗
Hardware store · ~$2–4

Copper Disc 15mm

0.5mm thick · cut from copper sheet · sits between heating pad and bamboo surface

search Amazon ↗
Amazon · ~$6–8

Thermal Conductive Tape

Double-sided · mounts heating pad and motor inside enclosure without screws

search Amazon ↗
TOTAL OFF-BOARD: $53–85 · J-Link is one-time and reusable across all future nRF52 projects download full parts list ↓
Economics

Prototype to
production.

5 prototypes
$40
per unit · California
  • JLCPCB PCB + assembly $83–108
  • Off-board parts $53–85
  • 3D enclosure (Irvine) $60–90
  • J-Link programmer $18–25
  • Firmware $0
Build timeline

Boards in hand
in 3 weeks.

Day 1
Order everything
Upload Gerbers to JLCPCB · Call JLC3DP Irvine · Order off-board parts on Amazon
Day 2–4
Off-board parts arrive
Motor · NTC · LiPo · heating pad · cables · J-Link programmer
Day 5–7
Enclosures ready
JLC3DP prints and ships directly to your door
Day 10–14
PCBs arrive from JLCPCB
5 assembled boards · Every component placed and soldered · DHL from Shenzhen
Day 14
Flash firmware
Connect J-Link · make flash_softdevice · make flash · 30 seconds per board
Day 15
First heartbeat
Assemble · plug in · feel three slow double pulses · ommphone is alive
Breathing practice

Breathe with
the heartbeat.

hold the rhythm · 7 seconds · no counting needed

· · ·
tap to begin