In 1873, following correspondence with Charles Darwin, electrical signals in plants were discovered by Burdon-Sanderson during a survey of Dionaea muscipula(Venus Flytrap). Based on this work, Jagadish Chandra Bose, at the beginning of the twentieth century, showed that plants generated electrical impulses in response to environmental stimuli similar to those of nerves in animals.
In plants, there are different types of electrical signals involving changes in membrane potentials that could encode electrical information related to physiological states when plants are stimulated by different environmental conditions. These functions may include growth, gas exchange, respiration, variation of photosynthesis and transpiration, and modification of gene expression(e.g. protease inhibitor).Through automatic classification one can identify environmental cues that can act as plant-stressors and utilizing machine-learning techniques that can further be applied for biotic stress identification in precision plant growth and protection.
In a healthy Mimosa plant, you can observe two "rapid movement" responses to touch. With a light touch brushed along the leaves (called pinnules), the leaves fold together at points (pulvinules) along the rib (rachis). With a strong touch, the leaves will fold and the branch will drop along the point (pulvinus) where the main branch (petiole) joins the stem. That further initiates an electrical impulse (Action Potential) propagation along the rachis that results in the plant movement.
Preparing the EndNode for sensing Floral Stimulus.
A Proof of Concept device has been tailored utilizing Low Power BLE capabilities of ESP32, AD8232 instrumentation Op-Amp, BH1750 light intensity sensor and waterproof DS18B20 digital temperature sensor for measuring the apparent plant and soil characteristic. Each end-node can be powered over battery, and proves to be a cost-effective model while scaling things up. Imagine the possibilities of forecasting plant diseases and vector, Phyto-actuating mechanisms like irrigation-valves and artificial light-control, all performed solely by plant/crop itself.
A, BH1750 lux sensor is connected over I2C (D21 & D22) and programmed for continuous measurement, while DS18B20 is connected to (D15) pulled-up with 2.7K in reference to Vsup(3.3V)
Output from AD8232 is fed to VP (A0) of ESP32, while the input is connected to thin wire electrodes with ground reference electrode inserted to the root region.
Processingthe SIGS__|\__/\__/|__
Each of the plant electrical response was taken at a difference of 3 hours, for getting response at pinnule and pulvinus point. Moreover, the response from DS18b20 embedded within soil, remained at a constant value of 22 degree Celsius (probably the soil was too soggy). The lux sensor showed decent drift in light intensity during the entire course of experiment and was found to be 300lx during the dusk hours.
The 'Light-Touch' and 'Strong-Touch' recovery time were found to be approximately 22 minutes and 40 minutes respectively.
Pre-paration scripts for Ultra96V2 (Pynq2.5)
During the course of the project, I had faced connectivity issues regarding onboard BLE and WiFi access on Ultra96V2, thanks to Xilinx and Element14 community for providing necessary guidance and one-shot scripts based on Pynq 2.5 architecture. I myself would like to share a few.
- While connecting with USB gadget Ethernet support, there persists connectivity issues for connecting Ultra96V2 to internet over WiFi AP, particularly due to hardware design and or, OS specific support. The wifi.ipynb script makes success while accessing the Ultra96V2 over Jtag2Serial Pod, but misses badly over USB-Ethernet gadget, since no wlan is shown in ifconfig. Workaround:
sudo python3
>>> from pynq.lib import Wifi
>>> port = Wifi()
>>> port.connect("SSID","PASSWORD")
- Activating Bluetooth service on Ultra96V2:
echo BT_POWER_UP > /dev/wilc_bt
echo BT_DOWNLOAD_FW > /dev/wilc_bt
stty -F /dev/ttyPS1 115200
hciattach /dev/ttyPS1 -t 10 any 115200 noflow nosleep
sleep 1s
hciconfig hci0 up
hciconfig hci0
Ensure you can use Bluetooth services like bluetoothctl like any other Linux distribution.
Updating the PYNQ with Vitis-AI feature:
- Open new terminal window on homepage and enter each one in succession.
git clone --recursive --shallow-submodules https://github.com/Xilinx/DPU-PYNQ
cd DPU-PYNQ/upgrade
make
- Install Python DPU Package:
pip3 install pynq-dpu
- Run & Build from available docker script
cd Vitis-AI
./docker_run.sh xilinx/vitis-ai:latest
cd ./docker
./docker_build_cpu.sh
Alongside, do install matplotlib, pyserial, grabserial (for sensor dataset acquisition), bluepy, keras, tensorflow.
Readying with the Communication
- Wired Method: Fetching sensor data from End-node through grabserial in Ultra96V2 terminal can be done by relaying the following command; (have a checkin for lsusb)
grabserial -v -d "/dev/ttyUSB0" -b 115200 -w 8 -p N -s 1 -e 90 -t -m "Starting kernel*"
Running 'Sensor Data acquisition over BLE for Ultra96V2.ipynb' script, streams sensor data through Bluetooth low energy link onto Ultra96V2.
Dataset was manually labelled, since each of the category only contained fewer samples to proceed with the ML model.
- Category A (Osmotic Root Pressure), was obtained as an arbitrary value with soil temperature coefficient. This category consisted of 80 signals, that were obtained after post-processing.
- Category B (Ambient Temperature), was obtained as per exact values obtained from DS18b20 sensor pushed out from the soil, and 40 signals were collected in this case (non-stress state).
- Category C (Light Intensity), produced over 150 signals during the measurement phase. Out of which approx. 60 were collected at end during hard-touch and stressed-state.
Interval Arithmetic algorithm is utilized to learn features extracted from plant-biosignal. After feature extraction, it is further piped into SVM, in order to classify whether Mimosa(target plant) has been subjected to environmental stress. SVM classifier is utilized through LibSVM library available for python.
Conclusion
The next goal will be to find an algorithm that can be successfully applied to learn a pattern, even when trained on smaller datasets, as in our case. Various algorithms have been provided by H2O.ai, an “Open Source Fast Scalable Machine Learning Platform”, that could be utilized for improving on the original concept. Ultra96V2 combined with Pynq altogether provides powerful tool to those that would love to implement ML and DL applications of their own. I have high hopes to continue with Pynq 2.6 in my next project.
Thanks Hackster and Xilinx.
Comments