Banana Plant Trial Result (Traditional Design)

By: Brett Stoddard

To test the probe described in my previous blog post, I deposited the probes in a banana plant I had handy.

How I built the probes by inserting heater wire and type T thermocouples into hypodermic needles. More resources can be found in my last post and in the following paper by Davis et al. Post here. Paper here. 

The graph result of the test is below:

As you can see, the top probe was not reading the correct temperature. This was probably an issue with the accuracy because it remained surprisingly precise meaning that the results shouldn’t be completely discarded. Daily trends are evidence that the sensor could be working somewhat. This is nowhere near the accuracy I intend to get with my final design.

However, there definitely is something interesting going on here. The data was recorded over an interval of three days. Examining the Differential plot, there seem to be roughly three major up-and-downs that PROBABLY are related to the day-night cycles of photosynthesis.

The Sap Flow Status Quo

By: Brett Stoddard

Before I got started designing the SMT sap flow, I built and tested the probe sap flow sensor popularized by Grainer. This design popular with researchers probably because of its inexpensive BOM ( ~$10/sensor ) and promisingly low labor ( 1 hour/sensor ) which puts the total price at ( ~$60/sensor ).

When I replicated several of these probes I found significant difficulty in making them. The 36 gauge wires are especially difficult to work with and the nichrome wire heater probe was almost impossible to wind to a high enough resistance. For the 7 I built, only 2 were usable enough to record meaningful data. This is not a process I would recommend to anyone.

Here is the BOM used by Camden Lowrance in his University of Georga thesis in 2014 and the simplified one I created for this project. Camden’s includes a base station and mine does not.

The biggest difference is that I used a thermocouple amplifier chip instead of building my own. This greatly simplified the design and made fabrication a lot easier. I chose an Adafruit Universal Thermocouple Amplifier MAX31856 Breakout board. I made sure to set it to the Type-T setting. Adafruit has an excellent guide on how to use one of these on their website here.

Posted by Brett Stoddard

Annealing For ABS Plastic Parts

By: Merritt Allen


The use of annealing ovens for 3D printed plastic is a useful technique that helps strengthen the plastic part and improves the overall look of the plastic. In this experiment, four 3D printed bag sealing caps were annealed with different techniques to compare the results. The annealing of ABS plastic is performed at a temperature range of 105C-107C which the glass transition phase of the plastic is. When ABS is printed, it is cooled below its glass transition phase which keeps the plastic harder and brittle. By slowly heating up the plastic to its glass transition phase the plastic begins to deform. This deformation is the breaking of the semi crystalline structure within the plastic to relieve stress that is created when the plastic is printed. When plastic is slowly heated, and this stress is relieved, the material is then cool very slowly so that the internal structure remains somewhat viscous- increasing overall strength of the material.


The oven used to perform this experiment was a mechanical convection oven [Source]. The mechanically circulated air heats the plastic, and then melts it. The plastic parts are in the oven for the entire heating, baking, and cooling process. The error of the oven is estimated to be +-2C. [Source] Literature states that annealing can vary in process but most sources suggest the heating of the oven to the glass transition phase at a rate of 50F to 200F over the course of 2 hours. Holding in the oven 30 minutes for every ¼” of plastic (width) and then cooled 50F every hour. The purpose of the slow process is that the plastic is amorphous. Different parts of the plastic can be in different states at different times based on thickness and air exposure. In other words, there is uneven melting and cooling of plastics. The mechanical circulation of air and the slow process is supposed to account for much of these errors. If plastics are cooled or heated at different rates then different parts of the plastics can be in different states which could potentially weaken the part overall by creating stress concentrations; having a brittle location, a half-melted location, or a partially cooled location will disrupt the uniformity of the printed part.


Experiment one was conducted with a high range of temperature, revealing the importance of the glass transition phase temperature. The first cap was placed in the oven at a temperature of 50C and then slowly brought to a temperature of 108C over the course of 30 min. The 3D printed cap is ¼” in thick. After 30 min at this temperature, the cap was removed without cooling slowly. There was no difference in appearance or feel of the cap.

This cap was cooled for over 24 hours before being put back in the oven. The purpose of a second heating was to try and see a noticeable difference in the plastic. The second heating was conducted at a stable temperature of 121C. The total time in the oven was 1 hour 42 minutes. This much longer than the recommended time. When pulled from the oven, the caps were noticeably deformed with visible melting near the center. This warping was the plastic melting outwardly.  This is not desired. The purpose of the glass transition phase is to melt the crystalline internal structure of the plastic without deforming the overall shape. It was concluded that the temperature was much too high and that the glass transition phase does hold precedence.

The next experiment tested an extended time in the oven. A cap was placed in the oven and the temperature was increased by 12-15C every 15 minutes until the oven reached 105-107C. The cap was then held in the oven for 57 minutes. After this, the cooling process began. The oven was decreased by 15-20 degrees every 15 minutes until the oven reach 50C. It was then turned off and allowed to cool to a temperature slightly above room temperature. This cap shrank slightly (3mm) which was noticed when the cap was not able to screw onto its respective bottle.

The above experiment was repeated, and it was found that this shrank as well.

A final experiment was conducted with a newly printed cap. The oven was heated by increasing the temperature 12-15 degrees Celsius every 15 until it was brought to 105-107C (oven fluctuates slightly). The part was kept in the oven for almost 2 hours before the cooling process began. The oven was brought down to 50C in the same manner as above. The part was cooled to room temperature. This part also shrank by approximately 3 mm. The part, however, was also shinier than its un-annealed state, and was smoother after it was cooled.



The pictures above highlight the difference between the annealed and the unannealed caps. The Annealed caps show the visual signs of warping and slight melting.


The photo above shows the shrinking that occurs when the 3D caps are annealed. There was little warping on this cap-temperature was correct- but shrinking still occurred which can be seen above with the unannealed cap is larger underneath the other cap.


Based on the above experiments, it could be concluded that annealing for smaller printed parts that need to fit counter parts (ie. Caps) may not be the most efficient method of finishing a part. The shrinkage of 3 mm could be accounted for in the 3D design process by adjusting dimensions of the design. There are, however, better methods that do not have such a large amount of shrinking involved. Also, if the goal of the annealing is for aesthetic purposes then vapor finishing is the suggested method. The unfinished cap has a diameter of 19 mm, a vapor finished one of 18 mm, and an annealed one of 16.5 mm. Future annealing experiments could be conducted on flatter parts whose max load tolerance could be measured- to test strength improvement-, or parts in which shrinking is easily accounted for. Based on the annealing of caps, however, the process was more cumbersome than necessary and vapor finishing with acetone is the recommended method for both these parts and parts similar in design. Vapor finishing accomplishes the same aesthetic results without the wait time and the shrinking.

Vapor Finishing for Small Printed Parts


Vapor Finishing for Printed Parts


Vapor finishing uses acetone to smooth finish 3D prints by filling the micropores present in the plastic that result from printing. The process of vapor finishing saturates the air around the part to make the surface “flow” into a smoother, better finish. There are two types of acetone bath; cold finishing and hot finishing, both use pure acetone to vapor finish the printed part. The benefits of cold baths being that the part can be left in the bath for multiple hours, and the fumes are more easily controlled. Boiling acetone (temperature of 132 degrees Fahrenheit) is a faster method than cold finishing. Results of boiling acetone can be seen in a matter of seconds, often outweighing the dangers of boiling the chemical [SOURCE]. By smoothing out a printed part the stress concentrations that are created when the part is printed, are decreased. This is done by decreasing the print lines and the micro-pores and micro-cracks in the plastic by essentially filling these in with acetone [SOURCE]. For both cool and hot vapor finishing, parts require a cooling time that ensures all the acetone has been evaporated and that the part has completely hardened. To make sure of this, pieces could use 12-18 hours before being implemented in designs. This will also make sure no warping or pooling of the acetone has occurred between ridges on the part.


The vapor finishing design for this experiment included a rice cooker chamber, acetone, 3D printed parts, and scale. This is the easiest method of boiling acetone. For each 3D cap, the time left in the bath, the temperature, and the time allowed to cool was kept constant. The part was placed in the chamber, the specific amount of acetone was added, and then the heat was turned. The heat was kept on for the same time for each bath, before being turned off and the lid to the chamber was removed. The part was then massed and used. For each experiment, the heat was turned on for 45 seconds to allow the acetone to completely vaporize. The lid was then removed when one minute had passed. Each part cooled for 15 minutes before being tested. The cooling period was implemented to make sure that excess acetone was evaporated, and the part was hardened.

Summary of Test one:

A total of 10 trials were conducted with acetone levels ranging from 0mL to 19.1mL of acetone. It was found that when a cap was treated with 0mL of acetone there was a percent mass gain of 31.3% while a cap treated with 19mL has a percent mass gain of 16.6%. Mass gain was measured by weighing the caps prior to finishing, letting them cool after finishing, and then screwing them on a bag and squeezing the bag while it is upside down. This meant water was absorbed into the micropores when water was forced into the plastic. Caps in between these two points included 5.3mL with a mass gain of 31%, 10.8mL with mass gain of 19.7%, 14.1mL with mass gain of 21.4%, 16.3 mL with mass gain of 18.5%, and 17.8 mL with mass gain of 18.5%. The other trials were repetitions of these levels with similar results. Other data take in experiment one was the water lost from the bag when the caps were being tested. The initial amount of water was measured in mL. After the bag was tilted and squeezed, the bag was re-massed to see how much water escaped. It was discovered that the more acetone used, the less water that escaped. The untreated cap allowed almost all the water to escape. The cap treated with 19mL only allowed 1.7mL to escape out of 140mL.

Summary of Experiment 2:

This experiment was performed to confirm the results from experiment one. The focus was on one low level acetone level and then many higher-level acetone levels. Since the first experiment established the necessity of the higher levels of acetone, the second experiment was performed to finalize this conclusion. For comparison, an untreated cap was tested with the bag and, again, it allowed lots of water to escape with some pressure, further supporting the need for vapor finishing. Experiment two did support the first one. An additional five trials were completed. One with no treated and four more, all above 17mL. The average mass gain between these four treated caps was 22.7%. These four caps allowed virtually no water to escape when attached to a bag and squeezed upside down, further supporting the conclusion made from experiment one. The untreated cap allowed almost all the water to escape again. The recommended amount of acetone was concluded to be 14-19mL.


 Weight of dry cap average: 5.18 g

Weight of cup used to measure acetone: 19.2g

Mass of bag: 11.4 g

Time to dry for each trial: 15 minutes


The photo above compares and untreated cap (top) with the treated caps. There are few noticeable differences, besides the greater amount of rounding in the 19mL level cap (top left).


The above picture shows a cap treated with 10mL (L) and a 19 mL (R). The 10mL treated cap is less smooth than the 19mL treated cap. The edges are less rounded. The necessity of more acetone was also supported when the 19mL treated cap allowed less water to both escape the bag and cap connection and infiltrate the cap.


The picture above shows a cap finished with 19mL of acetone (L) and an unfinished cap (R).

The treated cap is much shinier and smoother than the untreated. There are decreased print lines and the texture is more uniform than the untreated.



Without any vapor finish, cap and bag connection allowed water to easily escape from the connection point with basic pressure. The largest increase of mass was also associated to the cap without any vapor finish, indicating that water was easily infiltrating the plastic. For the second experiment, the untreated cap did not have a large mass increase, but still allowed water to run out easily.

Increasing the amount of acetone used decreased the amount of water allowed to escape while also increasing the efficiency of the connection. Almost no water escaped at the connection point with even greater pressure compared the pressure applied to the little to no acetone experiments. This was also demonstrated simply by allowing the bag to tilt upside down and seeing that the parts treated with more acetone had less water escaping than untreated parts. The recommended range for small to medium parts is 15-18 mL of acetone. With that in mind, it was also found that levels of 19mL and 17mL both performed well under applied pressure but the 17mL acetone levels kept the exactness of the design better. Meaning the acetone did not smooth the part on the outside as much but performed just as well, and the differences were not very noticeable.

The mass of the caps was measured before and after each trial. To give an idea of how much water was being absorbed during each trial. For each cap treated, when attached to the bag, pressure was applied to test how this affects the amount of water escaping at the bag and cap connection. After pressure was applied and water was allowed run out. It was found that past 17 ml of acetone far less water escaped at the connection. The percent mass gained by the caps at this point was also less. This indicates that the increase in acetone levels helps decrease the amount of water soaking into the part. The greater the acetone levels, the better the webbing formed between the plastic layers. Increasing the acetone that is vaporized increases the acetone that is being deposited between particles in the plastic. This is also why a drying period is necessary to make sure the part has hardened sufficiently before use. 

The amount water present after the bag has been squeezed was measured as well. This accounted for any water that escaped the cap through the pores during this process. It was observed that even though the caps still absorbed water with later runs, it was a small amount and most of the water leaking out was at the connection point. This was not performed for experiment two since experiment two was conducted to support the conclusion of experiment one.

Possible errors for this experiment were the acetone bath which could account for the increase in mass for many of the caps. Even though the finished prints were allowed 15 minutes to dry, that could not have been long enough to account for the acetone saturation. To ensure that the acetone is completely dry, the prints were re-massed and retested after more than 24 hours had passed. It was found that after these 24 hours, the difference in masses for the caps was no different. The top of the cap was less malleable after all the acetone could dry. For future printing, it is encouraged to allow the finished part to dry for a least a couple of hours to make sure all acetone has evaporated.  

Below are pictures that compare the results of different levels of acetone. This can be used a reference to show how increasing the amount, increased the layer of acetone that finished the part. The results on the outside show increasing smoothness and rounding at the edges. Internally, increasing the acetone resulted in a better seal. There was not a great difference between the 18 and 19 mL caps, which is why the interval of 14-19mL is the recommended interval for the acetone. The numbers on the cap indicate the amount of acetone used in the experiment.






Author: Merritt Allen


Moving platform to Adafruit Feather M0

Author: Lars Larson

Taking it back to basics with the eGreenhouse package, reprogramming the sensor suite one component at a time to ensure a smooth transfer to the Feather.

Here’s the plan:

  • Adafruit Feather M0 Proto
  • Adalogger FeatherWing for saving sensor data to an SD card
  • OPEnS custom nRF PCB for communication with the HyperRail

Currently, the Feather saves data to the Adalogger successfully; running the lux sensor as a start. Moving on to the rest!

One notable stumbling block with the transfer between Arduino Uno and Adafruit Feather M0: SoftwareSerial is not supported by M0 –> must recreate serial communication via hardware serial. This is accomplished by setting up a Serial SERCOM, following this Adafruit tutorial:

More to follow,


Intro to the Project

By: Brett Stoddard

Thermal sap flow sensors were initially proposed in the paper [German paper] in [date of german paper] by [german paper author]. Since then, several key improvements have created a sensor that semi-popular amongst researchers. However, their current high price point has reduced adoption.

A good case study for the modern state of commercial thermal sap flow sensors is Dynagague. Their probe style sap flow sensor which costs around $300-500 for a single sensor and an additional cost of ~$400 for the datalogger.

By using a few tricks in the design, we at the OPEnS Lab in contribution with [Friend of Trees] hope to design a sap flow sensor that costs less an $100 to produce including labor (priced at $50/hour) that meets the same performance at Dynagague. I plan to do this by redesigning almost everything to incorporate modern SMT manufacturing techniques open sourced communication protocols.

Here is an image of the rough schematic for the build.Here is an image of the rough schematic for the build.

This is the BOM for the first draft design. The raw eagle design documents can be found at [].

To open them you will have to download my parts library from [].

TSL2561 or TSL2591?

Abstract: The TSL2561 and TSL2591 are Ambient Light Sensors (ALS). Both of these sensors are good, but there are some differences between them that would change the implementation of the Albedo sensor. This post intends to explain why we chose the sensor that we did.

Here are links to the two datasheets of the sensors: 

If the links do not work, you can find the sensors on the Adafruit website by searching TSL2561 and TSL2591.

They both have a broadband photodiode, that includes both visible and infrared, and one dedicated infrared photodiode. It is quite obvious that the TSL2591 has a higher count from the ADC per channel and in turn will be more sensitive to light change. For our purposes, we need a sensor that is going up and one that is going down. Having the higher sensitivity of the TSL2591 would be great, but the limitation to this sensor is that the sensor can only be configured to a single address meaning we can only use one. On the other hand, the TSL2561 has more than one address that can be used; this also means that we can include two sensors for the albedo configuration without the need of extra circuitry such as an I2C multiplexer. For this reason,  we will be using the TSL2561. To be able to perform the albedo calculation, it is just necessary to have  2 sensors outputting the same kind of data out. This means that we can go ahead and use the TSL2561 and it should be just fine. 




The TSL2561 is sufficient for our albedo sensor. The major upside is that we can use two sensors; this is because of the multiple addresses that the sensor can be assigned. The only downside is that it is not as sensitive to light as the TSL2591, but this should be not a problem as we only need two reliable sensors outputting the same kind of data to be able to perform the albedo calculation. 

Creating a Gasket Using Cork

Abstract: We have been looking for a way to seal our enclosures so that water can’t get in. In response to this problem, we decided to use cork to try to solve this problem. This post is just a brief description of what the design looks like and the settings used to cut the cork.


I used the face of the bottom part of the cap to create the gasket design. This was done very easily using the project command and then extruding face out 1/16 inches.  

Face of where the gasket goes and where the projection was taken from Face of where the gasket goes and where the projection was taken from 

Face of where the gasket goes and where the projection was taken from 

Gasket renderingGasket rendering

Gasket rendering

The design didn’t take much time, but figuring out the laser cutter settings did take time. I was able to determine that the optimal settings to cut the cork were at a speed of 30 mm/s and a power of 15% on our laser cutter. Here are some pictures of the cuts:



I got this material from McMaster-Carr. This other link also gives some characteristics of cork. 


This is being put to the test, as we just deployed four sensor suites and they were all equipped with this gasket. We will see if it is able to keep the electronics safe from moisture and running until the battery dies or the term comes to an end.

As light as a Feather

Abstract: We are trying to improve the capabilities of the HyperRail to have wireless communication with other sensors, and in order to do that we needed to upgrade the microcontroller. I’ve tested the Feather M0 LoRa with the HyperRail and it works. This post is a summary of the integration of the new microcontroller. 

Design: The code was made modular so that it could be used on any microcontroller that could handle delays in the microsecond range and serial communication. The program also doesn’t make use of any libraries for the HyperRail to work. The Feather M0 LoRa is a great option for the HyperRail’s wireless communication upgrade because not only does it do serial communication and can handle microsecond delays but it can also do radio communication. Here is an image of the new microcontroller: 

Feather M0 LoRaFeather M0 LoRa

Feather M0 LoRa

Here is the wiring diagram of this configuration:

Wiring diagramWiring diagram

Wiring diagram

With some minor changes in the code, I was able to get the system working with the new microcontroller. Although the changes were minimal, it took some time to figure out what to change. One thing that wasn’t working was the serial communication, this is essential for the system to work. What was happening is that the Feather was outputting the serial prints way faster than the serial port would open, so I had to put in some checks for the serial port communication to be established first before any print statements were executed. Another thing I had to change was the pins used for the communication to the stepper motor driver.


The upgrade to the new microcontroller went very well. I will now try to start sending commands to the microcontroller from another Feather and see how it responds. Here is a video covering the same points with a demo: 

HyperRail First Run

We took our first set of data of the pine seedlings using the HyperRail and hyperspectral camera. This post will be a summary of our setup for the data collection. 

Inform about our setup of the HyperRail and give an overview of the data collection.

We are using 9 meters of V-Slot (aluminum extrusion), a gantry set (rolling base), all the 3D printed parts located here, this attachment, an Arduino UNO, and the Big Easy Driver. The code is also located in the code section of the main page of this project. 

Data collection Steps

1. Upload the sketch to the Arduino Uno and connect the computer to the microcontroller

2. Run Processing sketch and wait for the list of ports to appear on the bottom of the IDE of processing. It will say something like, “/dev/tty…” or “com#”

Screen Shot 2018-03-07 at 12.50.40 PM.pngScreen Shot 2018-03-07 at 12.50.40 PM.png

3. Change the port that the microcontroller is connected to in the code. Note that the ports are enumerated starting at the index of 0. An example would be, ” /dev/cu.Bluetooth-Incoming-Port /dev/tty.usbmodem621″ you would select port 1. Here is an example of the change of the port: 

Port located at index 0Port located at index 0

Port located at index 0

Port located at the index 1Port located at the index 1

Port located at the index 1

4.Run the code again and wait for the IDE to say “GUI setup complete” and a single “r”. The “r” is very important because that means that the microcontroller is communicating with the application and is ready to receive a command from the application; the are stands for ready. After this step, the HyperRail is ready to go. Now we need to setup the hyperspectral camera. 

5.Insert the camera in the case and then bolt in from behind or put a strap on the front. The bolts or strap are there for extra safety, not really neccesary, but it is still good to have. 


6. Hook up the battery and turn on the camera.

7. Attach ethernet cable and start the data collection.

IMG_0305 2.jpgIMG_0305 2.jpg

8. Detach the ethernet cable. 

9. Star the HyperRail and wait for it to travel the rail. 


Here is an example fo the data collected from the hyperspectral camera:


The HyperRail is working well. We will now move to improving the GUI for more functionality and upgrade the electronics for autonomous operation. This means that the sensor will in charge of moving the HyperRail’s carriage to where the sensor needs to be. We will be implementing the Feather microcontroller from Adafruit to do this because it has a LoRa radio to be able to communicate easily between feathers. I also need to run validation tests for the performance of the HyperRail to verify the precision of the movement of the carriage.