Daten an Server senden, Arduino UNO+RFID+Ethernet Shield 2

Jo Leute bin neu hier im Forum und genau so unerfahren was das programmieren von Arduino angeht.
Bin in letzter Zeit um einiges schlauer geworden hänge allerdings ziemlich fest, folgende Aufgabe:

Ein Arduino UNO soll die RFID-ID und die Geräte ID(Arduino serial ID) auslesen und die Daten mit Hilfe eines Ethernet Shield 2 an einen Server senden und einen Zeitstempel erstellen.

Ich habe vom Server die URL gegeben, also: https//149.201.213…watch…blabla.

Den laptop hab ich über Wlan im Netzwerk drin (es ist das Netzwerk der uni, genauso ist auch er server einer der uni).

Hab schon sämtliche Programme aus dem Internet ausprobiert und alle möglichen IPs die ich auf dem Rechner gefunden hab in allen Möglichkeiten ausprobiert. Hier mein aktueller Quellcode:

#include <Ethernet.h>
#include <SPI.h>

#include <MFRC522.h>
#include <EEPROM.h>

#define SS_PIN 10 // RFID-RC522 SDA
#define RST_PIN 9 // RFID-RC522 RST

char sID[4] = (“TEST”);
//MFRC522 mfrc522(SS_PIN, RST_PIN);
byte mac = { 0x90, 0xA2, 0xDA, 0x0F, 0x2A, 0x8D };
byte ip = { 192, 168, 2, 77 };
byte gw = {192, 168, 2, 1};
byte subnet = { 255, 255, 255, 0 };

EthernetClient client;//(server, 80);

byte server = { 192, 168, 2, 83 }; // Server IP

String data;

void setup()
{

Serial.begin(9600); // Used for serial debugging

Ethernet.begin(mac, ip, gw, gw, subnet);

//AUSGABE UND RFID SETUP
Serial.begin(9600);
delay(100);
Serial.println(“Zeit wird ab hier null gesetzt”);
delay(100);
SPI.begin();
mfrc522.PCD_Init();

Serial.begin(9600); //WRITING SERIAL ID FOR ARDUINO
for (int i=0; i<6; i++)
{
EEPROM.write(i,sID*);*

  • }*

void loop()
{

  • //ONLY IF RFID WORKS*
  • if ( ! mfrc522.PICC_IsNewCardPresent()) {*
  • return;*
  • }*
  • if ( ! mfrc522.PICC_ReadCardSerial()) {*
  • return;*
  • }*
  • //GETTING DATA FROM RFID*
  • long code = 0;*
  • for (byte i = 0; i < mfrc522.uid.size; i++) {*
    code = ((code + mfrc522.uid.uidByte_) * 10);_
    * }*
    * Serial.print("Zeit: ");*
    * Serial.println(millis());*
    * Serial.print((“Erkannte Transponder ID:”));*
    * Serial.println(code);*
    * Serial.print("Geraete ID: ");*
    * Serial.println(sID);*
    * delay(1000);*
    * int timee = millis();*
    * data = code;*
    * //SENDING TO SERVER*
    * senddata(); // Data is sent every 5 seconds*
    }
    void senddata()
    {
    * Serial.println();*
    * Serial.println(“ATE :)”);*
    * delay(1000); //Keeps the connection from freezing*
    * if (client.connect(server, 80)) {*
    * Serial.println(“Connected”);*
    * client.print(“GET /insertdata.php?data=”);*
    * client.print(data);*
    * client.println(" HTTP/1.1");*
    * client.println(“Host: 192.168.2.83”);*
    * client.println(“Connection: close”);*
    * client.println();*
    * Serial.println();*
    * while (client.connected()) {*
    * while (client.available()) {*
    * Serial.write(client.read());*
    * }*
    * }*
    * }*
    * else*
    * {*
    * Serial.println(“Connection unsuccesful”);*
    * }*
    * }*
    * //stop client*
    * client.stop();*
    * while (client.status() != 0)*
    * {*
    * delay(5);*
    * }*
    *} *

