<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Janada Pelahara</title>
    <description>The latest articles on DEV Community by Janada Pelahara (@janadapelahara).</description>
    <link>https://dev.to/janadapelahara</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091247%2Fbb385d36-b060-4ce8-be08-1f1a64bc3299.png</url>
      <title>DEV Community: Janada Pelahara</title>
      <link>https://dev.to/janadapelahara</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/janadapelahara"/>
    <language>en</language>
    <item>
      <title>ESP32: Wireless Communication</title>
      <dc:creator>Janada Pelahara</dc:creator>
      <pubDate>Wed, 30 Sep 2026 11:08:12 +0000</pubDate>
      <link>https://dev.to/janadapelahara/esp32-wireless-communication-odl</link>
      <guid>https://dev.to/janadapelahara/esp32-wireless-communication-odl</guid>
      <description>&lt;p&gt;In this article, we're going to disscuss about build-in wireless technologies of ESP32.&lt;/p&gt;

&lt;p&gt;For the original ESP32, the main built-in wireless technologies are Wi-Fi and Bluetooth. Espressif specifies Wi-Fi 802.11 b/g/n and Bluetooth Classic (BR/EDR) plus BLE support for the original ESP32.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: This article primarily refers to the original ESP32. Wireless capabilities can differ between ESP32-family variants, so always check the documentation for your specific chip or development board.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Built into original ESP32?&lt;/th&gt;
&lt;th&gt;Main purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📶 &lt;strong&gt;Wi-Fi&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;Networks, Internet, web servers, IoT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔵 &lt;strong&gt;Bluetooth Classic&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;Continuous short-range communication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔵 &lt;strong&gt;Bluetooth Low Energy (BLE)&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;Low-power device/sensor communication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ESP-NOW&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Supported through ESP32 Wi-Fi hardware&lt;/td&gt;
&lt;td&gt;Direct ESP32-to-ESP32 communication&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Built-in wireless communication on ESP32_
&lt;/h4&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Wi-Fi&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Station mode&lt;/li&gt;
&lt;li&gt;ESP32 ↔ Router&lt;/li&gt;
&lt;li&gt;Access Point / SoftAP mode

&lt;ul&gt;
&lt;li&gt;ESP32 ↔ Computer

&lt;ul&gt;
&lt;li&gt;ESP32 Web Server&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bluetooth Classic&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bluetooth Low Energy&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Advertising&lt;/li&gt;
&lt;li&gt;Scanning&lt;/li&gt;
&lt;li&gt;Connections&lt;/li&gt;
&lt;li&gt;GATT&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Characteristics&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ESP-NOW&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;ESP32 → ESP32&lt;/li&gt;
&lt;li&gt;One-to-one&lt;/li&gt;
&lt;li&gt;One-to-many&lt;/li&gt;
&lt;li&gt;Many-to-one&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Wi-Fi
&lt;/h2&gt;

&lt;p&gt;This is the most important built-in technology when it comes to wireless communication with ESP32. Here we can see 2 main ways(modes) to communicate with Wi-Fi. Those are,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Station mode&lt;/li&gt;
&lt;li&gt;Access Point(aka SoftAP mode)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Station mode
&lt;/h3&gt;

&lt;p&gt;ESP32 joins an existing Wi-Fi network.&lt;/p&gt;

&lt;pre&gt;ESP32
  │
  │ Wi-Fi
  ↓
Router
  ├── PC
  ├── Phone
  └── Internet
&lt;/pre&gt;

&lt;p&gt;In Station mode, the ESP32 connects to an existing Wi-Fi network, usually through an access point or router. If that network has Internet access, the ESP32 can also communicate with Internet-based services. We can define the network name and the password inside the code of ESP32 in order to connect to that specific interface.&lt;/p&gt;

&lt;p&gt;Typical applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internet-connected sensors&lt;/li&gt;
&lt;li&gt;IoT&lt;/li&gt;
&lt;li&gt;Web servers&lt;/li&gt;
&lt;li&gt;REST APIs&lt;/li&gt;
&lt;li&gt;MQTT&lt;/li&gt;
&lt;li&gt;Communication with Python&lt;/li&gt;
&lt;li&gt;Remote monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. SoftAP mode
&lt;/h3&gt;

&lt;p&gt;The ESP32 creates its own Wi-Fi network:&lt;/p&gt;

&lt;pre&gt;       ESP32
      Wi-Fi AP
       /   \
      /     \
   Phone    Laptop
&lt;/pre&gt;

&lt;p&gt;For this one, no external router is required. ESP32 creates its own local network. This is very useful when displaying data or gathering user inputs via a webpage hosted inside your ESP32. You just have to connect to the ESP32 network with your phone/laptop Wi-Fi and go to the ESP32's ip address. With the use of protocols like HTTP, we can exchange information easily.&lt;/p&gt;

&lt;pre&gt;Browser
   │
 HTTP request
   ↓
ESP32 Web Server
   │
 HTTP response
   ↓
Browser
&lt;/pre&gt;

&lt;p&gt;A casual ESP32 ip looks like this:&lt;br&gt;
&lt;a href="http://192.168.4.1" rel="noopener noreferrer"&gt;http://192.168.4.1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can define the network name and the password(or keep it open) from our code.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const char* ssid = "YOUR_WIFI_NAME";&lt;br&gt;
const char* password = "YOUR_WIFI_PASSWORD";&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;Phone
   │
   │ Wi-Fi
   ↓
ESP32
   │
   └── Web Server
&lt;/pre&gt;

&lt;p&gt;This can be used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;display sensor readings&lt;/li&gt;
&lt;li&gt;control LEDs&lt;/li&gt;
&lt;li&gt;control motors&lt;/li&gt;
&lt;li&gt;provide configuration pages&lt;/li&gt;
&lt;li&gt;receive commands&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Bluetooth classic
&lt;/h3&gt;

&lt;p&gt;Bluetooth classic is intended for traditional bluetooth communication. Can be used for continuous data communication.&lt;/p&gt;

&lt;p&gt;Possible examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serial-style communication&lt;/li&gt;
&lt;li&gt;Controllers&lt;/li&gt;
&lt;li&gt;Data transfer&lt;/li&gt;
&lt;li&gt;Bluetooth peripherals&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Bluetooth Low Energy- BLE
&lt;/h3&gt;

&lt;p&gt;Bluetooth but uses less power. Very effective and a power saving method.&lt;/p&gt;

&lt;pre&gt;ESP32
 │
 └── BLE Peripheral
          │
          │
          ↓
Smartphone / Computer
&lt;/pre&gt;

&lt;p&gt;To understand what happens on BLE, you need to understand these 6 key concepts first. They are,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Advertising&lt;/li&gt;
&lt;li&gt;Scanning&lt;/li&gt;
&lt;li&gt;Connections&lt;/li&gt;
&lt;li&gt;GATT&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Characteristics&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A simple overview is:&lt;/p&gt;

&lt;pre&gt;ESP32
  │
  │ 1. Advertising
  ↓
Nearby BLE device
  │
  │ 2. Scanning
  ↓
Device discovered
  │
  │ 3. Connection
  ↓
Connected devices
  │
  │ 4. GATT
  ↓
  └── 5. Services
         │
         └── 6. Characteristics
&lt;/pre&gt;

&lt;h4&gt;
  
  
  1. Advertising
&lt;/h4&gt;

&lt;p&gt;Advertising is how a BLE device announces its presence to nearby devices.&lt;/p&gt;

&lt;p&gt;The ESP32 repeatedly sends small advertising packets over the BLE radio. Other BLE devices can listen for these packets.&lt;/p&gt;

&lt;p&gt;A packet is like:&lt;br&gt;
&lt;code&gt;I'm ESP32. Here are some infomation about me&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;             ESP32
               │
               │ BLE advertising
               ↓
        📱 Phone / Computer
&lt;/pre&gt;

&lt;p&gt;The advertisement can contain information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Device name&lt;/li&gt;
&lt;li&gt;Device address&lt;/li&gt;
&lt;li&gt;Service UUID&lt;/li&gt;
&lt;li&gt;Manufacturer information&lt;/li&gt;
&lt;li&gt;Other small pieces of data&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Important&lt;br&gt;
Advertising does not necessarily mean a connection has been established.&lt;br&gt;
The ESP32 can advertise while no device is connected.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  2. Scanning
&lt;/h4&gt;

&lt;p&gt;Scanning is how a BLE device looks for nearby advertising devices.&lt;/p&gt;

&lt;p&gt;Think of this like this:&lt;br&gt;
Your ESP32 is Advertising.&lt;/p&gt;

&lt;pre&gt;ESP32 A → Advertising&lt;/pre&gt;

&lt;p&gt;Your phone is also scanning (searching) for bluetooth devices:&lt;/p&gt;

&lt;pre&gt;Phone
  │
  │ Scan
  ↓
Nearby BLE devices
&lt;/pre&gt;

&lt;p&gt;Your phone sees the advertisement that your ESP32 shows.&lt;/p&gt;

&lt;pre&gt;ESP32
  │
  │ "I'm here!"
  ↓
📱 Phone
  │
  │ Scans
  ↓
"ESP32_Sensor found"
&lt;/pre&gt;

&lt;p&gt;There are 2 main types of scanning. They are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passive scanning:&lt;/strong&gt; the scanner simply listens to advertising packets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Active scanning:&lt;/strong&gt; the scanner can send a scan request to a scannable advertiser and receive additional information in a scan response.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Connections
&lt;/h4&gt;

&lt;p&gt;After discovering a device, a BLE device can establish a connection with it if the advertiser allows connections.&lt;/p&gt;

&lt;pre&gt;Before connection:

ESP32  )))       (((  Phone


After connection:

ESP32  ═════════════  Phone
        BLE connection
&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Once connected, the devices can exchange data using the BLE data channels.&lt;/p&gt;

&lt;p&gt;ESP32 can send data.&lt;/p&gt;

&lt;pre&gt;ESP32
  │
  │ Temperature = 28.5°C
  ↓
Phone
&lt;/pre&gt;

&lt;p&gt;The phone can send data back too.&lt;/p&gt;

&lt;pre&gt;Phone
  │
  │ LED = ON
  ↓
ESP32
&lt;/pre&gt;

&lt;h4&gt;
  
  
  4. GATT
&lt;/h4&gt;

&lt;p&gt;This is probably the confusing and very GenZ looking word in this article. But this is the most important concept to understand in BLE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GATT stands for Generic Attribute Profile.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Think of GATT as the structure or system used to organize the data being exchanged over a BLE connection. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;pre&gt;ESP32
 │
 └── GATT
      │
      ├── Service
      │
      ├── Service
      │
      └── Service
&lt;/pre&gt;

&lt;p&gt;Inside above services are characteristics.&lt;/p&gt;

&lt;pre&gt;GATT
 │
 ├── Service
 │     ├── Characteristic
 │     └── Characteristic
 │
 └── Service
       ├── Characteristic
       └── Characteristic
&lt;/pre&gt;

&lt;p&gt;Espressif's BLE documentation describes GATT server functionality as exposing services and characteristics to remote clients, while a GATT client discovers and accesses services on remote servers.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Services
&lt;/h4&gt;

&lt;p&gt;A service is a logical collection of related BLE data.&lt;/p&gt;

&lt;p&gt;Think of this as a folder:&lt;/p&gt;

&lt;pre&gt;ESP32
 │
 └── GATT
      │
      └── Health Service
&lt;/pre&gt;

&lt;p&gt;This Health Service could contain:&lt;/p&gt;

&lt;pre&gt;Health Service
 │
 ├── Heart Rate
 ├── Temperature
 └── Battery Level
&lt;/pre&gt;

&lt;p&gt;Each of those individual pieces of data would be represented by a &lt;strong&gt;characteristic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A service is normally identified using a &lt;strong&gt;UUID&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Characteristics
&lt;/h4&gt;

&lt;p&gt;A characteristic is where the actual application data is stored or exchanged.&lt;/p&gt;

&lt;p&gt;If a service is a folder:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Service = Folder&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then a characteristic is like a file inside that folder:&lt;/p&gt;

&lt;pre&gt;Service
 │
 ├── Temperature characteristic
 ├── Humidity characteristic
 └── LED characteristic
&lt;/pre&gt;

&lt;p&gt;For an example:&lt;/p&gt;

&lt;pre&gt;Temperature characteristic
        │
        └── 28.5 °C
&lt;/pre&gt;

&lt;p&gt;A characteristic can have different operations/properties.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read&lt;/strong&gt;&lt;br&gt;
The client asks the ESP32 for the value.&lt;/p&gt;

&lt;pre&gt;Phone
  │
  │ "Give me temperature"
  ↓
ESP32
  │
  │ "28.5 °C"
  ↓
Phone
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Write&lt;/strong&gt;&lt;br&gt;
The client sends a value to the ESP32&lt;/p&gt;

&lt;pre&gt;Phone
  │
  │ LED = ON
  ↓
ESP32
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Notify&lt;/strong&gt;&lt;br&gt;
The ESP32 can automatically notify the connected client when the value changes.&lt;/p&gt;

&lt;pre&gt;ESP32
  │
  │ Temperature changed
  ↓
Phone
&lt;/pre&gt;

&lt;p&gt;The below is a diagram of what we've learned about BLE&lt;/p&gt;

&lt;pre&gt;ESP32
  │
  ├── Advertising → "I'm available!"
  │
  ├── Scanning → "Who is nearby?"
  │
  └── Connection → "Let's communicate!"
                         │
                         ↓
                        GATT
                         │
                    ┌────┴────┐
                 Services  Services
                    │
              Characteristics
                    │
              Actual data
&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;IMPORTANT&lt;br&gt;
Advertising, scanning, and connections are mainly part of the BLE discovery/connection process, while GATT, services, and characteristics are concerned with organizing and exchanging application data. Espressif's documentation separates these concepts through BLE GAP and GATT APIs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  4. ESP-NOW
&lt;/h3&gt;

&lt;p&gt;This is a very useful and a special kind of communication method integrated into ESP32s.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP-NOW is a connectionless wireless communication protocol developed by Espressif for its Wi-Fi-capable chips. It allows devices such as ESP32 boards to exchange data directly using Wi-Fi radio communication, without establishing a normal Wi-Fi connection through a router.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A simple way to visualize it is:&lt;/p&gt;

&lt;p&gt;ESP32 A 📡 → ESP-NOW → 📡 ESP32 B&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Why's ESP-NOW "connectionless"?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
All traditional Wi-Fi devices normally connects to an access point:&lt;/p&gt;

&lt;p&gt;ESP32 → Router → Network&lt;/p&gt;

&lt;p&gt;But in ESP-NOW, Data is transmitted directly in Wi-Fi vendor-specific action frames without establishing a conventional connection. This reduces the communication overhead and can provide very fast responses.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP-NOW is useful for applications where low latency is more important than having a normal internet connection.&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Does ESP-NOW need any internet connection?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
No, Any type of internet connections are not needed❌🌐&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is one of its biggest advantages.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Two ESP32 boards can communicate with each other even when there is no internet connection and no Wi-Fi router.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ESP32 + temperature sensor&lt;br&gt;
↓&lt;br&gt;
ESP-NOW&lt;br&gt;
↓&lt;br&gt;
ESP32 + display&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first ESP32 could measure the temperature and send it directly to the second ESP32.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;How does ESP-NOW identify devices?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
ESP32 boards have their unique MAC addrsses. ESP_NOW identify boards with these MAC addresess.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP32 A: MAC AA:BB:CC:11:22:33&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓ ESP-NOW&lt;br&gt;
ESP32 B: MAC AA:BB:CC:44:55:66&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before sending unicast data, the sender normally adds the destination device as a peer. Espressif's API provides functions for adding, modifying and removing peers.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Communication methods&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
There are 3 ways to use ESP-NOW with other ESP32s. They are,&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1. One-to-one communication&lt;/em&gt;.&lt;br&gt;
The simplest setup is two ESP32 boards:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP32 A  ──── ESP-NOW ────&amp;gt;  ESP32 B&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP32 A ─────&amp;gt; [Temperature = 27.5°C] ──────&amp;gt; to ESP32 B&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ESP32 B could then display the temperature or perform another action.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;2. One-to-many communication&lt;/em&gt;.&lt;br&gt;
ESP-NOW can also be used with multiple devices.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;┌──&amp;gt; ESP32 B&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ESP32 A ────┼──&amp;gt; ESP32 C&lt;/em&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;└──&amp;gt; ESP32 D&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is useful for applications such as a central controller communicating with multiple sensor nodes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3. Many-to-many communication&lt;/em&gt;.&lt;br&gt;
You can also have several devices communicating with each other:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP32 A ←→ ESP32 B&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↕&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↕&lt;br&gt;
ESP32 C ←→ ESP32 D&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This can be useful for more complex IoT systems.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;How fast is ESP-NOW?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
In Espresiff, they've documented the speed as,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The default ESP-NOW bit rate is 1 Mbps.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;However, don't confuse the 1 Mbps radio rate with the actual application. Real-world performance depends on factors such as packet size, distance, interference, Wi-Fi channel, and hardware.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP-NOW's main strength isn't transferring huge files at high speed. Its strength is quick communication with relatively small amounts of data.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;How much data can it send?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
This is a very important detail because the answer depends on the ESP-NOW version itself.&lt;/p&gt;

&lt;p&gt;According to current Espressif documentation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ESP-NOW v1.0: maximum data length of 250 bytes&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ESP-NOW v2.0: maximum data length of 1470 bytes&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For maximum compatibility, 250-byte payloads are still a useful practical limit to keep in mind.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Is ESP-NOW secure?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Yes. ESP-NOW supports encryption using CCMP, based on AES-128.&lt;br&gt;
It uses a Primary Master Key (PMK) and Local Master Keys (LMKs) for encrypted peer communication.&lt;/p&gt;

&lt;p&gt;However, there is an important distinction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Encrypted unicast communication → supported ✅&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Encrypted broadcast/multicast communication → not supported ❌&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So security needs to be considered when designing an ESP-NOW network.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Does it work with Wi-Fi?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Yes, and this is one of the interesting things about ESP-NOW.It also uses the ESP32's Wi-Fi radio, but it doesn't require a normal Wi-Fi connection.&lt;/p&gt;

&lt;p&gt;It can also coexist with Wi-Fi and Bluetooth LE on supported Espressif devices.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;For example,&lt;br&gt;
an ESP32 could potentially communicate with another ESP32 using ESP-NOW while also having Wi-Fi functionality available.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;But there is an important consideration: Wi-Fi channel configuration. ESP-NOW peers need to operate on the appropriate channel; if a device is using a Wi-Fi connection, the channel must be handled correctly.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
ESP-NOW can work over a fairly significant distance depending on the ESP32 hardware, antenna, transmit power, environment, obstacles, and interference.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Espressif gives examples of communication reaching around 200 m in open-space conditions for particular solutions, but this should not be treated as a guaranteed range for every ESP32 board.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I think I have discussed the most important details when it comes to the wireless section of the ESP32. Feel free to drop comments, ask questions and to share your valueable ideas with the community.&lt;/p&gt;

&lt;p&gt;See you guys sooooooooon&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Written by Janada Pelahara&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>esp32</category>
      <category>programming</category>
      <category>iot</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>ESP32: Intro</title>
      <dc:creator>Janada Pelahara</dc:creator>
      <pubDate>Mon, 24 Aug 2026 11:14:48 +0000</pubDate>
      <link>https://dev.to/janadapelahara/esp32-intro-26om</link>
      <guid>https://dev.to/janadapelahara/esp32-intro-26om</guid>
      <description>&lt;p&gt;&lt;strong&gt;ESP32 + Python: From Microcontroller to IoT&lt;br&gt;
Artical 01: ESP32&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We've discussed about ESP32 in our previous artical on introduction. In this artical, we're focusing on ESP32 features to help our IoT projects&lt;/p&gt;

&lt;p&gt;If you have used an Arduino board, you've probebly know that the need of extra modules when it comes to wireless communications. The especiallty of these ESP32 boards are the inbuilt WiFi and Bluethooth features.&lt;br&gt;&lt;br&gt;
These allows the boards to connect to networks and communicate with computers, smartphones, servers, and other devices without requiring additional wireless hardware.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The ESP32 chip itself is quite small and isn't designed to be connected directly to sensors and other components by beginners. A development board usually places the ESP32 module on a larger PCB and provides GPIO pins, power connections, USB connectivity, buttons, and other useful features.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Much like Arduino Uno, Nano in Arduino family, the most popular ESP32 boards are: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ESP32 DevKit V1&lt;/strong&gt;&lt;br&gt;
Probably one of the most popular ESP32 boards for beginners. It usually uses the ESP32-WROOM-32 module and provides easy access to many GPIO pins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ESP32-WROOM-32 DevKit&lt;/strong&gt;&lt;br&gt;
A very common development-board design based on Espressif's ESP32-WROOM-32 module. It's widely used for learning, prototyping, sensors, and IoT projects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ESP32-C3 SuperMini&lt;/strong&gt;&lt;br&gt;
A very small and inexpensive board based on the ESP32-C3. It's useful when you want a compact project while still having Wi-Fi and Bluetooth Low Energy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ESP32-S3 DevKitC&lt;/strong&gt;&lt;br&gt;
A development board based on the ESP32-S3, which provides more modern features and is particularly interesting for applications involving USB and AI/edge-processing workloads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NodeMCU-32S / ESP32 NodeMCU&lt;/strong&gt;&lt;br&gt;
Another popular development-board style used in many tutorials and hobby projects.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Board&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ESP32 DevKit V1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Beginners &amp;amp; general projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ESP32-C3 SuperMini&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Small/compact projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ESP32-S3 DevKitC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;More advanced projects&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here is a detailed table with the basics to know: &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;ESP32 DevKit V1&lt;/th&gt;
&lt;th&gt;ESP32-WROOM-32 DevKit&lt;/th&gt;
&lt;th&gt;ESP32-C3 SuperMini&lt;/th&gt;
&lt;th&gt;ESP32-S3 DevKitC&lt;/th&gt;
&lt;th&gt;NodeMCU-32S&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Main chip&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ESP32&lt;/td&gt;
&lt;td&gt;ESP32&lt;/td&gt;
&lt;td&gt;ESP32-C3&lt;/td&gt;
&lt;td&gt;ESP32-S3&lt;/td&gt;
&lt;td&gt;ESP32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dual-core Xtensa LX6&lt;/td&gt;
&lt;td&gt;Dual-core Xtensa LX6&lt;/td&gt;
&lt;td&gt;Single-core RISC-V&lt;/td&gt;
&lt;td&gt;Dual-core Xtensa LX7&lt;/td&gt;
&lt;td&gt;Dual-core Xtensa LX6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Max clock&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;240 MHz&lt;/td&gt;
&lt;td&gt;240 MHz&lt;/td&gt;
&lt;td&gt;160 MHz&lt;/td&gt;
&lt;td&gt;240 MHz&lt;/td&gt;
&lt;td&gt;240 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GPIOs on chip&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Up to 34&lt;/td&gt;
&lt;td&gt;Up to 34&lt;/td&gt;
&lt;td&gt;Up to 22&lt;/td&gt;
&lt;td&gt;Up to 45&lt;/td&gt;
&lt;td&gt;Up to 34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Typical exposed GPIOs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~30–32&lt;/td&gt;
&lt;td&gt;~30–32&lt;/td&gt;
&lt;td&gt;~11–13&lt;/td&gt;
&lt;td&gt;Depends on variant&lt;/td&gt;
&lt;td&gt;~30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PWM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;16 channels&lt;/td&gt;
&lt;td&gt;16 channels&lt;/td&gt;
&lt;td&gt;6 channels&lt;/td&gt;
&lt;td&gt;8 channels&lt;/td&gt;
&lt;td&gt;16 channels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wi-Fi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2.4 GHz 802.11 b/g/n&lt;/td&gt;
&lt;td&gt;2.4 GHz 802.11 b/g/n&lt;/td&gt;
&lt;td&gt;2.4 GHz 802.11 b/g/n&lt;/td&gt;
&lt;td&gt;2.4 GHz 802.11 b/g/n&lt;/td&gt;
&lt;td&gt;2.4 GHz 802.11 b/g/n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bluetooth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Classic + BLE&lt;/td&gt;
&lt;td&gt;Classic + BLE&lt;/td&gt;
&lt;td&gt;Bluetooth 5 LE&lt;/td&gt;
&lt;td&gt;Bluetooth 5 LE&lt;/td&gt;
&lt;td&gt;Classic + BLE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ADC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;12-bit&lt;/td&gt;
&lt;td&gt;12-bit&lt;/td&gt;
&lt;td&gt;12-bit&lt;/td&gt;
&lt;td&gt;12-bit&lt;/td&gt;
&lt;td&gt;12-bit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DAC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2 channels&lt;/td&gt;
&lt;td&gt;2 channels&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;2 channels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Capacitive touch&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native USB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;USB connection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Usually USB-to-UART&lt;/td&gt;
&lt;td&gt;Usually USB-to-UART&lt;/td&gt;
&lt;td&gt;USB&lt;/td&gt;
&lt;td&gt;USB&lt;/td&gt;
&lt;td&gt;Usually USB-to-UART&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flash&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Usually 4 MB&lt;/td&gt;
&lt;td&gt;Usually 4 MB&lt;/td&gt;
&lt;td&gt;Usually 4 MB&lt;/td&gt;
&lt;td&gt;Typically 4–8 MB*&lt;/td&gt;
&lt;td&gt;Usually 4 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PSRAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ Usually no&lt;/td&gt;
&lt;td&gt;❌ Usually no&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Available on some variants&lt;/td&gt;
&lt;td&gt;❌ Usually no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Approx. board size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~55 × 28 mm&lt;/td&gt;
&lt;td&gt;~55 × 28 mm&lt;/td&gt;
&lt;td&gt;~22 × 18 mm&lt;/td&gt;
&lt;td&gt;~50 × 25 mm*&lt;/td&gt;
&lt;td&gt;~55 × 25 mm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Main advantage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Beginner-friendly &amp;amp; versatile&lt;/td&gt;
&lt;td&gt;Mature ESP32 platform&lt;/td&gt;
&lt;td&gt;Tiny &amp;amp; low-cost&lt;/td&gt;
&lt;td&gt;Advanced processing &amp;amp; USB&lt;/td&gt;
&lt;td&gt;Popular alternative ESP32 board&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;General IoT projects&lt;/td&gt;
&lt;td&gt;General-purpose projects&lt;/td&gt;
&lt;td&gt;Compact IoT projects&lt;/td&gt;
&lt;td&gt;Advanced/AI/USB projects&lt;/td&gt;
&lt;td&gt;General electronics &amp;amp; IoT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;With these knowlegde, now you can choose an ESP32 board according to your project.&lt;/p&gt;

&lt;p&gt;Usually a dev board(development board) contain these things&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;Provived feature&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32 microcontroller/module&lt;/td&gt;
&lt;td&gt;the main processing unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPIO pins&lt;/td&gt;
&lt;td&gt;to connect sensors, LEDs, motors, displays, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB port&lt;/td&gt;
&lt;td&gt;to programme the board and to often providing power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB-to-Serial chip&lt;/td&gt;
&lt;td&gt;allows your computer to communicate with boards that don't have native USB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Boot/EN buttons&lt;/td&gt;
&lt;td&gt;useful for programming and resetting the board&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voltage regulator&lt;/td&gt;
&lt;td&gt;converts the input voltage to the voltage required by the ESP32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power pins&lt;/td&gt;
&lt;td&gt;provide connections such as 3.3 V and GND&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Why are development boards useful?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Development boards make experimenting with the ESP32 much easier. Instead of designing a circuit around the bare ESP32 chip, you can connect components directly to the board using jumper wires or a breadboard.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This makes development boards particularly useful for learning, &lt;br&gt;
prototyping, IoT projects, robotics, and hardware-software experiments.&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ESP32 communication Interfaces&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Wired&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
ESP32 board supports 5 types of communication interfaces.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Interface&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Main purpose&lt;/th&gt;
&lt;th&gt;Common uses&lt;/th&gt;
&lt;th&gt;Key feature&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UART&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wired / Serial&lt;/td&gt;
&lt;td&gt;Point-to-point serial communication&lt;/td&gt;
&lt;td&gt;GPS modules, computers, other microcontrollers, Python&lt;/td&gt;
&lt;td&gt;Simple and doesn't require a clock line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;I²C&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wired / Serial&lt;/td&gt;
&lt;td&gt;Communication with multiple peripherals&lt;/td&gt;
&lt;td&gt;OLEDs, LCDs, sensors, RTC modules&lt;/td&gt;
&lt;td&gt;Uses only &lt;strong&gt;2 signal lines&lt;/strong&gt; (SDA &amp;amp; SCL)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SPI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wired / Serial&lt;/td&gt;
&lt;td&gt;High-speed peripheral communication&lt;/td&gt;
&lt;td&gt;SD cards, TFT displays, memory, sensors&lt;/td&gt;
&lt;td&gt;Faster than I²C in many applications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;I²S&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wired / Serial&lt;/td&gt;
&lt;td&gt;Digital audio communication&lt;/td&gt;
&lt;td&gt;Digital microphones, speakers, audio codecs&lt;/td&gt;
&lt;td&gt;Designed specifically for digital audio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CAN/TWAI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wired / Bus&lt;/td&gt;
&lt;td&gt;Reliable communication between multiple devices&lt;/td&gt;
&lt;td&gt;Automotive systems, robotics, industrial control&lt;/td&gt;
&lt;td&gt;Reliable and resistant to electrical noise&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Wireless&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
ESP32 has 3 main wireless communication methods. ESP32 consists of a unique special wireless technology called ESP-NOW, granting you the ability to send data between ESP32 boards. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Main purpose&lt;/th&gt;
&lt;th&gt;Common uses&lt;/th&gt;
&lt;th&gt;Key feature&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Wi-Fi&lt;/strong&gt; 📶&lt;/td&gt;
&lt;td&gt;Wireless / Network&lt;/td&gt;
&lt;td&gt;Network and internet communication&lt;/td&gt;
&lt;td&gt;IoT, web servers, APIs, MQTT, Python&lt;/td&gt;
&lt;td&gt;Can connect the ESP32 to networks and the internet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Bluetooth Classic&lt;/strong&gt; 🔵&lt;/td&gt;
&lt;td&gt;Wireless&lt;/td&gt;
&lt;td&gt;Continuous device-to-device communication&lt;/td&gt;
&lt;td&gt;Computers, phones, peripherals, audio&lt;/td&gt;
&lt;td&gt;Available on some ESP32 variants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Bluetooth Low Energy (BLE)&lt;/strong&gt; 🔵&lt;/td&gt;
&lt;td&gt;Wireless&lt;/td&gt;
&lt;td&gt;Low-power wireless communication&lt;/td&gt;
&lt;td&gt;Sensors, wearables, beacons, smart devices&lt;/td&gt;
&lt;td&gt;Designed for low power consumption&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;ESP-NOW&lt;/strong&gt; 📡&lt;/td&gt;
&lt;td&gt;Wireless&lt;/td&gt;
&lt;td&gt;Direct ESP-to-ESP communication&lt;/td&gt;
&lt;td&gt;Remote controls, wireless sensors, IoT&lt;/td&gt;
&lt;td&gt;Doesn't require a traditional Wi-Fi router&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are just a little bit of inf about ESP32 dev boards. I hope this artical was useful with the given information. I hope to discuss about wireless communications in my next article.&lt;/p&gt;

&lt;p&gt;Seeee you with wireless communication!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Written By Janada Pelahara &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tutorial</category>
      <category>programming</category>
      <category>esp32</category>
      <category>iot</category>
    </item>
    <item>
      <title>ESP32 + Python: From Microcontroller to IoT</title>
      <dc:creator>Janada Pelahara</dc:creator>
      <pubDate>Sun, 23 Aug 2026 23:34:39 +0000</pubDate>
      <link>https://dev.to/janadapelahara/esp32-python-from-microcontroller-to-iot-2498</link>
      <guid>https://dev.to/janadapelahara/esp32-python-from-microcontroller-to-iot-2498</guid>
      <description>&lt;p&gt;&lt;strong&gt;ESP32 + Python: From Microcontroller to IoT&lt;br&gt;
Artcal 0: Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When it comes to transferring data from one place to another, things can sometimes become tricky, especially when communication happens between the hardware and software levels.&lt;/p&gt;

&lt;p&gt;In this article series, I would love to share the experience and knowledge I’ve gathered while working with ESP32 and Python. We’ll explore how these two technologies can work together, starting from the basics and gradually moving towards more interesting and practical projects.&lt;/p&gt;

&lt;p&gt;If you have any questions, suggestions, or ideas along the way, feel free to share them in the comments section below. I’d love to hear from you and discuss them with the community.&lt;/p&gt;

&lt;p&gt;So, without further ado, let’s begin! 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is ESP32?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think about Esp32 as a microcontroller with Internet facilities, consisting WiFi, Bluetooth and a own wireless data transfer protocol called ESP-NOW between ESP32 chips. Nowdays, the developers have made development boards integrading these chips for the easy use.&lt;/p&gt;

&lt;p&gt;ESP32 is a family of microcontrollers developed by Espresiff. This can read sensor inputs, process data, contol devices and specially connect to the internet. This is like Arduino but better, faster and smaller. With these information that we have, we can speak about this board as,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"A powerful microcontroller that can interact with electronic components and communicate with other devices through Wi-Fi, Bluetooth, and other communication methods."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Python???&lt;/strong&gt;&lt;br&gt;
We use different languages to tell the same thing but in different ways. We use programming languages to tell the computer the same thing but in different approches. Some languages can be hard to learn and some are easy. Some are well developed and some are not.&lt;/p&gt;

&lt;p&gt;Python programming language was created back in 1980s by Guido Van Rossum, with the development begining around 1989. It was publicly released in Feb, 1991.&lt;/p&gt;

&lt;p&gt;🐍 1989 — Guido van Rossum developing Python.&lt;br&gt;
🐍 1991 — The first public release.&lt;br&gt;
🐍 2000 — Python 2.0.&lt;br&gt;
🐍 2008 — Python 3.0 .&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python is a high-level, general-purpose programming language known for its simple and readable syntax. This allows programmers to write programs that can perform tasks, process data, and interact with other software, devices, and systems. It is widely used in areas such as web development, automation, data analysis, artificial intelligence, and hardware communication._&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;IoT&lt;/strong&gt;&lt;br&gt;
We interact with objects every day in order to complete our tasks. They all are connected to prefome a task. We're the onece who connect them together.&lt;br&gt;
IoT simply refers to,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Internet of things"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This refers to physical devices that can collect, exchange, and sometimes process data over a network(usually the internet).&lt;/p&gt;

&lt;p&gt;In simple terms, IoT is about connecting everyday objects to the internet so they can connect, communicate and perform tasks automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Combo&lt;/strong&gt;&lt;br&gt;
The combination of these technologies are always like a cup and the tea.&lt;/p&gt;

&lt;p&gt;The combination of ESP32 and Python brings together hardware and software, allowing them to work together to create interactive and connected applications. The ESP32 can collect data from sensors, control electronic components, and communicate over networks, while Python can receive, process, analyze, and display that data. Together, they provide a powerful foundation for building IoT projects and other hardware-software applications.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An ESP32 can read data from a temperature sensor and send that data over Wi-Fi to a computer or a server. Then they can process and get an action with those information as needed. This is an example of an IoT application.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
We learned about ESP32, Python, IoT&lt;br&gt;&lt;br&gt;
In this article, we introduced the two main technologies we’ll be working with throughout this series: ESP32 and Python. We looked at what they are, what they can do, and how combining hardware and software can open up many possibilities for IoT and other practical projects.&lt;/p&gt;

&lt;p&gt;This is only the introduction towards a greater communication. From next article onwards, we’ll start getting our ESP32 and Python knowledge with theory &amp;amp; practical examples. This is just our first steps toward making them communicate with each other.&lt;/p&gt;

&lt;p&gt;We'll meeeeet soooooooooooon! 🚀&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Written By Janada Pelahara&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>esp32</category>
      <category>python</category>
      <category>programming</category>
      <category>iot</category>
    </item>
  </channel>
</rss>
