Studi Kasus: SmartHome using RFID

Kevin Arnandes
Amikom Computer Club
8 min readMay 23, 2024

Halo Sobat IoT!

Selamat datang pada modul pelatihan #7 divisi Internet Of Things AMCC 2023/2024. Sudah 6 pertemuan kita belajar Mikrokontroller dan Platform IoT dasar. Kali ini kita bakalan masuk ke pelatihan Studi Kasus🙌.

Table of Content

· Halo Sobat IoT!
· Apa itu SmartHome
Contoh Smart Home dengan Mikrokontroller
· Let’s Talk About RFID
Apa itu RFID
Fungsi dan Kegunaan RFID
· Let’s Create Smart Home Simply
SmartHome Rangkaian
· Referensi

Apa itu SmartHome

Smart Home secara sederhana dapat diartikan rumah pintar. Smart home dapat diterjemahkan menjadi rumah atau gedung yang dilengkapi dengan perangkat berteknologi tinggi yang memungkinkan perangkat dan sistem yang ada saling terhubung. Sedangkan smart home system adalah sistem rumah pintar yang digunakan untuk mengendalikan hampir semua perlengkapan dan peralatan yang ada di dalam sebuah rumah atau gedung dan perintah tersebut dapat dikendalikan jarak jauh (remote)

Contoh Smart Home dengan Mikrokontroller

  1. Thermostat dan Humidity Sensor
  • Deskripsi: Proyek ini menggunakan sensor suhu dan kelembapan untuk memantau kondisi ruangan. Data yang dikumpulkan oleh sensor dikirim ke smartphone melalui aplikasi, sehingga pengguna bisa memantau kondisi ruangan dari mana saja.
  • Alat yang Digunakan: ESP8266 atau ESP32, DHT22 (atau DHT11) sensor untuk suhu dan kelembapan, aplikasi Blynk atau platform IoT lainnya.

2. Lampu dan AC Otomatis

  • Deskripsi: Sistem ini memungkinkan pengguna untuk mengontrol lampu dan AC melalui smartphone. Dengan menggunakan relai yang terhubung ke ESP, lampu dan AC bisa dinyalakan atau dimatikan dari jarak jauh.
  • Alat yang Digunakan: ESP8266 atau ESP32, relay module, lampu LED, AC (dengan modul IR blaster jika diperlukan), aplikasi Blynk atau platform IoT lainnya.

3. Magnetic Door Sensor

  • Deskripsi: Proyek ini menggunakan sensor pintu magnetik untuk mendeteksi apakah pintu terbuka atau tertutup. Jika pintu terbuka saat alarm aktif, sistem akan mengirim notifikasi ke smartphone pengguna.
  • Alat yang Digunakan: ESP8266 atau ESP32, reed switch atau magnetic door sensor, buzzer atau LED sebagai indikator, aplikasi Blynk atau platform IoT lainnya.

4. Smart Lighting System

  • Deskripsi: Sistem ini memungkinkan pengaturan intensitas cahaya secara otomatis berdasarkan waktu atau kondisi ruangan. Lampu bisa disesuaikan secara otomatis atau manual melalui aplikasi.
  • Alat yang Digunakan: ESP8266 atau ESP32, smart LED bulbs atau LED strips, light sensor (optional), aplikasi Blynk atau platform IoT lainnya.

5. Smart Plug

  • Deskripsi: Proyek ini memungkinkan perangkat elektronik biasa diubah menjadi perangkat pintar yang bisa dihidupkan atau dimatikan melalui smartphone.
  • Alat yang Digunakan: ESP8266 atau ESP32, relay module, socket listrik, aplikasi Blynk atau platform IoT lainnya.

6. Smart Curtain Controller

  • Deskripsi: Sistem ini memungkinkan pengguna untuk membuka dan menutup tirai secara otomatis atau melalui kontrol manual menggunakan smartphone.
  • Alat yang Digunakan: ESP8266 atau ESP32, servo motor atau motor stepper, tirai, aplikasi Blynk atau platform IoT lainnya.

