#include <WiFi.h>
#include "ThingSpeak.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
#define myWriteApiKey "0V6WX19MPDMEI3A2" // Menyimpan API Key untuk menulis data ke ThingSpeak.
#define myReadApiKey "555BG8A2M1UTIEZ1" // Menyimpan API Key untuk membaca data dari ThingSpeak.
#define server "api.thingspeak.com" // Menyimpan alamat server
#define DHTPIN 2
#define DHTTYPE DHT22
#define buzzer 15
#define led_merah 19
#define led_hijau 18
String RFID[] = {"E280689401A9", "E2000019060C", "G46RD9V40F3A", "B71001B76894", "1C81159073FD", "B710D0186022"};
String NAMA[] = {"Khalid", "Gideon", "Andre", "Usama", "Dolly", "Kelompok1B"};
int idchart;
WiFiClient esp32client;
LiquidCrystal_I2C lcd(0X27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
pinMode(buzzer, OUTPUT);
pinMode(led_merah, OUTPUT);
pinMode(led_hijau, OUTPUT);
lcd.init();
lcd.backlight();
dht.begin();
WiFi.begin(ssid, password);
lcd.setCursor(0,0);
lcd.print("Connecting wifi....");
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.println(".");
}
Serial.println("Connected to AP");
ThingSpeak.begin(esp32client);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tap RFID CARD Patien");
lcd.setCursor(0,1);
lcd.print("Suhu : ");
lcd.setCursor(0,2);
lcd.print("Card : ");
lcd.setCursor(0,3);
lcd.print("Name : ");
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (!isnan(humidity) || !isnan(temperature)) {
lcd.setCursor(7, 1);
lcd.print(String(temperature) + " ");
Serial.println("Suhu : " + String(temperature));
}
if (Serial.available() > 0) {
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
String input = Serial.readStringUntil('\n');
input.trim();
int found = false;
for (int i = 0; i < (sizeof(RFID)/sizeof(RFID[0])); i++) {
if (input.equals(RFID[i])) {
found = true;
digitalWrite(led_hijau, HIGH);
digitalWrite(led_merah, LOW);
Serial.println(input + "\n Valid Card Name : " + NAMA[i]);
lcd.setCursor(7, 2);
lcd.print(String(input) + " ");
lcd.setCursor(7, 3);
lcd.print(String(NAMA[i]) + " ");
idchart = i+1;
break;
}
}
if (!found) {
idchart = 0;
digitalWrite(led_merah, HIGH);
digitalWrite(led_hijau, LOW);
Serial.println(String(input) + " : Invalid Card");
lcd.setCursor(7, 2);
lcd.print("INVALID ");
lcd.setCursor(7, 3);
lcd.print("UNKNOWN ");
}
}
ThingSpeak.setField(idchart, temperature);
ThingSpeak.writeFields(2519799, myWriteApiKey);
}