, , ,

I’ve been gratefully enjoying the online Greenhouse 101 course offered by the University of Florida.  This course inspired me to start measuring the Daily Light Integral (DLI) my plants receive.  To do this, I made a PAR (Photosynthetically Active Radiation) and DLI meter using an Arduino Uno, SD Shield, PAR sensor, and LCD.  I used a Fusion 360 to design and 3D printer to make an enclosure.

The Goal

The goal of this post is to describe the PAR and DLI meter that I made.

Thanks to Those That Went Before

Adafruit: I am a fan of Adafruit’s business model.  While their products typically list more than comparable products, Adafruit’s service to the maker community is worth the extra cost.  Often Adafruit’s learning site is the first place I go to when I want to figure out how a sensor or other hardware breakout board works.  The forums are active and include very knowledgable Adafruit employees who tirelessly answer questions from both the first timer to the expert.  Using Adafruit’s libraries and following along with the learning section makes it extremely easy to integrate logging.  Noe’s layer-by-layer series has been a great aid in learning how to make enclosures in Fusion 360.  In particular, I found this video very helpful for this project.  Thank you!

Apogee: I used the SQ-225 PAR sensor from Apogee.  Thank you for making this quality product.  My challenge was the cost at $205 for the PAR sensor.  I probably wouldn’t mind this as much if there was consulting or other service/support included.  

Autodesk: It took me about 6 weeks before I felt fluent enough to make the enclosure in Fusion 360.  Thank goodness for Autodesk’s excellent videos and forums!  I am incredibly grateful for how much more – and how easily – learning can be with good content and an enthusiastic community from the Internet.  Also, Kevin Schneider’s incredibly detailed Fusion 360 model of the Arduino Uno saved me a lot of time. 

MAKEiT: I bought the MAKEiT-PRO 3D printer.  They are located on the west coast of the US which I prefer since I am also located on the west coast of the US.  While on the expensive end, I am ecstatic  with the service/support I have gotten from Russell Singer (director of design and development).  Russell’s insights into 3D design and printer settings to optimize a 3D print more than make up for the extra $$ the printer cost.  Russell has been exceptionally responsive.  His advice constantly brings my 3D printing knowledge and ability leaps forward.  I also like the MAKEiT-PRO because it feels solid and I can dynamically change print settings as the print evolves.  There seem to be a gazillion different 3D printers to choose from.  I don’t have experience with any other printer to compare.  Russell – THANK YOU.  I am very grateful for the encouragement and insight you have shown.  You “know your stuff.”

University of Florida:  As I briefly noted in the intro to this post, I am taking the Greenhouse 101 course from UF.  It has been an incredibly enriching targeted knowledge us students are getting on the effect and control of factors (e.g.: temperature, light, CO2, PGR…) that shape the health of a plant.  Thank you for offering this course.  The instructors have been excellent.  The explanations are easy to follow.  I wish there was more discussion.  However, that has picked up recently.

Open Source

The Arduino sketch, Fusion 360 archive, and a PAR.CSV file with a test run logging data is located at this GitHub location. 

The PAR and DLI meter

I will make and use of this PAR and DLI meter I cobbled together:



I am practicing growing vegetables and herbs hydroponically indoors.  As is commonly known, plants need light for photosynthesis.  

Photosynthesis – light depended reaction

However, not all visible light waves are absorbed by a plant’s leaves.  The wavelengths of light used for photosynthesis is termed the Photosynthetically Active Radiation (PAR). Since I am growing inside with very little light coming from the sun, I need to figure out how much PAR to give a plant within each 24 hour period.  A sum of the total amount of PAR that a plant receives within a period of time is termed it’s Daily Light Integral (DLI).  

For this simple prototype, there are no buttons or other ways to input any settings.  Settings are within the Arduino sketch.  The PAR meter then merrily takes a PAR reading at the time interval I set in the Arduino sketch and then writes the reading as a CSV row into a PAR.CSV file on the SD card.

I’ll start with a brief discussion of the materials I used. 


I was happy to be able to reuse these that had been part of previous projects:

  • Arduino Uno
  • SD Data Shield
  • PAR sensor – I am using the SQ-225 from Apogee Instruments.  I got it in March, 2014 and hadn’t really used it.  I paid a whopping $205 + $6.67 = $211.67 for the SQ-225.  I say whopping because I bet the actual material is sub $50.  My thoughts on why the cost is so high is because there is a lot that goes into R&D, building the units (e.g.: each unit must be calibrated), service, and support.  Also, it seems most purchases of PAR meters are from institutions – academia and large greenhouses – where the cost is more easily absorbed than for hobbyists. There are challenges with the SQ-225 which include the sensor can only be used for indoor lighting and – I didn’t realize this until recently – as noted in this article, “...Apogee quantum sensors and meters for electric lighting are calibrated in a custom chamber filled with T5 cool white fluorescent lamps. LEDs have a very different spectral output than T5 lamps…

            (Image above) 

T5 cool white fluorescent spectrum (lamp used by Apogee for electric light calibration of quantum meters; black line) compared to broadband white LEDs (cool white fluorescent – blue line, neutral white fluorescent – green line, warm white fluorescent – red line) and defined quantum response (gray line).

        Unfortunately, this leads to less than accurate PAR readings:


Electric Calibration Error [%]

Blue (448 nm peak, 10 nm FWHM)


Green (524 nm peak, 15 nm FWHM)


Red (635 nm peak, 10 nm FWHM)


Cool White


Neutral White


Warm White


Red, Blue Mixture


Red, Green, Blue Mixture



Here I am then…using the SQ-225 that cost me a significant amount of money.  If I were buying one today, I’d take a serious look at the NEW! IMPROVED!  SQ-520.  While this baby would set me back an even more whopping $345, it handles reading both LED and outside PAR values and includes the ability to data log PAR values and calculate the DLI.   Sadly, this sensor may not work since moving forward I would rather attach the PAR sensor to a PCB I designed that uses an inexpensive micro controller (like the FRDM-KL25Z).

I was going to include a battery however decided to simplify this initial build and provide power through the power sources supported by the Arduino Uno (i.e.: USB or wall wart).


For some reason, a few months ago I got inspired to make 3D printed “stuff.”  Since then, I have been enthusiastically 3D printing on a MAKEiT-Pro printer I bought from MatterHackers.  I used Fusion 360 to make a 3D model and the MAKEiT-PRO printer to print out an enclosure for the PAR/DLI meter.

Assembling the Electronics

Assembling the Arduino, SD Data shield, PAR sensor, and LCD was easy since I had used each of these components within other projects.  The SD Shield sits on top of the Arduino:



The wiring is hooked up to the power and analog pins that are exposed on the SD shield.

Pasted Image 6 17 16 5 15 AM

  • I used the info on this page to wire up the Funduino ICM1602 LCD.  There are 4 wires – Brown (GND), Red (Power), white(SDA, A5 pin) black (SCL, A4 pin).
  • As noted in the guide for the Apogee SQ-225there are three wires.  The power colors are not the standard red (positive), black (GND) I expected.  White is positive power, clear is GND, and green is hooked up to A3 to get the sensor readings.  The wires are very thin so I ended up soldering wires I usually use to hook up sensors to an Arduino.
  • I used Adafruit’s SD shield for logging PAR values.  

The Enclosure

(TBD: Mention PLA use) The Fusion 360 files I used are available at this GitHub location.  A valuable lesson I learned was to model the components first, then base the enclosure around the models.  Prior to doing this, I was spending A LOT of time printing the enclosure fixing measurements, then reprinting.  Paying more attention to detail on the measurements of the Arduino Uno, SD Shield, LCD significantly lessoned the number of prints I needed to do.  

Components in Fusion 360

  • Arduino Uno – Kevin Schneider has made a remarkably detailed Fusion 360 model of the Arduino Uno.
  • SD Shield – I copied the Arduino Uno files as another component and modified to the shape of the SD Card.
  • LCD – I carefully (well, as carefully as I could) the measurements with a digital caliper.
The steps I took are similar to those taken by Noe in his 3D enclosure printing video available from Adafruit.


My goal was to stay away from using screws.  The biggest challenge was getting the Arduino to play nicely with the mount holes I had printed.

Pasted Image 6 18 16 6 02 AM

Bottom part of enclosure as viewed in Fusion 360

The tap posts broke off when putting the Arduino into the enclosure.  

Pasted Image 6 18 16 12 06 PM


As noted in the Arduino dimensions diagram:

 “All Arduino mounting holes are 3.2mm…”  3.2mm diameter posts are not thick enough for 3D printing.  I ended up adding a piece of plastic that acted as a wedge between the Arduino / SD shield and the inner edge of the bottom enclosure.

For my next enclosure, I’ll use these plastic spacers I ordered from eBay.

Fitting the LCD into the case proved to be easier than I thought it would be.  The rectangle measured for the LCD display was snug to the point the LCD stayed within the top of the enclosure.  Even though the LCD fit, when I do a future enclosure I’d like to have a stronger bind between the top of the enclosure and the LCD.  The LCD’s PCB does have mounting holes which I attempted to use.  However, the taps broke off (as they did for the taps on the bottom part of the enclosure).

The Arduino Sketch

The Arduino sketch is available from this GitHub location.  I’m assuming the sketch is self explanatory.  There are two times the PAR value is read: 1) every time through the loop in order to update the LCD 2) after logging_interval_in_ms milliseconds.  For testing, I set the interval to every 30 seconds.  In use, I set the the time interval to 15 minutes.  While the LCD updates every time through the loop, the date, time, PAR value is written in CSV format to the PAR.CSV file every time period.


The test PAR.CSV is available from this GitHub location.  While I realize the SQ-225 par sensor that I have is for indoor lighting, I tested the light coming in from a sky window above my desk.


 I was interested to see the variability in PAR values – even if the readings were off because the SQ-225 is not calibrated for sunlight –  at given time of day.  After capturing the values into PAR.CSV on the SD card, I uploaded PAR.CSV to a Google doc file. 


 Initial readings in PAR.CSV  

The day was sunny with clouds.  I noted when the clouds covered the sun the PAR value would significantly decrease as it did at 1:47:14 PM.  As the sun went down, the PAR value dropped to 0.The PAR meter took samples from 1:43:40 June 15th until 5:21:32 AM June 16th, for a duration of 15 hours, 37 minutes and 52 seconds.  I used the info on this web page by Licor to calculate the DLI when readings occur every 30 seconds.

Total Time = 12 hours

∆t = 30 seconds 

∑PAR = 4646 µmol/m2 per 1/2 day (note: DLI is typically evaluated within a 24 hours (day) period.  I measured 12 hours)

DLI = 30seconds *4246µmol/m2/1,000,000 µmol/mol = .12738 mol/m2 per 1/2 day.  or ~ .255 mol per day.

I love basil.  The information in this source states: the rate of growth peaked at 500 μmol·m−2·s−1

A page on Apogee’s web site notes to calculate the DLI based on one PAR measurement, multiply the PAR value by 0.0864.

500µmol/m2s-1 = 500*0.0864mol/m2d = 43.2 mol/m2d

Even if the DLI was at the levels discussed within this paper from Purdue

 The DLI I measured was too low for the minimum acceptable quality.  I would have to augment the indoor lighting….which I plan to do with a DIY LED project.

Of course, as I noted earlier, the SQ-225 was not calibrated to measure daylight…so my measurements will carry a significant error to the point of most likely being meaningless.  With that said, I have a better feel for calculating the DLI.

So That’s That

I am very happy to improve my knowledge of growing plants while at the same time flex my maker skills.  It was extremely fun to pull out sensors and other pieces of electronics I had lying around.  I learned A LOT about 3D printing and will continue to evolve printing skills.




Thank you for reading this far.  Please find many things to smile about.