Perbedaan ESP32 dan ESP8266

Perbedaan ESP32 dan ESP8266 adalah sebagai berikut

Parameter ESP32 ESP8266
Prosesor / CPU Xtensa :LX6 dual core / single core Xtensa L:106 single core
clock processor 160 MHz 80 MHz
Memori Flash ada versi dengan built in flash tidak ada built in flash
Memori SRAM    
Memori EEPROM di flash memory  
Wifi HT40 HT20
Bluetooth tidak ada Bluetooth 4.2 dan BLE
SPI 4 2
I2C 2 1
I2S 2 2
UART 2 2
ADC 12 bit 10 bit
CAN ada tidak ada
Built in sensor hall sensor, temperature sensor tidak ada

 

ESP8266 NodeMCU (kiri), ESP32 DevkitC (tengah), ESP32 Lolin32 Lite (kanan)
ESP8266 NodeMCU (kiri), ESP32 DevkitC (tengah), ESP32 Lolin32 Lite (kanan)

Penjelasan Ringkas ESP32

ESP 32 adalah mikrokontroler yang memiliki banyak fitur pada prosesornya, dan dilengkapi dengan konektivitas Wi-Fi dan Bluetooth terintegrasi untuk berbagai macam aplikasi.

ESP32 mampu berfungsi dengan andal di lingkungan industri, dengan suhu pengoperasian mulai dari –40°C hingga +125°C. ESP32 dapat secara dinamis menghilangkan ketidaksempurnaan sirkuit eksternal dan beradaptasi dengan perubahan kondisi eksternal dengan dukungan rangkaian kalibrasi di dalamnya. Rangkaian kalibrasi ini memungkinkan WiFi pada ESP32 berfungsi tanpa perlu kalibrasi ekstra.

ESP32 dirancang untuk perangkat bergerak (mobile), perangkat elektronik yang dapat dikenakan (wearable electronics), dan aplikasi IoT. Konsumsi daya ESP32 dapat dibuat sangat rendah dengan kombinasi beberapa macam perangkat lunak khusus. ESP32 juga mencakup fitur-fitur canggih, seperti ‘clock gating‘ untuk mereduksi konsumsi daya, berbagai mode daya, dan penskalaan daya secara dinamis.

ESP32 dibuat sangat terintegrasi dengan sakelar pemilih antena di dalamnya, RF balun, power amplifier untuk radio, amplifier penerima radio dengan kebisingan rendah (low noise), filter, dan modul manajemen daya. ESP32 menambahkan fungsionalitas dan keserbagunaan yang banyak aplikasi dengan hanya memerlukan ruang kecil di PCB (Printed Circuit Board)

ESP32 dapat berfungsi sebagai sistem mandiri yang lengkap atau sebagai perangkat pembantu ke mikrokontroler lain, mengurangi overhead tumpukan komunikasi pada prosesor aplikasi utama. ESP32 dapat berinteraksi dengan sistem lain untuk menyediakan fungsionalitas Wi-Fi dan Bluetooth melalui antarmuka SPI/SDIO atau I2C/UART.

Modul ESP32 tersedia dalam berbagai versi, di antaranya adalah Lolin32 Lite dan DevkitC serta clone nya.

Penjelasan Ringkas ESP8266

ESP8266 adalah prosesor yang dibuat oleh Espressif. ESP8266 adalah pendahulu dari ESP32.

Referensi

 

UDP Server dengan Python

Berikut ini contoh kode UDP server dengan bahasa Python. Kode ini dapat dijalankan di Windows, Linux dan Raspberry Pi

import socket

# bind all IP
HOST = '0.0.0.0' 
# Listen on Port 
PORT = 44444 
#Size of receive buffer   
BUFFER_SIZE = 1024    
# Create a TCP/IP socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind the socket to the host and port
s.bind((HOST, PORT))
while True:
    # Receive BUFFER_SIZE bytes data
    # data is a list with 2 elements
    # first is data
    #second is client address
    data = s.recvfrom(BUFFER_SIZE)
    if data:
        #print received data
        print('Client to Server: ' , data)
        # Convert to upper case and send back to Client
        s.sendto(data[0].upper(), data[1])
# Close connection
s.close()

Referensi

UDP Client di ESP32

Berikut ini contoh pembuatan aplikasi UDP client di ESP32 dengan compiler Arduino

#include <WiFi.h>
#include <WiFiUdp.h>

/* WiFi network name and password */
const char * ssid = "dd-wrt";
const char * pwd = "0000000000";

// IP address to send UDP data to.
// it can be ip address of the server or 
// a network broadcast address
// here is broadcast address
const char * udpAddress = "192.168.1.100";
const int udpPort = 44444;

//create UDP instance
WiFiUDP udp;

void setup(){
  Serial.begin(115200);
  
  //Connect to the WiFi network
   WiFi.begin(ssid, pwd);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop(){
  //data will be sent to server
  uint8_t buffer[50] = "hello world";
  //This initializes udp and transfer buffer
  udp.beginPacket(udpAddress, udpPort);
  udp.write(buffer, 11);
  udp.endPacket();
  memset(buffer, 0, 50);
  //processing incoming packet, must be called before reading the buffer
  udp.parsePacket();
  //receive response from server, it will be HELLO WORLD
  if(udp.read(buffer, 50) > 0){
    Serial.print("Server to client: ");
    Serial.println((char *)buffer);
  }
  //Wait for 1 second
  delay(1000);
}

Referensi