CP5070-2022-2B03-GROUP1-ADYL BIN YANI
Project Development
In this blog, I will be covering the project development of our product

1. Group 1 Chemical Device
The objective of our product is to prevent Carbon Monoxide related incidents such as CO Poisoning and asphyxiation. With this detection and removal system, such incidents will be mitigated and many lives would be saved.
In this day and age of the growth and development of the world, the construction and fabrication of materials and parts are very common. Many parts in buildings and other projects require welding, soldering, melting, and burning of materials. With burning comes combustion whereby Oxygen, mixed with fuel, will produce carbon dioxide. Carbon Dioxide is relatively harmless but combustion will inherently always produce Carbon Monoxide which is due to incomplete combustion. Carbon Monoxide can also be produced during cooking. This harmful gas binds to the red blood cells and hinders their oxygen intake which will cause oxygen deprivation. In most cases, CO poisoning will cause nausea, dizziness, and vomiting among other things but in serious cases, it can cause death.
​
Our Carbon Monoxide (CO) Detection and Removal System(CODRS) is a device that would be placed at or around confined spaces where a lot of welding, soldering, cooking or any activity that requires combustion will be taking place. The product works by detecting heightened levels of Carbon Monoxide in the environment it is in and uses a fan to draw air into the product and expel it outdoors to reduce the CO content in the room when necessary.
​
In the proper and safe environment:
- CODRS Shall remain inactive and non-flashing
​
In increased CO Content Environment:
- CODRS shall activate warning lights and initiate ventilation
​
By implementing this system, users will be able to work with a peace of mind knowing that CODRS is working to keep them safe. CODRS hopes to reduce the number of CO poisoning accidents by serving as an early detection and warning system as well as a removal system.
Hand sketch of CODRS



2. Team planning, Allocation and Execution
Here are the wonderful people working to save lives by programming, designing and fabricating CODRS

Here is the finalized Bill of Materials (BOM):


Here is the finalized Gantt Chart for the team:

3. ​Design and Build Process
In this section, I will provide documentation of the design and build process
Part 1. Design of CODRS Body (Done by Clive and Reinard)
Link To Clive's Blog and Joelle's Blog
Part 2. Fabrication of CODRS Body (Done by Reinard and Joelle)
Link To Clive's Blog and Joelle's Blog
Part 3. Coding of CODRS electronics (Done by Me and Reinard)
Coding CODRS involved determining what actions we wanted it to do and when. For this, we needed an integer value to be the "determiner" for CODRS to perform an action. The components used included servos, motors, LEDs and a gas sensor which provided the integer value.
​
In the coding of CODRS electronics, the team and I initially wanted to incorporate a gate to open and close with the help of servos. The initial code was derived by including sample codes for coding LED to light up and using "if" and "else" commands. Reinard developed the code for the Arduino to activate the servo while I coded the "if-else" commands that would set the integer value and tasks that the servo would depend on. After some discussion and iterations of the initial product, We decided to have a motor, LED and gas sensor tied instead.
​
For this, I wrote the final code that would eventually be the main commands of CODRS. The code is as follows:
​
#define Sensor_Pin A0
#define Digital_Pin 2
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(5, OUTPUT);
pinMode(12,OUTPUT);
pinMode(9,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(analogRead(Sensor_Pin));
delay(1);
Serial.println(digitalRead(Digital_Pin));
delay(1);
int sensorVal = analogRead(Sensor_Pin);
if (sensorVal >=100)
{
digitalWrite(12, HIGH);
digitalWrite (5, HIGH);
delay(100);
digitalWrite(5, LOW);
delay(100);
}
else (sensorVal <<100);
{digitalWrite(5,LOW);
digitalWrite(12,LOW);}
}
Attach analog sensor pin to pin A0
Attach digital sensor pin to pin 2
​
​
​
​
Begin serial monitoring
Set pin 2 as input signal
Set pin 5 as output signal
Set pin 12 as output signal
set pin 9 as output signal
​
​
​
​
Set analog reading to be displayed on serial monitor
​
update new reading every 1ms
Set digital reading to be displayed on serial monitor
​
update new reading every 1ms
define integer of sensor value to be integer given by analog input
If analog sensor value equals to or is more than 100:
​
Set pin 12 to send HIGH signal for motor to activate
Set pin 5 to send HIGH signal for LED to flash
wait 100ms
Set pin 5 to send LOW signal for LED to off
wait 100ms
This is to create a flashing sequence
​
If sensor value is less than 100:
LED OFF
Motor OFF
​
​
​
​
​
​
The motor works with the use of a Transistor which allows voltage in or blocks it from the motor based on the HIGH or LOW signal sent from the code

