Belajar Embedded Engineer - Communication & Networking Embedded
Episode 12 of 28

Belajar Embedded Engineer - Communication & Networking Embedded

Menghubungkan perangkat ke dunia: memahami pilihan TCP/IP stack untuk MCU, protokol MQTT dengan publish/subscribe untuk IoT, dan dasar secure communication dengan TLS, ditutup praktik menghubungkan perangkat nyata ke broker dan membaca datanya dari jarak jauh

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Perangkat yang tidak terhubung kini langka. Dari smartwatch yang menyinkronkan data, sensor pertanian yang melapor ke cloud, sampai kunci pintu yang bisa dibuka dari ponsel — semuanya membutuhkan satu kemampuan yang belum kita bahas: berkomunikasi lewat jaringan. Episode ini menjembatani dunia MCU dengan dunia networking.

Tantangan utamanya bukan "bisa connect", melainkan bisa connect dengan hemat dan aman di perangkat berresource kecil: TCP/IP penuh berat, TLS mahal dalam RAM dan CPU, dan protokol yang salah pilih membuat perangkat boros baterai. Episode ini membangun pemahaman pilihan protokol, stack, dan pola yang dipakai industri IoT nyata.

Arsitektur Koneksi Perangkat

100%

Di arsitektur ini, MCU kecil hampir selalu berperan sebagai publisher (mengirim data) atau subscriber (menerima perintah). Jarang sekali MCU menjadi server. Pemahaman ini menentukan protokol yang dipilih — publish/subscribe jauh lebih cocok untuk perangkat kecil daripada model request/response klasik.

Memilih Stack TCP/IP

MCU dengan WiFi (ESP32) biasanya punya stack TCP/IP bawaan (lwIP). MCU tanpa radio perlu stack eksternal. Pemain utama di dunia MCU:

StackKarakteristikCocok untuk
lwIPRingan, banyak dipakai (ESP-IDF)MCU dengan WiFi/Ethernet
Zephyr NetBagian dari OS Zephyr, modulerBoard ber-RTOS Zephyr
MbedTLSBukan stack, tapi crypto/TLSLapisan keamanan di atas TCP/IP
No stack (LoRa/raw)Tanpa TCP/IP, frame langsungLPWAN, sensor jarak jauh

Aturan praktis: jika perangkat harus berbicara ke internet dengan handshake TCP — pakai lwIP (atau stack bawaan platform). Jika hanya butuh mengirim beberapa byte dalam jarak jauh — pertimbangkan LPWAN (LoRa) yang tidak butuh stack TCP/IP sama sekali.

MQTT: Bahasa IoT

MQTT (Message Queuing Telemetry Transport) adalah protokol publish/subscribe yang dirancang untuk jaringan kecil, lambat, dan tidak stabil — persis kebutuhan embedded. Prinsip intinya:

  1. Client menghubungkan ke broker (server).
  2. Client publish ke topic (misal rumah/dapur/suhu) atau subscribe ke topic.
  3. Broker meneruskan pesan ke semua subscriber topic tersebut.
Konsep publish/subscribe
Sensor -> publish("rumah/dapur/suhu", "26.5") -> Broker
Broker -> "26.5" -> Dashboard (subscribe "rumah/dapur/#")
Broker -> "26.5" -> HP (subscribe "rumah/dapur/suhu")

Keunggulan MQTT: koneksi tunggal ke broker bisa melayani banyak topic, payload ringan, dan punya tiga level QoS:

QoSJaminanBiaya
0At most once — pesan bisa hilangTerendah
1At least once — pesan pasti tiba, bisa duplikatSedang
2Exactly once — tidak hilang, tidak duplikatTertinggi

Untuk telemetry biasa (suhu, status), QoS 0 atau 1 sudah cukup; untuk perintah kontrol (buka kunci, nyalakan mesin), pertimbangkan QoS 1 + idempotent handler di sisi penerima.

Contoh koneksi dengan Arduino framework di ESP32:

cpp
#include <WiFi.h>
#include <PubSubClient.h>
 
const char* ssid = "SSID_ANDA";
const char* pass = "PASSWORD";
const char* broker = "broker.emqx.io";
 
WiFiClient wifi;
PubSubClient mqtt(wifi);
 
void setup() {
    WiFi.begin(ssid, pass);
    while (WiFi.status() != WL_CONNECTED) delay(100);
    mqtt.setServer(broker, 1883);
    mqtt.connect("sensor-dapur-01");
}
 
void loop() {
    mqtt.loop();
    if (!mqtt.connected()) mqtt.connect("sensor-dapur-01");
    mqtt.publish("rumah/dapur/suhu", "26.5");
    delay(5000);
}

Kesalahan umum pemula: memanggil publish tanpa mqtt.loop() di loop() — pesan tidak pernah terkirim karena socket tidak diproses.

Warning

Jangan pernah mengirim data sensor tanpa enkripsi — apalagi di jaringan publik. Port 1883 plaintext bisa dibaca siapa pun di jaringan yang sama. Untuk produksi, selalu gunakan TLS (port 8883, atau 443 untuk WebSocket). Biaya TLS di MCU nyata: RAM tambahan untuk handshake dan energi CPU — pertimbangkan di desain power (episode 13).

Secure Communication: TLS dan Lebih Jauh

TLS (Transport Layer Security) mengamankan data saat transit: enkripsi mencegah pembacaan, dan sertifikat mencegah peniruan server. Di MCU, implementasi paling umum adalah MbedTLS:

  • Handshake TLS butuh beberapa KB RAM — pastikan heap cukup.
  • Sertifikat root CA disimpan di flash (bukan RAM).
  • PSA Crypto / secure element bisa memindahkan kriptografi ke hardware khusus — mempercepat dan mengamankan kunci.

Melampaui TLS, praktik keamanan komunikasi yang wajib:

  1. Authenticate devices — tiap perangkat punya identitas (sertifikat atau token unik), bukan sekadar password bersama.
  2. Mutual TLS (mTLS) — server dan perangkat saling memverifikasi — standar untuk IoT produksi.
  3. Signed data — untuk data penting, tanda tangan digital memastikan tidak ada perangkat liar menyuntik data palsu.
  4. OTA terotentikasi — unduhan firmware harus diverifikasi tanda tangannya (episode 17).

Praktik: Hubungkan Perangkat Kalian

  1. Siapkan broker lokal untuk belajar: docker run -p 1883:1883 eclipse-mosquitto (atau pakai broker publik EMQX).
  2. Modifikasi contoh di atas: publish pembacaan sensor ADC kalian, bukan string statis.
  3. Subscribe di laptop: mosquitto_sub -h localhost -t 'rumah/#' -v dan lihat data mengalir.
  4. Aktifkan TLS (broker + mqtts://) dan verifikasi data tidak terbaca dengan mosquitto_sub plaintext.
  5. Catat RAM yang terpakai sebelum/sesudah TLS — kuantifikasi trade-off yang kalian pelajari tadi.

Common Pitfalls

  1. MQTT connect tanpa retry — WiFi putus, reconnect loop gagal; gunakan pattern reconnect + backoff.
  2. Payload format berubah-ubah — tetapkan skema (JSON/senml/proto) sejak awal; perangkat di lapangan susah di-update.
  3. Lupa mqtt.loop() — socket tidak diproses, publish tidak jalan.
  4. Hardcode credentials di firmware — bocor saat binary di-reverse; simpan di flash terproteksi atau secure element.
  5. QoS dan topik salah desain — data duplikat atau tidak pernah tiba saat yang penting.

Penutup

Inti yang harus dibawa pulang:

  • Perangkat kecil hampir selalu publisher/subscriber, bukan server — MQTT adalah protokol paling pas.
  • Pilih stack TCP/IP sesuai resource: lwIP untuk WiFi/Ethernet, LPWAN untuk jarak jauh.
  • MQTT: publish/subscribe, 3 level QoS, broker sebagai pusat pertukaran.
  • TLS wajib untuk produksi; mTLS dan signed data untuk keamanan komunikasi penuh.

Di episode 13 selanjutnya kita menghemat energi: power management — low power modes, optimasi energi, dan memperpanjang umur baterai. Perangkat IoT hidup dari baterai yang harus bertahan berbulan-bulan, dan itu adalah tantangan desain — bukan sekadar tambahan. Sampai jumpa di episode 13!

Belajar Embedded Engineer - Communication & Networking Embedded | Belajar Embedded Engineer