/**
RFID ESP and ThingSpeak - Wokwi ESP32, STM32, Arduino Simulator
*/
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
const int DHT_PIN = 15;
const int LED_PIN1 = 13;
const int LED_PIN2 = 14;
const int BUZ_PIN = 2;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const char* server = "api.thingspeak.com";
DHTesp dhtSensor;
WiFiClient client;
LiquidCrystal_I2C lcd(0x27, 20, 4);
int count = 0;
char c;
String id;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED_PIN1, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
pinMode(BUZ_PIN, OUTPUT);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status()!= WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected!");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("RFID CARD PATIENT");
lcd.setCursor(0, 1);
lcd.print("Suhu:");
lcd.setCursor(0, 2);
lcd.print("Card: ");
lcd.setCursor(0, 3);
lcd.print("Name:");
}
void loop(){
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
lcd.setCursor(6,1);
lcd.print(" ");
lcd.setCursor(6,2);
lcd.print(" ");
lcd.setCursor(6,3);
lcd.print(" ");
digitalWrite(BUZ_PIN, LOW);
while(Serial.available()>0)
{
c = Serial.read();
count++;
id += c;
if(count == 12)
{
Serial.print(id);
//break;
if(id=="E280689401A9")
{
sendToChannel1(temp);
}
else if(id=="E2000019060C")
{
sendToChannel2(temp);
}
else if(id=="G46RD9V40F3A")
{
sendToChannel3(temp);
}
}
}
count = 0;
id="";
delay(6000);
}
void sendToChannel1(float temp) {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
const int myChannelNumber1 = 2525779; // Channel 1
const char* myApiKey1 = "HYE6LCV6A114793H";
ThingSpeak.setField(1, temp);
ThingSpeak.writeFields(myChannelNumber1, myApiKey1);
Serial.println("Valid TAG");
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, HIGH);
digitalWrite(BUZ_PIN, HIGH);
lcd.setCursor(6, 1);
lcd.print(temp);
lcd.setCursor(6,2);
lcd.print("VALID");
lcd.setCursor(6,3);
lcd.print("Abe");
int x = ThingSpeak.writeFields(myChannelNumber1,myApiKey1);
if(x == 200){
Serial.println("Data pushed successfull");
}else{
Serial.println("Push error" + String(x));
}
Serial.println("---");
delay(8000);
}
void sendToChannel2(float temp) {
const int myChannelNumber2 = 2288893; // Channel 2
const char* myApiKey2 = "GWVEZGX3P6DRP29Z";
ThingSpeak.setField(1, temp);
ThingSpeak.writeFields(myChannelNumber2, myApiKey2);
Serial.println("Valid TAG");
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, HIGH);
digitalWrite(BUZ_PIN, HIGH);
lcd.setCursor(6, 1);
lcd.print(temp);
lcd.setCursor(6,2);
lcd.print("VALID");
lcd.setCursor(6,3);
lcd.print("Cipung");
delay(3000);
int x = ThingSpeak.writeFields(myChannelNumber2,myApiKey2);
if(x == 200){
Serial.println("Data pushed successfull");
}else{
Serial.println("Push error" + String(x));
}
Serial.println("---");
delay(5000);
}
void sendToChannel3(float temp) {
const int myChannelNumber3 = 2578153; // Channel 3
const char* myApiKey3 = "IB60FROCYSPQIO1M";
ThingSpeak.setField(1, temp);
ThingSpeak.writeFields(myChannelNumber3, myApiKey3);
Serial.println("Valid TAG");
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, HIGH);
digitalWrite(BUZ_PIN, HIGH);
lcd.setCursor(6, 1);
lcd.print(temp);
lcd.setCursor(6,2);
lcd.print("VALID");
lcd.setCursor(6,3);
lcd.print("Name3");
int x = ThingSpeak.writeFields(myChannelNumber3,myApiKey3);
if(x == 200){
Serial.println("Data pushed successfull");
}else{
Serial.println("Push error" + String(x));
}
Serial.println("---");
delay(5000);
}