S16: Sprinkler
Contents
Grading Criteria
- How well is Software & Hardware Design described?
- How well can this report be used to reproduce this project?
- Code Quality
- Overall Report Quality:
- Software Block Diagrams
- Hardware Block Diagrams
- Schematic Quality
- Quality of technical challenges and solutions adopted.
Smart Sprinkler System
Abstract
Agriculture consumes the majority of freshwater in the United States, and with growing pressure to conserve water in the agriculture sector, people are looking for newer and better methods in water conservation. The objective of this project is to implement a residential irrigation system that utilizes IoT (Internet of Things) concepts to control and conserve water usage. The irrigation system consists of a microcontroller activates 24 VAC electrical valves to control the water flow of sprinkler devices. The project will consist of using one SJone board that act as an irrigation scheduler that dictates periodic activation of sprinkler devices. The scheduler obtains weather and forecast readings from the internet and use it to make changes (if any) to the scheduling of irrigation events. A relay circuit connected to the SJone board allows the scheduler to turn on/off sprinkler devices. Soil moisture sensors were deployed to local areas to send soil conditions of plants to the scheduler. In a scheduled event, the scheduler check the soil conditions of the local area and determine if it should activate sprinkler devices. The user involvement is to configure the scheduler to activate the sprinkler devices at which specific days and times, but once that is set, the scheduler became automated and acts on its own without requiring additional user’s involvement. The attractive function of the scheduler is that it behaves “smartly” by following a set of predefined rules.to control the irrigation system. For example, on a rainy day, the scheduler will delay or remove a scheduled irrigation event. By having a smart irrigation system in the home, the user will have an easier time saving and conserving water much more efficiently.
Objectives & Introduction
Show list of your objectives. This section includes the high level details of your project. You can write about the various sensors or peripherals you used to get your project completed.
Team Members & Responsibilities
- Phi Lam
- Scheduler Task
- Order hardware parts/ hose fittings
- Relay Circuit/Sprinkler Task
- Documentation/Diagrams
- Alejandro Reyna
- Relay Circuit/Sprinkler Task
- Moisture Sensor Task
- Hardware Setup
- Documentation/Diagrams
- Sang Nguyen
- WiFi Module Task
- Hardware Setup
- Documentation
Schedule
The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.
Week# | Start Date | End Date | Task | Status | Completion Date |
---|---|---|---|---|---|
1 | 04/03/2016 | 04/09/2016 | Project Idea confirm, ordering project parts | Complete | 04/11/2016 |
2 | 04/10/2016 | 04/16/2016 | Begin conceptual design of code and schematic | Complete | 04/16/2016 |
3 | 04/17/2016 | 04/23/2016 | Work on designing code for basic sprinkler system and set up physical sprinkler system. | Complete | 04/23/2016 |
4 | 04/24/2016 | 04/30/2016 | Enhance sprinkler system code to work with moisture sensor, refine the physical sprinkler system. | Complete | 04/30/2016 |
5 | 05/01/2016 | 05/07/2016 | Connect the sprinkler system to the internet | In process | 05/07/2016 |
6 | 05/08/2016 | 05/14/2016 | Finish internet connection and get a box to house the components, complete project | In process | 05/14/2016 |
7 | 05/14/2016 | 05/24/2016 | Debug and refine project and demo. | In process | 05/14/2016 |
Parts List & Cost
Relay Circuit
Item | Quantity | Cost | Comments |
---|---|---|---|
3 VDC Power Relay | 1 | $3.50 | Philmore 86-103 |
Transistor | 1 | $0.08 | NPN Bipolar P2222A |
24 VAC Transformer | 1 | $16.25 | |
24 VAC Electrical Valve | 1 | $12.97 |
Irrigation Materials (from Home Depot)
Item | Quantity | Cost | Comments |
---|---|---|---|
15 ft. Water Hose | 1 | $7.97 | |
Adapters, Fittings for Hose | 4 | $14.00 | |
Teflon Tape | 1 | $1.47 | |
Gear Drive Sprinkler | 1 | $7.97 |
Miscellaneous
Item | Quantity | Cost | Comments |
---|---|---|---|
Wifi Wireless Transceiver | 1 | $6.55 | ESP8266 ESP-01 |
Soil Moisture Sensor | 5 | $7.99 | |
25 ft. Cord Extension | 1 | $9.97 |
Design & Implementation
The Smart Sprinkler design was based on the idea that a normal sprinkler system would be enhanced to check the weather, and adjust its watering schedule. Also, the sprinkler would be aware of days that are meant for watering, if cities have water usage laws. A moisture sensor was added to further allow watering decisions to the sprinkler.
Hardware Design
The hardware components that were used were a SJOneBoard, an ESP8266 WiFi module, a 24 VAC solenoid valve, a 3v relay, and an analog soil moisture sensor. The relay, moisture sensor, and WiFi module were powered by the 3.3v and GND output pins of the SJOneBoard respectively.
Figure 1 above show the project's hardware system schematic. The SJone board control the relay through GPIO and a NPN transistor. The relay control the ON/OFF switch of the solenoid valve. The SJone board use the wifi module, ESP8266, to obtain data such as current time and weathers through the internet. The SJone board also use the soil moisture sensor to obtain soil moisture data from its physical settings.
Figure 2 on the left show what the transistor-relay-solenoid valve circuitry looks like upon receiving a low voltage level from a GPIO of SJone board. The base of the NPN transistor (B) received 0V which means the transistor is in cutoff mode - no current flows between the Collector (C) and Emitter (E) meaning an open circuit between C and E. The transistor is basically an open switch at the moment. This means that there is no current flow between from Terminal B to Terminal A of the relay, and so the coil in the relay is not energized. When the coil is at rest or not energized, the common (COM) pole by default connects to the Normally Closed (NC) terminal. Since one lead of the solenoid valve connects to the Normally Open (NO) terminal of the relay, an open circuit is present between the solenoid valve and its 24 VAC source, thus the sprinkler is deactivated.
Figure 3 on the left also shows the transistor-relay-solenoid valve circuitry, but this time with 3.3V being applied to the base of the transistor. This NPN transistor received high enough voltage to enter saturated mode - current flow from Collector to Emitter which resembles a short circuit. This means that there is also current flow from Terminal B to Terminal A of the relay that creates an electromagnetic field, which attracts a lever in the switch, causing COM to break contact from NC terminal and make contact with NO terminal. Now there is a complete circuit between the solenoid valve and its 24 VAC source, thus the sprinkler is activated.
Hardware Interface
The WiFi module was connected to the UART bus of the SJone board at pins 2.8 and 2.9. The communication works on a single read and single receive. The internet connection was needed to get current time, user schedule, and weather information.
- Pin 2.8 is the SJone's TX2 pin that connects to the ESP8266's RX pin to transfer data out out from SJone board to ESP8266.
- Pin 2.9 is the SJone's RX2 pin that connects to the ESP8266's TX pin to receive data in from ESP8266 to SJone board.
- Since ESP8266 can operate at 3.3V, its VCC connects to +3.3VDC of SJone board.
The 3V SPDT Relay was controlled by SJone's GPIO pin, 2.1. The pin would output 3.3v to trigger the relay circuit to turn on the sprinkler. A NPN transistor was used to act as a switch to control current flow from Terminal B to Terminal A to energized/de-energized the coil in the relay module.
- Pin 2.1 is SJone's output GPIO pin that connects to the base (B) of the PN2222A transistor. A current-limiting resistor is placed between the connection.
- The Collector (C) is the positive lead of PN2222A that connects to Terminal A of the relay.
- Since the relay is 3V sensitive, its Terminal B connects to +3.3VDC of SJone board.
- The Emitter (E) is the negative lead of PN2222A that connects to the GND of SJone board.
The Solenoid Valve was controlled by the 3V SPDT Relay module, which connects/disconnects the Solenoid Valve from the 24 VAC source.
- One lead of the Solenoid Valve connects to Terminal COM (Common) of the relay. The COM terminal is connected to Terminal NC (Normally Closed) when the relay's coil is not energized.
- The other solenoid lead connect to one end of the 24 VAC source, which the other end of 24 VAC source connect to the Terminal NO (Normally Open) of the relay. When the relay's coil is energized ( current flow from Terminal B to Terminal A), Terminal COM connects to Terminal NO of the relay.
The moisture sensor was used to read the levels of moisture in the lawn, where the sprinkler would be utilized. The sensor was connected to Pin 1.30 of the board.
Software Design
Tasks Communications
The overall software design of the system used several tasks to accomplish its objective. Below are descriptions of each task and its responsibility.
The Figure 4 above shows what data are transferred between tasks at the top level. The Irrigation Scheduler Task is the main task that dictates and controls the overall system by providing instruction to other tasks. For example, the Irrigation Scheduler Task send command codes that instruct the ESP8266 Task to perform certain functions such as connecting to wifi and obtain current time or weather data. The Irrigation Scheduler also instruct the Sprinkler Task to activate the sprinkler device for certain amount of minutes. Finally, when the scheduler need to obtain soil moisture reading, it instruct the Soil Moisture Sensor Task to take readings from its sensor. After completing its work, each task, excluding the scheduler, update event bits to notify the scheduler of their status.
Event Group
An event group was used to convey status of tasks and help with syncing the scheduler with other tasks. The scheduler test certain bits value to see which events are active or which tasks has completed its work. Upon sending a command to a task, the scheduler entered a Blocked state to wait for a specified bit or group of bits to be set. By doing this, the scheduler transition into a Blocked state in order to not consume any processing time and allow other lower priority tasks to run. For example, after the scheduler send a command code to the ESP8266 Task, it wait for Bit 0 to be set. By doing this, the scheduler wait until the ESP8266 Task finished doing work. After Bit 0 is set, the scheduler knows that the current time and weather data are updated to its newest value and could proceed further on to the next step.
As mentioned above, the ESP8266, Soil Moisture Sensor Task, and Sprinkler Task modifies the event bits to notify the scheduler of its status. Below is the table describing the meaning of each event group bits and which task are responsible for modifying the bit.
Table: Event Group Bits
Bit# | Description | State 0 | State 1 |
---|---|---|---|
0 | ESP8266 Task: is it finish doing work? | In Process | Done |
1 | ESP8266 Task: any wifi error from command code?? | No Error / Successful transaction | Error |
2 | Moisture Sensor Task: is it finish doing work? | In Process | Done |
3 | Moisture Sensor Task: what is the soil moisture level? | Soil moisture level is wet / No need to water. | Soil moisture level is dry / Need to water. |
4 | Sprinkler Task: is it finish doing work? | In Process | Done |
5 | Sprinker Task: is the sprinkler device turned on? | Device is off | Device is on |
Scheduler Task
The goal of the Scheduler Task is to control and dictate when and if the water sprinkler should be activated. The scheduler take the role of the master task that provide instruction to other lower-tier class to perform certain functions. From Figure 5, the flowchart diagram show the the steps the scheduler performs to determine if there were conditions met to activate of the water sprinkler. After connecting to the WiFi, the scheduler obtain current time and user schedule and use those time value to determine if it's time to turn on the sprinkler based on the user scheduler. If the current time is not met with the user schedule time, the scheduler sleeps for the remaining time. If it is determined that the user schedule time is met, the scheduler get updated values of weather data and soil moisture data and use those value to smartly determine if activation of water sprinkler is required. The scheduler repeat the same procedure in a loop, defining its useful automative feature.
ESP8266 Task
The goal of the ESP8266 Task is to process the command code provided by the scheduler and send the command over UART interface to control the ESP8266 Wifi Module. This task control the WiFi module through AT+<x> commands, where <x> is the parameter that define certain functions such as joining an access point, creating TCP connection to server, send data, etc. For each command sent over to the WiFi module, the WiFi provide a response back of the query status or data depending on which type of commands used. The main usage of the ESP8266 task is to obtain such data including weather data, current time-stamp of location, and user's schedule through webservice API calls from Thingspeak and weather station.
Soil Moisture Sensor Task
Sprinkler Task
Schedule Time
7:30 PM
Implementation
Flow chart
Testing & Technical Challenges
Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.
Include sub-sections that list out a problem and solution, such as:
Technical Challenges
Getting Proper Hose Fittings
Since our group didn’t have any hoses already installed at our own place, we have to buy the necessary parts from scratch to setup a proper water hose. This is a challenge for us since we didn’t have any mechanical background regarding fitting hoses. It is recommended to consult with experts first before buying any parts. We suggest going to Home Depot to consult with their experts and get the necessary parts there. There are many variations of hose fittings: depending on what parts you already have and which part you started building with. For us, we started with a solenoid valve and proceed from there in getting parts that satisfy the valve’s requirement. Here are the steps we took to complete a water hose setup:
- Started with the solenoid valve, obtain 2 set of water hoses to attach to both end of the valve. Obtain any adapters/fittings to connect both end of the valve to hoses if required.
- Obtain a water sprinkler device to connect to one end of a water hose. Obtain any adapters/fittings to connect the sprinkler device to a water hose.
- Make sure the other end of the water hose fit with the water faucet that is used as the water source for your project. Obtain any adapters/fittings if required.
Water Leakage
After buying all the necessary parts to fit the water hoses with the electrical valve, sprinkler device, and water faucet, it was time to connect all these parts together and test out the connections. There were issues encountered with water leaking out from a few connecting joints due to combination of loose fittings and high water pressure. Attempts to resolve this particular issue include using PTFE tapes or thread seal tapes to ensure a tighter fittings on the adapters. Other precautions were made including isolating electrical components away from possible contacts to leaking waters.
Challenges with the WiFi Module
- Coding the Wifi Module proved alot more daunting than originally expected. At first, there was issues with the device not being powered properly. This part was resolved by routing all the pins that weren't being used to 3.3v.
- The second challenge was establishing a communication. the receive data was checked before it was available and the timeouts had to be adjusted.
- Once the Wifi Module was working, there is another challenge in reading data from a webpage. Parsing the data was a hassle because the original websites that were checked for weather werent formatted nicely. Once this was debugged, the information was successfully parsed, the weather data was sent to the irrigation scheduler.
- Attempts to connect the wifi module to SJSU's campus wifi (SJSU_premier) proved to be challenging. SJSU_premier uses WPA2 Enterprise and Protected EAP (PEAP) for user authentications, and since the ESP8266 wifi module doesn't support these configurations, another workaround was used to connect the ESP8266 to the access point when working on SJSU campus. Alternatively, wifi-hotspot was created by using PDAnet and Connectify softwares, which can serve as the access point for ESP8266 to connect to the internet.
My Issue #1
Tasks not waking up after sleep
Conclusion
Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?
Project Video
Upload a video of your project and post the link here.
Project Source Code
References
Acknowledgement
We would like to thank Preetpal Kang, Dr. Ozemeck and all the fellow engineering students who helped out with this project, both with their educational and moral support.
References Used
List any references used in project.
SJ One Board LPC 1758 Schematics http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf
LPC176x/5x User Manual http://www.nxp.com/documents/user_manual/UM10360.pdf
WiFi Wireless Transceiver ESP8266 https://nurdspace.nl/images/e/e0/ESP8266_Specifications_English.pdf
3 VDC Power Relay http://www.philmore-datak.com/mc/Page%20266.pdf
NPN P2222A Transistor http://www.jameco.com/Jameco/Products/ProdDS/178511.pdf
Appendix
You can list the references you used.