Nacl.E1.1.0-V3 – Phase 1: Electrical Response to Salt (NaCl)

Open Protocol · EarthTalk Lab

Protocol Version 3.0
Protocol Type: Experimental Protocol
Version: E1.1.0-V3
Phase: Phase 1
Focus: Electrical Response to Salt (NaCl) Application
Status: Open Protocol — Available for Replication

Table of Contents

🧭 1. Overview

🎯 Experiment Goal

This experiment—Nacl.E1.1.0-V3—is the first formal step in a broader mission:

To prove that fungi respond to stimuli in measurable electrical ways,

and to do so using tools that anyone can build, anywhere.

We already know this is possible. Dr. Andrew Adamatzky and others have shown that fungal networks generate distinct electrical signals in response to external inputs. But their work required expensive lab equipment, tightly controlled environments, and limited accessibility.

EarthTalk was born to change that.

This experiment is about creating a repeatable, open-source protocol for capturing fungal signal responses with low-cost, off-the-shelf hardware. If successful, it will show that meaningful data—signals, patterns, maybe even language—can emerge not just in labs, but in kitchens, garages, greenhouses, and classrooms.

And that changes everything.

Because once the barrier to entry is removed, curiosity can scale.

Anyone—scientists, educators, kids, hackers, growers—can participate in decoding fungal intelligence. And together, we can accelerate understanding of a biological network that predates trees and outlives empires.

This isn't a toy.

It's a gateway to a new interface—between human and mycelium, between intent and organic computation.

And it starts with something simple.


🧂 Why Salt?

Salt—NaCl—is our first stimulus, and its practical and symbolic.

Biologically, salt alters electrical gradients and stresses cellular structures. Based on my experience, when introduced to fungal networks, it creates a clear, measurable disruption—one the organism often responds to in electrical terms. This makes it an ideal first test: easy to control, easy to repeat, and likely to produce a visible reaction if the system is working.

Practically, it's perfect:

  • It's cheap
  • It's available anywhere
  • It creates a response without destroying the network
  • And it mirrors the kind of interaction any future replicator can test for themselves

But more than that, salt is the knock on the door.

It's how we begin the conversation—with a clear, grounded question:

Are you there?

➡️ Next: Hardware Setup – Build the Nacl.E1.1.0-V3 Rig

🔌 2. Hardware Setup

This section walks you through the physical build of the rig used in Nacl.E1.1.0-V3.

It includes components, wiring layout, and important notes to avoid common mistakes.


📄 2.1. Component List (BOM)

These parts were used to build the working rig. All are easily available online.

Component Notes Link (example)
ESP32 Dev Board (DOIT ESP32-WROOM-32) Must have USB and 3.3V support Amazon
Breadboards (x2) Use side-by-side with tongue-and-groove connection Link
ADS1115 (Pre-soldered) 16-bit ADC for signal capture Link
MicroSD Card Module Optional – for logging Link
(Optional) SanDisk MicroSD Card (FAT32, 32GB) Class 10 or better Link
(Optional) DHT22 Sensor For temperature + humidity tracking Link
Jumper Wires (male–male) Multiple colors for clarity Link
Micro USB Cable (Data+Charge) To power ESP32. Must support data transfer
(Optional) USB-C to USB-A Adapter For laptops with USB-C only
Colonized Mushroom Block (*Pleurotus ostreatus*) Sterilized hardwood-based substrate, nutrient-rich, inoculated with oyster mushroom mycelium
Acupuncture Needle Stainless Steel Premium Sterile Needles Link

🧠 Note on Substrate: This experiment used a sterilized hardwood block pre-colonized with Pleurotus ostreatus (oyster mushroom).

The block size does not matter (we will only cut 2 small sections)

If you use a different substrate or species, that's acceptable, but you must document it clearly in your experiment log. This helps compare signal consistency across replications and future protocols.


📄 2.2. Breadboard Assembly

  • Use two breadboards, connected side-by-side using their built-in slits.
  • Keep power rails intact unless clearance issues occur.
  • Mount the ESP32 across the inner edges, with the USB port facing outward for access.
  • Label power rails with color-coded wires early (3.3V = red, GND = black).

📄 2.3. ESP32 Placement & Core Wiring

ESP32 Pin Use Breadboard Position (Example)
3V3 Power source for ADS/DHT → red rail
GND Ground reference → black rail
GPIO21 SDA (ADS1115) → ADS SDA
GPIO22 SCL (ADS1115) → ADS SCL
GPIO4 DHT22 data → DHT OUT
GPIO5 SD card CS (if used) → SD CS
GPIO2 LED indicator wired onboard
VIN SD module VCC → 5V line

⚠️ GPIO5 (CS) is hardcoded in firmware. Don't change without editing the sketch.


📄 2.4. Sensor Wiring

🔌 ADS1115 (Differential + Single-Ended)

