← terug

RFID_SCANNER.ino

Program flowchart

ESP32 + MFRC522
// flowchart
flowchart TD A([START]) --> B[Serial.begin 115200] B --> C[initWiFi] C --> C1[WiFi.begin\nSSID + password] C1 --> C2{WiFi\nconnected?} C2 -- No --> C3[Wait 500 ms] --> C2 C2 -- Yes --> C4[Print IP · RSSI · MAC] C4 --> D[initMQTTbroker] D --> D1[setServer broker:1883] D1 --> D2[setCallback → callback] D2 --> E[SPI.begin] E --> F[mfrc522.PCD_Init] F --> G[Set 7-segment pins as OUTPUT] G --> LOOP subgraph LOOP [" loop() "] L1{MQTT\nconnected?} -- No --> L2[mqttConnect] L2 --> L2a{Connect OK?} L2a -- Yes --> L2b[Publish hello\nSubscribe EscapeGame/Number] L2a -- No --> L2c[Wait 5 s] --> L2 L2b --> L3 L1 -- Yes --> L3[mqttClient.loop\nprocess messages] L3 --> L4[Prepare MIFARE key 0xFFFFFF] L4 --> L5{New card\npresent?} L5 -- No --> L1 L5 -- Yes --> L6{Read card\nserial OK?} L6 -- No --> L1 L6 -- Yes --> L7[Authenticate block 1\nwith Key A] L7 --> L8{Auth OK?} L8 -- No --> L9[Print auth error] --> L1 L8 -- Yes --> L10[Read block 1 → buffer] L10 --> L11{Read OK?} L11 -- No --> L12[Print read error] --> L1 L11 -- Yes --> L13[Print 6 bytes to Serial] L13 --> L14[Publish buffer to\nEscapeGame/ScannedCode] L14 --> L15[Delay 1000 ms] L15 --> L16[PICC_HaltA\nPCD_StopCrypto1] L16 --> L1 end subgraph CALLBACK [" callback() — triggered by incoming MQTT "] CB1[Receive topic + message] --> CB2[Assemble message string] CB2 --> CB3{Topic ==\nEscapeGame/Number?} CB3 -- No --> CB_END([Return]) CB3 -- Yes --> CB4{Message\nvalue?} CB4 -- 1 --> CB5[Display 1] CB4 -- 2 --> CB6[Display 2] CB4 -- 3 --> CB7[Display 3] CB4 -- 4 --> CB8[Display 4] CB4 -- 0 --> CB9[All segments OFF] CB5 & CB6 & CB7 & CB8 & CB9 --> CB_END end