The first two steps of the design process (e.g. “ASK” + “RESEARCH) are considered your Final Project Proposal. In your proposal, you will write a Design Brief, identifying and describing the background and nature of a real-world problem, its stakeholders and their needs and wants, as well translating those into measurable requirements for the form and function of a solution. Explain how your Design Brief and the nature of your problem are relevant to your own needs, wants, interests and curiosities. Then, develop adequate research for understanding the problem, gathering resources and acquiring skills that will help you in completing the rest of the design process. A rubric for evaluation is provided at the bottom of the syllabus.
This project is of interest to me personally because:
I built and coded a micro:bit weather station several years ago. I also worked on a small soil tester for a hydroponics project. I want to update and expand the capabilities of my initial design by adding additional sensors and data recording abilities. I also want to try using Bluetooth or a WiFi shield so the data can be collected somewhere other than the local device and can be shared with others in some easy fashion. I haven't ever built an IoT device and this is a great opportunity to explore this technology.
I have never had the opportunity to do a project with this kind of complexity with my tween and teen makers. My hope is to find a small group that will want to replicate my prototype and use it to monitor locations at our local community garden at the library as well as in the vegetable garden at a local day camp. This data can be used by the local Garden Club and day camp staff to track changes in the gardens and share that with the community during the growing season. Not only will this give students the opportunity to explore coding and microcontrollers, but it's also a great way to share what they have made with the community. As I explained in my Impacts of Maker Education paper, this kind of complex, hands-on, problem-solving project that addressed a real-world problem build agency and empowerment. It also addresses the Keychain Syndrome that many of my out-of-school programs suffer., because this project will take some time to complete and will, hopefully, create a small group of active young makers interested in growing their coding and electronics skills.
On a personal note, I am interested in using this technology in my own greenhouse and garden at home, so I'm motivated to explore the technology for home use as well.
Background Scenario:
As a long-time gardener, I know how important it can be to know the growing conditions of your plants. Did today's heat dry out my container plants? Is the soil warm enough to transplant my tomatoes? Are my berries getting enough sunlight to produce? We can answer these questions through qualitative observations: Walk out to the garden and stick your finger into the dirt. If it's dry, water the plants.
But as a scientist, I know the power of regularly collecting quantitative data. This kind of information can help you detect trends, make strong predictions, and head off problems before they occur. For example if, day after day, your berry patch is getting less than 6 hours of direct sunlight each day because a nearby tree has grown, it may be time to make some changes to the garden. Things can change quickly in a garden in summer, and the sooner a problem is identified, the better the harvest will be.
This kind of data collection can be even more useful for community projects, where there may not be someone available to check on the tomatoes as frequently. At locations like the native pollinator garden at my local library or the vegetable gardens at the local day camp, sometimes the plants get deprioritized when things get busy. In this scenario, a computer can become a gardener too, collecting information all day without interruption and sending the information to the busy humans, alerting them to any problems. With an interface that allows the gardeners to check in on the conditions in the garden from anywhere, we can combine technology with good old-fashioned agriculture to increase vegetable production and the health of our native pollinators.
By planning a project that eventually becomes a workshop for local teens, we have additional benefits. Combining the local garden club, primarily composed of retirees who have been gardening for many years, with young makers interested in technology who may never have actually gardened before may create important community connections that can inspire more projects. Plus, involving our young makers in a project that has tangible benefits to community locations can build confidence and empower them to pursue coding, electronics, and technology through their own inventions. Lastly, the library and camp benefit by having a new educational tool and project to share with the wider community, which will hopefully inspire others to attend programs hosted at those locations and get involved in these community spaces. In the future, we may be able to expand the project to share data with local meteorologists or our Cooperative Extension.
Requirements:
The unit must have sensors to accurately record, air temperature in Farenheight, air humidity, soil humidity, and the intensity of the light.
If possible measure the pH of the soil as well.
The sensors must provide data that is useful and appropriate for determining the health of the plants in a greenhouse or outdoors.
The data from the sensors must be displayed so that it can be checked regularly.
There must be a way to safely power the microcontroller.
There must be a way to protect the microcontroller from the elements.
The protection must make the microcontroller appropriately easy to access for users if repairs are needed.
Constraints:
Time - The unit should be able to be coded and tested in approximately 10-15 hours of time.
Materials - Plants tested should be commonly available garden plants and/or seedlings in potting soil. Whenever possible recycled or upcycled materials should be utilized for the housing of the unit.
People - The unit should be able to be coded and used by a beginner.
Tools/Machines - The unit should use an easily available microcontroller and sensors. The unit should be able to be programmed with a common laptop or computer using free and easily accessible software.
Budget - The cost of the project should be under $50, including shipping. Free materials should be used whenever possible.
Energy - The unit should function on 5-6V so that a common USB mini cord and wall plug can provide power to the unit.
Information - Open source guides and educational materials provided by reliable sources should guide the development of the project. If needed, experts, such as friends who are computer scientists, may be consulted.
When thinking about the project, I knew I wanted to be able to monitor key factors that affect plant growth, especially for seedlings: soil moisture, temperature, humidity and light. I was also interested in measuring, pH as some of the plants I grow can be very affected by this. I knew this was going to be harder, because standard pH meters are meant for liquids, and getting or making a soil pH meter looks like it could be a challenge based on what I had read. My biggest concern though was that the light sensor may not give me the information I really needed to know if my plants were getting the right intensity of light and enough light over the course of the day.
As a result, I initially want to find a system that could record and store data, so that I could track light over the course of the day. However, upon consultation with Lauren I realized that that was going to have to be a phase 2 part of development. I wouldn't likely have time to get that working with the tools I had available.
I also initially wanted to have a way to visualize the data over time and then send that data to my computer or phone, so that I could check it anywhere. Again, though, with the time and resources available, I realized that this would have to be phase 3. There are ways to add WiFi or Bluetooth to the various controllers I was considering, but in each case, they needed specialized parts, additional coding and additional testing.
I wanted to get a pH sensor as well, but due to supply chain issues, they were out of stock everywhere. I did some research on using the voltage measurements across the soil to measure pH. I order a few inexpensive voltage divider sensors to test. Though this was an optional part of the project I had hoped to get it working. I did considerable research on the math involved. In retrospect, I think I should have spent less time on this aspect of the project. I eventually had to cut it completely.
Supporting Citations/Literature
Clapp, E. P., Ross, J., Ryan, J. O., & Tishman, S. (2017). Maker-centered learning: Empowering young people to shape their worlds. Jossey-Bass.
Harvey, M., Mokros, J., Sagrans, J., & Voyer, C. (2020). What makes them tick? Middle School data science explorations of ticks and lyme disease. NSTA. Retrieved April 5, 2022, from https://www.nsta.org/connected-science-learning/connected-science-learning-july-september-2020/what-makes-them-tick
McNeill, B., Koch, K. R., & Turnquist, B. (2020). Growing stem learning opportunities with agriculture. NSTA. Retrieved April 5, 2022, from https://www.nsta.org/connected-science-learning/connected-science-learning-october-december-2020/growing-stem-learning
Mijailović, Đ., Đorđević, A., Stefanovic, M., Vidojević, D., Gazizulina, A., & Projović, D. (2021). A cloud-based with microcontroller platforms system designed to educate students within digitalization and the industry 4.0 paradigm. Sustainability, 13(22), 12396. https://doi.org/10.3390/su132212396
Research & Investigation
micro:climate Kit Experiment Guide, Sparkfun, https://learn.sparkfun.com/tutorials/microclimate-kit-experiment-guide/about-the-weatherbit
Using micro:bit to Monitor Hydroponics, Kaleidoscope Enrichment, https://www.kaleidoscopeenrichment.com/using-microbit-to-monitor-hydroponics/
Build your own weather station, Raspberry pi, https://projects.raspberrypi.org/en/projects/build-your-own-weather-station
RPi - IoT Weather Station, Instructables, https://www.instructables.com/RPi-IoT-Weather-Station/
Raspberry Pi Plant Pot Moisture Sensor with Email Notification Tutorial, The pi Hut, https://thepihut.com/blogs/raspberry-pi-tutorials/raspberry-pi-plant-pot-moisture-sensor-with-email-notification-tutorial
DIY Plant Moisture Sensor W/ Arduino, Instructables, https://www.instructables.com/Plant-Moisture-Sensor-W-Arduino/
IoT System To Monitor Soil Moisture With Arduino, Arduino, https://create.arduino.cc/projecthub/jfrankie/iot-system-to-monitor-soil-moisture-with-arduino-5e370c
IoT Moisture Sensor, Arduino, https://create.arduino.cc/projecthub/buddhimaan/iot-moisture-sensor-788327
Plant Monitoring System using AWS IoT, hackster.io, https://www.hackster.io/carmelito/plant-monitoring-system-using-aws-iot-6cb054
seeed studio, Grove sensors, https://wiki.seeedstudio.com/Sensor/
I test a few power sources before settling on a fairly old-fashion wall plug. Rechargeable battery packs would continuously power the system, so that was eliminated. I considered my solar powered generator that I use for camping, but getting the voltage right was challenging and cloudy days meant the system wasn't powered as consistently as I'd like. I settled on an outdoor extension cord, a wall plug and a long USB mini cable, with electrical tape to protect from water.
The first consideration for me was to determine the best microcontroller technology for this project. I considered micro:bit, Raspberry Pi and Arduino.
I’ve previously worked with micro:bit to make a weather station. Though the project worked well, it needed many “add ons” and additional sensors to create a working station. This made housing the materials more challenging. I also have found the accuracy of the micro:bit temperature sensors to be highly variable.
I next considered the Rasberry Pi, which is commonly used for such projects. The particularly attractive aspect of the Raspberry Pi was the relative ease of connecting the microcontroller to add to the Internet of Things, which would make it easy to later send data from the controller to my computer or phone. Though I had one older version on hand, I didn’t have many of the sensors I’d need. Since sensors and all electronics are challenging to get right now with supply chain issues, I wanted something that had all the necessary components onboard.
For that, I turned to the Seeed Grove Beginners Kit. This uses an Arduino Uno and has sensors embedded on an easy-to-use board. This made the controller very attractive for use because I wouldn’t need to get a lot of additional parts. I’ve used Arduino before, but not in a significant way. I wanted to build my skills with the language. Additionally, I have several of the units available which made testing easy. Plus, when I scale this to a library program, I’ll have everything I need, without a large capital investment.
Selecting the Arduino kit was desirable in an intended way of being easily available and free so it met my budget. It also included all the sensors built-in. An undesirable but intended effect was that I was basically stuck with what was on the board and in the kit. As it turned out in some cases the basic sensors were not up to the task I had planned. This was most notable with the light sensor. Similarly, I needed to order an additional soil moisture sensor. I knew this from the start, as one was not included, but it was an added expense and delayed the project due to supply chain issues. A desirable but unintended effect was that the OLED board included the kit was more up to the task than I expected. After learning more about the u8x8 library and what the board could display, I found I didn't need an additional display to make the kit useful. It's a bit on the small side, but I was able to read it easily. I really thought I'd need to get a larger OLED and was happy I didn't have to spend extra on that or figure out the best ways to attach it. An undesirable but unintended effect was the power supply issue. I thought I'd be able to power the system using a battery pack, like you might to recharge a phone. But it wouldn't stay on, because the Arduino didn't draw enough power to read as "charging." So I couldn't use the battery pack I'd intended. This meant I did most of my testing attach to my laptop. Eventually, I was able to figure out a system using an extension cord wall plug and USB cable, but it isn't elegant or neat.
Once I decided on using the Arduino, I found an appropriate coding course provided for free by Seeed. These ten projects gave me a solid introduction to both the coding environment as well as the inputs, outputs, and functionality of the kit. After completing the activities I felt ready to adapt what I’d learned to the project I planned. I also researched each of the sensors I planned to use in the Wiki provided by the company. I felt I could build a basic unit using what was included in the kit, for the most part.
OLED Display
128×64 dot resolution High brightness,self-emission and high contrast ratio Big screen on a compact design Low power consumption. To use this display you must install the U8g2 library.
Soil Moisture Sensor
The soil moisture sensor consists of two probes that allow the current to pass through the soil and then obtain resistance values to measure soil moisture content. It can be used to decide if the plants in a garden need watering. It provides an analog signal that can be easily read.
Temperature and Humidity Sensor
This sensor uses the IC2 (Inter-Integrated Circuit) protocol signal. This allows multiple circuits to communicate with one another over a short distance. This allows the controller to access each of the sensors (temperature and humidity) using the same pin. The Grove Temperature and Humidity Sensor(DHT11) must be installed to use these sensors.
Light Sensor
The light sensor contains a photosensitive resistor to measure the intensity of light at 540 nm. The resistance of the photosensitive resistor decreases with the increase of light intensity. The LED will light up if the surrounding is dark, and stays off if the surrounding is bright. Unfortunately, this sensor ONLY measures intensity and cannot be easily adjusted to lumens or lux.
Seeeduino Lotus
Seeeduino Lotus is an ATMEGA328 Microcontroller development board. It is a combination of Seeeduino and Base Shield. Seeeduino Lotus has 14 digital input/outputs (6 of which can output PWM) and 7 analog input/outputs, a micro USB connection, an ICSP header, 12 Grove connections, a reset button.
Arduino IDE
The controller is coded using the Arduino IDE. Arduino IDE is an integrated development environment for Arduino, which is used for single-chip microcomputer software programming, downloading, testing and so on.
Putting things together was fairly easy. This was of course one of the desirable things about using the seed Grove Arduino Beginners kit. I did have to attach the soil moisture sensor to the board. It was important to make sure that an analog not a digital pin was used. I attached it to pin A0 for simplicity. Everything else was on the board itself.
For the coding I needed to ensure that all the correct libraries were called, all the variables initialized, and the correct pins read for each of the sensors. One fo the most challenging things was getting all the data to display properly on the OLED screen. The screen displays text based on a coordinate system, so it took some trial and error to select the best font for clear viewing and the right y-coordindtes to ensure all the lines of text are displayed properly.
I also encoded the if-then-else conditionals for the moisture level and the light level to denote is they were in the desirable range for the plants. These parameters were based on testing which I will cover in the next section.
The temperature sensor automatically produced a temperature in Celcius. So I looked up how to translate that to Farenheight. The Formula is F = (C * 1.8) + 32. This took several tries because I wasn't initializing the variable. But once I initialized the variable to 0, the calculation worked and I was able to display the temperature in Farenheight.
Each of the sensors was tested against standard meters to ensure that they were calibrated and giving useful readings.
The Temperature sensor was tested against several thermometers including a quick read kitchen thermometer, a standard alcohol lab thermometer, an old weather stationm and a micro:bit. The microbit proved to be the "odd man out. It produced a reading as much as 4 degrees different from the Arduino. However, all the other readings came within one degree, plus or minus. I considered that acceptable accuracy for this project.
I used the weather station to test the humidity as well. This varied by as much as 2% plus or minute, but again I felt that was acceptable for this project.
To test the soil moisture sensor, I compared the numerical readings to the reading given by a standard analog garden meter, purchased at Lowes. I also referred to the documentation for the sensor. The documentation stated that readings of 0-300 indicated dry soil, 300-700 were humid soil and 700-950 were water. In my experiments, I tested the Arduino sensor and the standard garden sensor on several houseplants both before and after watering, on a pot of dry potting soil and on a cup of water. I found that my reading mated what the documentation suggested in all but one test. In one test of a houseplant that had not been watered the standard garden meter read "Dry" but the Arduino sensor read 649. I believe the sensor may have damaged a root and was giving an abnormally high moisture reading. Either way, I decided that was an anomoly.
The light sensor proved to be the least reliable. I tested the Arduino sensor against the standard garden meter. The garden meter measure light un Lux. Lux is a measure of illuminance, the total amount of light that falls on a surface. The standard garden meter provides values from 0 to 2000. In my office, it read at about 100. Early in the morning just before sunrise, it was a 0. On a cloudy day, it read at about 650. In full shade, it read 700. In partial share, 900. And in full sun over 2000.
The results from the Arduino sensor were much different. The sensor uses an photoresistor to simply detect whether a light is on or off and compare relative light levels. I found that regardless of the sun level, I got a reading of around 750. Inside the reading was 360. And early in the morning before the sun was fully risen, I got a reading of 230. So this sensor wasn't going to be able to tell me if my plants were experiencing full sun or a cloudy day. It read both basically the same. This may be because it tracks a fairly narrow wavelength of light, 540 nm. That's a great wavelength for photosynthesis, but the accuracy overall just wasn't what I'd hoped. However, it should let me know when the sun comes up and when it goes down. So Once I figure out how to track and store data, I'll be able to calculate the number of hours of sunlight in the greenhouse, which is very useful. I can also consider ordering a new light sensor, as Seeed does make both a digital sensor and a sunlight sensor that may give me more information.
I did test the voltage sensor to see if I could get a pH reading. However, after trying several different types of metals as probes and various calculations I just coudnt't get it to work reliably. My research showed that the voltage needed to be measured in millivots to be able to calculate the pH. But this sensor read between 0-25 V. At the end of the day it just wans;t sensitive enough for my needs.
Measure light indoors
Measuring light outdoors
Testing temperature and humidity
Testing soil moisture
Attempting a pH meter
pH meter reading don't work
So my biggest disappointment was the light sensor. That will be the first thing I address. I want to get an improved sensor that can tell me the intensity and wavelength of the light. I also want to find a way to store the light intensity over time so that I can track how much sunlight my plants are getting during the day.
I may also look at adding another temperature sensor so that I can check soil temperature as well. This will let me plan optimal planting times. That would have been a bigger priority for me earlier in the season, but as we get towards summer it's less of a concern. However, I want to use the system for many years to come, so it makes sense to keep developing it.
I also want to continue to work on a pH meter. I think if I find the right voltage sensor I can make it work.
I plan to incorporate the Grove Wio Terminal into the unit so that I have a bigger screen for viewing. This device will also allow me to send the information via WiFi or Bluetooth to the internet. That way I can monitor my plants from anywhere. That's going to be another learning curve though, since the device is basically a modified Raspberry Pi and I'll need to brush off my Python skill to code it.
I did not really get to the point of developing a good case for the system. Basically, I intend to put it in a takeout container with holes drilled as needed.
I learned that I tend to go down rabbit holes when I get an interesting problem. I spent too much time working on the pH sensor rather than focusing on my primary objectives for the project. I have to budget my time better on future projects and stick to the most important goals, not just the ones I find most interesting.
I also found that, despite encouraging my students to document their work well, I am not always good about doing that in the moment. I'm fine when I want to take pictures of a step-by-step project I've prototyped a few times, but taking pictures along the way was tough for me. However, it proved really useful, especially in collecting data for this project. It's really motivated me to grab my camera and take pictures more frequently when I'm working on projects for work.
More than that it got me coding again and I'm feeling really inspired by that. I have so many projects that really needed a more robust programming language, but I haven't used anything except Scratch or MakeCode lately. Now I'm excited not only to explore Arduino for my own project, but to share it with kids.