ADS1115 Pin Connects To Purpose
VDD ESP32 3V3 Power
GND ESP32 GND Ground
SDA GPIO21 I²C data
SCL GPIO22 I²C clock
A0–A3 Electrodes Signal input
ADDR GND I²C Address = 0x48
  • ∆01 = A0 vs A1 (differential)
  • ∆23 = A2 vs A3 (differential)
  • All 4 channels also available individually in log file

🌡 DHT22 (Optional)

DHT Pin Connects To
VCC ESP32 3V3
GND ESP32 GND
OUT GPIO4

📄 2.5. SD Card Module (Optional)

If logging is enabled, wire the SD card module as follows:

SD Module Pin ESP32 Pin Notes
GND GND Common ground
VCC VIN 5V input
MISO GPIO19 SPI MISO
MOSI GPIO23 SPI MOSI
SCK GPIO18 SPI Clock
CS GPIO5 Chip Select

⚠️ Be sure your SD card is formatted as FAT32 before use.


🧪 Final Notes

  • All sensors share the same GND and should pull from ESP32's 3V3 (not VIN).
  • Keep wire lengths short where possible to avoid noise.
  • Label and test each wire before powering on.
  • SD card, DHT, and ADS1115 all run together cleanly—no conflicts.

💻 3. Software Setup

This section guides you through preparing your computer, installing firmware, uploading the dashboard UI, and verifying that your ESP32 is ready to run Nacl.E1.1.0-V3.


📄 3.1. Install Arduino IDE + ESP32 Board Support

  1. Download Arduino IDE from:
    https://www.arduino.cc/en/software
  2. Open Arduino IDE → Go to File > Preferences
  3. In the field "Additional Board Manager URLs", paste this:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  4. Go to Tools > Board > Board Manager
    • Search for "ESP32"
    • Install the package by Espressif Systems (not Arduino)
  5. Once installed, select your board:
    Tools > Board > ESP32 Arduino > ESP32 Dev Module
  6. Plug in the ESP32 via Micro USB.
    Then select the correct COM port via Tools > Port

🧠 If no port appears or it says "ESP32 Dev Module (Not Connected)", install the CP210x USB to UART driver:

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers


📄 3.2. Install Required Libraries

In the Arduino IDE, go to:

Sketch > Include Library > Manage Libraries...

Install the following:

  • Adafruit ADS1X15
  • DHT sensor library (by Adafruit)
  • SD
  • SPIFFS (built-in with ESP32)
  • ESPAsyncWebServer
  • AsyncTCP
  • WiFiClientSecure

If any of these fail to install, you can download them as ZIP files from GitHub and add them via:

Sketch > Include Library > Add .ZIP Library…


3.3 Install EarthTalk Firmware

You can install the firmware in two ways — choose the method that fits your experience level:


🧑‍🔬 Option 1: Manual ZIP Download (Beginner-Friendly)

  1. Download EarthTalk_Firmware_V3.zip
  2. Unzip the file — it will create a folder named EarthTalk_Firmware_V3/
  3. Inside, you should see:
    EarthTalk_Firmware_V3/
    ├── EarthTalk_Firmware_V3.ino
    └── data/
        └── dashboard.html
  4. Open the .ino file in the Arduino IDE.
  5. In the Arduino file, scroll to the Wi-Fi Configuration section and replace the parameters below with your own values:
    const char* ssid = "YOUR_SSID";
    const char* password = "YOUR_PASSWORD";
    
    IPAddress local_IP(192, 168, 1, 111);
    IPAddress gateway(192, 168, 1, 1);
    IPAddress subnet(255, 255, 255, 0);
    IPAddress DNS(8, 8, 8, 8); // Google DNS
  6. Once you've updated your Wi-Fi and IP settings, click the Upload button in the Arduino IDE to flash the firmware onto your ESP32.

🚀 After upload completes:

  • Your ESP32 will automatically reboot.
  • Open the Serial Monitor (baud rate 115200) to verify a successful boot.

👨‍💻 Option 2: Git Clone (Advanced)

If you're comfortable with Git:

git clone https://github.com/earthtalk-internal/earthtalk-protocol.git
cd earthtalk-protocol/firmware
  1. Open EarthTalk_Firmware_V3.ino in the Arduino IDE.
  2. Modify the same Wi-Fi and IP parameters listed above.

⚠️ Ensure the folder name exactly matches the .ino filename — this is required by the Arduino IDE.

3. Once you've updated your Wi-Fi and IP settings, click the Upload button in the Arduino IDE to flash the firmware onto your ESP32.

🛠 Upload SPIFFS Data Folder (Dashboard)

