- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)

  1. #1

    Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Zusammen,

    ich habe folgendes Problem:

    Ich möchte gerne, dass eine Zahl (in diesem Fall die 63) über ein PHP Skript in eine Datenbank geschrieben wird.
    Diese Zahl soll jede Sekunde oder jede Zwei Sekunden übertragen werden. Später wird die Zahl natürlich variieren.
    Dies funktioniert auch mit dem unten eingefügten Code, allerdings bricht die Verbindung immer nach einiger Zeit ab.
    Wenn ich nur alle 10 Sekunden die Zahl 63 übertrage, dann dauert es länger bis die Übertragung abbricht und schicke ich jede Sekunde passiert dies schneller.
    Um die Verbindung nach dem Abbruch wiederherzustellen muss ich dann immer das Arduino und das Shield von der Spannungsquelle trennen. Kurz warten und dann funktioniert es wieder, nur resetten funktioniert garnicht.

    Es gibt ja sehr viele Beispielcodes bei dem eine Temperatur gemessen und dann diese auf eine Datenbank gespeichert wird.
    Ich habe auch schon mehrere davon ausprobiert, aber ich bekomme es leider einfach nicht hin..
    Bitte helft mir!

    Hardware: Original Arduino UNO und Original Arduino Ethernet Shield

    Beste Grüße und vielen DANK!

    Julius


    Arduino Code

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

    byte mac[] = {0x90, 0xA2, 0xDA, 0x0F, 0x62, 0xAF };
    char serverName[] = "dedo.bplaced.net";
    char url[] = "/webseite/SpeichernInDatenbank.php";
    EthernetClient client;

    void setup()
    {
    Serial.begin(9600);
    if (Ethernet.begin(mac) == 0) { // start ethernet using mac & IP address
    Serial.println("Failed to configure Ethernet using DHCP");
    while(true) // no point in carrying on, so stay in endless loop:
    ;
    }
    delay(1000); // give the Ethernet shield a second to initialize

    }

    void loop()
    { int ret = client.connect(serverName, 80);
    if (ret == 1) {
    Serial.println("connected"); // report successful connection
    // Make an HTTP request:
    // client.println("GET /webseite/AbrufenDerDaten.php HTTP/1.0");
    // client.println("Host: dedo.bplaced.net");
    // client.println();

    }
    else {
    Serial.println("connection failed, err: ");
    Serial.print(ret,DEC);
    }

    client.print("GET " + String(url));

    client.print("?wert=");

    client.print(63);

    client.println(" HTTP/1.1");
    Serial.println(" HTTP/1.1");
    client.print("Host: dedo.bplaced.net" );

    client.println();
    Serial.println();
    client.println("User-Agent: Arduino");
    Serial.println("User-Agent: Arduino");
    client.println("Connection: close");
    Serial.println("Connection: close");
    client.println();
    Serial.println();

    delay(700);


    client.stop();
    Serial.println("Done.");
    client.flush();

    delay(200);
    }


    Speichern in Datenbank

    <?php

    require_once ('ZugriffaufDatenbank.php');

    $var=$_GET['wert'];
    echo $var;
    $nvar=floatval($var);
    echo $nvar;

    $sql = "

    INSERT INTO `Netzfrequenz`

    (

    `Position` , `Zeitpunkt_der_Messung` , `Messwert`

    )

    VALUES

    (

    NULL , NULL,$nvar

    );

    ";

    $db_erg = mysqli_query($db_link, $sql)

    or die("Anfrage fehlgeschlagen: " . mysqli_error());

    ?>

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.12.2008
    Ort
    Bad Ems
    Alter
    62
    Beiträge
    109
    Hallo,

    Du hast die Antwort doch im Arduino-Forum bekommen...

    Gruß,
    Ralf
    http://www.Elektronik-Bastelkeller.de - Elektronik und Mikrocontroller als Hobby

  3. #3
    Hallo Ralf,

    vielen Dank! Ich habe direkt im Arduino-Forum nachgeguckt.
    Nur leider habe ich immer noch das gleiche Problem.


    Ich habe nun folgende Verbesserung vorgenommen:
    - ich benutze jetzt das F() Makro
    - die Delays habe ich ersetzt durch eine millis() abfrage
    - In der if Abfrage ist nun der Code enthalten der das PHP Skript
    aufruft
    - die Serial.println habe ich rausgeschmissen


    Für weitere Tipps wäre ich euch sehr dankbar!

    Beste Grüße und vielen Dank!


    Anbei der verbesserte Code:

    Code:
    #include <SPI.h>
    #include <Ethernet.h>
    
    byte mac[] = {0x90, 0xA2, 0xDA, 0x0F, 0x62, 0xAF };
    char serverName[] = "dedo.bplaced.net";
    char url[]     = "/webseite/SpeichernInDatenbank.php";
    EthernetClient client;
    unsigned long zeitalt;
    void setup()
    { 
      Serial.begin(9600);
      if (Ethernet.begin(mac) == 0) { // start ethernet using mac & IP address
        Serial.println("Failed to configure Ethernet using DHCP");  
        while(true)   // no point in carrying on, so stay in endless loop:
          ;
      }
      delay(1000); // give the Ethernet shield a second to initialize
    };
    
    void loop()
         {    
      int ret = client.connect(serverName, 80);
      if (ret == 1) {
        client.print(F("GET /webseite/SpeichernInDatenbank.php"));
        
        client.print(F("?wert="));
     
        client.print(88);
    
        client.println(F(" HTTP/1.1"));
    
        client.print(F("Host: dedo.bplaced.net" ));
       
        client.println();
        
        client.println(F("User-Agent: Arduino"));
    
        client.println(F("Connection: close"));
     
        client.println();
        Serial.println(freemem());
       
      client.stop();
      client.flush();
      zeitalt=millis();
      while(millis()-zeitalt<1000)
      {}
       
      } 
      else {
        Serial.println("connection failed, err: ");
       
      }
       
    }
      
    // this function will return the number of bytes currently free in RAM      
    extern int  __bss_end; 
    extern int  *__brkval; 
    int freemem()
    { 
     int free_memory; 
     if((int)__brkval == 0) 
       free_memory = ((int)&free_memory) - ((int)&__bss_end); 
     else 
       free_memory = ((int)&free_memory) - ((int)__brkval); 
     return free_memory; 
    }
    Geändert von Frank (28.07.2014 um 10:46 Uhr)

  4. #4
    shedepe
    Gast
    Wenn du so nett wärst deinen Code zumindest auch in die Codetags zu packen und etwas zu formatieren, hätte man auch die Chance ihn zu lesen.

Ähnliche Themen

  1. Arduino Motor Shield Frage
    Von Andi#87 im Forum Arduino -Plattform
    Antworten: 1
    Letzter Beitrag: 01.04.2014, 00:11
  2. Arduino Shield to BeagleBone Black Cape
    Von tucow im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 16.03.2014, 20:06
  3. Arduino UNO Bluetooth Shield
    Von Droggelbecher im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 28.01.2013, 14:10
  4. arduino ethernet shield gesucht
    Von robots4-ever im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 01.01.2012, 22:53
  5. Antworten: 2
    Letzter Beitrag: 02.05.2010, 15:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests