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
ความคิดเห็น
แสดงความคิดเห็น