Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

through-metal-link

English (primary) · Русский · Deutsch · Português · Español · Français · Italiano · Polski · Türkçe · Українська · Tiếng Việt · 中文 · 日本語 · 한국어 · हिन्दी

An open platform for ultrasonic power and data transfer through solid metal walls — "through steel without a single hole", built with garage-grade means.

Try it now (no hardware needed): python3 software/sweep-map/sweep_map.py --mock

Paths in:

Status: stage 0 — preparation · no hardware validation yet (simulator only; bounty for the first build) · 💰 250ドル bounty · shopping list: QUICKSTART.md

CI REUSE DCO License

Docs are multilingual: English is primary and lives at the canonical paths; every other language mirrors the tree under translations/. Edit any language — CI translates and commits the rest (see CONTRIBUTING.md).

Stage 1 rig: Pi → DDS → half-bridge → transformer → piezo TX | steel | piezo RX → bridge → ADC → Pi

The idea in one paragraph

Radio waves don't pass through metal (Faraday cage), and a cable penetration means a hole, a seal, and a point of failure. Ultrasound, on the other hand, travels through metal just fine: a piezo element on each side of the wall turns it into a channel for power and data. Lab literature already proved the physics at serious levels (RPI: 50 W + 12 Mbit/s through 63.5 mm of steel; NASA JPL: up to ~kW through 5 mm of titanium) — those are existence proofs with specialized hardware, not this repo's garage BOM. The foundational patents have expired, and no open, reproducible platform exists yet — this repository is building one, starting at watts-class power and kbit/s data through 3–5 mm steel once stage 2 is measured.

Roadmap

Stage Deliverable Success criterion Expectation
1. Sweep map frequency response of the "Langevin–3 mm steel–Langevin" channel pair resonance found, plot in experiments/001 sim1, sim2
2. Watts power into the load at resonance ≥0.5 W through 3 mm of steel, protocol in experiments/002 sim4
3. Data FSK/OOK over the same pair ≥1 kbit/s error-free sim5
4. Node ESP32 + sensor in a welded-shut box, powered and telemetered by sound alone ≥1 h of autonomous operation sim4
5. Publication first independent replication + article/how-to + Zenodo snapshot third-party reproduction documented

Repository map

Every block below expands: inside is a digest sufficient to work from, plus a link to the full document.

🛒 From zero to a working rig: what to buy and in what orderQUICKSTART.md

Budget: (削除) 210ドル minimum, 300ドル comfortable (knock off 120ドル if you already own a Pi, a soldering iron, and a bench power supply). Three baskets: tools ( (削除ここまで)120ドル), rig electronics (70,ドル full BOM), mechanics (20ドル). Optional but strongly recommended: a USB oscilloscope (~60ドル–80).

Critical path — AliExpress shipping (3–4 weeks): order the electronics on day one. Key decision: buy 4 Langevin transducers from the same batch — the sweep will pick the best pair (why).

While it ships: dry-run the pipeline with no hardware —

python3 software/sweep-map/sweep_map.py --mock

Done when (by stage): stage 1 — sweep peak reproduces across two runs to within <200 Hz (experiments/001); stage 2 — ≥0.5 W into a known load through 3 mm of steel and an LED lit from the RX side (experiments/002).

📚 Theory in a minutedocs/00-theory.md

The piezo TX is pressed against the wall and drives a longitudinal wave into it; the piezo RX on the other side turns it back into electricity. Speed of sound in steel: ~5900 m/s.

Two operating modes:

Mode Frequency Resonance set by Yields Status
A — Langevin transducers 40 kHz the transducer pair (wall ≪ λ — a "membrane") watts, kbit/s starting mode (stages 1–4, ADR-0001)
B — discs 0.6–1 MHz thickness resonance of the wall (comb) hundreds of mW, hundreds of kbit/s branch after the first watts; needs automatic frequency tracking

The main losses: resonance mismatch within the pair (±1 kHz for cheap Langevin transducers), acoustic contact quality (epoxy > grease couplant + clamp > dry pressure), misalignment, resonance drift with temperature. The answer to all of them is the same: a sweep map before every change to the setup.

📈 What the rig should show: expectation plots from the simulatorsoftware/simulator/channel_sim.py

A semi-empirical channel model (not FEM, not lab data — intuition for "what the sweep should look like and what to aim at"). Assumptions are explicit in channel_sim.py (loaded Q≈40, contact k-factors, chain η≤40%). Regenerate with: python3 channel_sim.py --out ../../docs/img.

Stage 1 — sweep. A narrow peak near ~40 kHz; the model’s placeholder contact multipliers are grease:dry:gap = 1 : 0.25 : 0.02 (i.e. grease ×ばつ dry and ×ばつ air gap). No peak means a problem with the contact or the pair:

Why 4 Langevin transducers, not 2. Under Q≈40, a 1.5 kHz resonance mismatch within the pair drops model power ×ばつ:

Stage 3 — data. OOK runs into resonator ringing (model Q~40 → τ≈0.3 ms): 1 kbit/s is clean, at 5 kbit/s the eye is closed. Going faster takes mode B:

Receiver power budget. Shaded bands are targets (mode A 0.5–5 W if stage 2 lands; mode B lower). Realistic first loads are duty-cycled ESP32 / BLE / LED; Wi-Fi is shown as a peak-draw marker, not a continuous promise:

For later (mode B). The plate turns transparent at a comb of thickness resonances — the frequency has to be tracked:

⚠️ Safety — read before first power-updocs/02-safety.md
  1. Tens to hundreds of volts on the piezo once the stage-2 driver is online — the TVS on the receive side goes in BEFORE the first powered run; keep your hands off the leads.
  2. Mains — only through a bench power supply / isolation; ultrasonic-cleaner driver boards are galvanically tied to the mains.
  3. Ears — at non-trivial power, operate transducers pressed against metal; never run high-power airborne ultrasound without an enclosure.
  4. Heat — an unclamped Langevin transducer overheats in minutes at power; clamp before raising current (brief low-current electrical bring-up only — see driver README).
  5. Shards — piezoceramic is brittle: an overtightened bolt or an impact means shards; wear safety glasses for any mechanical work.

First driver power-up: bench supply current limit 0.2 A; full sequence in hardware/driver/ and docs/02-safety.md.

🧭 Prior art and patent hygienedocs/01-prior-art.md

Every technical decision must trace back to a "free" source (expired patents, papers). The foundation: US5982297 (Aerospace Corp — the basic recipe for a through-wall piezo pair), US7902943 (Caltech/JPL — Sherrit's feed-through), US9361877 (Univ. Oklahoma — a complete transceiver system); all dead. Key papers: Lawry 2013 (50 W + 12.4 Mbit/s through 63.5 mm of steel), Sherrit/NASA (a 100 W lamp), Yang 2015 (survey).

Not to be copied while still alive: RPI's OFDM allocation and full-duplex scheme and Drexel's conformal transducers (US, to ~2032–2033 — stages 1–4 need none of them), plus the families a 2026-08 search added: US8594572B1 (US Navy — reads on the bare power channel itself; US, to 2032; Welle 1997 is the prior-art answer), EP3723304B1 (ABB — power spectrum below the data spectrum; DE/GB, to 2039; the planned same-carrier load-modulation uplink stays outside it), Ultrapower (in-pipe sensor with convex/concave arrays, or a rod through the wall; US, to 2035 — we use flat pads and no rod). Claim readings, statuses and design-arounds: docs/01-prior-art.md.

Architecture decisions are recorded in docs/decisions/ (ADR).

🔌 Hardware and firmware — hardware/, firmware/
  • hardware/bom/bom-stage1.csv — stage 1 shopping list.
  • hardware/schematics/circuit schematics (generated from code): driver, receiver, Pi pinout, harvester node.
  • hardware/driver/ — TX driver: IR2110 half-bridge + ×ばつIRF540, matching transformer (a Langevin transducer is a capacitive load!). KiCad board comes after the breadboard prototype checks out.
  • hardware/receiver/ — receiver, stage by stage: Schottky bridge → ADC (stage 1) → load (stage 2) → LTC3588 + supercapacitor + ESP32 (stage 4).
  • firmware/node-esp32/ — stage 4 node (stub): deep sleep, sensor readout, BLE advertising, budget of 1–5 mW average.
💻 Software: measurements and the simulator — software/
  • software/sweep-map/sweep_map.py — the stage 1 workhorse: DDS sweep → ADC readings → CSV + frequency-response plot. Has --mock for a run without hardware. On the Pi: raspi-config → enable SPI and I2C; pip install spidev smbus2 matplotlib.
  • software/simulator/channel_sim.py — generator of the expectation plots (pip install numpy matplotlib).
  • software/simulator/material_map.py — the same channel model across wall materials — titanium, aluminum, glass, ceramics, plastics, concrete; the study and verdicts: docs/06-materials.md.
  • data/ — raw logs; CSV/PNG stay out of git, only curated plots go into git inside the experiment's directory.
🗺️ Where to apply this: barriers, channels, niches — [docs/04-hybrid-channels.md](docs/04-hybrid-channels.md), docs/05

There is no universal channel — the platform matches the physics to the barrier: piezo-acoustics (primary: steel/aluminum with contact — watts and kbit/s), EMAT (dirty/hot metal, no contact — data), low-frequency magnetics (vacuum sandwich walls of dewars — bits/s). Honest dead ends: rubber-lined/composite walls, bubbling liquid in the path.

Niche priority: (1) lab vacuum chambers and cryostats — the open-source-hardware audience, no certifications; (2) fermentation tanks — a proving ground within walking distance; (3) sealed battery packs — the flagship case (thermal-runaway detection without a penetration into the pack). The receiver discovery and auto-tuning protocol (a Qi analog): docs/03-discovery-protocol.md.

📁 Directory layout
docs/ theory, prior art, safety, applications, decision log (ADR)
docs/img/ expectation plots (generated by software/simulator/channel_sim.py)
hardware/ BOM, driver (half-bridge), receiver (rectifier/harvester)
firmware/ node firmware (ESP32 — stub until stage 4)
software/ measurement scripts (frequency-response sweep map) and channel simulator
experiments/ experiment protocols — from the template, one directory = one experiment
data/ raw logs (large files stay out of git)

Principles

  1. Reproducibility from zero. Anyone with a soldering iron and ~210ドル can reproduce the result from this repo alone.
  2. Every experiment is a protocol. No "it kind of worked": experiments/TEMPLATE.md is mandatory.
  3. Patent hygiene. We build on the expired layer (docs/01-prior-art.md); decisions are recorded in docs/decisions/.
  4. Measurement first, opinion second. A sweep map before any conclusions about the channel.

Licenses and patents

Code — Apache-2.0, hardware — CERN-OHL-W v2, documentation — CC-BY-4.0; full texts in LICENSES/. Anyone may fork and build on this, commercially included; patent protection comes from the grants and retaliation clauses in the licenses plus a prior-art strategy. The full scheme and the defensive-publication protocol: LICENSES.md; contribution rules: CONTRIBUTING.md.

About

Open platform for ultrasonic power and data transfer through solid metal walls — through steel without a single hole

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

77 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /