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?
🔌 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
- Download Arduino IDE from:
https://www.arduino.cc/en/software - Open Arduino IDE → Go to
File > Preferences - In the field "Additional Board Manager URLs", paste this:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Go to
Tools > Board > Board Manager- Search for "ESP32"
- Install the package by Espressif Systems (not Arduino)
- Once installed, select your board:
Tools > Board > ESP32 Arduino > ESP32 Dev Module - Plug in the ESP32 via Micro USB.
Then select the correct COM port viaTools > 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)
- Download EarthTalk_Firmware_V3.zip
- Unzip the file — it will create a folder named
EarthTalk_Firmware_V3/ - Inside, you should see:
EarthTalk_Firmware_V3/ ├── EarthTalk_Firmware_V3.ino └── data/ └── dashboard.html - Open the
.inofile in the Arduino IDE. - 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 - 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
- Open
EarthTalk_Firmware_V3.inoin the Arduino IDE. - 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:
- Make sure the folder named
datais inside the same directory as your.inofile. - Confirm it contains
dashboard.html. - In Arduino IDE, go to:
Tools → ESP32 Sketch Data Upload - 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
.inoand 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 connectedmessage - 📈 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.htmlwas 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 failedmessage - 🔵 Blue LED turns ON as an error signal
- Console shows
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
🍄 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
- Prepare the solution:
Mix 100ml of water with ¼ teaspoon of Himalayan salt. Stir well and let sit for 10 minutes to stabilize. - 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. - 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. - 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'sExport CSVbutton or copy the log manually. - Electrodes remain in place:
Electrodes should already be inserted before starting the misting protocol. No need to adjust or touch them during the experiment. - 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.
📊 7. Results: Electrical Response to NaCl Mist
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
∆23traces 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.
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