After uploading the .ino sketch, you also need to upload the data/ folder to the ESP32 using the SPIFFS Upload Tool:

  1. Make sure the folder named data is inside the same directory as your .ino file.
  2. Confirm it contains dashboard.html.
  3. In Arduino IDE, go to:
    Tools → ESP32 Sketch Data Upload
  4. Wait for confirmation that SPIFFS has been uploaded.

📌 If you don't see this option, install the ESP32 filesystem uploader tool.


✅ Successful Boot Indicators

Once both the firmware and dashboard are uploaded:

  • Open the Serial Monitor (baud rate: 115200)
  • Look for the following checks:
    • ✅ Wi-Fi connection established
    • ✅ SD card mounted
    • ✅ SPIFFS mounted
    • ✅ DHT sensor initialized
    • ✅ WebSocket server started

💡 If all systems pass, the BLUE LED stays OFF.

⚠️ If you're not using the SD card or haven't connected the DHT sensor, those will show ❌ in the log — this is normal and won't affect core functionality. (BLUE LED will stay ON!)


🌐 Access the Dashboard

If the ESP32 booted successfully:

  • Open your browser and go to:
    http://192.168.100.112/
    (or your custom IP if you changed it)
  • You should see:
    • Live signal charting
    • Raw data stream
    • Status indicators

If not, double-check:

  • You uploaded both .ino and SPIFFS
  • IP matches your network
  • Console logs show no errors

🚀 4. Dashboard and Logging

🌐 Live Dashboard

Once your ESP32 is powered and successfully booted:

  • Open a browser and visit http://192.168.1.111/ (or the static IP you configured).
  • No HTTPS is required — local HTTP access is sufficient.
  • You'll see:
    • WebSocket connected message
    • 📈 A live chart plotting ∆01 and ∆23 values every second
    • 📜 Raw log output updating in real time

Notes:

  • WebSocket ensures real-time data transfer from ESP32 to browser.
  • If nothing loads, check that dashboard.html was correctly uploaded to SPIFFS.

💾 Data Logging + Cloud Upload

Your firmware logs sensor readings in two parallel ways:

Local SD Logging (Optional)

  • Files are saved to the SD card as: /YYYYMMDD_<DEVICE_ID>.csv
  • Example: 20250728_ESP32ABC123.csv
  • Format includes timestamps and all sensor values

Cloud Upload (Optional)

  • Upload target is defined in the uploadToCloud() function
  • Requires a valid HTTP/HTTPS endpoint (e.g., your own server or API)
  • If upload fails:
    • Console shows Upload failed message
    • 🔵 Blue LED turns ON as an error signal

Filename Logic (getFilename())

  • Based on current date and chip ID
  • Ensures unique daily file per device

🧰 Troubleshooting

Problem Solution
SPIFFS not mounting Use the ESP32 Sketch Data Upload tool in Arduino IDE
Dashboard doesn't load Ensure dashboard.html is uploaded via SPIFFS
SD write fails Confirm SD_CS = 5 and format SD card to FAT32
DHT returns NaN Double-check wiring and that sensor is connected to GPIO 4
WebSocket not connecting Verify IP matches and no firewall is blocking port 80
Blue LED turns ON Indicates a boot or upload error — check serial logs

🧫 5. Preparing the Mycelium Sample

We used pre-colonized grey/blue oyster mushroom (Pleurotus ostreatus) blocks grown on hardwood sawdust substrate.

According to the supplier, the substrate includes a high proportion of local hardwood species, along with small amounts of gypsum and wheat bran to support colonization.

You may be using a different substrate and this is ok. I expect the results to be the same (in the sense that we might see a different reaction, but still see the reaction nonetheless).


🧱 Sample Extraction

From a larger fruiting block, we cut two sub-blocks with approximate dimensions:

  • 5 cm (height) × 7 cm (width) × 5 cm (depth)

These blocks preserved the dense mycelial mat at the top and included a portion of the underlying substrate beneath it.


🔌 Electrode Insertion

We inserted two pairs of acupuncture needle electrodes into each block:

▸ Top Pair (`∆01`)

  • Inserted near the top, ~1–2 cm apart
  • Threaded shallowly into the dense surface mycelium like a sewing needle
  • Intended to stay embedded within the most biologically active fungal tissue

▸ Bottom Pair (`∆23`)

  • Inserted fully into the lower block region
  • Still spaced ~1–2 cm apart
  • Penetrates into the less-dense sawdust substrate—likely less colonized, but may still carry fungal signals

⚠️ Note: We currently do not verify internal colonization levels, so ∆23 signals may vary depending on unseen fungal growth patterns inside the substrate.


🔁 Next Step

➡️ Next: 6. Misting & Signal Measurement Protocol

🍄 6. Misting & Signal Measurement Protocol

Materials

  • Filtered (preferably deionized) water
  • Himalayan kitchen salt (or equivalent)
  • Syringe (no needle)
  • Ziploc bag
  • Pre-colonized mycelium block with electrodes inserted
  • EarthTalk firmware + live dashboard

