Skip to main content

A Smarter Green Thumb Powered by Microchip

iot smart industry robot 4.0 agriculture concept,industrial agronomist,farmer using tablet to monitor, control the condition in vertical or indoor farm ,the data including Ph, Temp, Ic, humidity, co2

By Michael Parks for Mouser Electronics

In its 2017 Revision of World Population Prospects, the United Nations predicted that the world population will hit nearly ten billion around the year 2050, up from the almost 8,000,000,000 humans currently inhabiting the globe. If those projections hold true, our planet will soon feed another 2,000,000,000 mouths every day. Access to nutritious and affordable foods such as fruits, vegetables, and nuts will be key to a healthy population free from hunger. Thankfully, the human species has a few thousand years of experience with horticulture from which to draw lessons learned.

“Horticulture is defined . . . as the science that employs special techniques and methods to cultivate plants, including methods used to properly condition the soil for seed planting or planting tubers. The domain of horticulture includes cultivation, plant propagation, breeding of plants, production of crops, plant physiology as well as biochemistry and genetic engineering,” explains an article entitled the “Difference Between Agriculture and Horticulture” by DifferenceBetween.net. Put another way, the weekend warrior horticulturalists may engage in the art and science of gardening.

Advancements in sensor technology and associated embedded electronics has driven the costs down significantly. Now, even a part-time greenhouse gardener that possesses only a modicum of the “do-it-yourself” spirit can become empowered to remotely monitor his/her garden. This project will lay out a design for a device to do just that. The goal is to empower almost anyone with basic electronics and software skills with the ability to build this monitoring system.

Understanding Environment and Soil Quality

Regardless of whether one is a professional horticulturalist or amateur gardener, understanding the quality of the environment and the soil is necessary to make informed decisions that affect the quality, nutritional value, and yield of plant-based foods. Some of the crucial variables that must be monitored include:

Temperature

Extremely high and low temperatures can have adverse effects on the health of plants. High temperatures can cause an imbalance in the photosynthesis and respiration processes which can result in plant suffocation. Conversely, low temperatures can cause plant cells to freeze which inhibits a plant from getting nutrients.

Humidity

High relative humidity levels prevent a plant from evaporating water as part of its transpiration process. It can also prevent the plant from drawing nutrients from the soil. If these conditions are permitted to continue the plant could rot or suffer bacterial or mold infections.

Moisture Content

The amount of water in the soil must be kept at optimal levels for ideal plant growth. Too much water can result in root rot, which prevents the plant from extracting oxygen from the soil. Too little moisture and nutrients cannot circulate through the plant.

pH Level

If you recall from chemistry class the pH scale is a way to indicate the acidity or basicity of a substance. The scale ranges from 0.0 for acids such as lemon juice up to 14.0 for bases such as lye. A pH level of 7.0 is considered neutral. While the ideal pH level can vary from plant to plant, optimum pH levels for soil is between 5.5 and 7.0.

CO2 Level

Plants of all types absorb carbon dioxide (CO2) as part of the photosynthesis process in order to synthesize food from water and CO2. Oxygen, in turn, is given off as a byproduct. As with the other factors, too much or too little CO2 can have adverse effects on plant growth and health. As a reference, 250 to 350ppm is considered a normal concentration in an outdoor ambient environment. Indoor environments with decent air circulation should see a concentration from 350 to 1,000ppm.

Materials

This project design uses the Xplained board series from Microchip, which is ideal for rapid prototyping, along with a suite of sensors that will allow the system to monitor the five environmental factors outlined in the previous section. These sensors include the:

Bill of Materials

Table 1 lists the bill of materials (BOM). Alternatively, you can visit grab all the parts you need from the prebuilt shopping cart at Mouser. At the time of this publication, the BOM is about $240 USD.

Table 1: Bill of Materials.

Quantity

Mouser P/N

Description

Schematic P/N

1556-ATMEGA328PBXMINDevelopment Boards & Kits - AVR ATMeGA328PB Eval KitU1
1474-WRL-13678Wi-Fi Development Tools (802.11) WiFi Module ESP8266J5
1932-MIKROE-1978Temperature Sensor Development Tools Weather clickJ2
1485-4026STEmmA Soil Sensor - I2C Capacitive Moisture SensorJ1
1426-SEN0249Analog Spear Tip pH Sensor / Meter Kit (for Soil and Food Applications)J4
1426-SEN0219Analog IR CO2 SensorJ3
1854-ZW-MM-20Jumper Wires ZipWire MI-MI 20cm 40 UnzippWires x20cmN/A
1485-7574-Channel Bi Logic Level Eval BoardU2
1349-M1IOTPROTODevelopment Software 1 year subscription to the Medium One cloud environmentN/A

 

