Attribution: Icons made by Freepik and xnimrodx from www.flaticon.com
The AstroPlant "ecosystem" aims to create a large-scale centrally managed network of multiple IoT devices focused on replicability, modularity, and extensibility. You may wonder why we started developing our "ecosystem" and what is different from this system in comparison to existing IoT software and plant monitor & control systems.
Before we started the journey of the AstroPlant project, we investigated a multitude of technologies suitable for use within the AstroPlant project. We quickly noticed that many existing IoT applications exist, yet were not necessarily focused on experimentation and knowledge sharing. These IoT technologies offer either largely proprietary - general solutions to IoT, although with interesting features regarding massively distributed IoT devices, OTA updates (over the air), asset tracking and wide-range of connectivity options. In addition, very extensive plant monitor & control systems exist that offer most of the features we required, but are deemed expensive and not very customizable. On the other hand we were inspired by the development of open source systems that allow people to contribute, co-develop or re-purpose software & hardware.
What we did to achieve this ambitious goal is to develop an "open" system. Meaning that we try to limit vendor-lock-in and dependencies as much as possible coupled with the use of open source licensing. Moreover, developing hardware that is extensible and developing software that is modular is a key cornerstone of this vision. Unfortunately open source systems could result in limited financial and human resources as this conflicts with traditional business models. Thus a redefinition of what added value is had to be made. Questions like how to empower users were raised and if person A develops something for his or her own goals, how could that be shared within the community, such that person B could make use of it.
In the end it comes down to what do our users and contributors would like to have and what is missing in the current existing technologies. For instance someone could buy an off-the-shelf system that suits his or her needs, alternatively that person could use parts of our stack and find creative ways to develop something novel or simply use the system as is. A mix and match approach we choose is what allows people to share, co-develop and learn on their own without being necessarily dependent. You could deploy your own back-end or use different hardware, add or remove sensors and actuators or use the stack for another purpose.
Regardless of the notion of an "open" system, choices had to be made with regards to the stack to achieve a functional system. Below a short overview of our choices:
- The use of the ARM-based Raspberry Pi (RPi). Strictly speaking this is not a requirement, but the use of the RPi micro-computer instead of micro-controllers allows for a wide range of applications. With micro-controllers you typically would have only one to a few functionalities and have to stack multiple hardware modules to create a system like AstroPlant. Micro-controllers are stronger in some areas, however technically you could utilize those benefits with the AstroPlant stack by linking micro-controllers to the RPi. As for requirements, all other vendors of other Linux-based (micro-)computers can run the AstroPlant client-code if Python is supported.
- Python as the programming language on the RPi. We choose Python for the ease of use and scientific background of the AstroPlant project. As Python supports many libraries it quickly allows for rapid experimentation and development coupled with generally more experience in Python by scientists than for instance C++.
- The development of an extension board. In addition to the decision to develop with RPi, we had to create a system for easily attaching peripherals (sensors and actuators). The extension board has a number of AstroPlant defined sensors and actuators ports, while many ports are left open for other use-cases or additions. To be exact: 4x open I2C, 2 open 1-wire, 1 open 24v/5v actuator and 4 open GPIO pins. Additionally there is space for a nrf24 module for wireless sensors.
- Open source licensing. With regards to licensing we choose to adopt for hardware the CERN Open Hardware Licence and for software BSD 2-Clause.
We are a community of people with a wide range of backgrounds stemming from data science, computer science, bio-informatics, biology, teaching, electrical engineering. In turn this is also a call for action for people interested in this project to join and contribute. As the project is open source we can never have enough people to join and help reach this vision to its full extent.