Here are some videos of CODRS electronics in action


Part 4. Assembly of CODRS internals and main body (Done by everyone)
The first step of the assembly process was to connect the walls and ceiling of CODRS body so that we would have a platform for the breadboard and Arduino.


The above portrays the gluing and attaching process which also involved sanding the contact edges in order to get better adhesion and using a heat gun to dry the acrylic glue faster.


Above is the integration of CODRS electronics into the body. However, after the main assembly has taken place, we realised that we had no slot for the USB to power the system. We initially wanted to insert a powerbank into the unit itself but we thought it would be better if we could power it externally too so we had to do some refinements which would be shown below.



We drilled holes into the base to insert our gas sensor as well as a hole for our USB power cable
Here is the scenario CODRS would be used in




4. Problems and Solutions
Problem 1:
Initially, we had a box that was bigger to allow ample space for it to be worked on while not being too big that it reduced portability but printing such a big box would take too long in the 3D printer.
​
Solution 1:
We decided to scale down our main body to make it more compact and manageable for the 3D printer to print in the short amount of time we had.
​
Problem 2:
printing the walls still took too long as we had many other tasks to complete and other time constraints.
​
Solution2:
Instead of 3D printing walls, we laser cut them which took only a few minutes.
​
Problem 3:
We realised that we needed a slot/hole for the sensor to go through as leaving it in the box would reduce it's effectiveness and accuracy in reading.
​
Solution 3:
We drilled a big hole that was about the diameter of the Gas Sensor body so that it would fit through and protrude out.
​
Problem 4:
Initial servo code made the servo "twitch" too much and did not make it stay in the position we wanted it to stay in.
​
Solution 4;
We reviewed previous iterations of the servo code that we did during class tutorials and found the way to make the servo stay
​
Problem 5:
Servo code could not work simultaneously with flashing LED
​
Solution 5:
After consulting with Dr Noel, we found out that a transistor could be used in conjunction with a motor instead of using a servo. So we coded the motor and LED together instead.
5. Project Design File as Downloadable Files
Find our Codes, 3D designs etc here!
6. Reflection
In this practical, there were a lot of ups and downs and a lot of frustration and stress with regards to planning, design and time management. Designing the product took a lot of effort as we had to think through roughly what we wanted even before we could design anything. Even after we had a rough idea, we had to make many changes and iterations of the initial product which slowed things down a bit and pressed the rest of us to work against the clock to meet deadlines while redesigning what we wanted. Not only was the designing very time-consuming, we had many other projects in other modules we had to complete which only added on to the pressure.
​
Coding was also complicated as I had to experiment with new commands such as the "if-else" command which i have never used before. This took a bit of trial and error but eventually the code was able to be verified. However, using the transistor was also new to me. I had to look up multiple different sources to figure out how to wire the transistor, motor and the MakerUno but I eventually got it working.
​
Once all the main fabrication and foundation was laid out, all we had to do was assemble CODRS. However, even this had its fair share of complications. From having to create a slot for the gas sensor to having to find a way to connect the USB when CODRS was fully closed. With the quick thinking of my group and I, we managed to overcome these difficulties with ease and proceed to the task at hand.
​
I would like to thank my groupmates for their unparalled contributions, cooperations, communication and overall positive attitude towards the creation of CODRS. Without these traits, the task would have been much more stressful and a lot more last minute. CODRS was not the end, but instead the Journey and the friends we made along the way...



