#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ESP8266WiFi.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define SS_PIN 15 // Pin: D8
#define RST_PIN 0 // Pin: D3
int pinOut = 16; // Pin D0/GPIO 16 als Ausgang
long chipID;
const char* SSID = "meinwlan";
const char* PSK = "testpasswort";
WiFiServer server(80);
// MFRC522-Instanz erstellen
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(115200);
initWiFi();
pinMode(16, OUTPUT);
// SPI-Bus initialisieren
SPI.begin();
// MFRC522 initialisieren
mfrc522.PCD_Init();
//Kurze Pause nach dem Initialisieren
delay(10);
Serial.println("");
// Details vom MFRC522 RFID READER / WRITER ausgeben
mfrc522.PCD_DumpVersionToSerial();
Serial.println("RFID-Chip auflegen, um UID anzuzeigen...");
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x64)
// Clear the buffer.
display.clearDisplay();
}
void loop() {
{
WiFiClient client = server.available();
if (!client) {
return;
}
if (WiFi.status() != WL_CONNECTED) {
initWiFi();
}
String request = client.readStringUntil('\r');
client.flush();
if (request == "") {
client.stop();
return;
}
//GPIOS schalten
if (request.indexOf("mode=1") >= 0) {
digitalWrite(16, 0);
delay(2000);
digitalWrite(16, 1);
//Ausgabe erzeugen
String output;
output += "http/1.x 200 OK\n";
output += "Content-Type: text/html; charset=UTF-8\n\n";
output += "<!DOCTYPE HTML>";
output += "<html>";
output += "<h1>LED schalten</h1>";
output += "<form action=\"\" method=\"GET\">";
output += "<button name=\"mode\" value=\"1\">AN</button>";
output += " ";
output += "<button name=\"mode\" value=\"0\">AUS</button>";
output += "</form>";
output += "</html>";
client.print(output);
client.stop();
}
// HIER GEHT'S NICHT WEITER WAHRSCHEINLICH !!!
// Sobald ein Chip aufgelegt wird startet diese Abfrage
if (mfrc522.PICC_IsNewCardPresent()) {
//CardID resetten
chipID = 0;
mfrc522.PICC_ReadCardSerial();
// Hier wird die ID des Chips in die Variable chipID geladen
for (byte i = 0; i < mfrc522.uid.size; i++) {
chipID = ((chipID + mfrc522.uid.uidByte[i]) * 10);
}
//... und anschließend ausgegeben
Serial.println(chipID);
if (chipID == 1047810) {
Serial.println("Hallo Papa!");
// text display tests
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.println(" Hi Papa");
display.display();
display.clearDisplay();
digitalWrite(pinOut, LOW); // Pin D0, GPIO16 auf Low setzten
delay(2000); // 2s warten
digitalWrite(pinOut, HIGH); // Pin D0, GPIO16 auf High setzten
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.setTextColor(BLACK);
display.println(" Hi Papa");
display.display();
display.clearDisplay();
}
if (chipID == 901540) {
Serial.println("Hallo Tialda!");
// text display tests
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.println(" Hi Tialda");
display.display();
display.clearDisplay();
digitalWrite(pinOut, LOW); // Pin D0, GPIO16 auf Low setzten
delay(2000); // 2s warten
digitalWrite(pinOut, HIGH); // Pin D0, GPIO16 auf High setzten
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.setTextColor(BLACK);
display.println(" Hi Tialda");
display.display();
display.clearDisplay();
}
if (chipID == 2013960) {
Serial.println("Hallo Alma!");
// text display tests
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.println(" Hi Alma");
display.display();
display.clearDisplay();
digitalWrite(pinOut, LOW); // Pin D0, GPIO16 auf Low setzten
delay(2000); // 2s warten
digitalWrite(pinOut, HIGH); // Pin D0, GPIO16 auf High setzten
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.setTextColor(BLACK);
display.println(" Hi Alma");
display.display();
display.clearDisplay();
}
if (chipID == 2187100) {
Serial.println("Hallo Nana!");
// text display tests
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.println(" Hi Nano");
display.display();
display.clearDisplay();
digitalWrite(pinOut, LOW); // Pin D0, GPIO16 auf Low setzten
delay(2000); // 2s warten
digitalWrite(pinOut, HIGH); // Pin D0, GPIO16 auf High setzten
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.setTextColor(BLACK);
display.println(" Hi Nano");
display.display();
display.clearDisplay();
}
if (chipID == 370320) {
Serial.println("Hallo Mama!");
// text display tests
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.println(" Hi Mama");
display.display();
display.clearDisplay();
digitalWrite(pinOut, LOW); // Pin D0, GPIO16 auf Low setzten
delay(2000); // 2s warten
digitalWrite(pinOut, HIGH); // Pin D0, GPIO16 auf High setzten
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Familie");
display.println(" GRACIC");
display.println(" ");
display.setTextColor(BLACK);
display.println(" Hi Mama");
display.display();
display.clearDisplay();
}
// Danach 1 Sekunden pausieren, um mehrfaches lesen /ausführen zu verhindern
delay(1000);
}
}
}
void initWiFi() {
WiFi.begin(SSID, PSK);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
server.begin();
}
RFID RC522 wird offensichtlich Initialisiert aber das wars aber auch. Siehe Screenshot