7. Water Leak Detector

  • Deskripsi: Proyek ini menggunakan sensor air untuk mendeteksi kebocoran dan mengirimkan notifikasi ke smartphone pengguna jika ada kebocoran.
  • Alat yang Digunakan: ESP8266 atau ESP32, water leak sensor, buzzer atau LED sebagai indikator, aplikasi Blynk atau platform IoT lainnya.

8. Smart Garden Irrigation System

  • Deskripsi: Sistem ini menggunakan sensor kelembapan tanah untuk mengatur penyiraman tanaman secara otomatis. Penyiraman bisa dikontrol melalui aplikasi smartphone.
  • Alat yang Digunakan: ESP8266 atau ESP32, soil moisture sensor, water pump, relay module, aplikasi Blynk atau platform IoT lainnya.

9. Smart Doorbell

  • Deskripsi: Proyek ini memungkinkan pengguna untuk menerima notifikasi di smartphone ketika ada yang menekan tombol bell. Sistem juga bisa dilengkapi dengan kamera untuk video doorbell.
  • Alat yang Digunakan: ESP8266 atau ESP32, push button, kamera (optional), buzzer atau speaker, aplikasi Blynk atau platform IoT lainnya.

10. Smoke and Gas Detector

  • Deskripsi: Sistem ini menggunakan sensor gas dan asap untuk mendeteksi adanya kebocoran gas atau asap di rumah. Jika terdeteksi, sistem akan mengirimkan notifikasi ke smartphone.
  • Alat yang Digunakan: ESP8266 atau ESP32, MQ-2 gas sensor, buzzer atau LED sebagai indikator, aplikasi Blynk atau platform IoT lainnya.

11. Energy Monitoring System

  • Deskripsi: Proyek ini memungkinkan pengguna untuk memantau konsumsi listrik rumah secara real-time melalui smartphone.
  • Alat yang Digunakan: ESP8266 atau ESP32, current sensor (CT sensor), aplikasi Blynk atau platform IoT lainnya.

12. Smart Door Lock dengan RFID

  • Deskripsi: Proyek ini memungkinkan pengguna untuk membuka dan mengunci pintu menggunakan kartu RFID. Ketika kartu RFID yang sesuai didekatkan ke sensor, pintu akan terbuka secara otomatis. Notifikasi juga dapat dikirim ke smartphone pengguna.
  • Alat yang Digunakan: ESP8266 atau ESP32, RFID module (seperti RC522), solenoid lock atau servo motor untuk mekanisme penguncian, aplikasi Blynk atau platform IoT lainnya, kartu RFID.

Pada pelatihan kali ini kita akan mencoba menerapkan contoh simple project ke-12 yaitu Smart Door dengan RFID 🙌

Let’s Talk About RFID

Apa itu RFID

RFID (Radio Frequency Identification) adalah teknologi yang menggunakan gelombang radio untuk mengidentifikasi dan mengumpulkan data dari objek secara nirkabel. Teknologi ini sangat bermanfaat dalam mengotomatisasi dan meningkatkan efisiensi di berbagai bidang, seperti logistik, manufaktur, transportasi, dan keamanan.

Sistem RFID terdiri dari tiga komponen utama

Tag RFID:

  • Mengandung antena dan mikrochip
  • Menyimpan informasi tentang objek yang diberi tag

Pembaca RFID:

  • Memancarkan gelombang radio
  • Membaca informasi dari tag RFID

Sistem Backend:

  • Mengelola data yang diperoleh dari pembaca RFID

Ada dua jenis tag RFID:

Tag Pasif:

  • Tidak memiliki sumber daya sendiri
  • Mengandalkan energi dari pembaca RFID untuk mengaktifkan dan mentransmisikan data

Tag Aktif:

  • Memiliki sumber daya internal
  • Dapat mengirimkan sinyal pada jarak yang lebih jauh

Fungsi dan Kegunaan RFID

Keuntungan dari teknologi RFID adalah kemampuan untuk mengidentifikasi objek secara akurat dan cepat, tanpa memerlukan kontak fisik antara tag RFID dan pembaca. Hal ini dapat membantu dalam mengoptimalkan proses bisnis, mengurangi biaya operasional, dan meningkatkan keamanan. Namun, penggunaan RFID juga dapat menimbulkan masalah privasi jika data yang diperoleh dari tag RFID tidak diatur dengan baik.

Fungsi dan Kegunaan RFID:

Logistik dan Manufaktur:

  • Melacak barang dan bahan baku dalam rantai pasokan secara real-time.
  • Mengurangi kehilangan dan pencurian barang.

Transportasi:

  • Mengelola sistem tiket elektronik dan kontrol akses di transportasi umum.

Keamanan:

  • Mengontrol akses ke fasilitas dan area terbatas.
  • Memantau pergerakan aset dan inventaris berharga.

Retail:

  • Mempercepat proses checkout dan meningkatkan akurasi inventaris.

Kesehatan:

  • Melacak alat medis dan obat-obatan di rumah sakit.
  • Mengidentifikasi pasien untuk meningkatkan akurasi perawatan.

Perpustakaan:

  • Mengotomatiskan peminjaman dan pengembalian buku.

Let’s Create Smart Home Simply

Step 1: Buat rangkaian untuk RFID

Code Step 1:

#include <SPI.h>
#include <MFRC522.h>

// Deklarasi RST PIN, dan SDA PIN RFID
#define RST_PIN D1
#define SDA_PIN D2

MFRC522 mfrc522(SDA_PIN, RST_PIN);

bool ledState = false; // Flag to track LED state

void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("RFID Reading UID");
}

void loop() {
if (mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
String uidString = "";
Serial.print("Tag UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
Serial.print(mfrc522.uid.uidByte[i], HEX);
Serial.print(" ");
uidString += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
uidString += String(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();

// Toggle LED state
ledState = !ledState;

if (ledState) {
Serial.println("LED is ON");
} else {
Serial.println("LED is OFF");
}

mfrc522.PICC_HaltA();
}
}
}

Step 2: Buat rangkaian untuk LED

Step 3: Buat rangkaian untuk Buzzer

#include <SPI.h>
#include <MFRC522.h>
#include <ESP8266WiFi.h>

// Deklarasi RST PIN, dan SDA PIN RFID
#define RST_PIN D1
#define SDA_PIN D2

// Deklarasi Buzzer PIN, dan LED PIN
#define BUZZER_PIN D0
#define LED_PIN D4

// Koneksi WiFi
char ssid[] = "AMCC Optimal";
char pass[] = "amcc2023"; // Replace with your Wi-Fi network password

MFRC522 mfrc522(SDA_PIN, RST_PIN);

bool ledState = false; // Flag to track LED state

void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("RFID Reading UID");

pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);

// WiFi Status
Serial.print("Connecting to ");
Serial.println(ssid); // Display the SSID in the Serial monitor
WiFi.begin(ssid, pass); // Begin the Wi-Fi connection

// Ensure connection to Wi-Fi
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected"); // Indicate that the connection is successful
Serial.println(WiFi.localIP()); // Display the local IP address

digitalWrite(BUZZER_PIN, LOW); // Ensure the buzzer is off initially
digitalWrite(LED_PIN, LOW); // Ensure the LED is off initially
}