Resources

Computing Resources

Hardware Source Files

An Eagle™ computer-aided design (CAD) schematic and circuit board file are included in the GitHub Hardware folder for those who wish to remix the project to suit their individual needs. For makers, a free version of Eagle CAD can be found with a simple Google® search.

Software Files

The Microchip Xplained board is programmable using Atmel Studio 7. In addition to the prebuilt libraries that the parts vendors provide, the project will require four other files. The first is the firmware file that runs on the Microchip Xplained board. We will also create a header (.h) file to store any sensitive data such as passwords and application programming interface (API) keys, which are things one should avoid sharing with the entire world on GitHub®. Lastly, two library files will be necessary to allow the Xplained board to interact with the CO2 sensor. All four files will reside in the GitHub Software folder .

Images Files

Any visual image or screen captures of the schematic and 3D printer files will reside in this folder for those who don’t have access or who need to view the original source files.

Tools

Finally, we recommend having these tools on hand as you complete the project:

  • Wire strippers
  • Digital multimeter
  • Needle nose pliers

Overview

The sensor boards used in this project communicate back to the Xplained microcontroller board in two ways: By digitally utilizing the Inter-Integrated Circuit (I2C) serial communication protocol or via an analog signal that is read by the microcontroller’s analog-to-digital converter (ADC).

STEMMA Soil Moisture Sensor

Communicates via I2C. The sensor measures the capacitive difference between the two probes and reports and has an integer value from 300 to 500 based on the moisture content of the soil.

BME280 Temperature Sensor

Communicates via I2C. It reports a floating-point number with a unit of measure of degrees Celsius. The value is convertible to degrees Fahrenheit using the formula:

BME280 Humidity Sensor

Communicates via I2C. It reports a floating-point number with a unit of measure in the percentage of relative humidity.

SEN0249 Soil pH Sensor

The output of the sensor is an analog signal from 0 to 5VDC. The pH is a unitless measure that will range from 0 to 14. The formula to calculate the pH level is:

Voltage = ADC × (5V / 1,024)

where ADC is the value read by the microcontroller’s ADC pin connected to the pH sensor.

The formula assumes the microcontroller has a 5V operating voltage and 10-bit ADC. These numbers may require an adjustment if you use an alternative microcontroller with a different operating voltage and/or ADC resolution. Then calculate the pH level:

pH Value = (3.5 × Voltage) + Offset

The offset is a variable that is determined during the calibration process for the pH sensor. Note that this sensor must be recalibrated every two hours. Find more information on the calibration process on the DFRobot site.

MG-811 CO2 Sensor

The output of the sensor is an analog signal from 0 to 5VDC. The unit of measure is the concentration of CO2 in parts per million (ppm). The following formulas are used to translate the analog voltage value to a CO2 concentration in ppm:

Voltage = ADC × (5V / 1,024)

where ADC is the value read by the microcontroller’s ADC pin connected to the MG-811 COsensor.

The formula assumes the microcontroller has a 5V operating voltage and 10-bit ADC. These numbers may require an adjustment if you use an alternative microcontroller with a different operating voltage and/or ADC resolution. If the calculated voltage is less than 0.4V, then the sensor has not yet warmed up enough and no readings should occur at that time. Once the voltage rises above 0.4V, the following formula can be useful to make the final CO2 concentration calculation:

CO2 Concentration (ppm) = [ (Voltage − 0.4) × 5000 ] / 1.6

Building the Electronics

Assembling this project is straightforward (Figure 1). A small breadboard is useful, as there are two devices that require access to the I²C serial communications bus. The nice thing about development boards is they come with the required pull-up resistors for the I²C bus to work. However, if you make a custom printed circuit board (PCB) integrating these devices, remember the resistors on the serial data line (SDA) and serial clock line (SCL) wires. For more tips on I2C customizations check out Mouser’s Chip To Chip: Tips For Using I2C Bench Talk blog.

This wiring diagram illustrates all sensor connections in the plant health monitoring system.

 

Figure 1: This wiring diagram illustrates all sensor connections in the plant health monitoring system. (Source: Mouser)

STEMMA Soil Moisture Sensor

  1. Plug the 4-wire JST cable assembly into the JST connector on the signal transmitter board.
  2. Connect the Vin (red wire) pin of the sensor to the 5V rail of the breadboard.
  3. Connect the GND (black wire) pin of the sensor to the ground (GND) rail of the breadboard.
  4. Connect the SDA (white wire) pin of the sensor to the SDA pin of the Xplained board.
  5. Connect the SCL (green wire) pin of the sensor to the SCL pin of the Xplained board.

Mikro Weather Click BME280 Temperature and Humidity Sensor

  1. Solder a set of female headers to the Mikro Weather click sensor board.
  2. Place a wire from the 5V pin to the 5V rail of the breadboard.
  3. Place a wire from the GND pin to the GND rail of the breadboard.
  4. Connect the SDA pin of the sensor to the SDA pin of the Xplained board.
  5. Connect the SCL pin of the sensor to the SCL pin of the Xplained board.

SEN0249 Soil pH Sensor

  1. Plug the 3-wire JST cable assembly into the JST connector on the signal transmitter board.
  2. Connect the GND (black wire) pin of the signal transmitter board to the GND rail of the breadboard.
  3. Connect the +V (red wire) pin of the signal transmitter board to the 5V rail of the breadboard.
  4. Connect the analog output (blue wire) pin of the signal transmitter board to the A0 pin of the Xplained board.

Analog Infrared CO2 Sensor

  1. Plug the 3-wire JST cable assembly into the JST connector on the signal transmitter board.
  2. Connect the GND (black wire) pin of the signal transmitter board to the GND rail of the breadboard.
  3. Connect the +V (red wire) pin of the signal transmitter board to the 5V rail of the breadboard.
  4. Connect the analog output (blue wire) pin of the signal transmitter board to the A1 pin of the Xplained board.

SparkFun WiFi Module and Bidirectional Logic Converter Board

  1. Solder female headers to each side of the bidirectional converter board.
  2. Place a wire from the HV pin of the converter board to the 5V rail of the breadboard.
  3. Place a wire from the LV pin of the converter board to the 3V pin of the Xplained microcontroller board.
  4. Place a wire from the GND pin of the converter board to the GND rail of the breadboard.
  5. Place a wire from the PD2 pin of the microcontroller to the B1 pin of the converter board.
  6. Place a wire from the A1 pin of the converter board to the RX pin of the WiFi Module.
  7. Place a wire from the PD3 pin of the microcontroller to the B2 pin of the converter board.
  8. Place a wire from the A2 pin of the converter board to the TX pin of the WiFi Module
  9. Place a wire from the EN pin of the WiFi Module to an available 3.3v to enable the device. (Figure 2).
The schematic capture of plant health monitoring project provides an easy to follow outline of all the necessary connections.

 

Figure 2: The schematic capture of plant health monitoring project provides an easy to follow outline of all the necessary connections. (Source: Mouser)

Microchip Xplained Board

  1. Place a wire from the 5V pin to the 5V rail of the breadboard.
  2. Place a wire from the GND pin to the GND rail of the breadboard.
  3. Insert the micro USB cable into the micro USB port of the Xplained board.
  4. Insert the other end USB cable (Type-A port) into the USB port of a computer.

 

Software

In this section, we will detail the software side of the project. This will include the firmware and support files essential for the Microchip Xplained board as well as the setup of the Medium One sandbox in your Web browser. Be sure to download the latest version of Atmel Studio 7 (Figure 3).

Atmel Studio 7 is useful for firmware edits, project-specific needs, and for enhanced functionality such as debugging.

 

Figure 3: Atmel Studio 7 is useful for firmware edits, project-specific needs, and for enhanced functionality such as debugging. (Source: Mouser)

Setting up the Microchip Xplained Board Firmware

Project Files

Table 2 identifies the Microchip Xplained project files in this project’s GitHub repository:

Table 2: The Microchip Xplained project files, used for to create this project are outlined below.

File Name

Contents

sketch.cpp

The project specific code for this effort is stored in this file. It is based upon an example Medium One provides to demonstrate how embedded devices can interact with the Internet of Things (IoT) platform backend.

secretstuff.h

When working on a project that is made publicly available, there is always a risk of exposing sensitive data such as passwords or API keys. Instead of hardcoding such information directly into the firmware and having to remember to alter the code prior to each “git commit,” we can instead create an unpublished header file to store this information. Note that we have provided an example of the header file in the GitHub repository. The example is named mysecretstuff.h. Be sure to rename the file to secretstuff.h before attempting to compile the code on your computer.

co2_sensor.h

