The term poor air quality is used to describe an environment that is not suitable for humans/animals to be in, possibly causing an immediate or long-term effect to the person breathing in this air. This project attempts to design and develop an air monitoring device that will alert the registered user if there are any urgent issues that arise within the environment. The device will also attempt to warn the user of any unusual readings, by comparing the current pollution levels with recent data.
The device will connect to a Wi-Fi connection to send text/email alerts to the user. Currently different types of air pollution are generally monitored by multiple different devices, with this device aiming to combine these all in one. A machine learning approach will be taken to consider any results that are unexpected. This device can also be considered in a working environment, where the business may be working with unsafe materials, notifying the company of any unsafe air quality levels.
This project provides the opportunity to study new technologies, combining multiple new areas of study. Exploring these technologies further will help combine multiple home monitoring devices into one device. After researching this problem previously, there are ongoing issues with the rise of pollution levels, as a result of this my project aims to investigate and warn people regarding these issues. There are still many deaths caused by home air monitoring systems either being out of battery, or not installed within the property, the outcome of this project would be a benefit as it will help install all monitoring within one location, meaning that multiple different devices would not have to be checked regularly.
To investigate the consequences of poor air quality, including long term affects.
To investigate the best suited hardware for this project.
To investigate the use of machine learning to provide accurate readings.
To create and demonstrate a system that will monitor safe levels of air, alert the user of any anomalies and store historic data for AI learning.
To design and implement an android application that will receive real-time statistics from the hardware device.
To create and follow a project plan detailing when certain sections of the project should be completed by.
o High spec computer to allow the use of development environments. (E.g. Intel I5 processor, 8GB RAM, LAN card).
o Microcontroller (e.g. 68hc11 or myRIO).
o Multiple sensors (e.g. CO2 and Carbon Monoxide).
o Development environment that will support the creation, editing and compiling of my software (e.g. Dev-C++ or LabVIEW).
o Development environment that will support the creation, editing and compiling of my Android application (e.g. Android Studio).
o Access to online material e.g. IEEE, ACM etc. conference, journal papers.
o Relevant books on machine learning, different types of pollution and microcontrollers.
Literature review on machine learning and AI, risks of poor air quality and different types of microcontrollers.
Project plan (Gantt chart).
A full logbook with details regarding meetings with the supervisor.
A demonstration of how the air monitoring system works, the functionality that is available and how the android application works with the hardware.
All appropriate design and implementation documents appropriate to the selected method(s).
Fully documented and analysed test results.
Chapter 1 Within chapter 1 an introduction to the problem is discussed, including the motivation for examining this problem.
Chapter 2 Within Chapter 2 there are a number of different methodologies considered with the aim to determine a suitable choice, a literature review of multiple areas are within this chapter.
Chapter 3 Chapter 3 will contain a variety of design plans such as UML diagrams and entity relationship diagrams (ERD).
Chapter 4 Chapter 4 will contain detail on the success of the implementation of this project, as well as the outcome of the problem that this device aims to resolve.
Chapter 5 Within Chapter 5 there will be a discussion with diagrams regarding the different types of testing that the device was put through, including why the tests were relevant to the project.
Chapter 6 Chapter 6 will be an overview of how the project went, including positives and negatives and how this project could be extended with future work.
This chapter of the report will detail any existing research regarding the project. The sources discovered will be analysed to discover a relevant justification for this project, while also discovering any gaps or connections between research areas. This section will also be used to explore the possible research and project techniques/terminologies that would be applicable to this project. A review of which technologies will be selected for use within the design/implementation phase of this project will be included within this chapter weighing up the positives and negatives of a variety of options available for use.
Within this section of the literature review a few different types of methodologies will be reviewed to discover which would be most suitable for this project.
Within Figure 1, there are several different aspects that have been considered regarding the outcome of the methodology for this project. The data within the table has been produced from the outcome of the below research.
When a waterfall project is initiated all timelines are set for each individual chapter of the project, meaning that the timing for the project is already decided before the project begins. This may become an issue as the different stages of the project all have hard deadlines, therefore certain phases of the project may not be finished when the next phase of the project begins. (Balaji and Murugaiyan, 2012, p.27).
Time is one of the highest priorities within agile development, with small deadlines being met frequently, so that any changes within a specification, can be modified within the artefact of the project. Time will be managed efficiently with boards used to separate tasks in an iterative manner. (Tarwani and Chug, 2016, p.418). This quote is relevant to both Scrum and Kanban as they are both an agile methodology with the aim to create an artefact with many small iterative tasks. (Lei et all, 2017, p.59).
Due to the structure of the waterfall methodology, there are strict requirements as to what knowledge members of the team must possess within each section of the lifecycle. The teams will work separately to form the overall artefact. If the stages are not completed correctly then there may be issues across the whole project, as some mistakes within different teams may not be comprehendible by the other areas of the project team. (Kulkarni and Padmanabham, 2017, p.18).
An article by (Tanner and Takpuie, 2016, p.36) states that throughout the scrum process, there are regular meetings to run through the progress of all the aspects of the Scrum board. This may contain meetings with the client to discuss any potential new developments that may need to be added/modified on the Scrum board. These meetings rely on the Scrum team having different roles throughout the project, such as the Scrum master and the product owner. This shows that the Scrum method is reliant on team members, as there are certain role and meeting aspects that require a team to participate.
As discussed with the Scrum methodology previously, a similar role-based approach is taken for a Kanban project, with a senior management team consistently being involved with the project to provide the correct support and information to the rest of the Kanban team. The team will have regular meetings with other team members or external clients, to discover possible improvements to the ongoing/completed tasks. (Mojarro-Maga?a et al, 2018, p.7). This shows that this agile methodology is also suited to a team-based environment, where regular meetings are required to ensure all members of the team are required to give their input.
The waterfall model will only allow the scope of the project to be defined at the start of the project lifecycle, all the initial knowledge should be to the standard of the expected outcome. All requirements should therefore be recorded to a very high standard. This provides no flexibility within the project, as any issues encountered throughout the project would not be able to be resolved due to the linear structure of this methodology. (Akbar et al, 2018, p.8067).
An article by (Lei et al, 2017, p.60) stated that the scrum methodology is adaptable and that if certain parts of the original specification were deemed unacceptable, then the specification can be adjusted to the correct approach. This means that using Scrum, it is possible for the project lifecycle to repeat until the necessary outcome has been reached.
The Kanban methodology will allow full control of any change throughout the project, with all high-level tasks being split into different sections, with the possibility of using a Kanban board to control any new/existing tasks. Different sections can be created within the Kanban board to allow for change, such as a recycle bin, or different phases of the project. (Anderson, 2010, p.226).
All these methodologies allow for some time structure, with hard deadlines being available within the waterfall methodology, therefore providing the overall project with a structure that can be followed. (Balaji and Murugaiyan, 2012, p.27). Both agile methodologies allow for constant short deadlines that must be met by meeting points. (Tarwani and Chug, 2016, p.418).
All the reviewed methodologies are based around a team. This project will not be a team project and the team structure of these methodologies will need to be adapted to a project for an individual. (Kulkarni and Padmanabham, 2017, p.18). As all sections of this project will be completed by an individual, all areas will have to be covered by an individuals skillsets. Although this is not a team project, an agile approach may be adaptable as regular meetings will be held with the project supervisor to see the current progress of the project, this being like the required meetings that are held to provide updates of work e.g. looking over a Kanban board. (Tanner and Takpuie, 2016, p.36).
The life cycle of a waterfall project will not allow for any modifications throughout the project, meaning that any changes that will be required are not possible since sections of the project are frozen once they have met their initial milestones. (Akbar et al, 2018, p.8067). One of the agile approaches would be most suitable as the structure allows for adaptability due to the constant allow for change (Lei et al, 2017, p.60).
As this project is made up of numerous different chapters, a combination of two different methodologies will be required. The research chapter will all be completed with a structured approach; therefore the waterfall approach will be most suitable due to the hard deadlines that allow certain timelines for specific sections, this will be used to complete milestones of the research.
As shown by Figure 1 and the comparison of the different methodologies for all the researched areas, both agile approaches received a higher mark regarding compatibility with this project, one of these agile approaches will be used for the design and implementation phase of this project. Although both reviewed agile approaches received the same total score, Scrum provides the project with a basic structure, involving regular meetings and specific deadlines for each short set of tasks. (Nikitina and Kajko-Mattsson, 2011, p.159). Therefore, Scrum will be used for the design and implementation phases of the project.
Existing Uses of Machine Learning Within Hardware
Existing Libraries for Machine Learning
(Abadi et al, 2017) wrote an article regarding the functionality of TensorFlow as well as a review of some of the different options that are available to the public. When a computation is made within TensorFlow, a dataflow graph will be created using different mathematical functions that were used within the machine learning functionality that has been developed, to show the path that the data has taken throughout the mathematical computation.
Another example of an existing machine learning library is Java-ML. (Abeel et al, 2009, p.931) wrote an article discussing the uses of machine learning, including how Java-ML can be integrated and structured within your own languages that have been developed, confirming that this set of libraries is open source and provides easy implementation of new libraries, including the possibility to extend the functionality that the libraries already possess. Java-ML provides support for Junit testing within an IDE such as Eclipse or NetBeans. Java-ML provides extensive documentation, with a large API handbook providing information on all possible sections of the libraries that are available. (Java-ML, 2008).
Deeplearning4j (DL4J) is another example of a machine learning library that is used within Java development. DL4J is open source and is commonly used as a business standard for machine learning frameworks. (Sakhawat, 2018, p.22). DL4J can be used across multiple different platforms, providing support for many java-related languages, including mobile-compatible languages such as Kotlin. Python and C++ can also be used. Just like the other reviewed libraries, DL4J is open source with access to a well-documented API file containing vital information regarding the libraries. (Deeplearning4j, 2019).