void loop() {
if (mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
String uidString = "";
Serial.print("Tag UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
Serial.print(mfrc522.uid.uidByte[i], HEX);
Serial.print(" ");
uidString += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
uidString += String(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();

// Toggle LED state
ledState = !ledState;

if (ledState) {
// Turn on LED
digitalWrite(LED_PIN, HIGH);
Serial.println("LED is ON");
} else {
// Turn off LED
digitalWrite(LED_PIN, LOW);
Serial.println("LED is OFF");
}

// Activate buzzer for 500ms
digitalWrite(BUZZER_PIN, HIGH);
delay(500);
digitalWrite(BUZZER_PIN, LOW);

mfrc522.PICC_HaltA();
}
}
}

Additional, Step 4: Connect with Blynk

Rangkaian Pada Blynk Dashboard

SmartHome Rangkaian

// Deklarasi Blynk
#define BLYNK_TEMPLATE_ID "TMPL69KTZaauE"
#define BLYNK_TEMPLATE_NAME "Parking System"
#define BLYNK_AUTH_TOKEN "hDWHhFda6wXcxTx1ILFy69C6YrJrYsRg"

#include <SPI.h>
#include <MFRC522.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// Deklarasi RST PIN, dan SDA PIN RFID
#define RST_PIN D1
#define SDA_PIN D2

// Deklarasi Buzzer PIN, dan LED PIN
#define BUZZER_PIN D0
#define LED_PIN D4

#define VIR_PIN V1 // Pin virtual Blynk untuk mengontrol LED
#define UID_PIN V2 // Pin virtual Blynk for displaying UID

// Koneksi Blynk dan WiFi
char auth[] = "hDWHhFda6wXcxTx1ILFy69C6YrJrYsRg"; // Replace with your Blynk authentication token
char ssid[] = "AMCC Optimal";
char pass[] = "amcc2023"; // Replace with your Wi-Fi network password

MFRC522 mfrc522(SDA_PIN, RST_PIN);

bool ledState = false; // Flag to track LED state

void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("RFID Reading UID");

pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);

// WiFi Status
Serial.print("Connecting to ");
Serial.println(ssid); //menampilkan nama hotspot ke Serial monitor
WiFi.begin(ssid, pass); //memulai untuk terhubung WiFi

//memastikan koneksi dengan hotspot
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected"); //menandakan sudah terkoneksi
Serial.println(WiFi.localIP()); //menampilkan Alamat IP

digitalWrite(BUZZER_PIN, LOW); // Ensure buzzer is off initially
digitalWrite(LED_PIN, LOW); // Ensure LED is off initially

// Initialize Blynk
Blynk.begin(auth, ssid, pass);
}

void loop() {
Blynk.run(); // Run Blynk to maintain connection and process events

if (mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
String uidString = "";
Serial.print("Tag UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
Serial.print(mfrc522.uid.uidByte[i], HEX);
Serial.print(" ");
uidString += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
uidString += String(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();

// Write UID to Blynk
Blynk.virtualWrite(UID_PIN, uidString);

// Toggle LED state
ledState = !ledState;

if (ledState) {
// Turn on LED
digitalWrite(LED_PIN, HIGH);
Blynk.virtualWrite(VIR_PIN, HIGH);
Serial.println("LED is ON");
} else {
// Turn off LED
digitalWrite(LED_PIN, LOW);
Blynk.virtualWrite(VIR_PIN, LOW);
Serial.println("LED is OFF");
}

// Activate buzzer for 500ms
digitalWrite(BUZZER_PIN, HIGH);
delay(500);
digitalWrite(BUZZER_PIN, LOW);

mfrc522.PICC_HaltA();
}
}
}

Sekian dari studi kasus episode #1, project ini masih bisa dikembangin agar jadi project yang bermanfaat dan berguna dalam kehidupan sehari hari. Sampai jumpa di studi kasus berikutnya 🙌

Sampai jumpa………

AMCC

Learning By Doing

Learning By Teaching

Referensi

--

--

Kevin Arnandes
Amikom Computer Club

Seorang mahasiswa yang mau tulisannya dibaca banyak orang. Karena kesepian. Saya Kevin Arnandes tertarik pada Machine Learning, Food, and Love