Anda di halaman 1dari 17

12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The

no - Robots- The Next Species On Earth

Robots- The Next Species On Earth

HOME CONTENT  OUR CHANNEL FOLLOW US ON FACEBOOK CONTACT US Search

ARDUINO PROJECTS
Automatic Water Tank Level Controller with Dry Android home automation using

Pump Run Protection Using Arduino


Arduino
Smartphone (Bluetooth) Controlled Ca
Using Arduin...
How To Make Digital Door Lock Using
Arduino
Car Reverse Parking Sensor System
Hi All, welcome to yet another video. In this Video we will learn how to create Fully Using Arduino
Automatic Water Level Indicator and
Automatic Water Tank Level Controller with DRY PUMP RUN PROTECTION feature using Pump Controller using Arduino
Home Automation Using Arduino Micr
Arduino Nano. controller and...
Smart Dustbin Using Arduino

ROBOTICS

5 Coolest ROBOTS You Can Actually


Own!
Robots that mimics Human and Anima
movements-Boston Dynamics

FOLLOW US
Block Diagram
Let’s learn the Designing and Working of this project using given block diagram.  Facebook

 Twitter

 Google+

 Follow up on Linkedin

 Follow us on Instagram

The irst block is Arduino Nano, Arduino is the brain of this project. It will take input
from the sensors and control all other units according to the value received.
The second block is 16x2 LCD display. This unit will display the Water Level in
percentage as well as in Bar Diagram, it will also show the Pump status. This section will
also notify us whenever the Sump tank is empty.

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 1/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth
The third block is the Sonar Sensor. This is used to measure the water level present on
the overhead water tank.
Let’s understand the working principle of the Sonar sensor.

Sonar Sensor emits an ultrasound at 40 kilohertz, which travels through the air, and if
there is an object or obstacle on its path, It will bounce back to the module.
Arduino will use the echo pin, present on Ultrasonic sensor to measure sound wave travel
time in microseconds.
Considering the travel time and the speed of the sound, you can calculate the distance
using the formula shown here.

The fourth block is the Sump Water level sensor. These are two copper wires which are
dipped in to the Sump Water Tank. And Analog pin present on the Arduino Nano will be
used to sense the presence of water.

The ifth block is the push button, this is used to measure the Tank height at the time of
installation of this Circuit. This can further used if you wish to replace the water tank with
a new one.

The sixth block is the Internal Relay plush Water Pump. Arduino will control the Water
pump using the Internal relay. The relay present on the circuit can be used to start any
kind of 1 HP single phase Water pump without starters.

The Seventh block is also the used for the same purpose, you can use this section to
replace the internal relay with any relay which is operating in 5V DC to get better power
rating for driving the Water pump.

The Eight block is the Buzzer, this is used to notify when the sump tank is empty.

Required Components
Now let’s move to the components required to build this project. You can buy all these
components from third party vendors like E-bay, Amazon etc.

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 2/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

Designing the PCB and Generating the Gerber File


So irst of all, you need to design your PCB. You can choose online or of line platform for
designing your PCBs.
Here we used Fritzing software to design the PCB. Go to Fritzing, design your circuit using
the Breadboard tab. You can pick the required components to build the circuit from the
top right search panel and add it to the Breadboard tab.

Refer the Circuit diagram shown here to make one by your own. Please visit the link in the
description to know more about the Circuit. I have also added wire sensors to measure the
Overhead tank water level in this circuit and I will be doing a separate video to show you
how to replace the sonar sensor and measure the water level using these wire sensors in
my next video. In this video let’s stick to Sonar sensor.

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 3/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

Go to PCB tab, you could see the PCB Layout automatically created according to the design
that we made in Breadboard tab.

Arrange the components on to the PCB.Now Go to Routing and Click on Autoroute. This
will rearrange the connections to it with the PCB.

Once the design is done you can export it to a Gerber format.


Go to File-> Export-> For Production-> Extended Gerber.

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 4/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

Create a new folder and click on Select Folder. This will export all iles to that folder.

Now compress the Folder to ZIP or RAR format using any of the Zipping Software.

Placing an Order on JLCPCB

We are going to use JLCPCB website for placing the order for our PCB’s. JLCPCB provides
great quality PCB’s.

The basic price goes $2 for 10 pieces of PCBs if you order a two-layer PCB of size up to 100
x 100 mm. This is perfect price if you want to make prototype of your hobby projects or
even for your professional products.
I am ordering my PCB’s from this website from past couple of months, I am totally
satis ied with the build quality of the PCB’s.
Now let’s see how to order the PCB’s.

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 5/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

To order PCBs, irst of all you need to make an account in this website. You can do so by
clicking on register option if you are not yet registered.
Provide a user name, then input your email id and inally set a password. Now you are
ready to upload your gerber ile that we created earlier.
Click on Quote now button.

Click on add your Gerber ile to upload the PCB ile.

Once it is successfully uploaded then You will be able to view your PCB in the gerber
viewer.
If you need the Gerber ile that I have used for this project for ordering your PCB’s, please
let me know through Contact us Option.
The PCB dimensions are automatically adjusted here. JLCPCB also gives a choice for
choosing the color of PCB masking. You can choose any color from this available options.

You can leave all the other parameters as default. You can see it is only costing you $2 for
10 PCBs.
Now we will click on save to cart option, after that click on checkout securely.
Now you need to add your shipping address and shipping method.
Talking about the delivery speed, DHL will deliver it in 3 to 4 business days while airmail
will deliver it in 15 to 20 business days. Chose the method according to your need.
After that select the payment method. You can pay using your credit or debit card or you
can even pay using your paypal account. Complete the payment and wait for the delivery
It took me 7 days to get this delivered at my home address in India.

Unboxing
Once you tear of the wrapper, you could see your PCB's inside a cardboard box with
JLCPCB printed on top of the box.

The PCBs are covered on a bubble wrap. Here one thing to notice that JLCPCB takes
ultimate care of our PCBs.
https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 6/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

Now let’s tear off the seal and take our PCBs, as you could see the PCB which comes look
same as per the design that we uploaded to the JLCPCB website. And the PCB came with
green masking if you could remember we had selected green color while ordering the
PCB.

Now let’s have a closer look to check the quality of the PCB.

The silk screen perfectly overlaps with the pads. The silk screen is neat and clearly
visible.
Then we have this shiny solder pads on both sides which makes the soldering of the
components very easy.

Soldering Process
Now let's try to solder the components. Please follow the order shown in this video while
soldering the components to the PCB.
The soldering of the components makes very easy because of the perfect solder pads. I
would like to give a big thumps up for JLCPCB for it’s cheap price and good build quality.
1. Solder 220 ohm resistor
2. Solder the 10K resistors
3. Solder the 1K and 10K resistors at the Left hand side of the PCB
4. Solder the Diode
5. Solder the Push Button
6. Solder the 10K trimport
7. Solder the LED
8. Solder the Male Header Pin
9. Solder the transistor
10. Solder the Female Header Pin
11. Solder the Relay Port
12. Solder the Buzzer
13. Solder the Relay

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 7/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

14. Solder the Male Pin Header to 16*2 Display

Upload the Sketch to Arduino

Now we can upload the sketch to our Arduino. Connect Arduino to your computer using
the USB cable and upload the code shown below.

Click here to download the program or else copy the code shown below to your Arduino
IDE

/*
LiquidCrystal Library - Hello World

Demonstrates the use a 16x2 LCD display. The LiquidCrystal


library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and youre
can usually tell them by the 16-pin interface.

This sketch prints "Hello World!" to the LCD


and shows the time.

The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)

Library originally added 18 Apr 2008


by David A. Mellis
library modi ied 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modi ied 22 Nov 2010
by Tom Igoe
modi ied 7 Nov 2016
by Arturo Guadalupi

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/LiquidCrystalHelloWorld

*/

// include the library code:

#include <LiquidCrystal.h>

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; // de ine the


Arduino pins used to connect with the LCD pins RS, EN, D4 to D7
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);//initialize the library by
associating any needed LCD interface pinwith the arduino pin number it
is connected to

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 8/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

#include <NewPing.h> // Include library used for measuring the


distance using HC-SR 06 sonar sensor

#de ine TRIGGER_PIN 6 // Arduino pin tied to trigger pin on the


ultrasonic sensor.
#de ine ECHO_PIN 7 // Arduino pin tied to echo pin on the ultrasonic
sensor.
#de ine MAX_DISTANCE 500 // Maximum distance we want to ping for
(in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing


setup of pins and maximum distance.
#de ine RELAYPIN 8 // Arduino pin tied to Relaypin of the Relay Circuit
#de ine EXTRELAYPIN 13 // Arduino pin tied to vin pin of the External
Relay Circuit
#de ine BUZZER 9 // Arduino pin tied to +ve terminal of the Buzzer
loat val;
#include <EEPROM.h>
int addr = 0;
int addr2 = 1;
int lag;
byte readval;

#de ine buttonPin 10


int buttonState = 0; // variable for reading the pushbutton status
loat TankHeight, MaxWaterLevel, EmptySpace, SonarReading,
ActualReading, Temp;
int percentage;
int SpmpSensorPin = A0; // set A0 as the Spump water sensor pin
int SpmpsensorValue = 0; // variable to store the value coming from the
sensor

// Creating Charaters for Bar Graph and Reverse Mode Icon


byte Level0[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b11111,
0b11111
};
byte Level1[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b11111,
0b11111,
0b11111,
0b11111
};
byte Level2[8] = {
0b00000,
0b00000,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 9/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

byte Level3[8] = {
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
byte NoLevel[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
};

void setup() {
Serial.begin(9600);
lcd.createChar(0, Level0);
lcd.createChar(1, Level1);
lcd.createChar(2, Level2);
lcd.createChar(3, Level3);
lcd.createChar(4, NoLevel);
Serial.println( lag);
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
pinMode(RELAYPIN,OUTPUT);// Relay pin as output pin
pinMode(EXTRELAYPIN,OUTPUT);// External Relay pin as output pin
digitalWrite(RELAYPIN,LOW); //Turn off the relay
digitalWrite(EXTRELAYPIN,HIGH); //Turn off the external
relay(External Relay I used was turning on while giving LOW signal,
Check your one while doing the program)
pinMode(BUZZER,OUTPUT);// Buzzer pin as output pin
digitalWrite(BUZZER,LOW); //Turn off the Buzzer
lcd.print("Automatic Water");
lcd.setCursor(0,1);
lcd.print("*Pumping System*");
delay(2000);
lcd.clear();
lcd.print("Long Press Button to Change Tank Height");
delay(1000);
for (int positionCounter = 0; positionCounter < 23; positionCounter++)
{
// scroll one position left:
lcd.scrollDisplayLeft();
// wait a bit:
delay(300);
}
delay(1000);
lcd.clear();
lcd.print("Tank must be Empty!");
delay(1000);
for (int positionCounter = 0; positionCounter < 3; positionCounter++) {
// scroll one position left:
lcd.scrollDisplayLeft();
// wait a bit:
delay(300);
}
delay(1000);

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 10/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

lcd.clear();

lcd.print("Change Tnk Height");

for (int i=0; i<=5; i++)


{
lcd.setCursor(0,1);
lcd.print(" in:");
lcd.print(5-i);
lcd.print(" Seconds");
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
TankHeight =sonar.ping_cm();
EEPROM.write(addr, TankHeight);
}
delay(1000);
}

TankHeight= EEPROM.read(addr);
lcd.clear();
lcd.print("Tnk Height Set:");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(TankHeight);
lcd.print("cm ");
delay(2000);
lcd.clear();
MaxWaterLevel=0.85*TankHeight;
EmptySpace=TankHeight-MaxWaterLevel;
}

void loop() {
// put your main code here, to run repeatedly:

delay(50); // Wait 100ms between pings (about 20 pings/sec). 29ms


should be the shortest delay between pings.
SonarReading=sonar.ping_cm();
SpmpsensorValue=analogRead(SpmpSensorPin);
Serial.println(SpmpsensorValue);
Temp= SonarReading-EmptySpace;
ActualReading= MaxWaterLevel-Temp;
percentage=(ActualReading/MaxWaterLevel*100);
lcd.setCursor(8,0);
lcd.print("Lev:");
lcd.print(percentage);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("LOW");
lcd.setCursor(11, 1);
lcd.print("HIGH ");
if(SpmpsensorValue>=100)
{
if(percentage<=20)
{
lcd.setCursor(0,0);
lcd.print("PMP ON ");
digitalWrite(RELAYPIN,HIGH);
digitalWrite(EXTRELAYPIN,LOW);
lag=1;
EEPROM.write(addr2, lag);
lag= EEPROM.read(addr2);

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 11/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

ZeroPercentage();
}
else if(percentage>20 && percentage<=100)
{
lag= EEPROM.read(addr2);
if(percentage>20 && percentage<=100 && lag ==1)
{
digitalWrite(RELAYPIN,HIGH);
digitalWrite(EXTRELAYPIN,LOW);
lcd.setCursor(0,0);
lcd.print("PMP ON ");
if(percentage>20 && percentage<=25)
{
TwentyFivePercentage();
}
else if(percentage>25 && percentage<=50)
{
FiftyPercentage();
}

else if(percentage>50 && percentage<=75)


{
SeventyFivePercentage();
}
else if(percentage>75 && percentage<=100)
{
HundredPercentage();
}
}
else if(percentage>20 && percentage<=100 && lag ==0)
{
digitalWrite(RELAYPIN,LOW);
digitalWrite(EXTRELAYPIN,HIGH);
lcd.setCursor(0,0);
lcd.print("PMP OFF ");
if(percentage>20 && percentage<=25)
{

TwentyFivePercentage();

}
else if(percentage>25 && percentage<=50)
{
FiftyPercentage();
}

else if(percentage>50 && percentage<=75)


{

SeventyFivePercentage();
}
else if(percentage>75 && percentage<=100)
{
HundredPercentage();

}
}
}

else if(percentage>100)
{
delay(500);

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 12/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

lcd.setCursor(0,0);
lcd.print("PMP OFF ");
lcd.setCursor(8,0);
lcd.print("Lev:");
lcd.print("100");
lcd.print("% ");
digitalWrite(RELAYPIN,LOW);
digitalWrite(EXTRELAYPIN,HIGH);
lag=0;
EEPROM.write(addr2, lag);
lag= EEPROM.read(addr2);
HundredPercentage();
}
}
else if(SpmpsensorValue<=100)
{
lag= EEPROM.read(addr2);
if( lag==1)
{ lcd.clear();
lcd.setCursor(0,0);
lcd.print("*SumTank Empty*");
lcd.setCursor(0,1);
lcd.print("*Pump kept OFF*");
digitalWrite(BUZZER,HIGH);
digitalWrite(RELAYPIN, LOW);
digitalWrite(EXTRELAYPIN, HIGH);
delay(100);
digitalWrite(BUZZER,LOW);
delay(100);
}
else if( lag==0)
{
lcd.setCursor(0,0);
lcd.print("STnk MT ");

if(percentage<=20)
{
ZeroPercentage();
}
else if(percentage>20 && percentage<=25)
{
TwentyFivePercentage();
}
else if(percentage>25 && percentage<=50)
{
FiftyPercentage();
}

else if(percentage>50 && percentage<=75)


{
SeventyFivePercentage();
}
else if(percentage>75 && percentage<=100)
{
HundredPercentage();
}
else if(percentage>100)
{
HundredPercentage();
}
}
}

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 13/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

}
void ZeroPercentage()
{
lcd.setCursor(3, 1);
lcd.write(byte(4));
lcd.setCursor(4, 1);
lcd.write(byte(4));
lcd.setCursor(5, 1);
lcd.write(byte(4));
lcd.setCursor(6, 1);
lcd.write(byte(4));
lcd.setCursor(7, 1);
lcd.write(byte(4));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));
}
void TwentyFivePercentage()
{
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(0));
lcd.setCursor(5, 1);
lcd.write(byte(4));
lcd.setCursor(6, 1);
lcd.write(byte(4));
lcd.setCursor(7, 1);
lcd.write(byte(4));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));
}
void FiftyPercentage()
{
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(0));
lcd.setCursor(5, 1);
lcd.write(byte(1));
lcd.setCursor(6, 1);
lcd.write(byte(1));
lcd.setCursor(7, 1);
lcd.write(byte(4));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));
}
void SeventyFivePercentage()
{
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 14/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

lcd.write(byte(0));
lcd.setCursor(5, 1);
lcd.write(byte(1));
lcd.setCursor(6, 1);
lcd.write(byte(1));
lcd.setCursor(7, 1);
lcd.write(byte(2));
lcd.setCursor(8, 1);
lcd.write(byte(2));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));

}
void HundredPercentage()
{
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(0));
lcd.setCursor(5, 1);
lcd.write(byte(1));
lcd.setCursor(6, 1);
lcd.write(byte(1));
lcd.setCursor(7, 1);
lcd.write(byte(2));
lcd.setCursor(8, 1);
lcd.write(byte(2));
lcd.setCursor(9, 1);
lcd.write(byte(3));
lcd.setCursor(10, 1);
lcd.write(byte(3));
}

Make sure to download the ping.h library and add it to the Arduino IDE.
Click here to download the Ping Library(v1.9.0)

Refer the below snap to add the library to Arduino IDE.

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 15/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

I have added comments in the program for better understanding of each codes. I have also
added links to watch Arduino IDE installation for Windows and Ubuntu in the description.
This will help you to understand more about Arduino if you are using it for the First time.

Install Arduino Software (IDE) on Windows 10

How To Install Arduino IDE in Ubuntu Linux

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 16/18
12/1/2019 Automatic Water Tank Level Controller with Dry Pump Run Protection Using Arduino - Robots- The Next Species On Earth

Let's assemble it together


We are going to assemble the project as shown in this diagram.
Please refer the sequence shown in this video while assembling the components together.

For the demo purpose we are using a 12V DC water pump. This circuit can support up to
1 HP Single phase water pump if you wish to use this circuit for Application level.

If you wish you can also connect a 5V relay having better current rating on to this circuit.

Let's test the project


We will go through all the possible scenarios while testing our project. Let’s see the
working irst, then we will test all the possible scenarios one by one.

Automatic Water Tank Level Controller with Dry Pump Run Prote…
Prote…

So, our project is working as per our design. We hope that you enjoyed the Project. And I
would like to thank you once again for watching this video.

Watch Full Project Video:-

https://www.robotsthenextspeciesonearth.com/p/hi-all-welcome-to-yet-another-video.html 17/18