TKK_E32222300/esp8266_code.ino

113 lines
2.8 KiB
C++

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 5 // Pin RST pada ESP8266 = d1
#define SS_PIN 4 // Pin SDA (SS) pada ESP8266 = d2
#define BUZZER_PIN 15 // Pin untuk buzzer (gunakan GPIO2 / D4)
const char* ssid = "jtilt3"; // Ganti dengan SSID Wi-Fi
const char* password = "12345678"; // Ganti dengan password Wi-Fi
const String serverUrl = "http://192.168.5.238/keranjang.php"; // URL server
MFRC522 mfrc522(SS_PIN, RST_PIN); // Inisialisasi RFID reader
void setup() {
Serial.begin(115200);
SPI.begin();
mfrc522.PCD_Init();
pinMode(BUZZER_PIN, OUTPUT); // Atur pin buzzer sebagai output
digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer di awal
// Koneksi Wi-Fi
Serial.println("Connecting to Wi-Fi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(700);
Serial.print(".");
buzz(150);
}
Serial.println("\nConnected to Wi-Fi");
Serial.println("IP Address: " + WiFi.localIP().toString());
buzz(600);
}
void loop() {
// Deteksi RFID baru
if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
delay(50);
return;
}
// Ambil UID dari RFID tag
String tagID = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
tagID += String(mfrc522.uid.uidByte[i], HEX);
}
tagID.toUpperCase();
Serial.println("Tag detected: " + tagID);
buzz(100);
// Kirim data ke server
sendToServer(tagID);
delay(1000);
}
void sendToServer(String tagID) {
if (WiFi.status() == WL_CONNECTED) {
WiFiClient client;
HTTPClient http;
String postData = "keranjang=1&rfid=" + tagID; // Kirim data keranjang dan rfid_tag
http.begin(client, serverUrl);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
Serial.println("Sending data to server...");
int httpResponseCode = http.POST(postData); // Kirim data
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("Server response: " + response);
buzz(200);
} else {
Serial.println("Failed to send data. HTTP Response code: " + String(httpResponseCode));
buzz(500);
}
http.end();
} else {
Serial.println("Wi-Fi disconnected, cannot send data.");
buzz(300);
}
}
void checkServerConnection() {
WiFiClient client;
if (client.connect("192.168.5.238", 80)) {
Serial.println("Server is reachable!");
client.stop();
} else {
Serial.println("Cannot reach the server.");
}
}
// Fungsi untuk mengontrol buzzer
void buzz(int duration) {
digitalWrite(BUZZER_PIN, HIGH);
delay(duration);
digitalWrite(BUZZER_PIN, LOW);
}