Step-by-Step

  1. Prepare the solution:
    Mix 100ml of water with ¼ teaspoon of Himalayan salt. Stir well and let sit for 10 minutes to stabilize.
  2. Target area for misting:
    Use a syringe to apply the solution to the side of the mycelium block, where the substrate is visible.
    Do not apply to the top white mesh layer — it acts like a waterproof membrane and absorbs very little.
  3. Maintain moisture environment:
    Place the block in a Ziploc bag with only a small cutout where the solution is applied. This minimizes evaporation during the 20-minute observation window. if possible make the window like a flap so it can be "closed" during the rest time.
  4. Logging window:
    Before misting, log 10 minutes of baseline signal.
    After misting, log 10 minutes of post-stimulus signal.
    You can export this log using the dashboard's Export CSV button or copy the log manually.
  5. Electrodes remain in place:
    Electrodes should already be inserted before starting the misting protocol. No need to adjust or touch them during the experiment.
  6. Repeat protocol:
    Perform the experiment 5 times, using the same block if possible.
    Wait at least 4 hours between mistings to avoid potential habituation effects.

🧠 Adamatzky observed potential habituation in fungal responses when stimuli were applied too frequently. Waiting 4+ hours between mistings is recommended for clear signal separation.

Notes

  • The syringe used was highly sensitive, so the exact misting volume may vary slightly each time. Approximate dosing is acceptable.
  • In practice, responses appear within a few seconds and remain detectable for 3–10 minutes.
  • Signal shifts are typically visible on the live chart, confirming successful stimulus-response behavior.

➡️ Next: 7. Results: Electrical Response to NaCl Mist

📊 7. Results: Electrical Response to NaCl Mist

Cleaned and Trimmed Electrical Response to NaCl Mist (0-700s) showing voltage changes over time for six different experimental measurements
Electrical response of a single mycelium block to three consecutive NaCl misting events

This figure shows the electrical response of a single mycelium block to three consecutive NaCl misting events, spaced roughly 4 hours apart. Each mist is denoted by a red dashed line (T=0). Voltage was recorded from two differential electrode pairs (∆01 and ∆23), and plotted for all three mist events.

Observations:

  • Consistent Response: Across all three trials, the ∆01 pair inserted in the mycelium-dense top layer consistently showed a stronger voltage deviation than the ∆23 pair in the less colonized substrate layer.
  • Rapid Onset: In each case, the electrical signal began shifting within seconds of mist application, followed by a sustained deviation lasting 3–10 minutes.
  • Propagation Gradient: Subtle shifts in the ∆23 traces suggest possible weaker or delayed signal propagation to lower/substrate-level regions. With better spatial resolution or advanced signal analysis, this effect could become more visible.

⚠️ Note: The syringe used was highly sensitive, leading to variation in mist volume between trials.

🧠 Related Insight: Consistent with prior observations (e.g., Adamatzky), habituation may occur if misting is repeated too frequently. Allow at least 4 hours between stimuli to maintain strong responses.

Detailed view of cleaned and trimmed electrical response to NaCl Mist showing voltage measurements across multiple mist events
Detailed view of electrical response patterns across multiple mist events

8. Troubleshooting

8.1 Common Issues

Issue Possible Causes Solutions
Unstable baseline readings Poor electrode contact, power supply issues, environmental drift Recheck electrode connections, verify power stability, allow stabilization time
Missing data gaps Network issues, ESP32 failures, database problems Check network connectivity, restart ESP32 devices, verify database status
No response detected Insufficient NaCl concentration, poor application, sample condition Verify NaCl concentration, check application method, assess sample viability
Unexpected signal artifacts Electrical interference, sensor malfunction, environmental changes Check for sources of interference, test sensors, document environmental conditions

9. Safety Considerations

9.1 General Safety

  • Wear appropriate personal protective equipment (gloves, eye protection) when handling chemicals
  • Work in well-ventilated areas
  • Follow standard laboratory safety protocols
  • Have safety data sheets (SDS) available for all chemicals used

9.2 Electrical Safety

  • Ensure all electrical equipment is properly grounded
  • Use low-voltage systems to minimize risk
  • Inspect wiring and connections before operation
  • Follow manufacturer guidelines for ESP32 and sensor operation

9.3 Biological Safety

  • Handle fungal samples according to biosafety level requirements
  • Dispose of samples and materials appropriately
  • Clean work surfaces and equipment after use

10. References & Resources

  • EarthTalk Lab internal protocols and documentation
  • ESP32 and ADS1115 technical documentation
  • InfluxDB time-series database documentation
  • Related experiment protocols and analysis scripts

11. Version History

Version Date Changes
E1.1.0-V3 Current Current version — Phase 1 protocol

Protocol versioning follows format: Experiment.Sequence-Version