Individual Portfolio

Technical Journals

Journals

2020 4th Year Team Project with

  • Wenyu Shi
  • Tun Jing Ang
  • Illya Chaban
  • Lee Voon Dic
  • Ze Yan Liow (Me)

Preparation Stage

Week 1 (30/9 - 07/10) - Team Formation

1.Product

We started working on the team project by initializing the steps of the project, which included:

  • Team formation
  • Brainstorming for project ideas
  • Process

 

2.Process

During the week, we mainly worked in a group, there were not many individual activities. Details of the activities are described as follows.

Team formation

Our team CCCMI was formed by 5 members:

  • Wenyu Shi         D00198805
  • Tun Jing Ang      D00198874
  • Illya Chaban      D00211386
  • ZeYan Liow         D00198815
  • Lee Voon Dic      D00198307

Wenyu is our team leader and each of us has a main role and at least one sub role.

Project Ideas

Our team came out of 9 ideas and rank in the spreadsheet.

Among them are:

  • Expression analyzer
  • Site Management System
  • Food sharing for free
  • Grober
  • An app that helps hotel to record daliy customer and sent to the garda station
  • Fish Tank water quality monitoring
  • AI model to predict the stock tendency
  • Second-hand trade
  • Graph generator

 

Others

There are more details in the link below for the ideas ranking part inside the idea tab:

link -> CCCMI - Ideas and Roles

 

3. Issues

  • Can't think of more creative and good ideas.
Details

Week 2 Sprint 0 (08/10 - 14/10) - Idea Pitching

1.Product

Starting this week, we started setting up and starting work in ScrumWise. 

  • Project ideas
  • Set Up Scrumwise

 

2.Process

Project Ideas

We reduced our ideas from 9 to 4 and rank them separately based on the feasibility and how much fun do you think it will be.

The remaining 4 ideas are:

  • Expression Analyser
  • Grober
  • Aquality2.0(used to be a fish tank monitoring system)
  • Site Management System

 

Framework Research

Lee and I did some research on which framework to use on the front-end and decided to use React Native because it is simple and easy to learn and most importantly it can be used in IOS and Android projects.

Others

There are more details in the link below for the ideas ranking part inside the ideas 1.0 tab:

link -> CCCMI - Spreadsheet

Homework from Enda in uploaded .jpg file

Details

Week 3 Sprint 1 (15/10 - 28/10) - Start For Prototyping

1.Product

  • Logo designing
  • Hardware Research for Aquality2.0
  • Arduino Self-learning

 

2.Process

Logo Designing

Since our team name is CCCMI, I designed a logo by sketch which the green, yellow and red stands for the triple "CCC"(C, C#, C++) facing down. The blue color waves stand for the "M"(Must) and the rounded arrow means the "I"(Iterate).

MicrosoftTeams-image.png

Hardware Price Research for Aquality2.0

I did some research for what sensors should we need to monitor the water quality and the price of each sensor like PH, water temperature, camera, dissolved oxygen sensor and etc. Since our devices need to be waterproof so we will be buying a box that is at least IP56. The details of these devices I found is in the link below.

Arduino Self-learning

I learn how Arduino microcontroller works from a YouTube channel Paul McWhorter. Since we don't have all of the hardware so I followed the tutorial by using an Arduino circuit simulator call TINKERCAD and it also provides online coding as well.

Others

There are more details in the link below for the price inside the further investigation tab:

link -> CCCMI - Spreadsheet

Details

Week 4 Sprint 1 (15/10 - 28/10) - Start For Prototyping

1.Product

  • Case Study
  • Technical Challenges
  • Arduino Self-learning

 

2.Process

Case Study

I've looked into other similar projects online to find out what type and brand of sensors are they using for their projects.

Technical Challenges

I've looked deeper into the technical stuff to find out what circumstances we may have to deal with while building our device. Because the project is related to water, the parts should be waterproof to prevent short circuits caused by water contact. Therefore, I still decided to use each waterproof box with at least a waterproof rating of IP67. Secondly, the power supply is also our consideration. After the discussion, we can use a solar power bank and small hydroelectric generators to keep the equipment in normal operation.

Arduino Self-learning

Basically, I'm still learning how to work better with Arduino with TINKERCAD with simple sensors like temperature sensor and photoresistor. It is quite fulfilled when every time I finished an Arduino project. 



3. Issues:

  • Time Management: Need to manage time well so that I can finish all my CAs from other subjects.
Details

Week 5 Sprint 1.5 (30/10 - 05/11) - Clarify Requirement

1.Product

  • Sensor Research
  • Building Personal Mahara Page + Prepare for Individual Interview

 

This week is mid-term break.

2.Process

Sensor Research

During this week, I wanted to look at all the details of the hardware that I researched in week 2 to make sure that they are suitable for our project. I go through all the sensors by reading their product wiki so I will be able to better understand what actually the sensor requires like working temperature and accuracy.

Building Personal Mahara Page 

+

Prepare for Individual Interview

On 1st November, I started to build my Mahara individual portfolio for the upcoming interview on 5th November. I wrote a simple introduction about myself and a summary of my journals from 30/09/2020 to 28/10/2020. 

 

Details

Week 6 Sprint 2 (05/11 - 11/11) - End Paper Prototype

1.Product

  • Sensors
  • Hardware Paper Prototype
  • Arduino Self-learning

 

2.Process

Sensors

After researching the sensors we have a small discussion in our daily meeting call to make sure everyone is ok with the price. On 7th November, after the discussion, I ordered the sensors on DFROBOT, and will take about 1-2 weeks to arrive in Ireland.

Click here to view the invoice.

Hardware Paper Prototype

During this week, my main task is to draw a paper prototype with the component we bought on DFROBOT. Base on my research, I've drawn a simple paper prototype on how each component is going to connect to each other and simply go through how they are going to work on our group Mahara page.

Click here to view the paper prototype.

Arduino Self-learning

While waiting for our sensors to arrive I use my free time to look at more Arduino projects online to improve my knowledge of Arduino.

Click here to view projects

Details

Release 1

Week 7 & 8 Sprint 3 (13/11 - 25/11) - Start Project

1.Product

  • Self-learning on React Native
  • Setup Arduino
  • PH Sensor

 

2.Process

Self-learning on React Native

 

During the first week, while waiting for components, I spent my time learning React Native. Before I start my tutorial for RN I did some revisions on JavaScript to make sure I can clearly understand what the tutorial is talking about.

Link to tutorials

Setup Arduino

 

Finally, I received the sensors that we bought on 7/11 on 19/11. After unpackaging all the stuff, I connect all components to the Arduino board to make sure I can power up all of them.

PH Sensor

After uploading the code to the Arduino board, Arduino gets the PH values from the PH sensor and displays it in the serial monitor.PH_serialMonitor.jpg.1

PH_sensor.jpg.1

 

Details

Week 9 & 10 Sprint 4 (26/11 - 09/12) - Setting Up Hardware

1.Product

  • User Landing Page and Drawer
  • GPS and GPRS/GSM module

 

2.Process

User Landing Page and Drawer

 I've developed the UI for the user landing page and in the drawer, there's a function that allows user to switch their account between light and dark mode.

GPS and GPRS/GSM module

During the first week of this sprint, I successfully obtained the GPS coordinates of my current location. After having all the data that we need to publish to PubNub, I immediately started setting up the GPRS module. After the code was uploaded to the microcontroller, all was perfect, so I saved the file and closed the laptop. Two days later, when I power up the device, I cannot use the GPRS module to send out the data collected from the device. I spent about three days to solve the problem, and decided to buy a new module, and noticed that the previous module had been damaged due to unknown circumstances. At the moment, everything is running normally.
Details

Week 11 & 12 Sprint 5 (10/12 - 23/12) - Putting Stuff Together

1.Product

  • Setup PubNub 
  • Send data from device to cloud

 

2.Process

Setup PubNub

I've created a PubNub account in the first week of the sprint. In PubNub, I create a new module for the API key set to log JSON data that was published from my device to the database and create an OnAfter event handler on the related channel. Before creating the module, I need to have my channel and keys setup to make the device able to publish JSON data to the channel in PubNub.

keys.jpg

figure 1. Keys

pubnub_function.jpg

figure 2. Module to log JSON data to the database

 

Publish data from device to PubNub

The API structure to publish data to the PubNub channel is as following:

arduinoHTTPGETREQUEST.jpg.2

After gathering all the data needed I convert them into a series of Strings call dataInput. Besides, for dataInput I need to convert the JSON data into URL-encoded JSON to be able to publish it to the channel in PubNub. 

Details

Week 13 & 14 Sprint 6 (08/01 - 20/01) - Setup AI Model to Server

1.Product

  • Login and Register
  • Get live data from the database

 

2.Process

Login and Register 

 register.jpg

In this App, clients need to register for their own account on the register screen. Before client registers their account the App will check if every section of the field is valid for them to register. For example, the client needs to enter a password that contains at least 8 characters long with one uppercase, one lowercase, one number digit, and a special character. The password will be sent to the database using POST method and hash in the backend.

login.jpg

After clients finish up registering for their own account, they can log in to their account that they just created on the login screen. For security purposes, in the login screen, if a client entered a wrong password or a wrong username it will tell the client that the username or password is wrong instead of which of them is wrong. 

Get live data from the database

arduino1.jpg

In Arduino screen 1, clients need to enter an existing device id to view the live data of that device. It will tell the client that the device id is invalid if the device id does not exist.

arduino2.jpg

The data will be shown on the second screen after the client enters a valid device id.

These data will update by themselves without client have to refresh it every time on that screen.

Details

Week 15 & 16 Sprint 7 (21/01 - 03/02) - Ready for First Release

1.Product

  • Setup Hardware
  • Login Final Assemble

 

2.Process

Setup Hardware

After working on the hardware component separately, I finally gathered all of them together into one box. The box I used in the project is a waterproof box with a rating of IP68. All of the components without waterproof are set up in the box and with the cable of the sensors connect through the IP68 rated compression glands from the holes I drilled.

I recorded a video to go through an introduction for the hardware in this link.

 

Login Final Assemble

What I've done in this sprint is to store the user data in AsyncStorage.Every time a user login to the App, their username will be stored inside the AsycStorage in React Native to make sure that even the user end the process of the app in the background the user will still be able to log in to the app without having to type their credential again and again because the app will know whose the user is by the username stored in AsyncStorage. When a user logout from the App, the username within the AsyncStorage will be removed.

logoutAsyncStorage.jpg

Details

Week 17 Sprint 8 (05/02 - 10/02) - Extra Week for Release 1

This sprint is an extra week for our release 1. The main goal of this sprint is to optimize the UI layout before the release ends. We also had a meeting with Dr. Suzanne this Monday.

1.Product

  • Optimize UI Layout

 

2.Process

Optimize UI Layout

 

I this sprint, I've optimized the UI layout within the Aquality2.0 App. The screens I've optimized are as follow:

 

optimizeUI.jpg



Details

Week 18 Sprint 9 (12/02 - 17/02) - Prepare for Presentation

In this sprint, our team concentrated on preparing the presentation for T-CA2. We had daily meetings for the whole week just to make sure that everything goes well during the presentation day. Besides practicing with the slides on our own, we also had a meeting with John to get some input before the actual presentation.

1.Product

  • Presentation Preparation
  • Release 2 Planning

 

2.Process

Presentation Preparation

 

This week, we are working on planning the presentation. I have a new shorter video up on YouTube summarizing the function of the hardware sensor for the presentation demo purpose. 

 

This is a link to our release 1 presentation slides: LINK 

Release 2 Planning

Following our presentation, we met in Teams to review and prepare for release 2. The main aim for release two is to improve the take sample flow because we've been told that it's a little confusing for some of our users.
Details

Release 2

Week 19 & 20 Sprint 10 (19/02 - 03/003) - The Survey and Map

In this sprint, our front-end team is going to be real busy. Lee will be changing the whole flow for taking sample and I will be adding two new screens for the App within the taking sample section.

1.Product

  • The Survey
  • Modify Device Section to Work With Map

 

2.Process

The Survey

 I created a new screen for our app that allows users to take a survey before taking a sample by the water. The survey questions are taken from a document provided by the water research center.

Link to document: LINK

How the survey screen looks like:

survey.gif

Without the user clicking the Next button, the survey screen will automatically move to the next question.

 

Modify Hardware Device Section to Work With Map

The hardware device screen in the previous release searched the device based on the device id. Whereas we have a totally different way in this release which is to take the user location and send it back to the server and the server will return the 5 nearest hardware nearby the user to the front-end and display it on Google Map.

 

hardware.gif

The map only shows hardware devices that are currently active(sends data within the last 15 mins).

Details

Week 21 Sprint 11 (05/03 - 10/03) - Setup Power Supply

The primary aim of this sprint is to create a portable power supply for the hardware device so that the client can carry it to the river for water sampling.

1.Product

  • Hardware Power Supply Setup

 

2.Process

Hardware Power Supply Setup

 

In this sprint, I integrated a power bank into the hardware to make it compact so that the client could take it to the river. After some calculations, we estimate that the power supply we are currently using will provide two days of work after being completely charged. The working time can be affected by the weather temperature of the hardware (power may leak more during cold weather).

 

Link to hardware demo with power bank: LINK

 

Details

Week 22 & 23 Sprint 12 (12/03 - 24/03) - Finalise App for Release 2

This is the final sprint for our release 2, and we are starting to finalize our applications to get them ready for the release.

1.Product

  • Back Button Alert in Take Sample Flow
  • Weather Display
  • Help Page

 

2.Process

Back Button Alert in Take Sample Flow

I've included a back to home button in the headers of all screens within the take sample phase so that users can quickly return to the home screen. We choose not to save the take sample process when the user returns to the home screen so that every user receives an alert prompt informing them that the process will not be saved.

backButton.gif

Weather Display

The weather is a vital consideration when collecting samples because it can have an effect on the sample's outcome. We decided to use weather data from both the OpenWeather API and user input data in the survey form after talking with Dr. Suzanne. Following the receiving of the weather API, the weather will be displayed on our home page so that users can check the weather before departing for their destination.

weather.jpg

Help Page

The aim of the help page is to assist users who are unsure about the feature they are using. We've compiled a list of frequently asked questions based on user reviews and divided them into categories. Furthermore, we have an email and phone number so that our clients can have their problems resolved quickly we the customer service if the support page is ineffective.

help.gif

Details

Release 3

Week 24 & 25 Sprint 13 (29/03 - 27/04) - Fill in The Hole

Thanks to the Easter holiday, we agreed to take a three-day break at the start of the first week of this sprint.1.Product

  • Infinite Loop Bug Before Landing Screen Fixed
  • Set Password In First Log In
  • Forget Password

 

2.Process

Infinite Loop Bug Before Landing Screen Fixed

We received feedback from some of our users in the previous update that when they logged into the App, they would enter an endless loop before reaching the home screen. Following our investigation, we discovered that this issue is caused by two factors. The first issue is that the front-end is still waiting for the OpenWeather API to react, and the second issue is that the user has denied permission to use their location for weather data capture. Instead of waiting for the weather API with a loading screen before returning to the home screen, I changed it to display the weather data if the user accepts the location permission or the weather data is collected from the API.

 LoopHome.gif

Set Password In First Log In

Since our user cannot create a new account on their own, the backend generates a password for each new account and sends it to our user. When a user first logs into their new account, a change password screen will appear for security reasons. After a user changes their password, this screen will no longer appear during their next login.

FirstLogin.gif

Forget Password

If a user forgets their password, they can reset it by entering their email address and clicking the'send password reset email' button. After they press the button, an email with a connection to change their password will be sent to their inbox from the backend. Users can change their password by following the instructions given in their email.

forgetPassword.gif

Details

Week 26 & 27 Sprint 14 (09/04 - 22/04) - The Show House

This is the last sprint for our Team Project.

  • Shooting Day
  • Change Power Supply for Hardware

 

2.Process

Shooting Day

Despite the fact that this journal is only up to the 22nd of April, me, Tunjing, and Lee went out shooting for our final demo in Dundalk on Saturday (24/04). We first went to Castletown River near St. Helena's Park for shooting, but when we arrived, there was too much mud beside the river and we couldn't get to the riverside. As a result, we relocated to our second location, DkIT. When we arrived at DkIT, we discovered that the river we were talking about was actually a drain next to the windmill. After deliberating over where to take samples, we settled on a small stream near Lidl and Tesco.

When we arrive at our destination, we begin to set up our device and collect samples from the river. The shooting goes well because of the beautiful weather. That day was a lot of fun for us. Lee completed the video editing after the shoot and sent us the Demo for discussion.

 

Change Power Supply for Hardware

We are actually using a power bank as a power supply. Everything seemed to work fine at first, but after some testing, we discovered that it didn't work well with our hardware. The time it takes to get coordinates is unstable, and we sometimes don't get any coordinates after a long period of time because there isn't enough current for the GPS module to start up after sharing current with our microcontroller. Following our investigation, we decided to use a battery pack rather than a power bank as our power supply option. After final testing, everything works perfectly, looks neater, and frees up a lot of space for our box.

1.jpg
 figure 1: The battery pack is placed at the bottom of the box.

 

2.jpg

Figure 2: Looks tidier than before.

 

Details