This is a custom header file written for interacting with the CO2 sensor. A header file is where the functions and variables are declared. The #include preprocessor directive is used to include this library in the main sketch.cpp file.

co2_sensor.cpp

The source code used to interact with the CO2 sensor is found in this file.

 

Libraries

The preprocessor directive #include lets us add libraries into our projects. This promotes code reuse; unless you have very specific needs, reinventing the wheel is not necessary. This project uses the following libraries:

  • <PubSubClient.h>: This library enables the use of the Medium One Message Queuing Telemetry Transport (MQTT) communications API. It handles a lot of the messy details for using the protocol by reducing our interaction to a series of function calls.
  • <WiFiEsp.h>: Microchip Xplained boards have onboard Wi-Fi to make interacting with web services in the cloud straightforward. This library contains all the code needed to interact with the Wi-Fi chipset.
  • <WiFiEspClient.h>: This will allow us to create a web client (Transmission Control Protocol [TCP]/Internet Protocol [IP] layer) that in turn can use the MQTT protocol to interact with the Medium One IoT web service (application layer).
  • <Wire.h>: The h library provides foundational code necessary to interact with the I2C hardware. The BME280 temperature/humidity sensor and the soil moisture sensor occur over the I2C serial communications protocol. Component-specific libraries will build upon this library to provide functionality for their respective parts.
  • <Adafruit_Sensor.h> and <Adafruit_BME280.h>: These libraries provide support functions essential to interact with the temperature/humidity sensor. These libraries are available for download here.
  • <Adafruit_seesaw.h>: This library provides functions to interact with the STEMMA soil moisture sensor. This library for this can be found here.
  • "SoftwareSerial.h": The h library allows for a software-based serial communication channel on any two general-purpose input/output (GPIO) pins (RX and TX). While not as fast as the hardware serial port, it does allow for separate serial channels for debugging and interacting with a Wi-Fi chipset.
  • "secretstuff.h": This header file contains sensitive information such as Wi-Fi passwords and the Medium One passwords and API keys. Notice that this header file is encapsulated by quotation marks and not < and > that the other header files utilize. This is because the secretstuff.h header file resides in our project-specific firmware folder and not in the header files library that all projects can use. This file location makes this header file only accessible to the project’s firmware.

Variables and Constants

These are variables you might want to tweak to accommodate your specific design choices:

  • static int heartbeat_timer = 0: A timer to ensure communication connectivity between the microcontroller and the Medium One sandbox dashboard even if a sensor fails.
  • static int sensor_timer = 0: A timer to track the length of time since the last packet of sensor telemetry was sent to the Medium One dashboard.
  • static int heartbeat_period = 60000: The amount of time, in microseconds, between heartbeat signals sent to the Medium One dashboard.
  • long lastReconnectAttempt = 0: The storage location of the timer value of when the last connection was made.
  • static int sensor_period = 5000: The interval between taking readings from the sensors.
  • const float vref = 5.0: The operating voltage of the microcontroller, which is an essential verification for analog-to-digital conversion calculations. This voltage may require an adjustment with use of a 3.3V operating voltage microcontroller.
  • const float phOffset = 0.0: The offset added to the pH calculation formula. This value is determined during the calibration process of the pH sensor.
  • const int phSensorPin = A0: The analog input (A0) pin to which the pH sensor connects.
  • const int co2SensorPin = A1: The analog input (A1) pin to which the CO2 sensor connects.

A quick note on the const and the static keywords:

Placing the const keyword in front of the variable type ensures that value will not change during execution. In effect, creating a constant instead of a variable. The advantage of const versus #define is that since the variable is declared with a type, the compiler ensures that the variable type is respected throughout the code.

The static keyword ensures that the value stored in the variable remains the same (unless specifically changed by the code), even as a functions call goes out of scope. When the function is called again later, the value that was held previously in the static variable will still be there, versus declaring and initiating the variable as if it was the first time the function was called.

Objects

  • SoftwareSerial soft(2, 3): This creates a software-defined serial port with microcontroller 2 pin serving as the RX pin and microcontroller 3 pin serving as the TX pin. (NOTE: You will need to change the baud rate in Sketch.cpp for soft.begin to 115200 in order to communicate with the ESP WiFi Module)
  • WiFiEspClient wifiClient: This provides an object that allows our code to interact with the onboard Wi-Fi chipset.
  • PubSubClient client(server, port, callback, wifiClient): This establishes the MQTT connection to Medium One and thus allows our code to interact with the web service via simple function calls.
  • Adafruit_BME280 bme: This creates an object to interact with the temperature and humidity sensor.
  • Adafruit_seesaw soilSensor: This creates an object to interact with the STEMMA soil moisture sensor.
  • co2_sensor co2sensor: This creates an object to interact with the CO2.

Functions

  • void setup(): This first function to run will initialize many of the hardware and software components required such as the serial communications, Wi-Fi connection, sensor interface, and interactions with the GPIO
  • void loop(): This is the core of the functionality that will run continuously. Care is taken to ensure the main loop has minimal code and that functionality is handed off to specialized functions that are each responsible for individual tasks needed to make this project work.
  • boolean connectMQTT(): This function connects the Microchip Xplained board to the Medium One MQTT server.
  • void sensor_loop(): This function handles polling the BME280 environmental sensor for temperature and pressure data and transmits it to the Medium One sandbox dashboard.
  • float getPHlevel(): This function requests the pH level from the pH sensor. A floating-point number (from 0.0 to 14.0) is returned.
  • void heartbeat_loop(): This loop provides a heartbeat to the Medium One server. A heartbeat is a consistently repeating packet that lets the server know that our device is still alive and able to communicate even if there is no data to pass. This is very useful for applications that only transmit data once an event occurs in the real world.

Setting Up Medium One

Medium One (Figure 4) provides IoT developers a platform for which their IoT devices can communicate and compile data sets from across multiple IoT devices. They provide an excellent tutorial on getting started with their service: Click here to learn more about Medium One.

In the Medium One sandbox, notice the data coming into the
            dashboard in the center. Passwords and API keys are accessible from the left-hand navigation bar

 

Figure 4: In the Medium One sandbox, notice the data coming into the dashboard in the center. Passwords and API keys are accessible from the left-hand navigation bar. (Source: Mouser)

The guide will focus on preventing the gotchas that we experienced in setting up the Microchip Xplained board to communicate with Medium One via their MQTT API. Our project will leverage Medium One’s MQTT protocol. MQTT is a publish-subscribe (pub/sub)-based messaging protocol. It sits atop the TCP/IP protocol. MQTT, as opposed to Representational State Transfer (RESTful) APIs, requires a centralized message broker. Thus, endpoint devices cannot directly communicate with each other. This has pros and cons. RESTful APIs rely on the client to always initiate communications, whereas MQTT allows a server to push data, thanks to the pub/sub architecture. RESTful devices can communicate with each other directly. MQTT relies on a centralized message broker (e.g., a server in the cloud).

To set up the Medium One sandbox:

  1. Create an account at https://www.medium.one by purchasing an inexpensive one-year license using part number 

    349-M1IOTPROTO.
  2. Create a new project at the top-right corner of their web-based user interface. Then, after the new project is activated:
  3. Note some crucial pieces of information that Medium One automatically generates for use in the firmware. Wpecifically, we will store this information in the secretstuff.h header file. The key pieces of information include:
    • Project ID: This alphanumeric string is a unique identifier assigned to this specific project. It lets Medium One know what project to direct the Microchip Xplained board environmental data to if we have multiple projects hosted with their web service.
    • API Key: This is an auto-generated alphanumeric string created to allow us to log in and use Medium One’s API services.
    • MQTT ID: The MQTT ID is an alphanumeric string generated by Medium One. It’s important to note that the Login ID is not the same as the MQTT ID. The Login ID is an end user created, human-readable string (for example, “janedoe”). The piece of information we need for the firmware is the MQTT ID and NOT the Login ID. This is important, considering each project can have multiple contributors.
    • User Password: This is created by each user when their account is established for the project. For security reasons, it is not displayed anywhere, so be sure to remember this password!
  4. Determine where these pieces of information are accessible from Medium One’s website:
    • Setup→Project Info: This will display the Project ID.
    • Setup→Manage Users: This is where the Login ID and the user’s MQTT ID can be found. Recall that it is the MQTT ID that is required for the firmware and not the Login ID.
    • Setup→Manage API Keys: This is where to find the API Key.
  5. Note two other key pieces of information that the firmware will require:
    • The Medium One MQTT server URL: mediumone.com
    • The TCP port, which will be either 61619 (unsecured) or 61620 (secured)
  6. Set up a dashboard to view the data received from the Microchip Xplained board. From the Dashboard screen:
    1. Select the Single User Real Time Events Stream widget option at the bottom-right corner of the screen.
    2. Select the user you want to view using the dropdown menu.

      This step should create a dashboard that listens for data. If a green play button is visible, then click it to begin listening. Otherwise, there will be a red pause button to pause the feed if necessary. If the dashboard works, then raw MQTT packets from the Microchip Xplained board should begin displaying in the browser.

    3. Ensure that the Microchip Xplained board is receiving power via a USB connection to a computer or via an alternating current (AC) outlet wall wart power supply.

Getting Started with Your Project

Before getting started, take time to do some testing and calibrating, and then start monitoring your horticulture project!

Check for Errors

Hook up the Xplained board to a computer and fire up a serial terminal. You should see telemetry from the various sensors flowing down the screen every few seconds. If not, check to see if there are any error messages. Some common errors include:

  • Reversing power and ground wires to sensors.
  • Reversing the data (SDA) and clock (SCL) wires to the sensors.
  • Not wiring the TX/RX pins correctly between the Xplained microcontroller board and the SparkFun WiFi Module (via the bidirectional logic converter board). The TX pin from one board should connect to the RX pin on the other board.
  • Not supplying 3V to the Low Voltage (LV) side of the bidirectional logic converter board. Not supplying 5V to the High Voltage (HV) side of the bidirectional logic converter board.
  • If powering the device, not ensuring the power supply can deliver at least 1A of current.

Calibrate the Sensors

Another very important point is the need to calibrate the sensors. Despite the best intentions of manufacturers, no two sensors that come off the assembly line are quite the same: Thus the need for the calibration process. One common method employs a potentiometer that can adjust the output signal to a prescribed voltage or current when a specific input signal is injected. Typically, the potentiometer influences the negative feedback loop of an operational amplifier, which is typical for a sensor device.

Calibration is not a one-time, upfront activity. Many sensors are affected by a phenomenon known as sensor drift. Over time, the operating environment or operating conditions can begin to affect the circuit and the output signal so much so that the same inputs will generate a different output over time. Left unchecked, the drift will become increasingly worse. Therefore, it’s crucial to remember that some devices, such as those used in industrial, agricultural, and horticultural applications, may have an expected service life that’s measured in decades. Ensuring that calibration occurs in line with the manufacturer’s prescribed manner and timeline is vital for safe and reliable system operations.

Create Charts

Once the data is flowing into the Medium One dashboard, it’s possible to use the data to create charts and other visualizations for quick, at-a-glance data analyses to ensure all parameters are within expected tolerances (Figure 5).

Raw data is great but visualizing the data in charts makes data easy to analyze and spot problems.

 

Raw data is great but visualizing the data in charts makes data easy to analyze and spot problems.

 

Figure 5: Raw data is great but visualizing the data in charts makes data easy to analyze and spot problems. (Source: Mouser)

Keep Designing

Here’s one last design idea: Since many of the factors here have a great effect on plant health and might require human intervention, it may be advisable to encode error condition flags and transmit those flags with the raw telemetry data. This design addition will require a two-byte packet to encode all possible error conditions, which will account for each sensor and whether high or low conditions exist, as shown below:

Byte 1

Temperature Sensor

Humidity Sensor

CO2 Sensor

pH Sensor

Temp Low

Temp High

Humidity Low

Humidity High

CO2

Low

CO2

High

pH

Low

pH

High

0

1

2

3

4

5

6

7

 LSb (least significant bit)

Byte 2

Moisture Sensor

Reserved Bits for Future Use

Moisture

Low

Moisture

High

      

8

9

10

11

12

13

14

15

MSb (most significant bit)

Placing a “1” in any of these flags will indicate an “error state” detection. For example, 0×0810 will indicate a high pH alert and a low moisture alert.

Conclusion

Whether you’re a seasoned gardener or just starting out, this project can provide you the means to create an ideal and efficient environment to cultivate plants for consumption or transplant. The sensors and IoT capabilities can help you monitor and makes changes as needed to help anyone have a green thumb.

Don’t forget to let us know if you tried this project out for yourself. How well did the project work for you? Would you expand upon it? If so, let us know on FacebookTwitter, or LinkedIn.

 

About the Author

Michael Parks, P.E. is the owner of Green Shoe Garage, a custom electronics design studio and technology consultancy located in Southern Maryland. He produces the S.T.E.A.M. Power podcast to help raise public awareness of technical and scientific matters. Michael is also a licensed Professional Engineer in the state of Maryland and holds a Master’s degree in systems engineering from Johns Hopkins University.

Profile Photo of Mike Parks