Muhammad Mirza Fauzan Martono (Mirza)
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    <div style="text-align:center;"> <h1>TUGAS BESAR IoT <br/>"SMART CARD FOR TOURISM"<br/> </h1> </div> <div style="text-align:center;"> <img src="https://hackmd.io/_uploads/Hk-k3NYwa.png" alt="Logo_Tel-U" width="300"> </div> <div style="text-align:center;"> <h1> Disusun Oleh: </h1> <h2> Kelompok 1 </h2> </div> <div style="text-align:center;"> <p> Muhammad Mirza Fauzan Martono - 1103210042 </p> <p> Muhammad makhlufi makbullah - 1103210171 </p> <p> Dafa Rhesa Sudibyo - 1103210035 </p> <p> Muhammad Faqih Syadidan - 1103213225 </p> </div> # **Pengenalan Proyek** <div style="text-align:justify;"> <p> Proyek "Smart Card for Tourism" adalah inisiatif inovatif yang dirancang untuk meningkatkan pengalaman wisatawan melalui penggunaan teknologi canggih. Proyek ini memanfaatkan berbagai komponen seperti RFID untuk identifikasi dan akses cepat, LCD I2C untuk menampilkan informasi, dan ESP32 sebagai pusat pengendali dengan konektivitas Wi-Fi. Dengan integrasi LED dan buzzer sebagai indikator visual dan suara, sistem ini memberikan umpan balik yang jelas dan instan kepada pengguna. </p> </div> # **Latar Belakang** * **Alasan memilih topik** <div style="text-align:justify;"> pemilihan topik "Smart Card for Tourism" didasarkan pada kebutuhan mendesak untuk meningkatkan efisiensi dan kenyamanan dalam industri pariwisata yang terus berkembang.Penggunaan smart card memungkinkan wisatawan untuk dengan mudah mengakses layanan yang terintegrasi teknologi seperti RFID, LCD I2C, dan ESP32 memudahkan pengelolaan informasi dan akses data secara real-time, yang sangat berguna bagi pengelola destinasi wisata dalam mengoptimalkan pelayanan dan memastikan keamanan. </div> * **Tujuan Proyek** <div style="text-align:justify;"> Tujuan utama dari proyek yang kelompok kami buat adalah agar bisa memahami cara kerja alat IoT untuk mempermudah kehidupan sehari-hari dan bisa membantu orang sekitar dengan alat yang kami buat agar bisa mempermudah orang tersebut dengan alat yang kami buat. </div> # **Dasar Teori** **1. Alat yang dibutuhkan** * NodeMCU ESP 8266 ![esp8266](https://hackmd.io/_uploads/Hkk6URNSC.jpg) <div style="text-align:justify;"> NodeMCU ESP8266 memiliki peran sentral dalam proyek "Smart Card for Tourism" dengan mengendalikan pembaca RFID untuk identifikasi wisatawan, mengirim data ke layar LCD I2C untuk menampilkan informasi, dan mengaktifkan LED serta buzzer sebagai umpan balik visual dan suara. Dengan kemampuan Wi-Fi, NodeMCU ESP8266 memungkinkan konektivitas real-time dengan server untuk memverifikasi data dan memperbarui informasi. </div> * Breadboard ![breadboard22](https://hackmd.io/_uploads/S1tprndB0.jpg) <div style="text-align:justify;"> Breadboard memungkinkan koneksi mudah antara berbagai komponen seperti NodeMCU ESP8266, pembaca RFID, LCD I2C, LED, dan buzzer menggunakan kabel jumper. Ini memfasilitasi perubahan dan penyesuaian rangkaian dengan cepat selama fase pengembangan dan pengujian, memungkinkan pengembang untuk memastikan semua komponen berfungsi dengan baik dan berinteraksi sesuai yang diharapkan. </div> * Kabel Jumper ![jumper](https://hackmd.io/_uploads/S17fU3OSR.jpg) <div style="text-align:justify;"> kabel jumper berfungsi sebagai penghubung utama antara berbagai komponen elektronik di atas breadboard. Kabel jumper memungkinkan aliran sinyal dan daya antara NodeMCU ESP8266, pembaca RFID, LCD I2C, LED, dan buzzer tanpa perlu penyolderan permanen. </div> * RFID ![rfid](https://hackmd.io/_uploads/SJ3E83_HR.jpg) <div style="text-align:justify;"> RFID (Radio-Frequency Identification) berfungsi sebagai teknologi utama untuk identifikasi dan akses wisatawan. Sistem RFID terdiri dari kartu atau tag yang memuat informasi wisatawan dan pembaca RFID yang membaca data tersebut ketika kartu didekatkan. RFID memungkinkan proses autentikasi yang cepat dan tanpa kontak. </div> * LCD I2C ![lcd](https://hackmd.io/_uploads/Sy0_LndSR.jpg) <div style="text-align:justify;"> LCD I2C (Liquid Crystal Display dengan komunikasi I2C) berperan sebagai untuk menampilkan informasi kepada pengguna dengan cara yang jelas dan mudah dimengerti. LCD I2C dapat menampilkan berbagai informasi seperti status akses ketika RFID didekatkan dan akan memberikan tampilan apakah data yang diterima benar atau salah. </div> * LED ![led](https://hackmd.io/_uploads/H1e3U3dSR.png) <div style="text-align:justify;"> LED (Light Emitting Diode) berfungsi sebagai indikator visual yang memberikan umpan balik langsung kepada pengguna. LED digunakan untuk menunjukkan status akses atau kondisi sistem secara visual. Misalnya, LED hijau dapat menyala untuk menandakan akses yang diizinkan, sementara LED merah dapat menyala untuk menandakan akses yang ditolak. </div> * Buzzer ![buzzer](https://hackmd.io/_uploads/r15kPh_rA.jpg) <div style="text-align:justify;"> Buzzer berfungsi sebagai indikator suara yang memberikan umpan balik audio kepada pengguna. Buzzer digunakan untuk mengkomunikasikan informasi penting kepada wisatawan, seperti konfirmasi akses yang diizinkan atau ditolak. Misalnya, buzzer dapat mengeluarkan suara pendek atau panjang bersamaan dengan LED hijau atau merah untuk menandakan status akses. </div> **2. Koneksi yang digunakan** * Wifi <div style="text-align:justify;"> Koneksi Wi-Fi memegang peran krusial dalam proyek "Smart Card for Tourism" dengan memungkinkan NodeMCU ESP8266 untuk terhubung ke jaringan lokal atau internet. Ini memfasilitasi transfer data yang cepat dan efisien antara perangkat di lapangan dengan server atau cloud. Dengan koneksi Wi-Fi, sistem dapat melakukan verifikasi real-time terhadap data yang terbaca dari kartu RFID wisatawan, memperbarui informasi yang ditampilkan pada layar LCD I2C, dan mengirim umpan balik kepada pengguna melalui LED dan buzzer. </div> * Software Blynk <div style="text-align:justify;"> Software Blynk memainkan peran kunci dalam proyek "Smart Card for Tourism" dengan menyediakan platform yang intuitif untuk mengontrol dan memantau sistem secara mudah melalui aplikasi seluler. Blynk memungkinkan pengembang untuk membuat antarmuka pengguna yang dapat disesuaikan dengan mudah menggunakan widget-widget seperti tombol, slider, dan tampilan data, yang terhubung langsung ke NodeMCU ESP8266 dan komponen lainnya dalam proyek. **3. Source Code Program** Berikut adalah source code dari program Smart Card For Tourism. **Code** ``` #define BLYNK_TEMPLATE_ID "TMPL6sK5_b2JS" #define BLYNK_TEMPLATE_NAME "RFID Smart Card Tourism" #define BLYNK_DEVICE_NAME "ESP32-RFID" #define BLYNK_PRINT Serial #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h> #include <Wire.h> // Include Wire library for I2C #include <LiquidCrystal_I2C.h> // Include the library for I2C LCD #include <MFRC522.h> #include <SPI.h> ``` **Penjelasan** - #define BLYNK_TEMPLATE_ID "TMPL6sK5_b2JS" - konstanta yang digunakan untuk mengidentifikasi template spesifik yang dibuat di platform Blynk. - #define BLYNK_TEMPLATE_NAME "RFID Smart Card Tourism" - memberikan nama yang deskriptif untuk template yang digunakan. - #define BLYNK_DEVICE_NAME "ESP32-RFID" - nama yang diberikan untuk perangkat spesifik yang terhubung ke Blynk. - #define BLYNK_PRINT Serial - Berguna untuk debugging dan melihat log yang dihasilkan oleh library Blynk saat aplikasi berjalan. - #include <WiFi.h> - untuk menghubungkan ESP32 ke jaringan Wi-Fi. - #include <WiFiClient.h> - untuk membuat koneksi TCP/IP dengan server melalui Wi-Fi. - #include <BlynkSimpleEsp32.h> - menyediakan fungsi-fungsi yang memungkinkan ESP32 berkomunikasi dengan platform Blynk. - #include <Wire.h> // Include Wire library for I2C - untuk komunikasi dengan perangkat yang menggunakan protokol I2C, seperti LCD I2C dalam proyek ini. - #include <LiquidCrystal_I2C.h> // Include the library for I2C LCD - Library ini memungkinkan pengendalian layar LCD I2C, seperti menampilkan teks. - #include <MFRC522.h> - menyediakan fungsi untuk berinteraksi dengan modul RFID MFRC522, termasuk membaca dan menulis data dari/tag ke RFID. - #include <SPI.h> - komunikasi SPI yang diperlukan oleh modul RFID MFRC522 untuk berkomunikasi dengan ESP32. **Code** ``` char auth[] = "LKNbrQv2mmoqfdfLgUCWf95HB1TIu4Bd"; // WiFi credentials char ssid[] = "BosCilok"; char pass[] = "lupaguacok"; ``` **Penjelasan** - char auth[] = "LKNbrQv2mmoqfdfLgUCWf95HB1TIu4Bd"; - mendefinisikan sebuah array karakter bernama auth yang menyimpan token autentikasi dari Blynk. // WiFi credentials - char ssid[] = "BosCilok"; - mendefinisikan sebuah array karakter bernama ssid yang menyimpan nama SSID dari jaringan Wi-Fi yang dihubungkan. - char pass[] = "lupaguacok"; - mendefinisikan sebuah array karakter bernama pass yang menyimpan nama SSID dari jaringan Wi-Fi yang dihubungkan. **Code** ``` // Pin definitions for ESP32 #define RST_PIN 4 #define SS_PIN 5 #define MISO_PIN 19 #define MOSI_PIN 23 #define SCK_PIN 18 ``` **Penejelasan** // Pin definitions for ESP32 - #define RST_PIN 4 - untuk menghubungkan pin RST (Reset) dari modul RFID MFRC522. - #define SS_PIN 5 - untuk menghubungkan pin SDA (SS) dari modul RFID MFRC522. - #define MISO_PIN 19 - untuk menghubungkan pin MISO dari modul RFID MFRC522. - #define MOSI_PIN 23 - untuk menghubungkan pin MOSI dari modul RFID MFRC522. - #define SCK_PIN 18 - untuk menghubungkan pin SCK dari modul RFID MFRC522. **Code** ``` // Pin definitions for peripherals int buzzer = 27; int ledred = 14; int ledgreen = 12; int switchPin = V0; // Blynk Switch widget connected to V0 bool switchState = false; ``` **Penjelasan** // Pin definitions for peripherals - int buzzer = 27; - mendefinisikan variabel buzzer sebagai integer dan menginisialisasinya dengan nilai 27. - int ledred = 14; - mendefinisikan variabel ledred sebagai integer dan menginisialisasinya dengan nilai 14. - int ledgreen = 12; - mendefinisikan variabel ledgreen sebagai integer dan menginisialisasinya dengan nilai 12. - int switchPin = V0; // Blynk Switch widget connected to V0 - mendefinisikan variabel switchPin sebagai integer dan menginisialisasinya dengan nilai V0. - bool switchState = false; - mendefinisikan variabel switchState sebagai boolean dan menginisialisasinya dengan nilai false.Nilai ini akan berubah sesuai dengan keadaan switch di aplikasi (on atau off) **Code** ``` // LCD I2C address 0x27 and 16x2 LCD LiquidCrystal_I2C lcd(0x27, 16, 2); // Declare lcd object byte readCard[4]; String MasterTags[] = {"7819AB53", "142434A3" }; // Array of MasterTags String tagID = ""; ``` **Penjelasan** // LCD I2C address 0x27 and 16x2 LCD - LiquidCrystal_I2C lcd(0x27, 16, 2); // Declare lcd object - untuk mengontrol layar LCD I2C yang menampilkan informasi kepada pengguna. - byte readCard[4]; - digunakan untuk menyimpan data yang dibaca dari kartu RFID - String MasterTags[] = {"7819AB53", "142434A3" }; // Array of MasterTags - untuk mengidentifikasi kartu RFID yang memiliki hak akses khusus. - String tagID = ""; - untuk menyimpan ID kartu RFID yang sedang dibaca saat ini dalam bentuk string. **Code** ``` // Create instances MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN, SS_PIN); mfrc522.PCD_Init(); // MFRC522 initialization pinMode(ledgreen, OUTPUT); pinMode(ledred, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(switchPin, INPUT); // Initialize LCD lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(1, 0); lcd.print("Silahkan Tap :"); // Connect to WiFi WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected"); // Initialize Blynk Blynk.begin(auth, ssid, pass); // Setup Blynk switch handler Blynk.virtualWrite(switchPin, switchState ? HIGH : LOW); Blynk.syncVirtual(switchPin); } ``` **Penjelasan** // Create instances * MFRC522 mfrc522(SS_PIN, RST_PIN); - untuk berkomunikasi dengan modul RFID MFRC522. * void setup() - untuk menginisialisasi perangkat keras dan konfigurasi awal. { * Serial.begin(9600); - mengirim dan menerima data melalui port serial * SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN, SS_PIN); - untuk menghubungkan ESP32 dengan modul RFID. * mfrc522.PCD_Init(); // MFRC522 initialization - Menginisialisasi modul RFID MFRC522. * pinMode(ledgreen, OUTPUT); - Menetapkan pin ledgreen sebagai output. * pinMode(ledred, OUTPUT); - Menetapkan pin ledred sebagai output. * pinMode(buzzer, OUTPUT); - Menetapkan pin buzzer sebagai output. * pinMode(switchPin, INPUT); - Menetapkan pin switchPin sebagai input. // Initialize LCD * lcd.init(); - Menginisialisasi LCD I2C. * lcd.backlight(); - Menyalakan backlight pada LCD. * lcd.clear(); - Membersihkan tampilan LCD. * lcd.setCursor(1, 0); - Mengatur kursor LCD ke kolom 1, baris 0. * lcd.print("Silahkan Tap :"); - Menampilkan teks "Silahkan Tap :" pada LCD. // Connect to WiFi * WiFi.begin(ssid, pass); - Memulai koneksi Wi-Fi menggunakan SSID dan password yang telah didefinisikan. * while (WiFi.status() != WL_CONNECTED) - Menunggu hingga koneksi Wi-Fi berhasil, dengan menampilkan titik di Serial Monitor setiap 500 milidetik. * delay(500); - * Serial.print("."); - * Serial.println("WiFi connected"); - Menampilkan pesan "WiFi connected" di Serial Monitor setelah koneksi Wi-Fi berhasil. // Initialize Blynk * Blynk.begin(auth, ssid, pass); - Memulai koneksi ke platform Blynk menggunakan token autentikasi, SSID, dan password Wi-Fi. // Setup Blynk switch handler * Blynk.virtualWrite(switchPin, switchState ? HIGH : LOW); - Menulis status awal dari switch ke pin virtual di Blynk, tergantung pada nilai switchState. * Blynk.syncVirtual(switchPin); - Mensinkronkan status pin virtual switchPin dengan nilai terakhir yang disimpan di server Blynk. **Code** ``` // LCD I2C address 0x27 and 16x2 LCD LiquidCrystal_I2C lcd(0x27, 16, 2); // Declare lcd object byte readCard[4]; String MasterTags[] = {"7819AB53", "142434A3" }; // Array of MasterTags String tagID = ""; ``` **Penjelasan** // LCD I2C address 0x27 and 16x2 LCD - LiquidCrystal_I2C lcd(0x27, 16, 2); // Declare lcd object - untuk mengontrol layar LCD I2C yang akan menampilkan informasi kepada pengguna. - byte readCard[4]; - untuk menyimpan data yang dibaca dari kartu RFID. - String MasterTags[] = {"7819AB53", "142434A3" }; // Array of MasterTags - kartu RFID yang memiliki hak akses khusus. - String tagID = ""; - untuk menyimpan ID kartu RFID yang sedang dibaca saat ini dalam bentuk string. **Code** ``` void loop() { Blynk.run(); // Run Blynk // Wait until new tag is available if (getID()) { lcd.clear(); lcd.setCursor(1, 0); lcd.print("ID : "); lcd.print(tagID); bool isMasterTag = false; for (int i = 0; i < sizeof(MasterTags) / sizeof(MasterTags[0]); i++) { if (tagID == MasterTags[i]) { isMasterTag = true; break; } } if (isMasterTag) { digitalWrite(ledgreen, HIGH); digitalWrite(ledred, LOW); // Buzzer pattern for access granted buzz(2, 100); // Two short beeps lcd.setCursor(0, 1); lcd.print("Silahkan Masuk"); // Send tag ID to Blynk server Blynk.virtualWrite(V1, tagID); } else { digitalWrite(ledred, HIGH); digitalWrite(ledgreen, LOW); lcd.setCursor(0, 1); lcd.print("Kartu Salah"); // Buzzer pattern for access denied digitalWrite(buzzer, HIGH); delay(2000); digitalWrite(buzzer, LOW); } delay(1000); digitalWrite(ledred, LOW); digitalWrite(ledgreen, LOW); lcd.clear(); lcd.setCursor(1, 0); lcd.print("Silahkan Tap :"); } } ``` **Penjelasan** * void loop() - dijalankan berulang kali oleh mikrokontroler setelah fungsi setup() dieksekusi sekali. * Blynk.run(); // Run Blynk - Menjalankan fungsi Blynk // Wait until new tag is available * if (getID()) - Menunggu hingga tag RFID baru terdeteksi. * lcd.clear(); - Membersihkan layar LCD. * lcd.setCursor(1, 0); - Mengatur kursor LCD ke posisi kolom 1, baris 0. * lcd.print("ID : "); - Menampilkan teks "ID : " pada LCD. * lcd.print(tagID); - Menampilkan ID tag RFID yang terbaca pada LCD. * bool isMasterTag = false; - digunakan untuk memeriksa apakah tag yang terbaca adalah Master Tag. * for (int i = 0; i < sizeof(MasterTags) / sizeof(MasterTags[0]); i++) - Mengiterasi melalui array MasterTags untuk memeriksa apakah ID tag yang terbaca sesuai dengan salah satu Master Tag. * if (tagID == MasterTags[i]) - Jika tag yang terbaca sesuai dengan salah satu Master Tag, maka: * isMasterTag = true; - Mengatur variabel isMasterTag menjadi true. * break; - Keluar dari loop karena tag yang cocok telah ditemukan. * if (isMasterTag) - Jika isMasterTag adalah true, artinya tag yang terbaca adalah Master Tag, maka: * digitalWrite(ledgreen, HIGH); - Menyalakan LED hijau untuk menunjukkan bahwa akses diizinkan. * digitalWrite(ledred, LOW); - Mematikan LED merah. // Buzzer pattern for access granted * buzz(2, 100); // Two short beeps - Memanggil fungsi buzz untuk menghasilkan dua bunyi pendek dari buzzer sebagai indikasi bahwa akses diizinkan. * lcd.setCursor(0, 1); - Mengatur kursor LCD ke posisi kolom 0, baris 1. * lcd.print("Silahkan Masuk"); - Menampilkan teks "Silahkan Masuk" pada LCD. // Send tag ID to Blynk server * Blynk.virtualWrite(V1, tagID); - Mengirimkan ID tag yang terbaca ke server Blynk * else - Jika isMasterTag adalah false, artinya tag yang terbaca bukan Master Tag, maka: * digitalWrite(ledred, HIGH); - Menyalakan LED merah untuk menunjukkan bahwa akses ditolak. * digitalWrite(ledgreen, LOW); - Mematikan LED hijau. * lcd.setCursor(0, 1); - Mengatur kursor LCD ke posisi kolom 0, baris 1. * lcd.print("Kartu Salah"); - Menampilkan teks "Kartu Salah" pada LCD // Buzzer pattern for access denied * digitalWrite(buzzer, HIGH); - Menyalakan buzzer untuk memberikan sinyal suara bahwa akses ditolak. * delay(2000); - Menunggu selama 2000 milidetik (2 detik) sambil buzzer menyala. * digitalWrite(buzzer, LOW); - Mematikan buzzer. * delay(1000); - Menunggu selama 1000 milidetik (1 detik). * digitalWrite(ledred, LOW); - Mematikan LED merah. * digitalWrite(ledgreen, LOW); - Mematikan LED hijau. * lcd.clear(); - Membersihkan layar LCD. * lcd.setCursor(1, 0); - Mengatur kursor LCD ke posisi kolom 1, baris 0. * lcd.print("Silahkan Tap :"); - Menampilkan teks "Silahkan Tap :" pada LCD untuk meminta pengguna men-tap kartu RFID lagi. **Code** ``` boolean getID() { // Getting ready for Reading PICCs if (!mfrc522.PICC_IsNewCardPresent()) { // If a new PICC placed to RFID reader continue return false; } if (!mfrc522.PICC_ReadCardSerial()) { // Since a PICC placed get Serial and continue return false; } tagID = ""; for (uint8_t i = 0; i < 4; i++) { // The MIFARE PICCs that we use have 4 byte UID tagID.concat(String(mfrc522.uid.uidByte[i], HEX)); // Adds the 4 bytes in a single String variable } tagID.toUpperCase(); mfrc522.PICC_HaltA(); // Stop reading return true; } void buzz(int times, int delayMs) { for (int i = 0; i < times; i++) { digitalWrite(buzzer, HIGH); delay(delayMs); digitalWrite(buzzer, LOW); delay(delayMs); } } ``` **Penjelasan** * boolean getID() - Fungsi ini mengembalikan nilai boolean dan bertanggung jawab untuk membaca ID dari kartu RFID. // Getting ready for Reading PICCs *if (!mfrc522.PICC_IsNewCardPresent()) - Memeriksa apakah ada kartu baru yang ditempatkan di pembaca RFID. // If a new PICC placed to RFID reader continue * return false; - Jika tidak ada kartu baru, fungsi mengembalikan false. * if (!mfrc522.PICC_ReadCardSerial()) - Jika ada kartu baru, membaca ID kartu tersebut. // Since a PICC placed get Serial and continue * return false; - Jika gagal membaca, fungsi mengembalikan false. * tagID = ""; - engosongkan variabel tagID. * for (uint8_t i = 0; i < 4; i++) - Loop ini iterasi melalui 4 byte UID dari kartu MIFARE. // The MIFARE PICCs that we use have 4 byte UID * tagID.concat(String(mfrc522.uid.uidByte[i], HEX)); // Adds the 4 bytes in a single String variable - Mengonversi setiap byte UID ke bentuk string heksadesimal dan menambahkan ke variabel tagID. * tagID.toUpperCase(); - Mengubah tagID menjadi huruf kapital. * mfrc522.PICC_HaltA(); // Stop reading - Menghentikan pembacaan kartu. * return true; - Mengembalikan true jika ID kartu berhasil dibaca. * void buzz(int times, int delayMs) - untuk mengaktifkan buzzer beberapa kali dengan jeda tertentu. * for (int i = 0; i < times; i++) - Loop ini iterasi sebanyak nilai times. * digitalWrite(buzzer, HIGH); - Mengaktifkan (menyalakan) buzzer. * delay(delayMs); - Menunggu selama delayMs milidetik. * digitalWrite(buzzer, LOW); - Menonaktifkan (mematikan) buzzer. * delay(delayMs); - Menunggu selama delayMs milidetik lagi sebelum iterasi berikutnya. **Code** ``` BLYNK_WRITE(V0) { switchState = param.asInt(); // Get the state of the switch widget if (switchState) { digitalWrite(ledgreen, HIGH); digitalWrite(buzzer, HIGH); delay(2000); digitalWrite(buzzer, LOW); digitalWrite(ledred, LOW); lcd.clear(); lcd.setCursor(0, 1); lcd.print("Dibuka"); } else { digitalWrite(ledred, HIGH); digitalWrite(ledgreen, LOW); lcd.clear(); lcd.setCursor(0, 1); lcd.print("Ditutup"); } } ``` **Penjelasan** * BLYNK_WRITE(V0) { - BLYNK_WRITE dipanggil oleh library Blynk setiap kali ada perubahan nilai pada widget yang terhubung dengan pin virtual V0 di aplikasi Blynk. * switchState = param.asInt(); - engambil nilai dari switch widget di aplikasi Blynk dan menyimpannya dalam variabel switchState. * if (switchState) { - Kondisi jika switchState adalah true (widget ON) * digitalWrite(ledgreen, HIGH); - Menyalakan LED hijau. * digitalWrite(buzzer, HIGH); - Menyalakan buzzer. * delay(2000); - Menunggu selama 2000 milidetik (2 detik). * digitalWrite(buzzer, LOW); - Mematikan buzzer. * digitalWrite(ledred, LOW); - Mematikan LED merah. * lcd.clear(); - Membersihkan layar LCD. * lcd.setCursor(0, 1); - Mengatur kursor ke kolom 0, baris 1. * lcd.print("Dibuka"); - Menampilkan teks "Dibuka" pada LCD. * } else { - Kondisi jika switchState adalah false (widget OFF) * digitalWrite(ledred, HIGH); - Menyalakan LED merah. * digitalWrite(ledgreen, LOW); - Mematikan LED hijau. * lcd.clear(); - Membersihkan layar LCD. * lcd.setCursor(0, 1); - Mengatur kursor ke kolom 0, baris 1. * lcd.print("Ditutup"); - Menampilkan teks "Ditutup" pada LCD. **4. Tampilan Blynk** Berikut adalah tampilan dari aplikasi bylynk. ![Screenshot 2024-06-14 013831](https://hackmd.io/_uploads/B1URnn_SA.png) **Desain Alat** ![WhatsApp Image 2024-06-14 at 01.41.28_51208e47](https://hackmd.io/_uploads/ByJtanuHA.jpg) # **Cara Kerja Alat** <div style="text-align:justify;"> 1. Masukkan inputan melalui software Arduino IDE yang terhubung melalui wifi auth dengan aplikasi pada mobile (blynk) ![Screenshot 2024-06-14 021917](https://hackmd.io/_uploads/rysL8TuSR.png) ![Screenshot 2024-06-14 021901](https://hackmd.io/_uploads/r1z_UaOHC.png) 2. Setelah Program diinputkan dan dijalankan maka secara otomatis alatnya sudah bisa di tap dan data id card nya akan muncul di blynk selain itu id card juga akan muncul melalui lcd yang ada pada alat, selain itu juga kita bisa seolah membuka pintu dari jarak jauh dikarenakan alat sudah terhubung melalui blynk ![Screenshot 2024-06-14 022525](https://hackmd.io/_uploads/HJjJdpuBA.png) 3. Selain menggunakan kartu alat kami juga bisa membuka pintu dengan jarak jauh atau tidak menggunakan kartu rfid, fitur ini berfungsi untuk seolah membuka pintu rumah dari dalam rumah jika ada teman/saudara yang tidak memiliki kartu ingin masuk ![Screenshot 2024-06-14 022641](https://hackmd.io/_uploads/BJX2_adHA.png) </div> # **Kesimpulan** <div style="text-align:justify;"> Proyek "Smart Card for Tourism" bertujuan meningkatkan pengalaman wisatawan melalui integrasi teknologi IoT. Smart card ini memudahkan akses ke tempat wisata, pembayaran, dan penyediaan informasi real-time, meningkatkan kenyamanan dan efisiensi operasional. Selain itu, teknologi ini memungkinkan pengumpulan data yang akurat untuk analisis dan pengambilan keputusan yang lebih baik. Dengan tingkat keamanan tinggi dan potensi pengembangan lebih lanjut, seperti integrasi aplikasi pemandu wisata digital, proyek ini juga mendukung pariwisata berkelanjutan dengan mengurangi konsumsi kertas. Secara keseluruhan, smart card ini diharapkan memodernisasi industri pariwisata, menjadikannya lebih efisien, aman, dan ramah lingkungan. </div> # **Dokumentasi** <iframe width="560" height="315" src="https://www.youtube.com/embed/fNUoVDCHaOI?si=5MJCHKxAmkKVo50c" title="" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> # **PPT** <div style="text-align:justify;"> https://www.canva.com/design/DAGH18w_QRU/Rg-yEG7aS7Gnep1boRfArQ/edit?utm_content=DAGH18w_QRU&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton </div>

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully