INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
25.07.2014, 11:08
Beitrag #1
Sad Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
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());

?>


Angehängte Datei(en)
.ino  Arduino_Code.ino (Größe: 1,68 KB / Downloads: 40)
.php  SpeichernInDatenbank.php (Größe: 375 Bytes / Downloads: 53)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.07.2014, 12:50
Beitrag #2
RE: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
Hallo Julius,

das Ethernet-Shield kann max. 4 Verbindungen parallel bearbeiten.
Bei deinem Code solltest du deshalb folgendes beachten:
- kein delay() verwenden, da der Code und auch viele interne Komponenten des Arduino (und damit auch des Ethernet-Shield) während dessen gestoppt werden. Lieber mit millis() arbeiten. Beispiel:
Original:
Code:
delay(700);
Ersatz:
Code:
// im Setup
unsigned long lastnow=0;
// im Loop als Ersatz für delay(700)
lastnow=millis();
while (millis() - lastnow < 700) ;
Weiterhin sollten Client.stop() und Client.flush() vor den jeweiligen "Warteschleifen" eingefügt werden.
Es könnte eventuell auch helfen erst mal mehrere Daten in einem Array zu sammeln und dieses dann ein einem Rutsch an die Datenbank zu geben

Generell steht auch die Frage ob der Webserver diese schnellen Inputs in die Datenbank nicht als "Attacke" betrachtet. Der XAMPP macht das schon mal gerne.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2014, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2014 16:14 von julius858.)
Beitrag #3
RE: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
Hallo rkuehle,

Vielen vielen Dank für deine Tipps!

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

Leider habe ich immer noch das gleiche Problem.

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

Beste Grüße und vielen Dank!


Anbei der verbesserte 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;
}


Angehängte Datei(en)
.ino  arduinocode.ino (Größe: 1,51 KB / Downloads: 43)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2014, 17:46
Beitrag #4
RE: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
Hallo Julius,

setze mal zwischen dem "GET /Webseite..." und dem folgenden Client.print noch eine Warteschleife (kein delay() ) von 1 Sekunde. Es könnte sein, dass der Server vom Get noch Daten an den Arduino liefert, so dass das Client.print dann dazwischen kommt.
Zur Not auch versuchen nach dem Close/flush nochmal Ethernet.begin zu setzen.
Klingt zwar eigenartig, sollte aber das Shield neu starten.

Generell ist das W5100 nicht wirklich für schnell hintereinander folgende Datentransfers geeignet. Bei etwa 5 Sekunden läuft es im allgemeinen ohne Probleme.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 15:45
Beitrag #5
RE: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
Hallo Zusammen,

ich habe ebenfalls ein Problem mit meinem Arduino Uno.

Ich schreibe Zahlenwerte per Ethernet-Shield auf einen Webserver, dort übergebe ich diese an eine PHP Datei, die diese Werte in eine SQL Tabelle schreibt.

Nun möchte ich das mit einem GSM Shield machen, und scheitere kläglich...

Kann mir jemand vielleicht einen code geben, wie ich per gsm eine Verbindung zu einem Webserver aufbauen kann, und in eine Datei schreiben kann??

So sieht meine Zeile fürs Ethernet shield aus:

GET /data2mysql.php?Gewicht=20&Aussentemperatur=23&&Luftfeuchte=80 HTTP/1.1


Vielen Dank schonmal!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.04.2015, 10:33
Beitrag #6
RE: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
Hallo,

guckt dir mal dies an: http://www.arduino.cc/en/Guide/ArduinoGSMShield#toc1
Hier besonders den Abschnitt "Connecting to the Internet"
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.04.2015, 09:22
Beitrag #7
RE: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
(25.07.2014 12:50)rkuehle schrieb:  - kein delay() verwenden, da der Code und auch viele interne Komponenten des Arduino (und damit auch des Ethernet-Shield) während dessen gestoppt werden. Lieber mit millis() arbeiten. Beispiel:
Original:
Code:
delay(700);
Ersatz:
Code:
// im Setup
unsigned long lastnow=0;
// im Loop als Ersatz für delay(700)
lastnow=millis();
while (millis() - lastnow < 700) ;
Hi,
was soll das denn helfen? Schau Dir mal die Implementierung des delay im Sourcecode an. Das ist im Prinzip dasselbe, was Du machst, nur dass ein Programm theoretisch noch die Chance haette, sich in die Wartezeit reinzuhaengen. D.h. diese Art der millis-Verwendung ist noch "schlimmer" als delay.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.04.2015, 10:16
Beitrag #8
RE: Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank)
Hallo Thorsten,
öhm, was sollen IBES und ich jetzt mit dem Kommentar anfangen Huh
Der Bezug ist 9 Monate alt!
Und ja, damals war ich noch dümmer als heute. Da kann so was schon mal unbedacht geschrieben werden. Aber auch ich lerne jeden Tag was neues!
Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  CP2102 und USB Host Shield ?? DL1AKP 0 37 Gestern 08:55
Letzter Beitrag: DL1AKP
  MySQL Beispielcode verstehen RonSH 107 1.884 25.11.2016 10:45
Letzter Beitrag: Tommy56
  Arduino UNO und Ethernet Shield 2 POE und Fritzbox 3272 tr3 2 145 19.11.2016 10:46
Letzter Beitrag: tr3
  Kommunikation über das WiFi-Shield Flap 3 229 07.11.2016 20:20
Letzter Beitrag: hotsystems
  Arduino Lan Shield - Visual Basic ZackiE 6 213 20.09.2016 19:26
Letzter Beitrag: ZackiE
  adafruit V2.3 Shield Hangloose 6 283 08.09.2016 17:13
Letzter Beitrag: rpt007
  Can-Bus Shield ok, aber keine Daten Clubsport 38 1.530 01.09.2016 14:17
Letzter Beitrag: Clubsport
Question Keine Verbindung via USB nach flashen des Programms chaoscrack 5 203 23.08.2016 14:58
Letzter Beitrag: hotsystems
  Arduino mega 2560 mit TFT LCD Touch Shield V1 Clemens55555 17 930 02.08.2016 20:51
Letzter Beitrag: Clemens55555
  Daten an mysql diode1990 24 1.292 31.07.2016 10:29
Letzter Beitrag: Gandalf

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste