NodeMCU ESP8266 สัปดาห์ที่ 16

 

ระบบ Digital Outing ด้วย RFID

เป็นระบบการออกนอกบ้านแบบดิจิทัลที่เรียบง่ายซึ่งใช้เทคโนโลยี RFID เพื่อลงทะเบียนรายละเอียดของนักเรียนที่เคลื่อนผ่านประตูรั้วมหาวิทยาลัย



void setup() 
{
  Serial.begin(9600);// Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  ESP.wdtEnable(4);
  client.setServer(mqtt_server,1883);
  client.setCallback(callback);
  ESP.wdtDisable();
  pinMode(2,INPUT);
  pinMode(3,OUTPUT);
  pinMode(0,INPUT);
  pinMode(16,OUTPUT);
  pinMode(15,OUTPUT);
  pinMode(10,OUTPUT);
  mfrc522.PCD_Init();// Initiate MFRC522
    WiFi.begin(ssid, wifi_password);

  // Wait until the connection has been confirmed before continuing
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 if (client.connect(clientID)) {
    Serial.println("Connected to MQTT Broker!");
  }
  else {
    Serial.println("Connection to MQTT Broker failed...");
  }
}
void loop() 
{
    client.loop();
  // Look for new cards
  digitalWrite(3,LOW);
  digitalWrite(16,LOW);
  digitalWrite(15,LOW);
  digitalWrite(10,HIGH);
  while(!initcard())ESP.wdtFeed();
  //Show UID on serial monitor
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  data+="{";
  data+="\'";
  data+="ID";
  data+="\'";  
  data+=":";
  data+="\'";
  data+=content;
  data+="\'";
  data+="}";
  Serial.println(data);
  char c[25];
  for (int q=0;q<25;q++)
  c[q]=data[q];
  client.connect("First");
  client.publish("Data2",c);
  w = "z";
  ESP.wdtDisable();
  while(w=="z")
  {
    client.subscribe("Data3");
    if (w!="z")
    { 
      client.disconnect();
      break;
      }
      
   }
  ESP.wdtEnable(4); 
  memset(&c[0], 0, sizeof(c)); 
  Serial.println("Exited from loop 1"); 
  data ="";
  if(w=="0")
  { 
    client.connect(clientID);
    w="z";
  Serial.println("Reached in loop2");  
  y=digitalRead(2);
  z=digitalRead(0);
  Serial.println();
  digitalWrite(10,LOW);
while((y==HIGH) && (z==HIGH))
{  
   y=digitalRead(2);
   z=digitalRead(0);
   digitalWrite(3,HIGH);
   ESP.wdtFeed();
   if((y==LOW)||(z==LOW))
   {
   if (y==LOW) 
   {p="Home";
   digitalWrite(16,HIGH);}
   else{
   p="Market";
   digitalWrite(15,HIGH);}
  data+="{";
  data+="\'";
  data+="ID";
  data+="\'";  
  data+=":";
  data+="\'";
  data+=content;
  data+="\'";
  data+=",";
  data+="\'";
  data+="Purpose";
  data+="\'";
  data+=":";
  data+="\'";
  data+=p;
  data+="\'";
  data+="}";
  Serial.println(data);
   char c[100];
   for (int q=0;q<data.length();q++)
   c[q]=data[q];
  digitalWrite(3,LOW);
  if (client.publish(mqtt_topic,c)) {
      Serial.println("Button pushed and message sent!");
    }
     else {
      Serial.println("Message failed to send. Reconnecting to MQTT Broker and trying again");
      client.connect(clientID);
      delay(1000); // This delay ensures that client.publish doesn't clash with the client.connect call
      client.publish(mqtt_topic,c);
    }
  data="";
  memset(&c[0], 0, sizeof(c));
  delay(1000);
   break;
   }
  }
 }
}

เว็บ  https://www.hackster.io/clashers/digital-outing-system-using-rfid-d1dc3f

ความคิดเห็น