FireBeetle 2 ESP32 S3 WROOM-1 getting started tutorial

FireBeetle 2 ESP32-S3:


FireBeetle 2 ESP32 S3 WROOM-1 getting started tutorial- The DFRobot FireBeetle 2 ESP32 board has made things quite easy. If you compare it with the previous versions of ESP32 boards, you will get an idea of how advanced it is.

Its use is exactly the same; all the projects that I have made using the previous pervious of the ESP32 boards can also be run on this one. You just need to pay attention to the pins because the pinout of the ESP32 FireBeetle 2 is different from the previous boards.

Anyway, I will share some examples with you, so that you can easily get started with this remarkable piece of hardware. The examples will include,

  1. How to control the onboard LED.
  2. How to make an IoT-based two-way communication system using the New Blynk V2.0. We will control an LED and monitor a Potentiometer as well.
  3. We will explore live video streaming.
  4. I will explain how to use a TFT LCD. And lastly,
  5. We will build an intermediate-level temperature monitoring system using the MLX90614 non-contact infrared temperature sensor.

Guys we have to cover a lot of things; so, without any further delay, let’s get started!!!

Amazon Links:

FireBeetle 2 ESP32 S3 WROOM 1

FireBeetle 2 Official Product page

320×240 IPS TFT LCD Display

MLX90614 non-contact infrared temperature sensor

Other Tools and Components:

Top Arduino Sensors:

Super Starter kit for Beginners

Digital Oscilloscopes

Variable Supply

Digital Multimeter

Soldering iron kits

PCB small portable drill machines

*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!

FireBeetle 2 ESP32 S3:

Board Overview:

Firebeetle 2 ESP32

The new ESP32 FireBeetle 2 is based on the ESP32-S3 WROOM-1, generic Wi-Fi + Bluetooth Low Energy Microcontroller module that is built around the ESP32 S3 series of SoCs. On top of rich set of peripherals, the acceleration for neural network computing and signal processing workloads provided by the SoC make the Modules an ideal choice for a wide variety of application scenarios related to AI and AIoT “Artificial Intelligence of Things”, such as wake word detection, speech commands recognition, face detection and recognition, smart home, smart appliances, smart control panel, smart speaker, etc.

The board has Type-C USB port.

It has an Onboard LED.

If you long press the button connected to 47/D14 for 6 seconds it will power off the board, and if you press it for 2 seconds it will power on the board.

It has the Reset and Boot buttons.

The board has the AXP313A Power Management chip and the ETA6003 Lithium-ion Battery Charging Management Chip.

The board also has Lithium-Ion battery port.

It is also provided with a charging indicator LED. If this LED is OFF it means either the Power supply is not plugged in or the battery is fully charged. And if this LED is ON then it means the battery is charging. And if this LED is blinking then it means the battery is not connected.

It has the GDI “Graphics Device interface”.

The term “GDI display interface” typically refers to the Graphics Device Interface, which is a Microsoft Windows technology used for rendering graphical elements on the screen. GDI is a core component of the Windows operating system and provides a set of functions and tools for drawing text, graphics, and images on the screen or in a window.

The GDI display interface allows applications to create and manipulate graphical objects, such as lines, shapes, and text, and then render them on the screen. It provides a high-level abstraction for working with graphics and is often used by applications like desktop programs, games, and graphical user interfaces (GUIs).

While GDI has been a fundamental part of Windows graphics for a long time, more recent versions of Windows have introduced newer graphics APIs like Direct2D and Direct3D, which offer more advanced features and better performance for graphics-intensive applications. However, GDI is still widely used for basic graphics rendering and remains an important component of the Windows graphics subsystem.

It also has the DVP “Digital Video Port” Camera Interface.

DVP camera interface, also known as Digital Video Port camera interface, is a standard interface used to connect digital cameras to various electronic devices, such as microcontrollers, single-board computers, and embedded systems. It’s a parallel interface that allows for the transmission of digital image data between the camera and the host device.

Key features of a DVP camera interface include:

Parallel Data Transmission: Unlike serial interfaces like SPI or I2C, DVP interfaces transmit data in parallel, which means multiple bits are transferred simultaneously, making it suitable for high-speed data transfer.

High-Speed Data Transfer: DVP interfaces are designed for high-speed data transmission, making them suitable for capturing high-resolution images and videos.

Dedicated Pins: DVP interfaces typically use a set of dedicated pins for transmitting image data, control signals, and clock signals. These pins are organized into data buses and control lines.

Standardized Connectors: DVP cameras often use standardized connectors, making it easier to interface with various devices that support the same interface standard.

Image Format Support: DVP interfaces can support various image formats, such as RAW or YUV, depending on the camera and host device’s capabilities.

Widely Used in Embedded Systems: DVP camera interfaces are commonly found in embedded systems, robotics, industrial automation, and other applications where capturing images or video is required.

FireBeetle 2 ESP32-S3 Specification:

Basic Parameters

  • Operating Voltage: 3.3V
  • Type-C Input Voltage: 5V DC
  • VCC Input Voltage: 5V DC
  • Max Charging Current: 1A
  • Operating Temperature: -20 to 70℃
  • Dimension: 25.4x60mm/1×2.36”

Hardware Information

  • Processor: Xtensa® dual-core 32-bit LX7 microprocessor
  • Main Frequency: 240 MHz
  • SRAM: 512KB
  • ROM: 384KB
  • Flash: 16MB
  • PSRAM: 8MB
  • RTC SRAM: 16KB
  • USB: USB 2.0 OTG full-speed


  • WIFI Protocol: IEEE 802.11b/g/n
  • Bandwidth: Support 20 MHz and 40 MHz at 2.4 GHz band
  • WIFI Mode: Station, SoftAP, SoftAP+Station combined mode
  • WIFI Frequency: 2.4GHz
  • Frame Aggregation: TX/RX A-MPDU, TX/RX A-MSDU


  • • Bluetooth Protocol: Bluetooth 5, Bluetooth mesh
  • • Bluetooth Frequency: 125 Kbps, 500 Kbps, 1 Mbps, 2 Mbps


  • Digital I/O x26
  • LED PWM Controller 8 Channels
  • SPI x4
  • UART x3
  • I2C x2
  • I2S x2
  • IR Transceiver: transmit channel x5, receive channel x5
  • 2×12-bit SAR ADC, 20 Channels
  • DMA Controller: transmit channel x5, receive channel x5

Pinout Diagram:

Firebeetle 2 ESP32

You can follow this Pin Diagram and I think there is no need to waste time by explaining all these pins; because all the pins are clearly labeled.

Firebeetle 2 ESP32

Now, let’s start with our first example that is blinking the Onboard LED that is connected to the Digital pin13 just like the Arduino. Anyway, to control the onboard LED for this, first of all, we will need to add the ESP32 FireBeetle 2 in the Arduino IDE. Because, by default no ESP32 board is installed in the Arduino IDE and you can confirm this by going to the Tools Menu, then to Board, and you can see there is no ESP32 board.

Firebeetle 2 ESP32

So, first we will need to add it in the boards list, for this copy this Board Manager URL link;

Then go back to the Arduino IDE, go to the File Menu, then preferences, and paste this link in the Additional Boards Manager URLs and click the Ok button.

Firebeetle 2 ESP32

Next, go to the Tools Menu, then Board and click on the Boards Manager. Search for the ESP32. You can see we have Arduino ESP32 Boards and ESP32 by Espressif Systems.

Firebeetle 2 ESP32

So, make sure you install this one and don’t forget to select the latest version. Finally, the board installation has been completed and now we can confirm this by going to the boards list.

Firebeetle 2 ESP32

You can see all the different variants of the ESP32 Boards have been added, so, scroll down and you will see the DFrobot FireBeetle ESP32 S3 board. We are done with the difficult part, and now let’s open the LED blinking program.

FireBeetle 2 ESP32-S3 Led Blinking Code:

This is the same exact program used to control the Arduino Uno or Arduino Nano onboard LED. The purpose of this program is to turn ON and turn OFF the onboard LED. If you are new to the Arduino IDE then I highly recommend watch my 1 hour video on the Arduino course.

Anyway, to upload the program, make sure your ESP32 FireBeetle 2 board is connected to your Laptop or PC.

Go to the Tools menu and select the DFRobot FireBeetle 2 ESP32-S3 Board. Make sure you enable the USB CDC On Boot.

Set the Flash size to 16MB (128Mb).

Set the Partition Scheme to 16M Flash (3MB).


Firebeetle 2 ESP32

Finally, select the port and then you can upload the program.

Firebeetle 2 ESP32

Now, you can see; the onboard LED is blinking. Exactly the same way, you can control any IO pin.

FireBeetle 2 ESP32 with New Blynk:

Firebeetle 2 ESP32

Now, in this next example, we are going to control and LED and monitor a Potentiometer using the New Blynk V2.0. First, let me explain the connections.

Firebeetle 2 ESP32

The rightmost and leftmost legs of the Potentiometer are connected to the FireBeetle board pins 3.3V and GND. Whereas the middle leg of the potentiometer is connected to the Analog pin A0.

Cathode Leg of the LED is connected to the GND pin and the Anode leg of the LED is connected to the digital pin D12 through this 330 ohm current limiting resistor. 330-ohm resistor I usually use when I use 5 volts compatible controller boards like Arduino. But since this is a 3.3V compatible controller board, so technically you will need a resistor of 40 ohms. But, to be on the safe side, you can use a resistor of 100 ohms. But right now, I have a 330-ohm resistor and that’s why I used it and I know its going to reduce the LED brightness.

Now, before we start setting up the Blynk Cloud dashboard or the Blynk IoT App for controlling the LED and for monitoring the Potentiometer. First, we will need to install the Blynk Library in the Arduino IDE. So, let’s do it.

While the Arduino IDE is open. Go to the Sketch Menu, then to Include Library, and click on the Manage Libraries. Search for the Blynk;

Firebeetle 2 ESP32

And make sure you install the Blynk by this guy(Volodymyr Shymanskyy) and don’t forget to select the latest version. Anyway, you can see, I have already installed it. So, once you are done with the Blynk library installation then you can start working on the Blynk Cloud dashboard.

Altium Designer, Altium 365, & Octopart:

Arduino LoRa Free SMS

Altium Designer is the world’s most trusted PCB design system. Altium Designer enables engineers to effortlessly connect with every facet of the electronics design process. Over 35 years of innovation and development focused on a truly unified design environment makes it the most widely used PCB design solution. With Altium Designer you can create PCB designs with an intuitive and powerful interface that connects you to every aspect of the electronics design process. Route it your way through any angle, tune for the delay, Push, Slide, and Walkaround faster than ever.

Easily work together with your mechanical team and forget about the days of swapping design files. Every design change stays in sync between Altium Designer and SOLIDWORKS, PTC Creo, Autodesk Inventor, Autodesk Fusion 360, or Siemens NX*.

Interact and collaborate with mechanical designers like never before in a photo-realistic, 3D design environment.

One of the best things about Altium Designer is that you can share your designs with your team members using Altium 365. They can check your design, leave comments, and if there are any issues, they can fix them from anywhere in the world. Altium Designer also uses the world’s fastest components search engine, Octopart, so you won’t have any difficulty in searching for components.

Altium Designer, Altium 365, and Octopart—unleashes the full potential of electronics design by seamlessly integrating design tools, collaboration platforms, and component databases. Together, they offer engineers a comprehensive and synchronized experience, leading to improved productivity, reduced errors, and accelerated innovation in the world of electronics design.

FireBeetle 2 Blynk Web Dashboard Setup:

Click on the new template

Firebeetle 2 ESP32

Write the name, select ESP32 as the hardware type, set the connection type to WiFi, and you can also write some description. Finally, click on the Done button.

Select Datastreams

Firebeetle 2 ESP32

Add the New DataStream for the digital pin to control the led

Firebeetle 2 ESP32

Then add the required credentials for the digital pin and select the pin 12 and click on the create button.

Firebeetle 2 ESP32

Then again click on the New Datastream and this time click on the virtual pin.

Firebeetle 2 ESP32

Then add the required credentials and click on create button

Firebeetle 2 ESP32

Then click on the web Dashboard

Firebeetle 2 ESP32

Double click on the switch to add it to the Dashboard, or simply drag and drop it.

Firebeetle 2 ESP32

Click on the setting and choose the required data stream and click on the save

Firebeetle 2 ESP32

Then double click on the gauge.

Firebeetle 2 ESP32

Click on the setting and choose the required datastream and click on the save

Firebeetle 2 ESP32

Then click on the save button

Firebeetle 2 ESP32

Now click on the search button

Firebeetle 2 ESP32

Then click on the New device and click on choose From template

Firebeetle 2 ESP32

Then under the choose template select  Firebeetle esp32 with Blynk and click on the create Button.

Firebeetle 2 ESP32

Then copy the credentials,

Firebeetle 2 ESP32

Paste the credentials in the programming and upload the code to the ESP32

Firebeetle 2 ESP32

Firebeetle 2 ESP32 and Blynk Programming:

After uploading the program, make sure you laptop and Firebeetle 2 ESP32 board are connected to the WiFi. Then go back to your Blynk Web Dashboard, and you should be able to control the LED and monitor the Potentiometer. On my side both the LED and Potentiometer were working. As you can see in the image below.

Firebeetle 2 ESP32

FireBeetle 2 ESP32 Blynk IoT App setup:

Open the Blynk IoT application on your cell phone and click on firebeetle esp32 with Blynk.

Firebeetle 2 ESP32

Then click on the developer mode

Firebeetle 2 ESP32

Then click on the add button

Firebeetle 2 ESP32

Select the gauge

Firebeetle 2 ESP32

Now click on the datastream

Firebeetle 2 ESP32

Select the required datastream for the gauge

Firebeetle 2 ESP32

And click on the close button

Firebeetle 2 ESP32

Repeat the same steps for the button

Firebeetle 2 ESP32

Then click on the button to add the datastream

Firebeetle 2 ESP32

Firebeetle 2 ESP32

Select the required datastream

Firebeetle 2 ESP32

Now the gauge and buttons are added

Firebeetle 2 ESP32

Now, I can use this App to control the Led and for monitoring the Potentiometer.

Practical Demonstration:

Firebeetle 2 ESP32

I was able to monitor the Potentiometer and I also successfully controlled the LED.

You can replace this LED with a relay to control high voltage and high ampere AC/DC loads and the same thing applies to the potentiometer; you can replace it with any other analog or digital sensor. The Blynk web dashboard and the Blynk IoT app setup will remain exactly the same. For the better understanding you can go ahead and read my other articles on the ESP32 and New Blynk V2.0.

Now, let’s go ahead and start with the Camera.

FireBeetle 2 ESP32 S3 and Camera:

The CAM interface is compatible with both OV2640 and OV7725 cameras. Enable AXP313A power output when using a camera.

This is the pin list for using the DVP camera interface.

CAM PINS FireBeetle ESP32-S3 PINS Description
AGND / Analog GND
SDA 1/SDA I2C data
AVDD / AXP313A Controllable Power
SCL 2/SCL I2C Clock
RST / Pulled up to DOVDD
VSYNC 6/A2 Frame sync signal
PWDN / Pulled down
HREF 42 Horizontal sync signal
DVDD / AXP313A Controllable Power
DOVDD / AXP313A Controllable Power
D9 48 DATA 9
XMCLK 45 Clock signal
D8 46 DATA 8
D7 8/A3 DATA 7
PCLK 5/A1 Pixel Clock signal
D6 7/D5 DATA 6
D2 39 DATA 2
D5 4/A0 DATA 5
D3 40 DATA 3
D4 41 DATA 4

Firebeetle 2 ESP32

This is the OV2640 Camera module that I am going to use with the FireBeetle 2 ESP32 S3 board. On the backside of the FPC “Flexible Printed Cable” you can see the pin numbering starts from the right side and on the FireBeetle board you can find a white dot next to the Camera port which indicates that this is the pin number 1. So while connecting the camera, make sure pin number 1 on the FPC is towards the Dot side.

Firebeetle 2 ESP32

So, the camera is connected and next we are going to add library in the Arduino IDE. So, while your Arduino IDE is open go to the Sketch Menu, then to Include Library, and click on the Add .ZIP Library.

Firebeetle 2 ESP32

Browse to the location and select the DFRobot_AXP313A-master.

Download DFRobot_AXP313A-master

Firebeetle 2 ESP32

Download the Project Folder:

Download the project folder, because the folder contains






The CameraWebServer program is given below. Make sure, all the above files are in the same folder. When you open the CameraWebServer program; all the other files will automatically load in the Arduino IDE.

FireBeetle 2 ESP32 Live Video Streaming Program:

