Project 1 - Lampu PIR

				
					#define PIR_PIN D1
#define RELAY_PIN D6

unsigned long waktu=0;
unsigned long waktuReset=0;
int counter=0;

void setup() {
  Serial.begin(9600);
  pinMode(PIR_PIN, INPUT);
  pinMode(RELAY_PIN, OUTPUT);
}

void loop() {
  Serial.println(digitalRead(PIR_PIN));
 if(digitalRead(PIR_PIN)==HIGH){
    digitalWrite(RELAY_PIN, HIGH);
    counter=0;
  }else{
    waktu=millis();
    if((waktu-waktuReset)>=1000){ 
      counter++;waktuReset=waktu;
      if(counter>=10){
        digitalWrite(RELAY_PIN, LOW);}
    }
  }
}  
				
			

Project 2 - Alarm Parkir

				
					#include <NewPing.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1

#define TRIGGER_PIN  D5
#define ECHO_PIN     D6
#define MAX_DISTANCE 200

#define BUZZER_PIN   D0
#define LED_PIN      D3

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println("Alarm Parkir");
  display.display();
  delay(2000);
  display.clearDisplay();
  display.display();
}

void loop() {
  delay(50);
  int distance = sonar.ping_cm();
  if(distance<=30 && distance >= 20){
    digitalWrite(BUZZER_PIN, HIGH);
    digitalWrite(LED_PIN, HIGH);
    delay(200);
    digitalWrite(BUZZER_PIN, LOW);
    digitalWrite(LED_PIN, LOW);
    delay(200);
  }
  if(distance<=20 && distance >= 10){
    digitalWrite(BUZZER_PIN, HIGH);
    digitalWrite(LED_PIN, HIGH);
    delay(50);
    digitalWrite(BUZZER_PIN, LOW);
    digitalWrite(LED_PIN, LOW);
    delay(50);
  }
  if(distance < 10){
    digitalWrite(BUZZER_PIN, HIGH);
    digitalWrite(LED_PIN, HIGH);
  }
  
  if (distance <= 30) {
    display.clearDisplay();
    display.setCursor(0, 0);
    display.setTextSize(2);
    display.println("Jarak (cm)");
    display.setCursor(0, 20);
    display.print(distance);
    display.display();
  } else {
    display.clearDisplay();
    display.display();
    digitalWrite(BUZZER_PIN, LOW);
    digitalWrite(LED_PIN, LOW);
  }
}
				
			

Project 3 - Kunci Kendaraan e-KTP

				
					// Library RFID
#include <SPI.h>
#include <MFRC522.h>

// Koneksi PIN RFID ke PIN NodeMCU
// RST/Reset   RST          D0
// SPI SS      SDA(SS)      D8
// SPI MOSI    MOSI         D7 
// SPI MISO    MISO         D6
// SPI SCK     SCK          D5

#define RST_PIN D0
#define SS_PIN  D8
#define BUZZ_PIN  D3
#define RELAY_PIN D1

// MFRC522 Objek dengan nama mrfc522
MFRC522 mfrc522(SS_PIN, RST_PIN);

// Variabel untuk menampung NUID kartu
String nuid;
String rfid_tag = "22f49284600"; 
int count = 0;

void setup() {
  // Serial Monitor pada baudrate 115200
  Serial.begin(115200);
  pinMode(RELAY_PIN,OUTPUT);
  // Mengatur BUZZ_PIN sebagai Output
  // Kondisi awal BUZZ_PIN LOW (Buzzer OFF)
  pinMode(BUZZ_PIN, OUTPUT);
  digitalWrite(BUZZ_PIN, LOW);

  SPI.begin();        // Memulai komunikasi SPI dengan RFID
  mfrc522.PCD_Init(); // Inisialisasi RFID 
}

void loop() { 
  // Membaca kartu dan verifikasi NUID
  if(!mfrc522.PICC_IsNewCardPresent()) { return; }
  if(!mfrc522.PICC_ReadCardSerial())   { return; }
  Serial.print("UID tag : ");
  String tag_id;

  // NUID disatukan dan disimpan pada 'tag_id'
  for(byte i = 0; i < mfrc522.uid.size; i++) {
    tag_id.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
    
  // Menyimpan NUID ke variabel global 'nuid'
  nuid = tag_id;

  // Pencocokan NUID yang tersimpan dengan yang terbaca
  // Nada buzzer scan, kartu diterima dan ditolak 
  if(rfid_tag == nuid){
    count++;
    buzz_auth();
    Serial.println(count);
    buzz_accepted();
    
  } else {
    buzz_auth();
    buzz_denied();
  }
  
  // Mencetak NUID pada Serial Monitor
  Serial.println(nuid);
}

// Fungsi Nada Buzzer scan kartu
void buzz_auth() {
  for (int x = 0; x < 8 ; x++ ) {
    digitalWrite(BUZZ_PIN, HIGH);
    delay(50);
    digitalWrite(BUZZ_PIN, LOW);
    delay(30);
    }
  delay(1000);
}

// Fungsi Nada Buzzer akses diterima
void buzz_accepted() {
  for (int x = 0; x < 2 ; x++ ) {
    digitalWrite(BUZZ_PIN, HIGH);
    delay(200);
    digitalWrite(BUZZ_PIN, LOW);
    delay(100);
  }
  if(count==1){
    digitalWrite(RELAY_PIN, HIGH); 
  }
  if(count==2){
    digitalWrite(RELAY_PIN, LOW);
    count=0;
  }
}


// Fungsi Nada Buzzer akses ditolak
void buzz_denied() {
  digitalWrite(BUZZ_PIN, HIGH);
  delay(1000);
  digitalWrite(BUZZ_PIN, LOW);
  delay(100);
  
}

				
			

Project 4 - Kunci Kontak Motor Aplikasi

				
					/* Antarmuka dengan LED, Buzzer dan Relay - Trainer Internet of Things
 * Project : Mengontrol Device dengan Aplikasi IoT KIT
 * Created By Electins.id
 * https://www.electins.id | https://www.instagram.com/electins.id/
 */

// Library ESP8266 WiFi dan Firebase ESP8266
#include <ESP8266WiFi.h>
#include <FirebaseESP8266.h>

// SSID dan Password WiFi
#define WIFI_SSID "Arashy"
#define WIFI_PASSWORD "123456780"

// URL Firebase dan Token Database
#define DATABASE_URL "https://belajar-iot-ad169-default-rtdb.firebaseio.com/"
#define API_KEY "iQ1qH3ODhsKw1iSZPhSboNeVt8xxHjTyztWomjDg"

// Firebase objek dengan nama fbdo
FirebaseData fbdo;
// Nama pengguna pada Aplikasi IoT KIT
String user = "electins";

// PIN relay
#define RELAY_PIN D2

void setup() {
  // Serial Monitor pada baudrate 115200
  Serial.begin(115200);

  // Mengatur PIN Relay sebagai OUTPUT 
  pinMode(RELAY_PIN,OUTPUT); 

  // Memulai koneksi WiFi
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(300);
  }
  // Menampilkan status koneksi dan alamat IP
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();
  
  // Menampilkan versi client firebase
  Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);
  // Memulai koneksi dengan dengan database
  // Re-koneksi jika WiFi terputus
  Firebase.begin(DATABASE_URL, API_KEY);
  Firebase.reconnectWiFi(true);
}

void loop() {
  // Membaca database pada alamat */user/switch1
  // Jika bernilai true Relay ON
  // Jika bernilai false Relay OFF
  if(Firebase.getString(fbdo, "/" + user +  "/switch1")) {
    if(fbdo.to<bool>() == true){
      digitalWrite(RELAY_PIN, HIGH);
      Serial.println("Relay On");
    }else{
      Serial.println("Relay Off");
      digitalWrite(RELAY_PIN, LOW);
    }
  }
}