Stelle Deinen Sketch bitte in Codetags (</> oben links im Editor. Das kannst Du auch nachträglich machen.
Deine Beschreibung ist auch etwas mager. Da könntest Du noch ergänzen, was Du eigentlich machen willst.

Gruß Tommy

Leider schreibst du nur, was der Sketch machen soll, aber nicht, was er nicht macht.

Wie sollen wir da helfen ?

Und es hilft dir sicher nichts, wenn du irgend welche (sämtliche im Internet glaube ich nicht) Sketche aus dem Web probierst.
Du solltest schon gezielt nach den richtigen suchen.

Da du nicht geschrieben hast was nicht funktioniert gehe ich mal von folgendem aus:

Du bekommst übers Ethernet keine Verbindung zu deinem Arduino.

Du schreibst du lässt es über das Uni Netzwerk laufen?

Falls ja gibt es eventuell irgendwelche Sicherheitsvorkehrungen die Verhindern sollen dass z.B. unbekannte MAC Addressen nicht durch gelassen werden.

Dann gibt es noch Geschichten mit verschiedenen V-Lans und so ein Mist. Wenn der Server und oder das WLan z.B. über ein anderes V Lan laufen wie der Arduino. Oder einfach nur in nem komplett anderen Netzt sind.

Versuch mal durch Pingen herauszufinden, ob sich die jeweiligen Partner überhaupt erreichen können.

Falls nicht schließe den Arduino direkt übers Ethernet an den Laptop an und versuche das ersma.

Gehts nicht bring es zum Laufen
und versuche es erneut übers Uni-Netzwerk.
Geht das dann immer noch nicht
such dir einen Prof oder einen Netzwerk Admin und frage da mal nach wie das Netzwerk überhaupt aufgebaut ist.

Die Überschrift wird etwas ungünstig umgebrochen, so dass die 2 untergeht.
Für EthernetShield2 (W5500) brauchst Du die Ethernet2.h und die dort mitgelieferten Beispiele als Basis.
Die Ethernet2-Lib ist nicht kompatibel mit der Ethernet-Lib.

Dein Sketch kann also überhaupt nicht laufen.

Gruß Tommy

Sry, also der serielle Monitor gibt mir folgendes aus:
connecting …

ATE :slight_smile:

scheint sich also nicht mit dem server zu verbinden, weiss auch nicht ob ich überall die richtigen IPs rein geschrieben hab. bytemac ist klar, aber bei byte gw,ip,subnet,server bin ich mir nicht sicher.
hier nochmal mein code.

#include <Ethernet.h>
#include <SPI.h>


#include <MFRC522.h>
#include <EEPROM.h>


#define SS_PIN 10 // RFID-RC522 SDA
#define RST_PIN 9 // RFID-RC522 RST


char sID[4] = ("TEST");
//MFRC522 mfrc522(SS_PIN, RST_PIN);
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x2A, 0x8D };
byte ip[] = { 192, 168, 2, 77 };
byte gw[] = {192, 168, 2, 1};
byte subnet[] = { 255, 255, 255, 0 };

EthernetClient client;//(server, 80);

byte server[] = { 192, 168, 2, 83  }; // Server IP

String data;


void setup()
{

  Serial.begin(9600);               // Used for serial debugging

  Ethernet.begin(mac, ip, gw, gw, subnet);

  //AUSGABE UND RFID SETUP
  Serial.begin(9600);
  delay(100);
  Serial.println("Zeit wird ab hier null gesetzt");
  delay(100);
  SPI.begin();
  mfrc522.PCD_Init();

  Serial.begin(9600); //WRITING SERIAL ID FOR ARDUINO
  for (int i=0; i<6; i++) 
  {
   EEPROM.write(i,sID[i]);
  }
  
void loop()
{

 
 

  //ONLY IF RFID WORKS
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }




  //GETTING DATA FROM RFID


  long code = 0;

  for (byte i = 0; i < mfrc522.uid.size; i++) {
    code = ((code + mfrc522.uid.uidByte[i]) * 10);
  }
  Serial.print("Zeit: ");
  Serial.println(millis());
  Serial.print(("Erkannte Transponder ID:"));
  Serial.println(code);
  Serial.print("Geraete ID: ");
  Serial.println(sID);
  delay(1000);
  int timee = millis();

  data = code;

  //SENDING TO SERVER
  senddata();                                 // Data is sent every 5 seconds

}
void senddata()
{

  Serial.println();
  Serial.println("ATE :)");
  delay(1000);                                    //Keeps the connection from freezing

  if (client.connect(server, 80)) {
    Serial.println("Connected");
    client.print("GET /insertdata.php?data=");
    client.print(data);
    client.println(" HTTP/1.1");
    client.println("Host: 192.168.2.83");
    client.println("Connection: close");
    client.println();
    Serial.println();
    while (client.connected()) {
      while (client.available()) {
        Serial.write(client.read());
      }
    }
  }

  else
  {
    Serial.println("Connection unsuccesful");
  }
  }
  //stop client
  client.stop();
  while (client.status() != 0)
  {
    delay(5);
  }
}

Hab ausserdem gelesen dass die Slots 9-13 für die Verbindung von Ethernet und Arduino dienen und nicht für 2 Sachen auf einem genutzt werden können, deshalb kann ich den rfid nicht lesen wenn das ethernet angeschlossen ist … dafür bräuchte ich auch noch eine Lösung :slightly_frowning_face: :slightly_frowning_face:

Liest Du eigentlich die Antworten, die Du bekommst?

Gruß Tommy

Natürlich lese ich die Antworten,
Ethernet2 libraray hab ich drauf gemacht könnte aber noch nicht testen, und falls jemand noch was findet was mir helfen könnte hab ich es lieber nochmal richtig rein getan ...

Wenn Du meinst, das Posten eines definitiv nicht funktionsfähigem Sketch jemanden animiert, sich damit zu beschäftigen, dann ...

Gruß Tommy