After uploading the program, unplug your ESP32 FireBeetle board and plug it again, then open the serial monitor, and over there you will see a URL link; so simply copy that link and Paste it into the web browser. You should be able to see the camera settings so simply scroll down and click the Start Stream button. The live video streaming will start in no time.

Firebeetle 2 ESP32

Now you can play around with these different parameters. You can also do live video streaming on your cell phone, all you need is to open the web browser and paste the same URL link.

320×240 IPS TFT LCD Display:

Firebeetle 2 ESP32

Next, we are going to use this 320×240 IPS TFT LCD Display with the FireBeetle 2 ESP32-S3.

It supports SPI(4-wire) communication mode and GDI port. It accepts a wide range of input voltages from 3.3V to 5V which makes it compatible with multiple main-controller boards like Arduino, Leonardo, ESP32, ESP8266, and so on. Use the GDI interface on the controller board which could effectively reduce the wiring. And if you plan to use it with the Arduino or any other controller board that doesn’t come with a GDI interface then you can use the male headers. Since the FireBeetle 2 ESP32 S3 board already has a GDI port so I am going to use the FPC cable.

Firebeetle 2 ESP32

In the image above you can see the spi wiring and gdi wiring. You can do one of these wiring at a time. If you want to use the male headers then there is no need to connect the FPC cable and vice versa. In my case I am going to continue with the GDI “FPC cable”.

There is also an onboard MicroSD card slot underneath the display for storing and displaying images. So, this module has the advantage of high resolution, wide viewing angle, and simple wiring, and can be used in many display applications: waveform monitor display, electronic gift box, sensors monitoring, electronic weather decorations, and so on.

Firebeetle 2 ESP32

Anyway, the LCD is connected and next we are going to add library in the Arduino IDE. So, while your Arduino IDE is open go to the Sketch Menu, then to Include Library, and click on the Add .ZIP Library. Browse to the location and select this library,

Firebeetle 2 ESP32

Download DFRobot_GDL-master

FireBeetle 2 ESP32, TFT LCD programming:

You can use this program to check your TFT LCD.

Firebeetle 2 ESP32

The TFT LCD is working and now, let’s work on the temperature monitoring system using the MLX90614 non-contact infrared temperature sensor.

FireBeetle 2 ESP32 with MLX90614, Circuit Diagram:

Firebeetle 2 ESP32

Connect the VCC and GND of the MLX90614 non contact infrared temperature sensor to the 3.3V and GND pins. Connect the SDA and SCL pins to the SDA and SCL on the FireBeetle 2 ESP32 board.

Required Library:

You will also need to install the DFRobot_MLX90614 library. For this, go to the Sketch Menu, then to Include Library, and click on the manage libraries. Write the Library name in the search box.

Firebeetle 2 ESP32

You can see I have already installed this library.

FireBeetle 2 ESP32 with MLX90614, Programming:

The program is a bit longer because we are displaying the temperature values on the Gauges. If you don’t use gauges, the program will become quite small. These are the pin definitions for various controller boards.

These are the different display modules,

Simply uncomment the one you are using. In my case, I have uncommented this line.

Next, I have defined some colors and variables.

All these other instructions in the void setup() function are used with the TFT display Module to enable the display, set the orientation, fill the screen, set the text color, set the text size, and so on.

Next, we select the desired Emissivity correction co-efficient.

0.91 is for the human skin. Every object has its own emissivity value. I have explained this in my getting started tutorial on the MLX90614 temperature sensor.

In the loop function, all these instructions are used to display the temperature values on the Gauges.

I have already uploaded this program and now let’s watch the FireBeetle 2 ESP32 based temperature monitoring system in action.

Firebeetle 2 ESP32

Watch Video Tutorial:


Engr Fahad

My name is Shahzada Fahad and I am an Electrical Engineer. I have been doing Job in UAE as a site engineer in an Electrical Construction Company. Currently, I am running my own YouTube channel "Electronic Clinic", and managing this Website. My Hobbies are * Watching Movies * Music * Martial Arts * Photography * Travelling * Make Sketches and so on...

Related Articles

One Comment

  1. Error in running Dfrobot Firebeetle S3

    ll_cam.c:231:15: error: ‘volatile union ‘ has no member named ‘in_suc_eof’
    if (status.in_suc_eof) {

Leave a Reply

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

Back to top button