Skip to content
rokanas edited this page May 18, 2023 · 26 revisions

Terminarium - Wiki

{width="300px"}

Table of Contents

Project Overview

The project is entitled "Terminarium", a portmanteau derived from the words Terrarium and Terminal that represents the interplay between the physical components of our integrated system; environmental data is collected from within a terrarium physical sensors that are connected to a terminal

Synopsis & Motivation

The project is an all-in-one integrated system for monitoring the environment of terrariums and other kinds of bioactive enclosures. Through the use of sensors contained in the enclosure and connected to a terminal, environmental measurements are conveyed to a web-based user interface which communicates both raw and processed data and analytics. This will enable users to stay informed about the conditions of their terrarium remotely.

Furthermore, the system will notify the user in the event of an emergency where environmental conditions fall outside of desired limits. These can either be user-defined or based on a specific preset. The system is designed to be easily expandable and customizable to fit the needs of the user.

Example Use Cases

User is a commuting worker and an avid keeper of exotic animals. Today, they have brought home yet another tarantula as a pet. They have prepared an enclosure and, as a responsible pet owner, they have done their research regarding the optimal living conditions under which this species thrives. However, with every new pet they take home, problems amass:

User has a large number of animals under his care, and maintaining optimal conditions in each terrarium is complicated and confusing. It is usually difficult to discern whether conditions are even suboptimal at all. This problem is further compounded by each animal having differing needs regarding factors like temperature, humidity, light, sound and vibration levels in their habitats. Lastly, user's long periods of absence due to their commuting means they cannot check on the living conditions of their beloved creatures regularly throughout the day.

User therefore requires a system that facilitates carrying out their duty to provide uncompromising care. For this reason, user decides to use the Terminarium system. Installation initially involves placing the physical sensors inside the animals' enclosures, which record the conditions inside the terrariums and continuously broadcast that environmental data to the Terminarium software's user interface. From this UI, Terminarium enables user to thoroughly monitor the exact living conditions experienced by each animal, from any place and at any time of day, simply with a few clicks.

Furthermore, Terminarium eases user's job by no longer requiring them to memorize the exact requirements for their entire menagerie; the software can remember for them. Upper and lower boundaries for optimal and suboptimal environmental readings can be programmed by user into the software, and they are notified in the event that these fall or rise to a level dangerous to the animal. This way, user can spend the day far from home and remain reassured that, in the case of any emergency, they will be made aware and can act immediately.

Thus, monitoring becomes simple, problems become substantially more detectable, and ultimately, caring for the animals is streamlined.

Video Summary (pitch)

  • Video summary (pitch) of the project: link.

Dependencies & Requirements

The following section lists the dependencies and requirements for the project; these should be installed prior to the installation process described in the section afterwards.

  1. Wio Seeed Terminal (or compatible alternative board)
  2. Arduino IDE or Arduino CLI (for CLI usage)
  3. Wio Terminal Board Library ver.1.8.3 or earlier (parsed from link)
  4. Grove Temperature And Humidity Sensor Library (accessed on GitHub)
  5. PubSubClient Library (accessed on GitHub)
  6. Seed Arduino rpcWiFi Library (accessed on GitHub)
  7. Wio Terminal Grove Sensors:
    • the list of required sensors can be viewed in the subsequent section System Sensors.
  8. <...>

System Sensors

The team has considered the following sensors (as per the initial scope of the project):

Sensor Name url
Grove - Light Sensor v1.2 link
Grove - Loudness Sensor link
Grove - Temperature & Humidity Sensor link
Grove - Moisture Sensor link
Grove - Vibration Sensor (SW-420) link

Installation

The following sections contains the required steps of the installation process.

$ # TODO: provide installation instructions
$ <...>
$ <...>

Usage

TODO: the usage instructions shall be provided here.

Consider providing a detailed description of the usage with the use of graphics and/or diagrams, screenshots, etc.

Demo and Examples

TODO: provide a demo of the system's usage.

Consider providing a video rendition of the system's usage given a specific scenario (i.e. a user's interaction with the system).

System design

The system's design is depicted in the following diagram (with an additional legend). The diagram mainly depicts the MQTT related components of the system. The primary use case of the MQTT protocol is to ensure data flow between the sensors and the terminal. The terminal is responsible for the data processing and the web-based user interface is responsible for the data visualization.

Initial System Design

*view the diagram in an uncompressed form (full quality): link

Technical Stack and Tools

TODO: provide a list of the technical stack and tools used in the project. Moreover, provide a justification for the choice of the tools.

Vue.js: primary framework for Terminarium web app development. Preferred for its simplicity, excellent online resources and documentation, and its component-based architecture that allowed us to write modular, reusable code. In addition, Vue.js has good cross-platform integration, in our case enabling easy setup and communication with Firebase Realtime Database.

Code-Editing Tools

VS Code: primary code editor, preferred for its versatility and extensibility. Using it, we could seamlessly switch between working in the various languages and various file formats involved in the project. We also used it for the Live Share feature for collaborative coding sessions.

Arduino IDE: primary code editor for the Wio terminal program, used to write code in C/C++ and create Arduino .ino files as well as source (.cpp) and header (.h) files. Preferred for the plethora of Arduino-specific libraries easily installable from within the IDE platform.

Acknowledgements

TODO: provide a list of acknowledgements that are relevant to the project.
TODO: Add relevant info to first draft
We would like to thank the following individuals and organisations for providing the guidance and material necessary to make this project possible:

Contributors:

  • Michal Spano: Provided extensive knowledge in project development and led the team as project manager. Michal supervised and contributed across the whole system.
  • Erik Lindstrand: Made significant contributions to the UI.
  • Manely Abbasi: Made significant contributions to UI and played a crucial role in the design process.
  • Jonathan Boman
  • Konstatinos Rokanas: Made significant contributions to the backend with a special focus on the Wio terminal.
  • James Klouda: Made significant contributions to the UI.

The entire team deserves recognition for their efforts in planning the development and providing documentation during the project.

Frameworks and open-source libraries:

  • Vue.js: Credits to the authors and maintainers of the Vue.js framework. Vue facilitated the tools we needed to develop the UI for the project.
  • Chart.js: Credits to the authors and maintainers of Chart.js for providing the tools to make and display graphs.
  • Firebase Realtime Database by Firebase Inc.

Sponsors:

  • We would like to acknowledge Gothenburg's University for supplying hardware and facilities for the duration of the project.

Special thanks:

  • To TA’s Amin Mahmoudifard and Bao Quan Lindgren, we pay special tribute for providing guidance and wisdom throughout the development experience.

Contributing

The contributing guidelines for the Terminarium project should be adhered to by all contributors as specified by the guidelines in the document: CONTRIBUTING.md.

License

TODO: provide the license of the project, this ought to be spcified via the LICENSE file of the repository.


Terminarium Wiki 2023, DIT113, University of Gothenburg | Chalmers University of Technology, Sweden