#include "DHTesp.h" //library untuk mengakses 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 = 15; //pin data sensor DHT terhubung ke pin 15
const int RedlED = 5;
const int GreenlED = 18;
const int Buzzer = 2;
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 = 2508938; //kode channel number pada server thingspeak
const char* myWriteApiKey = "XKBUSE7SZFC1XL7N"; //kode write API KEY pada channel number di server thingspeak
const char* myReadApiKey = "68ZBFXYOKPP0JJWR"; //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, nomer_pasien=0;
char c;
String id,nama_pasien;
float temp;
int wait = 5000;
void setup()
{
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //sensor dht di atur dengan membaca DHT_PIN dan tipe DHT22
pinMode(RedlED, OUTPUT);
pinMode(GreenlED, 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(20);
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(100);
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(nomer_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(nomer_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(GreenlED, HIGH);
delay(wait);
digitalWrite(GreenlED, LOW);
lcd.setCursor(0, 2);
lcd.print("CARD: ");
lcd.setCursor(0, 3);
lcd.print("NAME: ");
delay(100);
}
void data_pasien() {
if (id == "E280689401A9")
{
nomer_pasien = 1;
nama_pasien = "Abe";
kirimdata();
}
else if (id == "E2000019060C")
{
nomer_pasien = 2;
nama_pasien = "Cipung";
kirimdata();
}
else if (id == "AM1G476836")
{
nomer_pasien = 3;
nama_pasien = "Emma";
kirimdata();
}
else if (id == "B71001B76894")
{
nomer_pasien = 4;
nama_pasien = "Fajar";
kirimdata();
}
else if (id == "1C81159073FD")
{
nomer_pasien = 5;
nama_pasien = "Rafatar";
kirimdata();
}
else if (id == "B710D0186022")
{
nomer_pasien = 6;
nama_pasien = "Zalfa";
kirimdata();
}
else
{
nomer_pasien=0;
Serial.println("Invalid Card");
lcd.setCursor(0, 2);
lcd.print("CARD: INVALID ");
lcd.setCursor(0, 3);
lcd.print("NAME: UNKNOWN ");
digitalWrite(RedlED, HIGH);
digitalWrite(Buzzer, HIGH);
delay(500);
digitalWrite(Buzzer, LOW);
delay(500);
digitalWrite(RedlED, LOW);
lcd.setCursor(0, 2);
lcd.print("CARD: ");
lcd.setCursor(0, 3);
lcd.print("NAME: ");
}
}