#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 = 2517811; //kode channel number pada server thingspeak
const char* myWriteApiKey = "BZ3HS0JMLUY06DXN"; //kode write API KEY pada channel number di server thingspeak
const char* myReadApiKey = "RDFAJV0V5IU528CR"; //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 = "Amel";
kirimdata();
}
else if (id == "E2000019060C")
{
nomer_pasien = 2;
nama_pasien = "Meilinda";
kirimdata();
}
else if (id == "G46RD9V40F3A")
{
nomer_pasien = 3;
nama_pasien = "Ika";
kirimdata();
}
else if (id == "B71001B76894")
{
nomer_pasien = 4;
nama_pasien = "Galang";
kirimdata();
}
else if (id == "1C81159073FD")
{
nomer_pasien = 5;
nama_pasien = "Albab";
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: ");
}
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
bz1:1
bz1:2
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND