Background on technical topics:
ArduinoThe Arduino boards are microcontrollers that can be programmed to respond to sensory or digital input with a variety of actions. They can also be used as a programmable power source or control system, which is the function utilized in PlantParent. The default language used to program an Arduino board is Wiring (click for official Wiring website), which bears significant similarities to C and C++.
For this project, we are using an Arduino Uno R3, which you can purchase at the Arduino website.
To get started with an Arduino product, first download and install the software from the official website, then check out the official guide.
Electronics BreadboardsElectronics breadboards - or solderless breadboards - are bases often used for constructing prototypes of electrical circuits without soldering connections. Typically a breadboard will have rows of metal strips (called terminal strips) underneath plastic holes, with clips that allow the user to insert wires and other circuit components into the metal. Anything inserted into a terminal strip is electrically connected to everything else inserted into the same strip.
Breadboards also typically have vertical power rails running along both sides, with the same metal anatomy underneath, which allows for easy access to the power source from any part of the circuit.
To learn more about breadboards, check out this introduction and basic tutorial from SparkFun, a well-known electronics store that provides comprehensive online tutorials and classes on electrical topics.
QtQt is an industry-standard application development framework that allows users to create custom cross-platform applications (accessible from desktop and mobile devices) and accompanying graphical user interfaces (GUIs). Like Arduino, its programming language bears strong resemblances to C++, but the code editor can also process certain other languages and a wealth of additional features. Qt is a powerful framework in the hands of the most advanced programmers, while maintaining a level of complexity simple enough for a beginner to pick up.
For a free download with basic functionality, go to the Qt download page and choose the Community license. After installing, check out the complete Qt documentation, which includes getting started guides and examples & tutorials.
Relays are electromagnetic switches capable of controlling a high-power circuit with a low-power signal; in this project, a five-pin relay is used to control a 120 V AC circuit (an aquarium pump plugged into a wall outlet) with a 5 V DC output (the Arduino board's maximum power output). The basic premise of a relay's function is the generation of a small magnetic field by putting current through a coil inside the relay: this magnetic field, when energized, causes the switch to close and complete the circuit. For an explanation of this concept with pictures, check out this introduction to electrical relays written by Kevin R. Sullivan, Professor of Automotive Technology at Skyline College.
Tutorials & Resources
This is a list of tutorials, websites, and other resources that we found particularly helpful either in designing PlantParent, or getting ourselves acquainted with the necessary technical skills.
- Instructables.com - a DIY makerspace where users from all over the world can share their projects and ideas. Some of these walkthrough tutorials aided us greatly in understanding the basic structure of what an Arduino-controlled watering system might look like.
- Arduino Automatic Watering System 1 - The relevant part here was the structure of the code at the end.
- Arduino Automatic Watering System 2 - This helped us develop the concept of relaying the Arduino's 5V DC output to an aquarium pump's 120V AC input.
- 123D Circuits is a free web-based tool by Autodesk that allows users to prototype electronic projects online, using virtual components that include breadboards, programmable Arduino boards, LEDs, customizable resistors, and much more.
- Vannevar Morgan has a 4-part Qt-Arduino RGB LED Controller tutorial on YouTube that provided the basis for our application's serial port communication between computer and Arduino. This tutorial also provides a lot of useful background on how to utilize the tools available from Qt.
- Part 1: Programming the Arduino
- Part 2: Creating the GUI
- Part 3: Setting up QSerialPort
- Part 4: Final Code & Integration
- The Sunfounder Universal Kit for Arduino - the starter breadboard kit we purchased for this project. This includes a pretty comprehensive set of electronics materials, as well as a 29-paged tutorial booklet and micro DVD with source code, videos, and interactive circuit diagrams.
- The circuit diagrams on this DVD can be opened through the free circuit prototyping program Fritzing.