Presensi RFID Berbasis IoT dengan Google Spredsheet

```html

Presensi RFID Berbasis IoT

Sistem monitoring kehadiran siswa secara realtime menggunakan ESP32, RFID RC522, LCD I2C, dan Google Spreadsheet.

PROJECT IoT • SMK NEGERI 1 KEDUNGWUNI
Proyek presensi RFID berbasis ESP32 dan IoT

Presensi RFID ESP32 Google Spreadsheet Realtime Attendance System

Profil Tim

Nama Tim: Isi Nama Tim

Anggota 01 Isi Nama Siswa
Anggota 02 Isi Nama Siswa
Anggota 03 Isi Nama Siswa

Sekolah: SMK Negeri 1 Kedungwuni

Deskripsi Proyek

Sistem ini merupakan prototype presensi siswa berbasis Internet of Things (IoT) menggunakan ESP32 sebagai mikrokontroler dan RFID RC522 sebagai media identifikasi.

Ketika kartu RFID ditempelkan pada reader, ESP32 membaca UID kartu kemudian mengidentifikasi siswa. Data kehadiran selanjutnya dikirim melalui jaringan WiFi menuju Google Apps Script dan disimpan pada Google Spreadsheet.

Sistem ini memungkinkan data presensi dipantau secara realtime tanpa harus melakukan pencatatan manual.

Gambaran Sistem

Diagram sistem presensi RFID ESP32 IoT

Informasi Sistem

Mikrokontroler ESP32 DevKit
Identifikasi RFID RC522
Database Google Spreadsheet
Komunikasi WiFi / HTTP
Display LCD I2C 16×2
Platform Google Apps Script

Komponen yang Digunakan

No Komponen Jumlah Fungsi
1 ESP32 DevKit 1 Mikrokontroler dan koneksi WiFi
2 RFID RC522 1 Membaca UID kartu RFID
3 LCD I2C 16×2 1 Menampilkan informasi presensi
4 Buzzer 1 Memberikan indikator suara
5 Kartu RFID Beberapa Identitas siswa
6 Jumper Cable Secukupnya Penghubung rangkaian

Wiring ESP32

RFID RC522 → ESP32

RC522 ESP32 Fungsi
SDA / SS GPIO 5 Chip Select
SCK GPIO 18 SPI Clock
MOSI GPIO 23 SPI Data Out
MISO GPIO 19 SPI Data In
RST GPIO 27 Reset RFID
3.3V 3.3V Power
GND GND Ground

LCD I2C → ESP32

LCD I2C ESP32
SDA GPIO 21
SCL GPIO 22
VCC 5V / sesuai modul
GND GND

Buzzer → ESP32

Buzzer ESP32
+ GPIO 25
- GND
Catatan: RC522 bekerja pada tegangan 3,3V. Jangan memberikan tegangan 5V langsung ke pin logika RC522.

Alur Kerja Sistem

1
Kartu RFID ditempel
2
RC522 membaca UID
3
ESP32 memproses data
4
Data dikirim melalui WiFi
5
Apps Script menerima data
6
Data tersimpan di Spreadsheet

Google Apps Script

function doGet(e) {

  var sheet =
    SpreadsheetApp
    .getActiveSpreadsheet()
    .getSheetByName("Data");

  var uid  = e.parameter.uid || "";
  var nama = e.parameter.nama || "";

  sheet.appendRow([
    new Date(),
    uid,
    nama
  ]);

  return ContentService
    .createTextOutput("OK");
}
Catatan: Buat sheet bernama Data sebelum menjalankan Web App.

Source Code ESP32

#include <WiFi.h>
#include <HTTPClient.h>
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define SS_PIN   5
#define RST_PIN  27
#define BUZZER   25

MFRC522 rfid(SS_PIN, RST_PIN);

LiquidCrystal_I2C lcd(0x27, 16, 2);

const char* ssid = "NamaWifi";
const char* password = "PasswordWifi";

String scriptURL =
  "ISI_URL_WEB_APP_APPS_SCRIPT";


void setup() {

  Serial.begin(115200);

  // SPI RFID
  SPI.begin();

  rfid.PCD_Init();

  // Buzzer
  pinMode(BUZZER, OUTPUT);
  digitalWrite(BUZZER, LOW);

  // LCD
  Wire.begin(21, 22);

  lcd.init();
  lcd.backlight();

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Connecting WiFi");

  // WiFi
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");
  }

  Serial.println();
  Serial.println("WiFi Connected");

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("System Ready");

  delay(1500);

  lcd.clear();
  lcd.print("Tempelkan Kartu");
}


void loop() {

  // Cek kartu baru
  if (!rfid.PICC_IsNewCardPresent()) {
    return;
  }

  // Baca kartu
  if (!rfid.PICC_ReadCardSerial()) {
    return;
  }

  // Membaca UID
  String uid = "";

  for (byte i = 0;
       i < rfid.uid.size;
       i++) {

    if (rfid.uid.uidByte[i] < 0x10) {
      uid += "0";
    }

    uid += String(
      rfid.uid.uidByte[i],
      HEX
    );

  }

  uid.toUpperCase();

  Serial.print("UID: ");
  Serial.println(uid);

  // Buzzer
  digitalWrite(BUZZER, HIGH);
  delay(150);
  digitalWrite(BUZZER, LOW);

  // LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("UID:");
  lcd.setCursor(0, 1);
  lcd.print(uid.substring(0, 16));

  // Kirim data
  if (WiFi.status() == WL_CONNECTED) {

    HTTPClient http;

    String nama = "Siswa";

    String url =
      scriptURL +
      "?uid=" + uid +
      "&nama=" + nama;

    http.begin(url);

    int httpCode =
      http.GET();

    Serial.print("HTTP Code: ");
    Serial.println(httpCode);

    if (httpCode > 0) {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Presensi Berhasil");

    } else {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Gagal Mengirim");

    }

    http.end();

  } else {

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("WiFi Terputus");

  }

  delay(2000);

  lcd.clear();
  lcd.print("Tempelkan Kartu");

  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();

}
Pengujian: Pastikan library MFRC522, LiquidCrystal_I2C, dan koneksi WiFi sudah tersedia sebelum melakukan upload.

Video Demo

Kesimpulan

Proyek presensi RFID berbasis IoT menunjukkan bagaimana mikrokontroler ESP32 dapat digunakan untuk membangun sistem monitoring kehadiran yang terhubung dengan internet.

Kombinasi RFID RC522, WiFi ESP32, Google Apps Script, dan Google Spreadsheet menghasilkan sistem yang dapat mencatat data presensi secara otomatis dan memudahkan proses monitoring oleh guru.

Proyek ini juga dapat dikembangkan lebih lanjut dengan penambahan database siswa, status datang/pulang, notifikasi Telegram atau WhatsApp, foto siswa, dashboard monitoring, serta sistem laporan otomatis.

SMK Negeri 1 Kedungwuni
IoT Project • ESP32 • RFID • Google Spreadsheet
2026
```

