Belajar IoT Engineer - Hardware & Sensors Dasar
Episode 3 of 28

Belajar IoT Engineer - Hardware & Sensors Dasar

Memahami perangkat keras dasar IoT: perbedaan MCU dan SoC, memilih ESP32 atau STM32, cara kerja GPIO, ADC, sensor digital dan analog, aktuator, serta praktik membaca sensor suhu dan kelembapan pertama dengan ESP32.

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

Pendahuluan

Setelah di episode 2 kita memahami arsitektur end-to-end, pada episode ini kita turun ke lapisan paling bawah: hardware dan sensor. Ini adalah lapisan yang berhubungan langsung dengan dunia fisik — membaca suhu ruangan, mendeteksi gerakan, atau menyalakan relay.

Mengapa hardware penting dipahami seorang IoT Engineer? Karena di sinilah konsep abstrak berubah menjadi tegangan nyata. Ketika firmware membaca nilai dari ADC, kalian harus paham kenapa nilai 2048 berarti 1,65V, dan kenapa sensor tertentu butuh pull-up resistor. Kesalahan di lapisan ini paling sulit didiagnosis dari jarak jauh — hardware tidak pernah mengirimkan log error.

MCU vs SoC

Kata "chip" di papan IoT sebenarnya merujuk dua hal berbeda:

KarakteristikMCU (Microcontroller)SoC (System-on-Chip)
CPU1–2 core, ratusan MHzMulti-core, bisa GPU/Neural unit
RAMPuluhan–ratusan KBRatusan MB–GB
OSBare-metal / RTOSLinux/Android
ContohSTM32, ATmega, ESP32Raspberry Pi, i.MX8, ESP32-S3 (SoC)
Konsumsi dayaSangat rendah (µA–mA)Tinggi (Watt)

ESP32 sebenarnya hibrida: ia punya MCU cores plus WiFi/BLE radio dan cukup RAM (520 KB) — menjadikannya pilihan ideal untuk belajar. STM32 adalah MCU murni yang dominan di industri karena deterministik dan hemat daya.

Note

ESP32 cocok untuk prototype dan produk konsumen bervolume kecil-menengah. STM32 dipakai saat butuh ketepatan real-time, konsumsi daya sangat rendah, atau jalur produksi jutaan unit. Untuk series ini, ESP32 cukup untuk semua praktik.

GPIO, ADC, dan PWM

Perangkat lunak berkomunikasi dengan hardware lewat pin. Empat jenis pin yang wajib kalian pahami:

Jenis PinFungsiAnalogi
GPIO digitalMembaca/menulis nilai 0 atau 1Saklar: nyala/mati
ADCMengubah tegangan analog menjadi angkaTimbangan digital
PWMMenghasilkan sinyal dengan lebar pulsa bervariasiMengatur kecerahan lampu
KomunikasiUART, I2C, SPI — berbicara dengan sensorObrolan antar perangkat

GPIO adalah pin serbaguna: bisa jadi input (membaca button) atau output (menyalakan LED). ADC hanya ada di pin tertentu — di ESP32, pin GPIO34 sampai GPIO39 adalah input-only ADC. PWM mengatur duty cycle sinyal untuk mensimulasikan nilai analog.

Sensor: Digital vs Analog

Sensor mengubah besaran fisik menjadi sinyal listrik. Ada dua kategori utama:

TipeCara BacaContohOutput
AnalogADC — nilai tegangan proporsionalLDR (cahaya), potensiometerTegangan kontinu
DigitalBus komunikasi (I2C/SPI/1-Wire) atau GPIODHT22, BME280, DS18B20Angka siap pakai

Sensor analog menghasilkan tegangan yang harus diinterpretasi firmware. Sensor digital melakukan konversi di dalam chip dan mengirim hasil lewat protokol komunikasi — lebih akurat dan lebih mudah diprogram. BME280 misalnya mengirim data mentah (raw) yang diubah firmware menjadi suhu, tekanan, dan kelembapan.

Praktik: Membaca Sensor Suhu & Kelembapan

Mari membaca sensor DHT22 dengan ESP32. Wiring: VCC ke 3.3V, GND ke GND, DATA ke GPIO4 — dengan resistor pull-up 10k antara DATA dan VCC.

src/main.cpp - baca DHT22
#include <Arduino.h>
#include <DHT.h>
 
#define DHTPIN 4
#define DHTTYPE DHT22
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
    Serial.begin(115200);
    dht.begin();
}
 
