Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Libraries
- #include <WiFi.h>
- #include <AsyncTCP.h>
- #include <ESPAsyncWebServer.h>
- #include <AsyncElegantOTA.h>
- // Pin Definitions
- #define relayPin 13 // ✔
- #define RXp2 16
- #define TXp2 17
- // Objects and Communication Chanel
- AsyncWebServer server(80);
- // Command to Read RFID Tags Using RF-KLM900S TTL Connector
- // Single Read BB 00 22 00 00 22 7E
- byte A[] = {0xBB, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7E};
- // Saved RFID Tags in one String Array
- // [1] Card Tag UID : 30 08 33 B2 DD D9 01 40 00 00 00 00
- // [2] Smart Tag 1 UID : E2 80 68 94 00 00 50 20 91 08 58 7E
- // [3] Smart Tag 2 UID : E2 80 68 94 00 00 50 20 91 08 58 88
- String TagNo[] = {"30 08 33 B2 DD D9 01 40 00 00 00 00",
- "E2 80 68 94 00 00 50 20 91 08 58 7E",
- "E2 80 68 94 00 00 50 20 91 08 58 88"
- };
- // Variables and Flags
- const char* ssid = "network";
- const char* password = "123456789";
- String TagID_RX = "";
- static String inputString;
- long distance;
- long duration;
- int numOfTags = 3;
- int flag = 0;
- int flag3min = 0;
- static unsigned long currentTime = 0;
- static unsigned long lastTime2 = 0;
- int count = 0;
- void setup() {
- // Communication Chanel Between ESP32 and PC/Laptop/Android Phone
- Serial.begin(9600);
- // Communication Chanel Between Arduino Uno and ESP32
- Serial2.begin(9600, SERIAL_8N1, RXp2, TXp2);
- WiFi.mode(WIFI_STA);
- WiFi.begin(ssid, password);
- // Wait for connection
- //while (WiFi.status() != WL_CONNECTED) {
- // delay(500);
- // Serial.print(".");
- //}
- delay(2000);
- Serial.println("");
- Serial.print("Connected to ");
- Serial.println(ssid);
- Serial.print("IP address: ");
- Serial.println(WiFi.localIP());
- server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
- request->send(200, "text/plain", "Hi! This is ESP32 OTA");
- });
- AsyncElegantOTA.begin(&server); // Start AsyncElegantOTA
- server.begin();
- Serial.println("HTTP server started");
- // Assign Inputs and Outputs
- pinMode(relayPin, OUTPUT);
- // Close Servo Gate
- digitalWrite(relayPin, LOW);
- }
- void loop() {
- AsyncElegantOTA.loop();
- static String inputString;
- inputString = Serial2.readString();
- if (1) { //inputString != "") {
- TagID_RX = inputString.substring(0, 35);;
- if (TagID_RX == "") {}
- else {
- server.on("/ID", HTTP_GET, [](AsyncWebServerRequest * request) {
- request->send(200, "text/plain", TagID_RX);
- });
- Serial.print("<Start>");
- Serial.print(TagID_RX);
- Serial.println("<End>");
- }
- for (int i = 0; i < numOfTags; i++) {
- if (!TagID_RX.compareTo(TagNo[i]) && distance <= 200) {
- Serial.print("Tag No [");
- Serial.print(i + 1);
- Serial.println("] Found.");
- Serial.println("------------------");
- if (flag == 0) {
- // Push Garage Button for 200mS then release
- digitalWrite(relayPin, HIGH);
- delay(200);
- digitalWrite(relayPin, LOW);
- }
- // Set Falgs
- flag = 1;
- flag3min = 0;
- count = 0;
- lastTime2 = millis();
- }
- else {
- if (count > 10 && flag == 1) {
- if (flag3min == 0) {
- //Serial.println("10 seconds Timer Started !!");
- flag3min = 1;
- }
- currentTime = millis();
- if (currentTime - lastTime2 > 10000) {
- lastTime2 = millis();
- // Push Garage Button for 200mS then release
- digitalWrite(relayPin, HIGH);
- delay(200);
- digitalWrite(relayPin, LOW);
- // Reset Flags
- count = 0;
- flag = 0;
- flag3min = 0;
- }
- }
- count++;
- }
- }
- inputString = "";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement