Simulating an Intertidal Environment

Project Dates: January - May 2016

This is an older project, but it's a special one that I wanted to share. This was my senior project for my Electrical Engineering program at Loyola Marymount University, but it was also my first ever "real" project where I created software to build something from nothing.

I teamed up with two other Electrical Engineering students, and we built a PoC system that could assist an LMU Biology professor with his research. He was studying how the ocean tides affected a mussel's metabolism. Specifically, he wanted to see the effects of different tidal patterns and shifting temperatures. I might be misremembering this, but I believe his research showed that low tide resulted in more heat and sun exposure, and the mussels reacted by closing their shells and slowing their metabolism. Conversely, as the mussels became submerged by high tide, they'd open their shells and ramp up their metabolism.

To conduct his research, the professor needed to plan trips to specific coastal areas and gather data out in the field. We aimed to build a proof of concept system that could give him the means to do his research from his lab.

Specifically, our project's goal was to build a modular, multi-tank system capable of simulating and precisely controlling the environmental conditions of an intertidal zone within a laboratory environment.

Note: This project used empty mussel shells filled with silicon to simulate a live mussel. We never used real mussels. No animals were harmed in the making of this project!


For the hardware/electronics side of this project, we utilized the following components:

  • Ultrasonic sensors - Used to monitor the water level.
  • Electronic solenoids - Controlled the flow of water into the tank.
  • Thermistors - Monitored the internal temperature of a mussel.
  • DC powered heating pads - To apply heat to the shell.
  • Arduinos - Microcontrollers used to collect data & control the other components

Tidal Control System

To control the water levels, we designed the tanks to slowly drain water from the bottom. The Arduino would read the water level from the ultrasonic sensor and determine how much water to pump back into the tank to get it to the desired level. The system used this feedback loop to control each tanks' water level with centimeter precision.

Proposed Tital System Diagram

Tital Control System Implementation

Heating Control System

We had another feedback loop with the heating portion of our system, which also worked fairly well.

The green "steps" in the graph indicates the desired internal temperature of the mussel, and the blue line is the internal temperature read from the thermistor.

Complete Hardware System

Here's a picture of the entire system set up with two tanks:

It's not pretty... but that wasn't one of our requirements.


Although we were all involved in aspects of the project, I mostly focused on developing the software. Here is an old system diagram that I found that (sort of) illustrates the software:

This diagram doesn't actually match the final system 100%, but it does the job.

Arduino Software

Each Arduino was able to monitor and control 2 tanks (with up to 6 mussels in each tank). Using a USB communication library that I found, the MATLAB program would interrupt an Arduino to poll for data and give it new "target" values (for water level and temperature). Each Arduino would continuously measure and adjust their respective subsystems to reach their target values until the MATLAB program gave them new ones.

MATLAB Software

On the MATLAB side, the user would use a GUI to load a "profile", which contained time-series target values for water level and temperature. Once loaded, the program would then continuously fetch data and distribute new target values to the Arduinos.

That pretty much sums up the project! Thanks for checking it out.