- [Lecturer] The ESP32 is an amazing chip
for building IoT devices
because it has WiFi built-in.
But how do you use it?
In this video, I'll
show you how to connect
the ESP32 to your WiFi network.
The first step is to
include the WiFi headers.
I will do that at the top of my file,
and I will say include WiFi dot H.
Now to actually be able
to connect to WiFi,
we need to know two things,
the name of the network
that you want to connect to
and the password of that network.
So at the top of my file, I
will define two constants.
I will define WiFi underscore network
with the name of my network,
and I will define WiFi underscore password
with the password of my network.
Next, I will also define a timeout called
WiFi underscore a timeout underscore, MS.
And this will control how long the ESP32
can attempt to connect to a WiFi network.
You don't want it to keep trying forever.
Instead, when you fail to connect to WiFi,
it might be better to restart the ESP
or to send it into deep sleep
mode to save the battery,
if you have one.
Now I will set this to 20 seconds.
So in milliseconds, that becomes 20,000.
Okay, now we're ready to start connecting.
I will create a new function
called, connect to WiFi,
and this will take care of
all the necessary steps.
Now, before we do anything,
I will print something
to the serial so that we
know what the ESP is doing.
I'll say serial dot
print, connecting to WiFi.
Now the first step is to set
the mode of the WiFi chip.
There are basically two modes you can use,
STA or station mode and
AP or access point mode.
Now, when you want to connect
to an existing WiFi network,
you have to use station mode.
So that's what I'll do here.
I'll say WiFi dot mode and I will pass it
WiFi underscore STA.
AP mode can be interesting
if you want the ESB
to create its own WiFi network.
And this can be useful to
let someone else configure it
by connecting to it.
But that's for another video.
Now we can ask the ESB to
connect to our WiFi network
by calling WiFi dot begin,
and passing along our
network name, and password.
So WiFi underscore network
and WiFi underscore password.
This will start the
WiFi connection process.
Next up, we want to keep
track of how long the ESP
has been trying to connect to WiFi so that
we can enforce our timeout.
I will do that by creating
an unsigned long variable
called, start attempt time.
And I will set this to millis.
Now millis is a function
that will return the uptime
of your ESP32.
And so in the start attempt time variable,
we will store the time at which we started
our WiFi connection attempt.
Now we're going to create a
wild loop that keeps looping
as long as we don't have a WiFi connection
and as long as we haven't
exceeded our timeout.
Now we can check the WiFi status
by calling WiFi dot status.
And I'll say that we're gonna
loop while it is not equal
to WL underscore connected.
Then to make sure that we're
still within our timeout,
I will take the current
uptime of our board
and I will subtract our
start attempt time from it.
And then we're gonna see
and we're gonna make sure
that this is still smaller than
our WiFi timeout, MS variable.
So once more, this will
keep looping while the WiFi
isn't connected and
while we haven't reached
our timeout yet.
Now inside this loop, I'm
going to print a single dot
to the serial so that we
can see some progress.
And then I will also
add a small delay to it
so that this function or this
loop doesn't run too fast.
Now at the end of this while loop,
we have one of two possible situations.
Either we are connected
to WiFi or we've timed out
and we're not connected.
So I will check the status
again by calling WiFi status
and I will check if it's now connected.
So I will say, "If WiFi dot status
"does not equal WL underscore connected,"
then I will print something to the serial.
I will say, "Serial
dot print line failed,"
to say that we've failed
connecting to WiFi.
And after this line, you
probably want to take
some action, like put the ESP
into deep sleep for a while
or rebooted it completely.
Now, this depends a bit on
your use case and whether
or not your board is battery powered.
If you're not worried about battery life,
then you might not need
to time out at all.
And you can just let the
ESP32 keep trying to connect
to WiFi forever.
So I will leave this up to you.
Now, if the WiFi is connected,
I want to print that
to the serial as well.
So I'm gonna say, "Serial
dot print connected."
And we can also print the
current IP address of our board
by printing WiFi dot local IP.
And that is our connect to
WiFi function, all done.
The last thing we have to
do before we can flash it
is we have to call this function somewhere
and I will call it in the setup function.
I will say, when the ESP
boots, we're gonna initialize
our serial monitor, and I'm going to say,
"Connect to WiFi."
I'm gonna save the file,
and let's now flash it
to our board.
Quick side note.
Behind the scenes, I flashed
this exact program to my board,
but I did change the WiFi credentials
so that they would match with my setup.
Now, once the flashing is
done, I'm gonna open up
the serial monitor.
I'm gonna attach it to my board.
And as you can see, it
says, "Connecting to WiFi,"
then it says, "Connected,"
followed by the IP address of our board.
So that's how you
establish a WiFi connection
with the ESP32.
Thanks for watching.
Don't forget to subscribe and check out
the rest of these series if you want
to learn more about Arduino and the ESP32.