void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
 
    if (isnan(h) || isnan(t)) {
        Serial.println("Gagal membaca sensor");
    } else {
        Serial.print("Suhu: ");
        Serial.print(t);
        Serial.print(" C, Kelembapan: ");
        Serial.println(h);
    }
    delay(2000);
}
Output serial
Suhu: 30.40 C, Kelembapan: 62.10
Suhu: 30.50 C, Kelembapan: 62.00

dht.readTemperature() memicu komunikasi 1-Wire ke sensor, menunggu bit data, lalu mengubahnya menjadi float. Jika sensor tidak merespons, isnan() menangkap kegagalan dan mencetak pesan alih-alih menampilkan angka sampah.

Membaca Sensor Analog dengan ADC

Sensor analog seperti LDR (light dependent resistor) dibaca lewat ADC:

src/main.cpp - baca LDR via ADC
#include <Arduino.h>
 
void setup() {
    Serial.begin(115200);
}
 
void loop() {
    int raw = analogRead(34);            // GPIO34 (input-only ADC)
    float volt = raw * (3.3f / 4095.0f); // ESP32 ADC 12-bit
    Serial.printf("raw=%d volt=%.2f\n", raw, volt);
    delay(500);
}

ADC ESP32 12-bit menghasilkan nilai 0–4095. Dengan referensi 3.3V, nilai mentah dikonversi dengan rumus volt = raw * (3.3 / 4095). Ruangan terang memberikan nilai kecil (LDR resistansinya turun), ruangan gelap nilai besar.

Aktuator: Melakukan Sesuatu

Sensor membaca dunia, aktuator mengubah dunia. Contoh paling dasar: LED dan relay.

src/main.cpp - kontrol relay dari button
#include <Arduino.h>
 
#define BUTTON_PIN 15
#define RELAY_PIN 2
 
void setup() {
    pinMode(BUTTON_PIN, INPUT_PULLUP);
    pinMode(RELAY_PIN, OUTPUT);
    digitalWrite(RELAY_PIN, LOW);
}
 
void loop() {
    bool pressed = digitalRead(BUTTON_PIN) == LOW; // aktif-low
    digitalWrite(RELAY_PIN, pressed ? HIGH : LOW);
    delay(50);
}

INPUT_PULLUP mengaktifkan resistor pull-up internal — saat button ditekan, pin terhubung ke GND dan membaca LOW. Relay adalah saklar elektromagnetik yang mengizinkan perangkat bertegangan tinggi (lampu 220V) dikontrol sinyal 3.3V.

Kesalahan Umum

  1. Memberi 5V ke pin 3.3V ESP32 — papan bisa hang atau rusak permanen. Periksa datasheet sebelum wiring.
  2. Lupa resistor pull-up pada sensor 1-Wire/I2C — sensor mengirim sinyal tidak stabil atau tidak terbaca.
  3. Memakai pin input-only sebagai output — GPIO34–39 ESP32 tidak bisa jadi output; sinyal akan diam.
  4. Delay blocking menghambat multi-taskingdelay(2000) menghentikan seluruh program; di episode 4 kita ganti dengan pola non-blocking dan RTOS.
  5. Mengabaikan kualitas catu daya — ESP32 WiFi membutuhkan arus puncak tinggi; catu daya USB yang lemah membuat papan reboot saat connect WiFi.

Warning

Bekerja dengan listrik 220V (relay, lampu rumah) bisa mematikan. Selama belajar, uji dengan LED dan rangkaian bertegangan rendah. Jika harus menyentuh tegangan tinggi, gunakan modul relay berisolasi dan pelajari safety dasar kelistrikan terlebih dahulu.

Penutup

Inti yang harus dibawa pulang:

  • MCU (STM32, ESP32) untuk perangkat hemat daya; SoC (Raspberry Pi) untuk perangkat berat.
  • Kuasai empat jenis pin: GPIO, ADC, PWM, dan bus komunikasi.
  • Sensor analog dibaca lewat ADC; sensor digital dibaca lewat protokol (I2C/1-Wire/SPI).
  • Aktuator (LED/relay) mengubah sinyal digital menjadi aksi fisik.
  • Common pitfalls: tegangan salah, lupa pull-up, pin input-only, delay blocking, dan catu daya lemah.

Di episode 4 selanjutnya, kita akan naik satu tingkat: embedded firmware dasar — menulis C/C++ yang benar untuk mikrokontroler, memahami batasan memori flash dan RAM, serta pengenalan RTOS agar firmware bisa menjalankan banyak tugas sekaligus. Pastikan sensor kalian sudah terbaca, karena kita akan membangun di atasnya!