# The Design and Deployment of an End-To-End IoT Infrastructure for the Natural Environment
## 4 Design and Deployment
### Node Technology
#### 4.2.1 Fixed Nodes (Soil)  
For both the fixed and mobile nodes, we used Arduino technology as the basis of our solution. We made this choice after examining a wide range of IoT platforms, including commercial off-the-shelf solutions. Our choice here was motivated by three major concerns: (i) The environmental scientists wanted a large range of sensing options, including custom-built sensory inputs; (ii) we needed a common technology that could support both fixed and mobile nodes working in the same network; and (iii) we were limited in our equipment budget. Looking at other technologies, IoT solutions tend either to be too specific in their application domains, lacking the crucial configurability that we needed; to lack support for both fixed and mobile technology in a common network; or to come in at a higher price point per node than we could afford. We, therefore, settled on Arduino-based nodes  
Figure 4: IoT nodes (from left to right: relay, soil node, and livestock node on a sheep). Figure 3: The deployment location of our IoT system, showing a geographical view of the entire deployment as well as a detailed technical view of the field of study in hydrological terms: Mobile (livestock) nodes are not shown on the geographical view, but tracked animals are located within the treeline enclosing the area marked “field of study” (courtesy of Satellite image from Google Earth). across our deployment. This was itself not without problems, however. We needed to develop more software ourselves and also had to deal with the relatively high power consumption of standard Arduino boards. Our soil monitoring nodes cost \(\epsilon\)150 each, including all sensing inputs, casings, and power supplies. We chose to use the Arduino Mega2560 due to its relatively high processing power and larger collection of ready-built libraries. We used the Grove input extension board, allowing a high number of sensing inputs to be connected, with an Xbee Pro module for radio communication with other nodes. Each node also had two 7800 mAh batteries connected to it, providing sufficient power for almost a week. Each such battery had a built-in solar panel for trickle charging. There are two types of soil nodes deployed in this experiment--standard and super soil nodes (stations). The standard soil node consists of the cheap Grove sensors, as shown in Figure 5, whereas the super soil node consists of the Acclima TDT Soil Moisture sensor, as shown in Figure 6 together with the Grove sensors. In the remainder of this section, we discuss the issues of sensory inputs, power supplies, and weather proofing for our soil nodes in particular. Figure 5: Standard soil node. Figure 6: Super soil node. Our sensor input strategy, guided by the environmental scientists on our team, was to deploy a large number of very cheap sensor inputs at most of our nodes, combined with a small number of high-resolution (but very expensive) sensors of known scientific quality. For our cheap sensors, we used Grove hardware as listed in the upper part of Figure 7. All of these are off-the-shelf units except for the physical design of the surface flow detector, which was custom-built by the environmental science team. As a high-quality counterpart to these sensors, we used an Acclima soil moisture sensor (Digital TDT SDI-12 (Landscape Technologies, Sydney, Australia)), as shown in Figure 6. This sensor is considered one of the most accurate and stable soil moisture sensors available today. The Acclima sensor is more expensive than the Grove sensors; however, it is a preferred tool used by environmental scientists in order to measure different parameters in the soil. In typical (non-IoT) deployments, an Acclima is attached to a data logger unit and scientists periodically visit the site to download the data from this logger by physically attaching a USB drive. Instead, we connected the Acclima directly to our Arduino board and wrote a simple driver to periodically take readings from it and send them through our IoT to the cloud.