#include "DHTesp.h" //library untuk akses ke sensor dht pada esp
#include <LiquidCrystal_I2C.h>
#include <WiFi.h> //library untuk menghubungkan ke wifi
#include "ThingSpeak.h" //library untuk menghubungkan ke Thingspeak
const int DHT_PIN = 19; //pin data sensor DHT terhubung ke pin 19
const int BlueLED = 18;
const int YellowLED = 17;
const int Buzzer = 16;
const char* WIFI_NAME = "Wokwi-GUEST"; //nama wifi (SSID wifi) [dalam simulasi ini pakai "Wokwi-GUEST"]
const char* WIFI_PASSWORD = ""; //password wifi (pass wifi) [dalam simulasi ini tidak ada {""}]
const int myChannelNumber = 2788475; //kode channel number pada server thingspeak
const char* myWriteApiKey = "FDUFAXQPIPPOO8NM"; //kode write API KEY pada channel number di server thingspeak
const char* myReadApiKey = "J6TV14DMSNAXEPT7"; //kode write API KEY pada channel number di server thingspeak
const char* server = "api.thingspeak.com"; //server API KEY di server thingspeak
// Set the LCD address to 0x27 for a 16 chars and 2 line display
DHTesp dhtSensor; //memanggil fungsi dari library DHTesp dengan nama dhatSensor
LiquidCrystal_I2C lcd(0x27, 20, 4);
WiFiClient client; //memanggil fungsi WifiClient dari library wifi dengan nama client
int count = 0, no_Pasien=0;
char c;
String id, nama_Pasien;
float temp;
int wait = 1000;
void setup()
{
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //sensor dht di atur dengan membaca DHT_PIN dan tipe DHT22
pinMode(BlueLED, OUTPUT);
pinMode(YellowLED, OUTPUT);
pinMode(Buzzer, OUTPUT);
lcd.init();
lcd.backlight();
WiFi.begin(WIFI_NAME, WIFI_PASSWORD); //wifi di mulai dengan mencari SSID dan password yang diatur
Serial.print("Wifi Connecting."); //Mengirimkan data serial bertuliskan "Wifi Connecting" setelah itu ganti baris
while (WiFi.status() != WL_CONNECTED){ //perulangan terus menerus jika status wifi belum tersambung
delay(100); //Jeda waktu 1000ms atau 1 detik
Serial.print("."); //Mengirimkan data serial bertuliskan "." tanpa ganti garis
lcd.setCursor(0, 0);
lcd.print("Connecting Wifi ");
delay(100);
lcd.setCursor(0, 0);
lcd.print("Connecting Wifi...");
}
Serial.println("Wifi connected !"); //Mengirimkan data serial bertuliskan "Wifi connected" setelah itu ganti baris
Serial.println("Local IP: " + String(WiFi.localIP())); //Mengirimkan data serial bertuliskan "Local IP: [IP WIFI]" setelah itu ganti baris
ThingSpeak.begin(client); //Thingspeak di mulai dengan menhubungkan melalui client
lcd.setCursor(0, 1);
lcd.print("PENDATAAN SUHU RFID");
lcd.setCursor(0, 2);
lcd.print("CARD: ");
lcd.setCursor(0, 3);
lcd.print("NAME: ");
delay(500);
Serial.println("Please scan your RFID Card");
lcd.setCursor(0, 1);
lcd.print(" ");
}
void loop()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity(); //Membaca data suhu dan kelembaban pada sensor DHT kemudian di masukan ke variable data array
temp = data.temperature;
Serial.print("Temperature is: ");
Serial.println(temp);
lcd.setCursor(0, 0);
lcd.print("Tap RFID Card Patien ");
lcd.setCursor(0, 1);
lcd.print("Suhu: ");
lcd.setCursor(6, 1);
lcd.print(temp);
lcd.setCursor(0, 2);
lcd.print("CARD: ");
lcd.setCursor(0, 3);
lcd.print("NAME: ");
delay(500);
while (Serial.available() > 0)
{
c = Serial.read();
count++;
id += c;
if (count == 12)
{
Serial.print(id);
//break;
data_Pasien();
}
}
count = 0;
id = "";
delay(500);
}
void kirimdata(){
delay(100);
ThingSpeak.setField(no_Pasien,(float)temp); //Thingspeak mengatur peletakan data pada field 1 dengan data yang akan dikirimkan adalah data suhu
delay(100);
ThingSpeak.writeFields(myChannelNumber,myWriteApiKey); //Thingspeak mengirimkan data ke server sesuai kode channel dan Write API KEY
/*if (ThingSpeak.readField(myChannelNumber, myReadApiKey)) {
nama_Pasien = String(ThingSpeak.getFieldName(no_Pasien));
}*/
Serial.println("");
Serial.print("Valid Card \t Nama: ");
Serial.println(nama_Pasien);
lcd.setCursor(0, 2);
lcd.print("CARD: ");
lcd.setCursor(6, 2);
lcd.print(id);
lcd.setCursor(0, 3);
lcd.print("NAME: ");
lcd.setCursor(6, 3);
lcd.print(nama_Pasien);
digitalWrite(YellowLED, HIGH);
delay(wait);
digitalWrite(YellowLED, LOW);
lcd.setCursor(0, 2);
lcd.print("CARD: ");
lcd.setCursor(0, 3);
lcd.print("NAME: ");
delay(500);
}
void data_Pasien() {
if (id == "E280689401A9")
{
no_Pasien = 1;
nama_Pasien = "XQLOO";
kirimdata();
}
else if (id == "E2000019060C")
{
no_Pasien = 2;
nama_Pasien = "UNILL";
kirimdata();
}
else if (id == "G46RD9V40F3A")
{
no_Pasien = 3;
nama_Pasien = "OTNIEL";
kirimdata();
}
else if (id == "B71001B76894")
{
no_Pasien = 4;
nama_Pasien = "ADI";
kirimdata();
}
else if (id == "1C81159073FD")
{
no_Pasien = 5;
nama_Pasien = "ARI";
kirimdata();
}
else if (id == "B710D0186022")
{
no_Pasien = 6;
nama_Pasien = "PUTRA";
kirimdata();
}
else
{
no_Pasien=0;
Serial.println("Invalid Card");
lcd.setCursor(0, 2);
lcd.print("CARD: INVALID ");
lcd.setCursor(0, 3);
lcd.print("NAME: UNKNOWN ");
digitalWrite(BlueLED, HIGH);
digitalWrite(Buzzer, HIGH);
delay(500);
digitalWrite(Buzzer, LOW);
delay(500);
digitalWrite(BlueLED, LOW);
lcd.setCursor(0, 2);
lcd.print("CARD: ");
lcd.setCursor(0, 3);
lcd.print("NAME: ");
}
}