Replicating the Princeton PEAR Lab Plant RNG Experiment

Plant RNG

Can plants affect the ordering of random numbers? Can they bend probability to give them an edge in their growth and evolution?

My favorite experiments are the ones that are conceptually simple but have astounding implications. I learned about this one while watching Close Encounters of the 5th Kind, the newest documentary by ufologist Dr. Steven Greer. The film is about a protocol for contacting alien intelligence. As intriguing as that might be, what really sparked my interest was a short clip about 50 minutes in.

Here we cut to Adam Michael Curry, inventor and tech entrepreneur who discusses an unpublished “Plant RNG” study that he participated in at the infamous Princeton Engineering Anomalies Research (PEAR) Lab.

Here’s how he described the study:

“You have a room with no windows and you have a house plant that needs light to grow. You have a single light up on the roof. The growing light can turn in one of four quadrants, and which quadrant that light is showing is controlled by a random number generator.”

“So you put the plant in one corner of the room. The light has an equal chance of shining in all four quadrants, but if you give it enough time, what you find is that the light actually shines far more often on the plant than on the other coordinates.”

Close Encounters of the Fifth Kind – 1091 Pictures
Depiction of Princeton PEAR Lab Plant Experiment

He concludes with:

“It’s as though life itself – even life or consciousness in something as simple as a house plant, bends probability in the physical world in the direction of what it needs, in the direction of its growth and evolution”.

Wow. That is quite the claim. My immediate thought was that perhaps there’s a reason why this study wasn’t published.

My very next thought was that this was something I had to try out for myself! I already had a hardware-based random number generator, so I just needed some grow lights, a way to programmatically turn them on and off, somewhere to log the results, and a plant of course.

TL;DR: The results were puzzling. Go here if you would rather cut to the chase and see what happened. Otherwise, read on to learn about how I set up the experiment and how you can too.

Here’s what I used for the build:

The original experiment used a windowless room with a single rotating light. I decided to go with a more portable design – essentially a cabinet with 4 partitions and a dedicated LED strip for each.

Kasa Smart Plugs
Kasa HS103 Smart Plugs
Sondiko Grow Lights
Sondiko LED Grow Lights – see note about the built-in controllers.

The image below shows the design.

Design for Plant RNG Experiment

The partitions serve to block light from any of the LED strips other than the one directly in front of the plant.

For the experiment, I placed the rig in a room with darkening shades to ensure there was no light. Then I randomly placed a small house plant in one of the partitions so that it was directly in front of one of the LED grow strips.

To run the experiment, I wrote a Python script that repeatedly selects a number (from a hardware RNG device) which would then correspond to one of the four partitions.

Important: For any of these “mind-matter interaction” type experiments, research shows it’s critical to use a device that employs a stochastic process for randomness. Random numbers generated by operating systems are in fact pseudo-random and will not cut it. I used an OneRNG device.

Once a number is chosen, the script supplies power to the LED strip via a smart plug. When the next number is selected, the original LED strip is powered off and another one lit. This repeats indefinitely until the experiment is stopped. Data is logged at every step.

The hypothesis is that the partition that contains the plant will be selected to be lit more often than the other three – bending probability in favor of the plants’ growth.

OneRNG Hardware Number Generator
OneRNG Hardware Number Generator
Plant in position

Did it work? Well, I was surprised after running several experiments and I’m not entirely sure what to make of the results.

If you would like to try this out yourself, here’s the nuts and bolts on exactly what to do:

First cut the plywood (I used sub-flooring I had on hand) into 4 15″ x 22″ panels along with a 26″ square top.

The dimensions aren’t that important, the panels just need to be large enough to block light coming from neighboring partitions. My dimensions were based on the scrap wood I had on hand.

Screw each set of panels together at a 90-degree angle and nail or screw the square panel on top. Once affixed, drill four 1″ holes through the top panel to accommodate the LED wiring for each partition.

The next step is to mount each LED strip in the corner of each partition and then route the wiring out through the holes on top.

Important: I chose the Sondiko grow lights because they’re inexpensive. The downside is that you’ll need to remove the built-in controllers on each and then splice the wiring back together (in the name of science of course). The controllers need to be removed because they default to “off” even when power is applied, defeating the purpose of the smart plugs.

Next step is to connect the LED strips to the smart plugs and a power strip mounted on top of the unit. See the image.

Smart plugs and power strips mounted on top of cabinet
Removed Sondiko controller

Next, configure the smart plugs so that they’re connected to your wi-fi. Just follow the steps using the Kasa mobile app. As part of the setup process, you’ll need to give each plug a name. I used P1, P2, P3, and P4 and then label each partition on the cabinet to match the corresponding plug.

Your rig should resemble the below when completed. Here the LED for one partition is lit, showing where the plant should ideally be located.

You’ll need somewhere to host both the OneRNG device and the python script that controls the smart plugs. I used a Raspberry Pi. See this post on how to set up a Pi as a random number server – you’ll need this for the randLight script to work as is.

The Kasa smart plugs are controlled using the Kasa python library. Install on your Pi following the documentation on GitHub. Once done, you should be able to remotely enable/disable each plug from the command line on your Pi. Here’s an example of how to turn plug #1 on and off:

$kasa --plug --alias P1 on
$kasa --plug --alias P1 off

The next step is to install and run the randLight.py and randControl.py python scripts.

The randLight script is responsible for getting a random number from the OneRNG device. It lights the appropriate LED strip by turning on the corresponding Kasa plug and then writes the status to a log file.

The randControl script acts as the experiment control. It selects a random number in the same way and then just writes the time and number to another log file (no interaction with the lights or smart plugs.)

There are a number of variables in the script that adjust settings such as the lighting times and file output file destination. You can find the settings documented on Github here and here.

So what did the experiment reveal? Read on to find out.

Experiment Results

In a perfect world, there should be a 25% chance of each of the 4 LED strips being selected at any particular time. The idea is to see if there’s a variance from the expected 25% based on where a plant is located.

The proof would be that the partition with the plant should light far more often than the others.

Did I see this happen?

Probably not. The screenshot below shows the data for a 48-hour experiment where my plant was in partition “2”. During this time the lights were randomly selected 54,522 times. As you can see, partition “3” was selected most frequently at 25.3%. In this case, random selection was NOT favoring the plant.

Experiment Subject – Plant “D”
RNG Plant Experiment #9 – 50 Hours

But what if I scaled back the timeframe and just looked at just the first four hours?

Well, with only 4,337 random numbers selected, the partition with the plant (#2) does appear to be favored at 26.6%.

This would appear to support the experiment. But unfortunately, with only 4300 data points it wouldn’t be surprising to see a skew in any direction, so I wouldn’t claim this as a hit.

It was puzzling that after more than a dozen experiments I didn’t see a consistent trend to support Mr. Curry’s claim that the “light actually shines far more often on the plant than on the other coordinates.”

To be fair though, I’m not sure I had enough detail about the original experiment to give it a fair shot. There are some things I’d like to know – like the duration of the original study – i.e. how many data points were collected in a single run. Also, the technique used for the random selection: Was a single random bit used for the light selection (how I did it) or was there an averaging of multiple random numbers.

So I’m not giving up yet. There are additional levers that can be pulled and dials turned to try to make this experiment a success. Here are a few that I can think of:

  • Does the type of plant matter? (Are some plants better RNG “influencers”?)
  • Does the age of the plant matter? (Does nature favor burgoening life?)
  • What if there are multiple plants? (Is there a “coherence” effect?)
  • What if I change the light duration?
  • Does changing the criteria for the random number selection make a difference? (Perhaps instead of simply selecting a number from 1-4, I could light the preferred partition based on an observed “ordering” effect. i.e. the closer the random numbers skew toward 0, the more often the preferred partition is lit.)

If I have any success I’ll be sure to update this post. In the meanwhile, if you try out this experiment drop me an email and let me know how it went.

Building Your Own Randonaut Device

DIY Randonauting Device

Randonauting is an activity where random number generation is used as a tool for discovering and exploring nearby locations. The way it works is that random numbers are used to calculate the latitude and longitude coordinates of somewhere nearby and then you visit the real-world location.

There’s a metaphysical mind-matter aspect to this where your intentions are supposed to influence the randomly generated destination. The NY Times said it best – “Think: the Law of Attraction meets geocaching.”

Why would this work? Well, some believe that by using random numbers generated by quantum processes, e.g. a HWRNG device, it’s possible to mentally influence the chosen destinations. The result is the manifestation of some truly surprising, enlightening or even disturbing outcomes. Case in point, the alarming Tik Tok video where randonauting teens discover a suitcase with dead body parts.

Dujour Randonaut Device

This mind-over-matter premise might not be as far fetched as it sounds. There’s some surprising research that seems to demonstrate that it’s possible to mentally influence random numbers generated by quantum processes.

What happens if you focus on a specific intention precisely when the random coordinates are generated? That is what randonauting is all about.

There’s a few differences between my device and the other apps. First – I’ve added a feature: Time. In addition to calculating random geo coordinates I also calculate a random time for the trip. The idea being that it might be more meaningful to identify a point in both time AND space. Journey to a specific location at a specific time to maximize the experience!

The second difference is in the way that I determine the location. I use just two random numbers to calculate the geo coordinates. Other implementations include the concept of “voids” and attractors” which use statistical algorithms to determine the locations. Attractors are essentially a clustering of values that point to a geo coordinate while a void is the opposite (lack of points). In my opinion these techniques just introduce unneeded complexity.

Voids and Attractors
Source: https://itsandrom.medium.com/randonauting-for-dummies-how-to-hack-reality-with-your-phone-using-quantum-randomness-5ce82f66c10e

This is one of my more involved builds, so you’ll need to have some hardware and python expertise if you want to try this out. I call the device “Dujour” (in homage to The Matrix). To follow along you will need the following:

You might be wondering why use a hardware based RNG when a computer OS can natively create random numbers. Great question. Hardware random number generators use quantum physical processes to create truly random numbers while operating systems use an algorithm. Under the covers the OS based numbers are really pseudo-random. They’re random enough for most purposes, but numbers generated using a quantum process are truly unpredictable (at least in theory). Plus, if you buy into the underlying theory of Randonauting which involves mind-matter interaction, there’s that research seems to show that mental intention can only influence random numbers created by quantum processes.

OneRNG HWRNG
TrueRNG HWRNG

Now you could build this device with a single Raspberry Pi by connecting the hardware RNG to a local USB port, but I prefer a separate device because I do a lot of experimenting with RNGs and it’s useful to have a remote RNG server that several devices can share.

The diagram below details the high-level Randonauting process flow. The primary script is called “rabbit.py” and is run on the first Pi, which I’ll call “Dujour1”. When you run it will make a REST call to the 2nd device “Dujour2” (the hardware RNG host), retrieve a few random float values, and then use those values to calculate the nearby location to explore along with the time to visit. The script then assembles a Google Maps URL and texts it to a phone via the Twilio service.

The video clip below shows the device in action.

Randonauts Device in Action

On the Dujour1 Pi, you’ll need to install and configure linux and connect your display. Follow these steps to connect a Matrix Orbital VK204-25. The image to the right shows the wiring for my display.

For my setup I housed both the Pi and the display in a bell jar and I connected a string of decorative LED lights to the 5V and ground pins on the Pi GPIO header. The jar was just a convenient way to hold it all together plus along with the LEDs I liked the aesthetic. 🙂

Dujour1 – Display Module Wiring

The rabbit.py script requires Python and the following libraries:

  • math
  • numpy
  • subprocess
  • sys
  • time
  • json
  • urllib2

If you get a dependency error when running the script you will need to install whatever module is missing.

There are several variables that need to be set prior to running. They’re all located in the script in the “User Defined Variables” section:

loghandle: path to a text file that logs all runs of the script

window_secs: Used to calculate the maximum seconds in the future to visit the location

meters_out: furthest distance possible for the geo coordinates in meters from your current location

latitude1, longitude1 = your current location (home base). This is used as the starting point

lcd_addr = hex address for LCD display if using I2C communications

HWRNG = IP address and port of remote HWRNG server. XXX.XXX.XXX.XXX:YYYY

There are a few dependencies on external scripts: sendSMS.py is used to send the text message with the map coordinates. orbitalWrite.py is used to drive the display. Place both scripts in the same directory as rabbit.py on Dujour1. Note: my script was developed to work with a specific Matrix Orbital display (VK204-25). If you decide to use a different one, you’ll need to change the code to work with yours. I’ve documented in the script where the interaction with the display takes place.

The sendSMS.py script requires two OS environment variables to be able to authenticate with the Twilio service: ‘TWILIO_ACCOUNT_SID’ and ‘TWILIO_AUTH_TOKEN’. Follow these steps to configure the variables. You will also need to install the Twilio Python helper library.

On the “Dujour2” Pi you’ll need to install and configure Linux as well. This is where you will be connecting your hardware RNG. I used a OneRNG USB device, you can find the setup documentation here. (You can see my server in the image to the right.) Once configured, install and run the rngrestserver.py script to start serving up random numbers to Dujour1. Check here for detail on how the REST server script works.

Raspberry Pi Hardware RNG Server using OneRNG

If you’ve followed along up until this point, you should have everything you need to experiment with Randonauting using your own device. Just run ./rabbit.py from a terminal and the result should be a text to your mobile phone with a map link (like the image to the right).

I’ve had some weird synchronicities when trying out my device. If nothing else, a random journey can open your eyes to nearby wonders that you’ve never noticed before.

In the future I might consider developing a custom Amazon Alexa skill. It would give me the ability to run my Randonauting server from my phone – wherever I might be.

Hey – drop me an email if you decide to build this. Let me know about your experience and any thoughts to improve the project!

Exploring Altered States of Consciousness with the Brain Machine

I’ll take “Devices that I’ve built that I’m too afraid to use” for 200 please, Alex.

This is the Brain Machine. It’s a device created by inventor Mitch Altman that can induce altered states of consciousness through pulsing LEDs and binaural tones synchronized with different brain wave frequencies.

This was made available as a kit by Adafruit starting back in 2013 (now discontinued), but you can still build by scratch following this guide by Make magazine.

Is it an enigmatic device? Well, I’ve always been interested in consciousness studies and research on how meditation influences psi effects. This seemed like a great fit for future experimentation.

The device is reminiscent of earlier Ganzfeld telepathy experiments where participants were placed in a state of mild sensory deprivation by having a red light shown on them while listening to white noise.

The Brain Machine also involves red light and audio, but the difference is that LEDs flash and the audio tones change based on a set sequence that is meant to bring you to different mental states through brainwave entrainment.

What is it like wearing the device? An experience I can only describe as intense. I was truly surprised how strong the effect was.

My primary concern before wearing and while operating was the possibility of inducing a seizure. For about 3% of people with epilepsy, exposure to flashing lights between 5-30 Hz (which this device does), can trigger one. I do not have epilepsy, but my mother did, so I’m very aware of the danger of these types of triggers.

I started to hallucinate almost immediately after wearing it. It’s amazing how the mind can spontaneously create images and patterns based on a simple repeating stimulus. The two LEDs are just one color (red), but depending on the tone and flashing frequency I saw a spectrum of colors including yellow, blue, green, and purple.

I also saw intricate geometric patterns. Cross hatched and intersecting black lines along with repeating geometric shapes. Every time the frequency changed, so did the colors and patterns that I experienced.

The images on the right are the closest I could find to what I experienced. For the first one imagine a pairing of colors instead of black and white. For the second, imagine this type of pattern in the center of your vision field surrounded by colors on the periphery.

Particularly unnerving was when I turned off the device and the patterns and shapes continued to linger for a few moments.

Brain Machine
Brain Machine Circuit
The inventor, Mitch Altman explaining the Brain Machine
Ganzfeld subject. Image from Wikipedia
Spirals
Geometric lines

Ultimately, I think I would think twice about using it on a regular basis. However, hacking the code could be useful for future projects (perhaps my own version of a Ganzfeld experiment.)

Drop me a line if you decide to build one of these. It would be great to know if your experiences were the same as mine!