Kotak Amal Berbasis IoT Terintegrasi Telegram

```html

Kotak Amal Pintar Berbasis IoT

Sistem monitoring pemasukan donasi uang kertas menggunakan ESP32, sensor infrared, LCD I2C, dan notifikasi Telegram.

PROJECT BASED LEARNING • SMK NEGERI 1 KEDUNGWUNI

Kotak Amal Pintar IoT ESP32 Sensor Infrared Telegram LCD SMK Negeri 1 Kedungwuni

Profil Tim Pengembang

Anggota 01 Dwi Rizqi Nafi'ati
Anggota 02 Eva Aulia Nazah
Anggota 03 Faida Falisya
Anggota 04 Karisma Zahrotu Sita

Instansi: SMK Negeri 1 Kedungwuni

Bidang: Internet of Things (IoT)

Permasalahan

Pengelolaan kotak amal secara konvensional memiliki keterbatasan dalam monitoring. Pengelola harus memeriksa kotak secara langsung untuk mengetahui apakah terdapat uang yang baru dimasukkan.

Kondisi tersebut menjadi dasar pengembangan sistem monitoring berbasis Internet of Things agar kejadian pemasukan donasi dapat diketahui secara lebih cepat.

Solusi Sistem

Tim mengembangkan prototype kotak amal pintar menggunakan ESP32 sebagai pusat pengendali.

Sensor infrared digunakan untuk mendeteksi adanya objek yang melewati jalur masuk kotak amal. Ketika objek terdeteksi, ESP32 mengubah status sistem, menampilkan informasi pada LCD, dan mengirimkan notifikasi melalui Telegram.

Batasan sistem: sensor infrared pada prototype ini mendeteksi keberadaan atau masuknya objek. Sensor tersebut tidak dapat menentukan nominal uang seperti Rp10.000, Rp20.000, atau Rp50.000. Untuk mengenali nominal diperlukan metode tambahan, misalnya sensor optik, kamera, atau sistem validasi lainnya.

Prototype Sistem

Prototype kotak amal pintar berbasis ESP32

Komponen Sistem

No Komponen Jumlah Fungsi
1 ESP32 Dev Module 1 Mengolah data sensor dan komunikasi WiFi
2 Sensor Infrared 1 Mendeteksi objek yang melewati jalur masuk
3 LCD I2C 16×2 1 Menampilkan status sistem
4 Buzzer 1 Indikator suara
5 Power Supply 5V 1 Catu daya sistem

Wiring ESP32

Perangkat Pin ESP32 Keterangan
LCD I2C SDA GPIO 21 Data I2C
LCD I2C SCL GPIO 22 Clock I2C
Sensor Infrared OUT GPIO 34 Input digital
Buzzer + GPIO 25 Output indikator
Sensor GND GND Ground
LCD VCC 5V Sesuai spesifikasi modul
Catatan GPIO 34: GPIO 34 pada ESP32 merupakan pin input-only. Pin tersebut cocok untuk membaca output sensor, tetapi tidak dapat digunakan untuk mengendalikan LED, buzzer, relay, atau perangkat output lainnya.

Arsitektur Sistem

1
Uang / Objek Masuk
2
Sensor Infrared
3
ESP32
4
WiFi
5
Telegram

Cara Kerja Sistem

1. Deteksi: uang atau objek melewati jalur sensor infrared.

2. Pembacaan: sensor menghasilkan perubahan sinyal digital.

3. Pemrosesan: ESP32 membaca kondisi sensor.

4. Informasi lokal: LCD menampilkan status bahwa terdapat objek yang terdeteksi.

5. Notifikasi: ESP32 mengirim pesan ke Telegram melalui jaringan WiFi.

Source Code ESP32

#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const char* ssid = "NamaWiFi";
const char* password = "PasswordWiFi";

#define BOTtoken "TOKEN_BOT"
#define CHAT_ID "CHAT_ID"

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

const int sensorPin = 34;
const int buzzerPin = 25;

bool previousState = LOW;

void setup() {

  Serial.begin(115200);

  pinMode(sensorPin, INPUT);
  pinMode(buzzerPin, OUTPUT);

  digitalWrite(buzzerPin, LOW);

  Wire.begin(21, 22);

  lcd.init();
  lcd.backlight();

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Kotak Amal IoT");
  lcd.setCursor(0, 1);
  lcd.print("Connecting...");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("WiFi Connected");

  client.setInsecure();

  bot.sendMessage(
    CHAT_ID,
    "Sistem Kotak Amal IoT aktif.",
    ""
  );

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("System Ready");
  lcd.setCursor(0, 1);
  lcd.print("Monitoring...");
}

void loop() {

  bool currentState =
    digitalRead(sensorPin);

  /*
     Deteksi perubahan dari LOW
     menjadi HIGH.

     Dengan metode ini Telegram
     tidak dikirim terus menerus
     selama sensor tetap HIGH.
  */

  if (currentState == HIGH &&
      previousState == LOW) {

    Serial.println(
      "Objek terdeteksi"
    );

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Donasi Masuk");

    lcd.setCursor(0, 1);
    lcd.print("Notifikasi...");

    digitalWrite(buzzerPin, HIGH);
    delay(150);
    digitalWrite(buzzerPin, LOW);

    if (WiFi.status() ==
        WL_CONNECTED) {

      bot.sendMessage(
        CHAT_ID,
        "Donasi terdeteksi pada Kotak Amal IoT.",
        ""
      );
    }

    delay(500);

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("System Ready");
    lcd.setCursor(0, 1);
    lcd.print("Monitoring...");
  }

  previousState =
    currentState;

  delay(50);
}
Penting: program ini mendeteksi perubahan status sensor, bukan mengenali nominal uang. Jika sensor tetap berada pada kondisi HIGH, sistem tidak akan mengirim pesan Telegram berulang-ulang sampai terjadi perubahan kembali ke LOW lalu HIGH.

Hasil Pengujian

No Pengujian Hasil yang Diharapkan Status
1 ESP32 dinyalakan Sistem melakukan inisialisasi Berhasil
2 WiFi terhubung ESP32 terhubung ke internet Berhasil
3 Objek melewati sensor Sensor mendeteksi perubahan Berhasil
4 LCD Status ditampilkan Berhasil
5 Telegram Notifikasi diterima Berhasil

Kelebihan Sistem

✓ Monitoring dapat dilakukan dari jarak jauh.

✓ Notifikasi dikirim secara otomatis.

✓ Menggunakan komponen yang relatif sederhana.

✓ Dapat dikembangkan menjadi sistem monitoring yang lebih kompleks.

Keterbatasan Sistem

Sistem prototype ini belum dapat menentukan nominal uang yang dimasukkan.

Sistem juga masih bergantung pada koneksi WiFi untuk mengirimkan notifikasi Telegram.

Sensor infrared dapat mendeteksi objek, tetapi belum dapat memastikan bahwa objek tersebut benar-benar merupakan uang kertas.

Pengembangan Selanjutnya

1. Database: menyimpan riwayat setiap transaksi ke Google Spreadsheet atau database online.

2. Dashboard: menampilkan jumlah transaksi dan statistik donasi.

3. Identifikasi nominal: menggunakan metode sensor atau kamera untuk membedakan nominal uang.

4. Notifikasi lanjutan: menambahkan informasi waktu dan jumlah transaksi pada Telegram.

5. Keamanan: menambahkan sensor tambahan untuk mendeteksi pembukaan atau gangguan pada kotak amal.

Video Demo

Kesimpulan

Proyek Kotak Amal Pintar menunjukkan penerapan Internet of Things menggunakan ESP32 untuk melakukan monitoring terhadap aktivitas pada kotak amal.

Sensor infrared digunakan sebagai input, ESP32 sebagai pusat pemrosesan, LCD sebagai media informasi lokal, dan Telegram sebagai media notifikasi jarak jauh.

Prototype ini masih memiliki keterbatasan dalam mengenali nominal uang, tetapi struktur sistem dapat dikembangkan menjadi sistem monitoring donasi yang lebih lengkap.

```

Tugas Pengemabangan

Solusi Tugas Pengembangan: Integrasi Monitoring Analog dan Web Control

Tugas ini mengintegrasikan dua konsep fundamental IoT: Data Acquisition (akuisisi data dari sensor) dan Remote Actuation (pengendalian jarak jauh). Sistem ini memungkinkan pengguna memantau nilai tegangan analog dari potensiometer sekaligus mengontrol status LED melalui satu antarmuka web.

I. Skema Logika Program

Mekanisme Kerja:
  • Fungsi analogRead(): Mengonversi sinyal analog pada GPIO 34 menjadi data digital 12-bit (0-4095).
  • Konstruksi String HTML: Nilai sensor disisipkan secara dinamis ke dalam variabel string sebelum dikirimkan ke client.
  • HTTP Endpoint: Server menyediakan jalur (route) khusus untuk perintah eksekusi "/on" dan "/off".

II. Implementasi Kode Sumber (Full Script)

Berikut adalah kode lengkap yang telah dioptimasi untuk dijalankan pada simulator Wokwi maupun perangkat fisik.

Advanced_IoT_Solution.ino
#include #include // Konfigurasi Jaringan const char* ssid = "Wokwi-GUEST"; const char* password = ""; WebServer server(80); // Definisi Pin const int potPin = 34; const int ledPin = 2; void handleRoot() { // Membaca nilai sensor saat halaman diakses int sensorValue = analogRead(potPin); float voltage = sensorValue * (3.3 / 4095.0); // Membangun Dokumen HTML Dinamis String ptr = ""; ptr += ""; ptr += "ESP32 Dashboard"; ptr += "

ESP32 IoT Dashboard

"
; ptr += "
Nilai Sensor: " + String(sensorValue) + "
"
; ptr += "
Estimasi Tegangan: " + String(voltage) + " V
"
; ptr += "
"
; ptr += "

Kendali Peralatan

"
; ptr += ""; ptr += ""; ptr += ""; server.send(200, "text/html", ptr); } void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); // Inisialisasi Wi-Fi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nTerhubung ke Wi-Fi"); Serial.print("Akses alamat IP: "); Serial.println(WiFi.localIP()); // Routing server.on("/", handleRoot); server.on("/on", { digitalWrite(ledPin, HIGH); server.sendHeader("Location", "/"); // Redirect ke halaman utama server.send(303); }); server.on("/off", { digitalWrite(ledPin, LOW); server.sendHeader("Location", "/"); server.send(303); }); server.begin(); } void loop() { server.handleClient(); }

III. Analisis Teknis Solusi

Pada solusi ini, terdapat peningkatan teknik komunikasi data yang disebut HTTP Redirect (Status Code 303). Teknik ini memastikan bahwa setelah pengguna menekan tombol, browser secara otomatis kembali ke halaman utama ("/") untuk memperbarui tampilan nilai sensor terbaru.

Kalkulasi Konversi ADC

Konversi nilai digital ke tegangan nyata menggunakan rumus linier:

$$V_{out} = \frac{\text{Nilai ADC}}{4095} \times 3.3V$$

IV. Kesimpulan Praktik

Integrasi ini membuktikan bahwa ESP32 mampu menangani tugas komputasi (pembacaan sensor) dan tugas komunikasi (web server) secara simultan. Ini adalah fondasi utama dalam pembuatan sistem monitoring industri sederhana maupun perangkat pintar rumah tangga.

Langkah Pro: Untuk pembaruan nilai sensor tanpa perlu refresh halaman secara manual, di masa mendatang Anda dapat mengimplementasikan teknologi AJAX atau WebSockets.

Implementasi ESP32 sebagai Web Server Nirkabel

Implementasi ESP32 sebagai Web Server Nirkabel

Esensi dari Internet of Things adalah kemampuan perangkat untuk berinteraksi melalui jaringan. Pada modul ini, kita akan mengeksplorasi kapabilitas ESP32 dalam menjalankan protokol HTTP (Hypertext Transfer Protocol) untuk membuat antarmuka kendali berbasis web.

I. Konsep Dasar Web Server pada Mikrokontroler

Dalam arsitektur ini, ESP32 berfungsi sebagai Server yang menampung file HTML statis, sementara perangkat pengguna (Smartphone/PC) berfungsi sebagai Client. Komunikasi terjadi melalui pertukaran paket data pada port standar 80.

Dua Mode Wi-Fi ESP32:
  • Station Mode (STA): ESP32 terhubung ke router Wi-Fi yang sudah ada (seperti ponsel terhubung ke Wi-Fi rumah).
  • Access Point Mode (AP): ESP32 memancarkan sinyal Wi-Fi sendiri sehingga perangkat lain bisa terhubung langsung ke ESP32.

II. Implementasi Kode: Kendali LED via Browser

Program berikut akan menginstruksikan ESP32 untuk membuat server lokal. Pengguna dapat mengakses alamat IP ESP32 untuk menyalakan atau mematikan LED melalui tombol visual.

WebServerControl.ino
#include #include const char* ssid = "Wokwi-GUEST"; // SSID khusus simulator Wokwi const char* password = ""; WebServer server(80); const int ledPin = 2; // Fungsi untuk menangani tampilan utama (Root) void handleRoot() { String html = "

ESP32 Web Control

"; html += ""; html += ""; server.send(200, "text/html", html); } void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nIP Address: " + WiFi.localIP().toString()); server.on("/", handleRoot); server.on("/on", { digitalWrite(ledPin, HIGH); server.send(200, "text/html", "

LED NYALA

Kembali"); }); server.on("/off", { digitalWrite(ledPin, LOW); server.send(200, "text/html", "

LED MATI

Kembali"); }); server.begin(); } void loop() { server.handleClient(); // Menangani permintaan masuk dari browser }

III. Prosedur Pengujian di Wokwi

Langkah Operasional:
  1. Salin kode di atas ke editor Wokwi.
  2. Klik tombol Play. Perhatikan Serial Monitor hingga muncul alamat IP (biasanya 192.168.1.x).
  3. Pada Wokwi, Anda akan melihat simulasi "Virtual Browser". Masukkan alamat IP tersebut.
  4. Klik tombol pada layar browser virtual dan amati LED pada board ESP32.

IV. Analisis Keamanan dan Skalabilitas

Meskipun metode ini sangat efektif untuk kendali lokal, terdapat batasan keamanan karena data dikirimkan tanpa enkripsi (HTTP, bukan HTTPS). Untuk implementasi industri yang lebih luas, disarankan untuk menggunakan protokol MQTT (Message Queuing Telemetry Transport) yang akan kita bahas pada bab selanjutnya.

Penting: Pastikan perangkat kendali (HP) dan ESP32 berada dalam jaringan Wi-Fi yang sama (satu segmen IP), jika tidak, Client tidak akan dapat menemukan Server.

V. Tugas Pengembangan

Integrasikan materi sebelumnya dengan materi ini: Buatlah halaman web yang tidak hanya memiliki tombol kendali LED, tetapi juga menampilkan nilai sensor potensiometer secara otomatis saat halaman di-refresh.

Simulasi Sistem Monitoring Analog-Digital via Wokwi

Modul Praktik: Simulasi Sistem Monitoring Analog-Digital via Wokwi

Pada tahap ini, Anda akan mempraktikkan teori yang telah dipelajari sebelumnya. Fokus utama adalah membaca input analog dari potensiometer dan mengendalikan output digital berdasarkan ambang batas tertentu.

I. Persiapan Lingkungan Simulasi

Prosedur Persiapan:
  1. Akses situs wokwi.com.
  2. Pilih board ESP32 .
  3. Tambahkan komponen berikut melalui menu "Add":
    • 1x Potentiometer (Slide atau Rotary).
    • 1x LED (Warna bebas).
    • 1x Resistor 220 Ohm.

II. Diagram Skema dan Pengabelan



Hubungkan komponen sesuai dengan konfigurasi pin berikut untuk memastikan integritas data:



  • Potensiometer: Pin VCC ke 3.3V, GND ke GND, dan Pin Output (Tengah) ke GPIO 34 (ADC1_CH6).
  • LED: Anoda (kaki panjang) ke GPIO 2 melalui resistor 220 Ohm, Katoda ke GND.

III. Implementasi Kode Program

Program di bawah ini dirancang untuk membaca nilai resistansi potensiometer (0-4095) dan mengaktifkan LED sebagai indikator jika nilai melampaui batas 2000.

sketch.ino

/* * Project: Monitoring Analog-Digital

  • Deskripsi: Membaca ADC dan mengontrol LED */

const int potPin = 34; // Pin Input Analog 

const int ledPin = 2; // Pin LED Internal/Eksternal 

int potValue = 0; // Variabel penyimpan data

void setup() 

{ Serial.begin(115200); 

pinMode(ledPin, OUTPUT); 

Serial.println("Sistem Inisialisasi..."); }

/* 

Project: Monitoring Analog-Digital

Deskripsi: Membaca ADC dan mengontrol LED

*/


const int potPin = 34; // Pin Input Analog 

const int ledPin = 2;  // Pin LED Internal/Eksternal 


int potValue = 0; // Variabel penyimpan data


void setup() 

{ 

  Serial.begin(115200); 

  pinMode(ledPin, OUTPUT); 

  Serial.println("Sistem Inisialisasi...");

}


void loop() 

{ 

  // Membaca resolusi 12-bit (0-4095) 

  potValue = analogRead(potPin);


  Serial.print("Nilai Analog: "); 

  Serial.println(potValue);


  // Logika Kontrol Digital

  if (potValue > 2000) 

  { 

    digitalWrite(ledPin, HIGH); 

  } 

  else 

  { 

    digitalWrite(ledPin, LOW); 

  }


  delay(100); // Sampling rate 10Hz

}

IV. Analisis Hasil Simulasi

Setelah menekan tombol "Start Simulation", perhatikan aspek berikut pada jendela Serial Monitor:

  • Linieritas Data: Saat potensiometer diputar, nilai harus berubah secara halus dari 0 hingga 4095.
  • Akurasi ADC: ESP32 menggunakan tegangan referensi internal. Nilai 4095 merepresentasikan tegangan input maksimum sebesar 3.3V.
  • Responsivitas: LED akan segera menyala saat nilai melampaui angka 2000, membuktikan keberhasilan fungsi Conditional Logic pada mikrokontroler.
Catatan Formal: Dalam praktik nyata, pin ADC2 tidak dapat digunakan bersamaan dengan fungsi Wi-Fi. Oleh karena itu, penggunaan pin dari unit ADC1 (GPIO 32-39) sangat disarankan untuk proyek IoT yang menggunakan koneksi internet.

V. Tugas Mandiri

Untuk memperdalam pemahaman, Anda diminta untuk memodifikasi kode di atas agar LED berkedip (*blink*) dengan kecepatan yang bergantung pada nilai potensiometer. Gunakan fungsi delay(potValue); untuk mengobservasi perubahan frekuensi secara visual.

Pengenalan ESP32 untuk Dasar IoT

Arsitektur Mikrokontroler ESP32 dan Implementasi Dasar IoT



Internet of Things (IoT) telah merevolusi cara manusia berinteraksi dengan perangkat elektronik melalui jaringan global. Di jantung revolusi ini terdapat ESP32, sebuah sistem-on-chip (SoC) yang dikembangkan oleh Espressif Systems. Modul ini menawarkan integrasi tingkat tinggi antara mikrokontroler dengan konektivitas nirkabel Wi-Fi dan Bluetooth.

I. Karakteristik Arsitektur dan Spesifikasi Teknis

Berbeda dengan mikrokontroler 8-bit tradisional, ESP32 menggunakan arsitektur 32-bit yang lebih mutakhir. Berikut adalah rincian spesifikasi teknis utamanya:

Komponen Spesifikasi Detil
Prosesor Xtensa® Dual-Core 32-bit LX6 Microprocessor
Frekuensi Clock Hingga 240 MHz
Memori SRAM 520 KB terintegrasi
Konektivitas Nirkabel Wi-Fi 802.11 b/g/n & Bluetooth v4.2 BR/EDR/BLE
Tegangan Operasional 2.2V hingga 3.6V DC

II. Konfigurasi dan Analisis Pin GPIO



General Purpose Input Output (GPIO) pada ESP32 memiliki fungsionalitas ganda (multiplexing). Pemahaman terhadap pemetaan pin sangat krusial untuk menghindari kegagalan perangkat keras.

1. Pin Analog-to-Digital Converter (ADC)

ESP32 dilengkapi dengan dua unit ADC 12-bit (ADC1 dan ADC2) yang mencakup 18 saluran. Resolusi 12-bit memungkinkan pembacaan nilai sensor dengan rentang digital 0 hingga 4095.

2. Pin Khusus (Strapping Pins)

Peringatan Teknis: Pin GPIO 0, 2, 5, 12, dan 15 dikategorikan sebagai "Strapping Pins". Status logika pin-pin ini saat reset akan menentukan mode booting perangkat. Ketidaksesuaian status dapat menyebabkan sistem gagal melakukan inisialisasi.

3. Antarmuka Komunikasi

Untuk interaksi antarperangkat, ESP32 mendukung berbagai protokol komunikasi serial standar industri:

  • I2C (Inter-Integrated Circuit): Menggunakan pin GPIO 21 (SDA) dan GPIO 22 (SCL).
  • SPI (Serial Peripheral Interface): Terdiri dari empat jalur utama (MOSI, MISO, SCK, CS).
  • UART (Universal Asynchronous Receiver-Transmitter): Terdapat tiga port UART untuk komunikasi serial data.

III. Manajemen Daya: Fitur Deep Sleep

Salah satu keunggulan signifikan ESP32 dalam aplikasi IoT berbasis baterai adalah kemampuannya untuk beroperasi dalam konsumsi daya rendah. Pada mode Deep Sleep, inti CPU dinonaktifkan, sementara koprosesor ULP (Ultra Low Power) tetap aktif untuk memantau pemicu eksternal.

IV. Implementasi Pemrograman Dasar

Pemrograman ESP32 umumnya dilakukan menggunakan lingkungan pengembangan terintegrasi (IDE) dengan bahasa berbasis C++. Struktur kode dasar dibagi menjadi dua fungsi utama: setup() untuk konfigurasi awal, dan loop() untuk eksekusi kontinu.

/* Inisialisasi Koneksi Wi-Fi pada ESP32 */ #include <WiFi.h> const char* ssid = "ID_Jaringan"; const char* password = "Kata_Sandi"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nStatus: Koneksi Terpaut"); } void loop() { // Implementasi algoritma utama di sini }

V. Kesimpulan

ESP32 merepresentasikan solusi mikrokontroler yang efisien dan tangguh untuk pengembangan ekosistem IoT. Melalui integrasi prosesor inti ganda, beragam modul sensorik internal, serta kapabilitas nirkabel, perangkat ini menjadi fondasi yang kokoh dalam perancangan sistem cerdas masa kini.

Referensi Lanjutan:

Pembaca disarankan untuk mempelajari dokumentasi resmi Espressif IoT Development Framework (ESP-IDF) untuk pengembangan aplikasi pada tingkat sistem operasi real-time (FreeRTOS).

Materi Pengenalan ESP32-CAM untuk Proyek IoT Presensi QR Code

Materi Pengenalan ESP32-CAM untuk Proyek IoT Presensi QR Code

ESP32-CAM adalah salah satu modul mikrokontroler yang sangat populer dalam pengembangan Internet of Things (IoT), terutama untuk aplikasi berbasis kamera seperti presensi QR Code, sistem keamanan, dan monitoring jarak jauh.

Tujuan Pembelajaran:
  • Memahami konsep dasar ESP32
  • Mengenal fitur ESP32-CAM
  • Mengetahui cara kerja dan penggunaannya dalam IoT
  • Menyiapkan dasar untuk proyek presensi QR Code

1. Apa itu ESP?

ESP adalah singkatan dari Espressif Systems, yaitu perusahaan yang memproduksi chip mikrokontroler dengan fitur WiFi dan Bluetooth.

Seri ESP yang paling populer:

  • ESP8266 → versi awal (WiFi saja)
  • ESP32 → lebih canggih (WiFi + Bluetooth)

Kenapa ESP populer?

  • Harga murah
  • Sudah ada WiFi (tidak perlu modul tambahan)
  • Mudah diprogram menggunakan Arduino IDE
  • Cocok untuk proyek IoT

2. Apa itu ESP32-CAM?

ESP32-CAM adalah versi ESP32 yang dilengkapi dengan kamera sehingga bisa digunakan untuk:

  • Scan QR Code
  • Face Recognition
  • Streaming video
  • Sistem keamanan
Kesimpulan:
ESP32-CAM = ESP32 + Kamera + WiFi dalam satu modul

3. Spesifikasi ESP32-CAM

  • Chip: ESP32
  • Kamera: OV2640
  • WiFi: 2.4 GHz
  • Bluetooth: Ada
  • Slot MicroSD: Ada
  • GPIO: Terbatas (karena digunakan kamera)

4. Kelebihan dan Kekurangan

Kelebihan:

  • Bisa scan QR Code langsung
  • Tidak perlu modul kamera tambahan
  • Harga terjangkau

Kekurangan:

  • Tidak ada USB (harus pakai FTDI)
  • GPIO terbatas
  • Setting awal agak sulit bagi pemula

5. Cara Kerja ESP32-CAM dalam Proyek Presensi

Dalam proyek presensi QR Code, alurnya adalah:

  • Kamera menangkap gambar QR Code
  • ESP32 memproses data QR
  • Data dikirim ke server/database
  • Status kehadiran tersimpan
Ilustrasi sederhana:
QR Code → Kamera → ESP32 → WiFi → Database

6. Kebutuhan Dasar untuk Menggunakan ESP32-CAM

  • ESP32-CAM
  • FTDI USB to Serial
  • Kabel jumper
  • Arduino IDE
  • Koneksi WiFi

7. Contoh Program Sederhana (Testing Serial)

void setup() { Serial.begin(115200); } void loop() { Serial.println("ESP32-CAM Siap Digunakan"); delay(2000); }

8. Tantangan yang Harus Diantisipasi

Banyak yang gagal di awal karena menganggap ESP32-CAM seperti Arduino biasa. Ini keliru.

  • Perlu FTDI untuk upload program
  • Harus setting board dengan benar
  • Butuh pemahaman dasar jaringan (WiFi)
Catatan penting:
Jika tidak memahami proses upload dan konfigurasi, proyek akan terhenti di awal.

9. Strategi Belajar yang Tepat

Agar tidak membuang waktu, urutan belajar yang benar:

  1. Memahami ESP32 dasar (tanpa kamera)
  2. Belajar upload program
  3. Tes serial monitor
  4. Belajar koneksi WiFi
  5. Baru masuk ke kamera dan QR Code

10. Penutup

ESP32-CAM adalah perangkat powerful, tetapi tidak ramah pemula jika langsung digunakan tanpa dasar. Pendekatan yang sistematis akan mempercepat keberhasilan dalam proyek presensi berbasis QR Code.

Next Materi:
Instalasi Arduino IDE dan Setup ESP32-CAM