Skip to content

Feature: ESP32 TRNG network node backend #2

@iamthebrainman

Description

@iamthebrainman

Summary

Add support for one or more ESP32‑based hardware RNG nodes that stream entropy samples to AEON over Wi‑Fi, so experiments can use true‑random physical sources instead of only /dev/urandom.

Motivation

/dev/urandom and similar OS PRNGs differ across platforms and are not ideal when testing correlations between entropy sources and operator/field conditions.

ESP32 includes a hardware RNG that derives entropy from internal noise sources and is exposed via esp_random() / HAL APIs.

Wireless nodes let us place REGs in different rooms/locations and compare spatiotemporal PSD structure across multiple independent devices.

Proposed architecture

  • Entropy backend interface in AEON:
  • Abstract class or protocol like EntropySource with methods: open(), read(n_bytes), close().
  • Existing /dev/urandom implementation becomes OsEntropySource.
  • New Esp32NodeSource will implement the same interface but read from a network socket instead of a local file.

ESP32 firmware (minimal design)

Uses hardware RNG (esp_random() or HAL RNG API) to generate 32‑bit words at a configurable rate.

Pack samples into fixed‑size UDP or TCP frames with the following:

  • Node ID

  • Sequence number / timestamp

  • Payload of raw random words

  • Sends to a configurable host IP/port.

​Host‑side receiver

Simple async listener in AEON that:

  1. Accepts packets from one or more nodes
  2. De‑multiplexes by node ID
  3. Feeds concatenated samples into the normal analysis pipeline (walks, PSD, spectrograms).

User‑facing behavior

Config file or CLI switch to select backend, e.g.:

  • source = "os" (default)
  • source = "esp32" with nodes = [ "192.168.1.50:5000", "192.168.1.51:5000" ]
  • UI shows which backend is active and per‑node status (online/offline, bytes/sec).

All existing analysis/visualization stays the same; only the source of bits changes.

Future extensions

Support for USB TRNG devices and commercial REGs via the same EntropySource interface.
On‑device pre‑processing (e.g., whitening) options to compare “raw vs processed” entropy.

Planned ESP32 / sensor features

  • ESP32 TRNG Wi‑Fi nodes streaming raw 32‑bit entropy samples to AEON over LAN, using a generic EntropySource backend interface. docs.espressif

  • Configurable support for multiple nodes (IP/port per node) with per‑node status and multi‑channel analysis in AEON. [instructables](https://www.instructables.com/ESP32-Control-Via-UDP-Datagrams/)

  • Touch/event mode: use ESP32 capacitive touch pins as event buttons (e.g., “spoke”, “subjective hit”, “marker”) logged alongside entropy streams. randomnerdtutorials

  • Crude GSR mode: use touch pins (or an external GSR sensor) as a simple galvanic skin response channel to track arousal/skin conductance over time. github

  • Mic / active speaker mode: attach an I2S MEMS microphone to each node; compute short‑window RMS to detect which participant is speaking in group conversations and log speaker labels. github

  • Microvolt amplifier / EEG node: feed a low‑noise microvolt amplifier board into an ESP32 ADC to get 1–2 channels of low‑budget EEG from a cap‑mounted electrode setup, then analyze band power vs. entropy patterns. inmr

  • On‑node sonification: optional speaker output where nodes convert current entropy or coupling metrics into simple audio tones for real‑time “listening” to synchrony. [dronebotworkshop](https://dronebotworkshop.com/esp32-i2s/)

  • Multi‑sensor overlays: AEON compositor that stacks spectrograms from multiple nodes/sensors, with colorized regions where signals overlap and grayscale elsewhere (saturation/“burn”‑style blend). [hydrogenaudio](https://hydrogenaudio.org/index.php/topic,121917.0.html)

Help wanted

Feedback on packet format and transport (UDP vs TCP vs ESP‑NOW).
Suggestions for specific hardware modules or REGs people use in parapsychology / consciousness studies.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions