ESP32

ESP32-S3 Geek and Arduino IDE- Getting Started Tutorial

ESP32-S3 Geek Introduction:

ESP32-S3 Geek and Arduino IDE- Getting Started Tutorial- Today, we will look at something very cool the Waveshare ESP32-S3 Geek Development board.

You can carry this with you, just like a normal USB flash drive. And whenever you want, just connect it to your laptop or PC, and you’ll be able to control anything; locally, or from anywhere in the world; and at the very same time, monitor all kinds of sensors too!

ESP32-S3 Geek and arduino ide getting started tutorial

allpcb circuit

And all this is possible due to its onboard ESP32-S3R2 chip with Xtensa 32-bit LX7 dual-core processor, capable of running at 240 MHz.

Built-in 512KB SRAM, 384KB ROM, 2MB of on-chip PSRAM, and onboard 16MB Flash memory.

USB-A port, 1.14inch 240×135 pixels 65K color IPS LCD display, a TF card slot, a BOOT button, and other peripherals.

It supports 2.4GHz WiFi and BLE 5. The onboard 3-pin UART, 3-pin GPIO, and 4-pin I2C interface headers, bringing more possibilities for your project.

We will cover 4 examples. First we will start with easy ones; but make sure you watch until the end, because the last project is the most fun!

We are going to use the ESP32-S3 Geek to wirelessly control a load connected to a completely separate ESP32 board! And that’s not all! We will also be monitoring a sensor hooked up to that remote ESP32, streaming its value back, and showing it live on the ESP32-S3 Geek’s awesome display!

So, without any further delay let’s get started!!!




Amazon Links:

ESP32-S3 GEEK Development Board

SSD1306 Oled Display Module

Other Tools and Components:

ESP32 WiFi + Bluetooth Module (Recommended)

Arduino Nano USB C type (Recommended)

*Please Note: These are affiliate links. I may make a commission if you buy the components through these links. I would appreciate your support in this way!

Make sure you have a latest version of the Arduino IDE.

Let’s first start by installing the required libraries;

TFT_eSPI and

OneButton

Install TFT_eSPI and OnButton Library

  1. Open the Arduino IDE.
  2. Go to Sketch-> Include Library -> Manage Libraries.
  3. Search for “TFT_eSPI.
  4. Install the library by Bodmer.

download tft espi arduino library for ESP32-S3 Geek



To install the “OneButton” library.

  1. While the Arduino IDE is open.
  2. Go to the menu: Sketch-> Include Library -> Manage Libraries.
  3. In the search box type: OneButton
  4. You should see several results. Look specifically for the one named “OneButton” by Matthias Hertel.
  5. Click on that library entry.
  6. Click the “Install”
  7. Wait for the installation to complete.

onbutton arduino library for ESP32-S3 Geek

The libraries are installed and now we can start with the programming.

For this, you need to go to the product’s wiki page. In the Resource section, you can download the schematic for the ESP32-S3 Geek development board and the Demo folder, which contains many examples.

The 3rd and 4th example codes are not included because I programmed them myself. Anyway, you can also download the datasheets. And for basic examples, download the ESP32-S3 Geek Demo.

Inside the Demo folder, go to the Arduino folder, where you will find many examples. We will cover two examples from there, while the other two are my custom codes.



ESP32-S3 Geek Example 1:

If we go to the LCD folder, we will find two more examples. We need to run both. So, let’s first check the LCD_Button example.

Program:

This is the main Arduino .ino program but there are several other .h and .cpp files which need to be placed inside the same folder with the .ino file. You can download the complete template folder from the product’s official page and also from my Patreon page; from where you can also download my custom programs.

Download all 4 examples from the Patreon Page.

While uploading the program select “ESP32S3 Dev Module” and don’t forget to select the correct communication port.



Practical demonstration:

display images on ESP32-S3 Geek

See how quickly we got this up and running in just a few minutes! With the boot button, I can switch between images effortlessly.

Now, let’s dive into the next example!

ESP32-S3 Geek Example 2:

The purpose of this program is to display the time on the screen, updating every 2 seconds.

Program:




A few words about the Code:

This is my SSID and password, but you need to enter your own SSID and password.

Alright, so to make sure my ESP32 gets the accurate time, first I need to tell it where to find it on the internet. For that, I am using “pool.ntp.org”, which is a standard address for Network Time Protocol servers; that’s what this ntpServer line sets up. Now, the time we get from the internet is usually standard UTC time, but I want the display to show the local time for Pakistan (PKT), which is 5 hours ahead. So, I need to tell the system that offset in seconds; 5 hours works out to 18,000 seconds, which is the value I have assigned to utcOffsetInSeconds. Lastly, since Pakistan doesn’t currently observe Daylight Saving Time, I have set the daylightOffset_sec to 0, ensuring the time doesn’t automatically adjust for summer hours.

Practical Demonstration:

The time updates every 2 seconds.

 

time from internet using ESP32-S3 Geek

Now, let’s dive into the next example!



ESP32-S3 Geek Example 3:

Now, let’s get hands-on with the ESP32-S3 Geek Development Board by connecting an I2C-supported component to its I2C interface.

Why not connect an I2C-supported SSD1306 OLED display module to the board? This way, we can print text on two displays at the same time! If you prefer, you can also connect a sensor instead of the OLED display module.

Interfacing:

i2c sensor with ESP32-S3 Geek

Simply connect the OLED display module’s VCC and GND to 3.3V and GND, and connect its SCL and SDA to the ESP32-S3 Geek Module’s SCL and SDA pins—and that’s it for the connections.



Program:

The purpose of this program is not only to print the text ‘Electronic Clinic’ on the ESP32-S3 Geek display and also send the status of the BOOT button to the SSD1306 OLED display module.



Practical Demonstration:

printing text on the ESP32-S3 Geek display

You can clearly see the Electronic Clinic text on the ESP32-S3 Geek’s display. It’s not necessary to just print simple text; you can also display sensor values!

ESP32-S3 Geek boot button example

Anyway, Released means the BOOT button hasn’t been pressed. But if I press the BOOT button, its status will change from Released to Pressed.

ESP32-S3 Geek boot button programming

Isn’t that amazing?

Now, let’s move on to our 4th and final example, which is actually a practical project in itself!




ESP32-S3 Geek Example 4:

If you have already worked with ESP32, this project will feel like an intermediate level task. However, if it’s your first time using ESP32, it might feel a bit complex. But don’t worry, I will explain everything step by step.

For this project, you will also need one more ESP32 module. It can be any variant of the ESP32, such as the ESP32-S3, ESP32-C3, or even the simple ESP32 Dev Module like the one I am using.

homemade esp32 dev development board vs ESP32-S3 Geek

As usual, I will be using my designed ESP32 Development board, for which I have already made a video. However, if you prefer, you can also make the same connections on a breadboard. This development board already has a 5V SPDT relay and female headers, so I don’t need extra wiring. I just need to connect one sensor or multiple sensors to display their values on the ESP32-S3 Geek Development Board.

relay and potentiometer connected to the ESP32-S3 Geek

For the practical demonstration, I’ve also connected a 220V AC bulb to the relay, which we’ll control in just a few seconds.

Safety First!

Please, never touch the relay contacts when the 220V AC supply is connected. As a safety precaution, always wear protective gloves and conduct high-voltage experiments in the presence of someone knowledgeable about the safety rules and regulations.

As you can see, I have connected a potentiometer to the ESP32 Dev Module, which I will use as a sensor.



Interfacing:

The left and rightmost legs of the potentiometer are connected to 3.3V and GND, and the middle leg is connected to GPIO34.

The relay is connected to GPIO13. For the relay connections you can follow this circuit diagram.

On the ESP32-S3 Geek side, you don’t need to do anything except upload the program.

ESP32-S3 Geek Code:



ESP32 Dev Module Code:



Practical Demonstration:

Both development boards are connected to WiFi networks. Now, let’s control the 220Vac light using the ESP32-S3 Geek Development board.

Simply hold the BOOT button for a short duration to turn the light ON and OFF.

control a light using ESP32-S3 Geek

You can replace this light with any load you wish. And if you want to control high-ampere loads, just increase the relay size.

Now, as I started to rotate the knob of the Potentiometer, the value on the ESP32-S3 Geek’s display started to increase.

sensor monitoring using ESP32-S3 Geek

I have used the potentiometer because it’s easily available everywhere. However, you can use any other sensor if you prefer.

This is a complete two-way communication system; we are sending commands from the ESP32-S3 Geek Development Board to control the relay while simultaneously monitoring the potentiometer’s value.

It’s not just limited to being used with a laptop; you can also use it with a cell phone charger.

ESP32-S3 Geek with a cell phone charger 5v

Honestly, the ESP32-S3 Geek Development Board has truly impressed me, and I am planning to use it in a high-level security project soon.

So, that’s all for now!

Support me on Patreon for more Articles and videos.




Watch Video Tutorial:

Engr. Shahzada Fahad

Engr. Shahzada Fahad is an Electrical Engineer with over 15 years of hands-on experience in electronics design, programming, and PCB development. He specializes in microcontrollers (Arduino, ESP32, STM32, Raspberry Pi), robotics, and IoT systems. He is the founder and lead author at Electronic Clinic, dedicated to sharing practical knowledge.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button
Electronic Clinic
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.