esp32.diy

ESP32 Wi-Fi and Bluetooth Module: What It Is and How to Start

Oct 22, 2026 · 8 min read · Beginner

ESP32 Wi-Fi and Bluetooth Module: What It Is and How to Start
TL;DR The ESP32 is a family of low-cost microcontrollers from Espressif that puts Wi-Fi and Bluetooth (Classic and BLE) on one chip, usually sold as a surface-mount module or a development board. You can use both radios in the same project, but they share a single RF path through time-division, so some combinations run with reduced performance.
What it isLow-cost, energy-efficient microcontroller family with built-in Wi-Fi and Bluetooth (BT and BLE)
Designer / fabEspressif Systems, manufactured by TSMC on a 40 nm process
CPU optionsXtensa LX6 (single or dual core), Xtensa LX7 dual core, or RISC-V depending on variant
Radio sharingOne RF path shared by Wi-Fi, Bluetooth and (on some chips) IEEE 802.15.4 via time-division multiplexing
BLE band2.4 GHz ISM, 40 channels of 2 MHz from 2402 to 2480 MHz
ProgrammingESP-IDF, Arduino-ESP32, MicroPython, Rust and more

What is the ESP32 Wi-Fi and Bluetooth module?

When people search for an "ESP32 Wi-Fi and Bluetooth module" they usually mean one of three things: the bare ESP32 system-on-chip, a shielded surface-mount module built around that chip, or a development board you can plug into a breadboard. All of them give you the same core idea: a microcontroller that talks Wi-Fi and Bluetooth without any extra radio hardware.

The ESP32 was designed by Espressif Systems as the successor to the ESP8266, which only had Wi-Fi. It is manufactured by TSMC on a 40 nm process. The chip already contains the pieces you would otherwise have to add around a radio: antenna switches, an RF balun, power amplifiers, low-noise receivers, filters and power-management blocks. That integration is why complete modules can be so small and cheap.

Since the original part shipped, Espressif has released a whole family of variants with different CPUs (Xtensa LX6 in single- and dual-core form, dual-core Xtensa LX7, or RISC-V cores). They share the same SDK and are largely code-compatible, so what you learn on one board carries over to the next. The original chip was also revised as ESP32 ECO V3 in 2020, fixing some bugs and bringing small improvements.

The ESP32 shows up in a surprising number of products you may already own: Mysa smart thermostats (ESP32-WROOM), low-end UniFi switches from Ubiquiti (ESP32-D0WD-V3), the Octopus Energy Mini real-time energy monitor (ESP32-C6), the Playdate handheld console and the DJI Robomaster TT educational drone. If it is good enough for those, it is good enough for a weekend build.

How the ESP32 time-slices its single RF path when Wi-Fi and BLE are both connected\2

How the ESP32 time-slices its single RF path when Wi-Fi and BLE are both connected

Chip, module or dev board: which ESP32 with Bluetooth and Wi-Fi should I buy?

The naming is confusing at first, so here is how the pieces stack up.

Form factor What you get Who it is for
QFN chip (ESP32-D0WD, etc.) Bare SoC in a 6 x 6 mm or 5 x 5 mm QFN with 48 side pads plus a ground thermal pad Product designers doing their own RF layout
System-in-package (ESP32-PICO-D4, PICO-V3, S3-PICO-1) Chip, crystal, flash, filter caps and RF matching in one 7 x 7 mm package Very compact custom boards
Surface-mount module (ESP32-WROOM, WROVER, etc.) SoC plus flash (sometimes pSRAM) on a small PCB with a meandered inverted-F trace antenna Soldering onto your own PCB
Development board A module or chip plus USB, regulator and pin headers Learning, prototyping, breadboards

A few concrete numbers from the sources: the first PICO module, the ESP32-PICO-D4, has two CPUs at 240 MHz, 4 MiB internal flash, a 40 MHz oscillator and 34 GPIOs. In 2022 the ESP32-S3-PICO-1 added USB OTG and internal PSRAM. Some WROVER-class modules include pseudostatic RAM (pSRAM) alongside flash, which matters for camera, audio or display projects.

For a first project, buy a development board. It hides the hard parts (power, USB-to-serial, antenna) and exposes GPIO on headers. Pin counts and layouts vary by model and manufacturer, so always check the pinout for the exact board in your hand rather than a generic diagram.

Structure of a legacy BLE advertising packet (Bluetooth Core Specification 4.2)\2

Structure of a legacy BLE advertising packet (Bluetooth Core Specification 4.2)

How do Wi-Fi and Bluetooth share one radio on the ESP32?

This is the question most beginners never ask, and it explains most "my Bluetooth got flaky when Wi-Fi connected" complaints. Espressif chips support up to three radio modules (Bluetooth BT/BLE, IEEE 802.15.4 for Thread/Zigbee, and Wi-Fi), but each chip has exactly one RF path. Two radios cannot transmit or receive at the same instant, so the firmware uses time-division multiplexing: it slices time and hands the antenna back and forth between Wi-Fi and Bluetooth.

The ESP-IDF coexistence guide publishes a support matrix. For Wi-Fi plus BLE it looks like this (Y = supported with stable performance, C1 = supported but with performance caveats, S = supported with its own notes):

Wi-Fi state BLE Scan BLE Advertising BLE Connected
STA scanning Y Y Y
STA connecting Y Y Y
STA connected Y Y Y
SoftAP TX beacon Y Y Y
SoftAP connecting C1 C1 C1
SoftAP connected C1 C1 C1
Sniffer RX C1 C1 C1
ESP-NOW RX S S S
ESP-NOW TX Y Y Y

The Classic Bluetooth (BR/EDR) table follows the same pattern across inquiry, inquiry scan, page, page scan and connected states. The practical takeaway: an ESP32 acting as a Wi-Fi station (joining your home router) coexists cleanly with BLE. Running the ESP32 as a Wi-Fi access point with clients attached, or in promiscuous sniffer mode, while also using Bluetooth is supported but you should expect reduced throughput or latency on one or both radios.

The docs also note that on the ESP32-C5 this shared RF path applies whether Wi-Fi is on 2.4 GHz or 5 GHz, so moving Wi-Fi to 5 GHz does not buy you a second antenna.

Timing of BLE advertising events and scan windows during device discovery\2

Timing of BLE advertising events and scan windows during device discovery

How does the Bluetooth side of the ESP32 actually work?

Bluetooth Low Energy on the ESP32 lives in the 2.4 GHz ISM band, the same crowded, license-free band as 2.4 GHz Wi-Fi. BLE splits that band into 40 channels of 2 MHz each, running from 2402 MHz to 2480 MHz, and uses Adaptive Frequency Hopping to dodge busy channels. Classic Bluetooth instead uses 79 channels of 1 MHz.

Before two BLE devices connect, one advertises and the other scans. Advertising packets go out on three dedicated channels (37, 38 and 39); once all three have been used, one advertising event is complete and the device waits for the next interval. The remaining 37 channels (0 to 36) carry data once connected.

Two parameters you will tune in almost every BLE project:

ESP-IDF ships a getting-started example called NimBLE_Beacon, built on the NimBLE host stack, which is the simplest way to see your ESP32 appear in a phone's BLE scanner and inspect the raw advertising bytes.

A BLE advertiser receiving a scan request and replying with a scan response\2

A BLE advertiser receiving a scan request and replying with a scan response

How do I get started with an ESP32 Wi-Fi Bluetooth module?

  1. Pick a board. A development board with a WROOM or WROVER module is the safe default. Choose WROVER (with pSRAM) if you plan on cameras, audio or big displays.
  2. Pick a toolchain. The sources list plenty of options: ESP-IDF (Espressif's official framework, also available as a Visual Studio Code extension), Arduino-ESP32, MicroPython and CircuitPython, Rust, Espruino (JavaScript), NodeMCU (Lua), Mongoose OS and others. Arduino or MicroPython is the gentlest start; ESP-IDF gives you the full coexistence and Bluetooth stacks with the official examples.
  3. Get Wi-Fi up first. Connect as a station to your router. The coexistence matrix shows this mode plays best with Bluetooth, so it is the foundation to build on.
  4. Add Bluetooth. Run the NimBLE_Beacon example to confirm advertising works, then move to a connected profile.
  5. Solve provisioning. Hard-coding your SSID and password is fine for a prototype but not for anything you hand to someone else. One accepted approach: on first boot the ESP32 opens its own access point and starts a small HTTP server acting as a REST API; a phone app or browser posts the SSID and password; the ESP32 then restarts as a Wi-Fi station. There are also BLE-based provisioning libraries (for example react-native-esp-idf-ble-provisioning-rn) if you prefer sending credentials over Bluetooth.

If you are building on this site's other guides, the Wi-Fi example and BLE scanner example walk through steps 3 and 4 in detail.

What are the common pitfalls with ESP32 Wi-Fi and Bluetooth?

Do I need certification to sell a product with an ESP32 module?

If you move beyond a desk prototype, the radio brings regulatory obligations. A question on Electronics Stack Exchange about a product combining an Arduino, a CE-marked Espressif module, a 240 V to 12 V adapter and a solenoid valve drew a detailed answer worth summarising.

In the EU the product falls under the Radio Equipment Directive (RED), which also covers the EMC directive, so you do not list EMC separately. The Low Voltage Directive still applies when mains voltage is involved. Relevant harmonised standards named in the answer include EN 300 328 for 2.4 GHz radio spectrum use, EN 301 489-1 (and likely part 3 for short-range devices) for EMC, and EN IEC 62368-1 for safety. RoHS (EN/IEC 62321) is mandatory for CE marking of all electronics, and WEEE applies to anything you put on the market. The answer stresses stating the exact ETSI standard versions, because requirements changed significantly when RED arrived.

Using a pre-certified Espressif module simplifies the radio portion considerably compared with a bare chip and your own antenna layout, but it does not exempt the finished product. Talk to a test house before you print labels.

Frequently asked questions

Can the ESP32 use Wi-Fi and Bluetooth at the same time?

Yes. The two radios share one RF path through time-division multiplexing. Wi-Fi station mode with any BLE state is rated stable; SoftAP-with-clients and sniffer mode alongside Bluetooth are supported with performance caveats.

Does the ESP32 support Bluetooth Classic or only BLE?

The ESP32 family supports both Bluetooth Classic (BR/EDR) and Bluetooth Low Energy, and Espressif publishes coexistence tables for each alongside Wi-Fi. Exact support depends on the variant.

What frequency does ESP32 Bluetooth use?

The 2.4 GHz ISM band. BLE uses 40 channels of 2 MHz from 2402 to 2480 MHz, with channels 37 to 39 reserved for advertising; Classic Bluetooth uses 79 channels of 1 MHz.

How do I give an ESP32 my Wi-Fi password without hard-coding it?

A common approach is to have the ESP32 start as an access point with an HTTP REST server, accept the SSID and password from a phone or browser, then restart as a station. BLE provisioning libraries are another option.

What languages can I program an ESP32 Wi-Fi Bluetooth module in?

ESP-IDF (C), Arduino-ESP32, MicroPython and CircuitPython, Rust, JavaScript via Espruino or Mongoose OS, Lua via NodeMCU, Swift, Nim, Zig and more.

Bottom line

The ESP32 is the default answer when you want Wi-Fi and Bluetooth in one cheap, well-supported module, with a mature SDK and a dozen language options. Just remember that both radios share a single antenna path: keep Wi-Fi in station mode when you also need Bluetooth, and check Espressif's coexistence matrix before promising performance you cannot deliver.

Sources

en.wikipedia.orgESP32 (Wikipedia)github.comRF Coexistence (esp-idf docs)github.comDevice Discovery (esp-idf docs)stackoverflow.comESP32 smart wifi configuration via esp32 wifi AP(Access Point)electronics.stackexchange.comCE certification of new project Radio Equipment Directive

This guide summarises the public sources listed above in our own words. Check the original documentation before relying on exact figures.