Pages: [1] 2   Go Down
Author Topic: Ciao ragazzi ma Con mysql e arduino ci avete mai lavorato?  (Read 1942 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io ho acquistato un arduino uno con ethershield ed ho anche preso due sensori TE che mi misurano l'ampere che passano da delle linee. analogici.
ma avrei bisogno di fare recapitare le letture all'interno di un serverweb su internet tramite mysql.
ogni 5 minuti.
è possibile ? o devo creare un programma in c che mi dialoga con mysql tramite telnet ?
Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 10
Posts: 3085
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bhe, devi come minimo creare la parte su arduino che invia i dati al pc, e la parte sul pc che scrive sul tuo sql.
F
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sketch_apr04a.cpp:7:24: error: unistd.h: No such file or directory
sketch_apr04a.cpp:13:27: error: sys/types.h: No such file or directory
sketch_apr04a.cpp:15:28: error: sys/socket.h: No such file or directory
sketch_apr04a.cpp:17:28: error: netinet/in.h: No such file or directory
sketch_apr04a.cpp:19:27: error: arpa/inet.h: No such file or directory
sketch_apr04a.cpp: In function 'int main(int, char**)':
sketch_apr04a:36: error: aggregate 'sockaddr_in my_addr' has incomplete type and cannot be defined
sketch_apr04a:40: error: aggregate 'sockaddr_in their_addr' has incomplete type and cannot be defined
sketch_apr04a:48: error: 'AF_INET' was not declared in this scope
sketch_apr04a:48: error: 'SOCK_DGRAM' was not declared in this scope
sketch_apr04a:48: error: 'socket' was not declared in this scope
sketch_apr04a:52: error: 'perror' was not declared in this scope
sketch_apr04a:66: error: 'AF_INET' was not declared in this scope
sketch_apr04a:70: error: 'htons' was not declared in this scope
sketch_apr04a:74: error: 'INADDR_ANY' was not declared in this scope
sketch_apr04a:82: error: invalid application of 'sizeof' to incomplete type 'sockaddr'
sketch_apr04a:82: error: 'bind' was not declared in this scope
sketch_apr04a:86: error: 'perror' was not declared in this scope
sketch_apr04a:98: error: invalid application of 'sizeof' to incomplete type 'sockaddr'
sketch_apr04a:102: error: 'recvfrom' was not declared in this scope
sketch_apr04a:106: error: 'perror' was not declared in this scope
sketch_apr04a:126: error: 'inet_ntoa' was not declared in this scope
sketch_apr04a:136: error: 'close' was not declared in this scope

ogni volta che tento di compilare un qualsiasi applicativo client/server mi dice cosi perchè gli mancano le librerie.. posso usare queste specifiche lib con arduino ?
Logged

Fidenza, Parma
Offline Offline
God Member
*****
Karma: 8
Posts: 783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma che codice stai utilizzando? Non è che probabilmente con quello vanno caricate delle librerie?
Logged

ArduMAP: Mappa degli utenti che utilizzano Arduino.
http://www.guglio.net/ArduMAP

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma che librerie stai usando?
com'è che hai il main() nel tuo progetto?

In function 'int main(int, char**)':

se hai l'ethernet shield devi usare le apposite librerie arduino, non puoi usare librerie esterne, perchè probabilmente sono molto legate al sitema operativo
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Urbana Padova
Offline Offline
Full Member
***
Karma: 0
Posts: 196
a piccoli passi.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
 come mai vuoi ricompilare il client MySQL su Arduino? Potrebbe "mangiarti" tutta la memoria solo lui  smiley-fat
Non era più comodo usare dei comandi HTTP per inserire i dati nel tuo ServerWeb?
Con una paginetta PHP, leggi i dati e li inserisci nel DB senza incasinarti troppo.
La cosa importante è non dare un Form d'inserimento dai pubblico, così solo arduino può inserirti i dati smiley-wink
Qui trovi come gestire i comandi HTTP smiley-wink

http://www.arduino.cc/playground/Code/WebServer
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

MySQL non ci stara MAI su un'arduino! serve più spazio, chiamate di sistema, più risorse, etc etc...
al massimo dall'arduino ti connetti a un server SQL
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 329
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per riuscire a inserire i dati in mysql devi passare tramite un web server.

Con Arduino usi il client e fai una get
client.print("http://mioserver.it/mettiindb?port0=");
client.print(digital.read(0));
e poi ti scrivi la pagina sul web server per inserire i dati nel db.

Temo sia impossibile compilare le librerie del client mysql con Arduino.

Se proprio non vuoi usare un web server, puoi scriverti un server tcp/ip che prenda una stringa come
port1=1
e inserisca nel db lo stato della porta tramite le librerie di mysql.

Ciao.

Alberto
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao alberto mi hai dato una grandissima idea però io ho ideato questo premetto che da Firefox quando invio la stringa :
http://192.168.1.185/arduino/connet.php?data=12/12/2001&val1=09&val2=07
la stringa me la inserisce mentre invece cosi(per ora per prova è una stringa statica)

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

int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

byte ip[] = { 192,168,1,177 };
byte server[] = { 192,168,1,185 }; // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):

Client client(server, 80);

void setup() {
  pinMode(ledPin, OUTPUT);
  // start the Ethernet connection:
  Ethernet.begin(mac, ip);
  // start the serial library:
  Serial.begin(9600);
  // give the Ethernet shield a second to initialize:
    sensorValue = analogRead(sensorPin);   
  // turn the ledPin on
  digitalWrite(ledPin, HIGH); 
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);         
  // turn the ledPin off:       
  digitalWrite(ledPin, LOW);   
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);               
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /arduino/connet.php?data=date&val1=09&val2=07" );
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}

non mi inserisce niente dove è l'errore?
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

togli il codice nel loop e lascialo vuoto.
GET /arduino/connet.php?data=date&val1=09&val2=07 dovrebbe essere
GET /arduino/connet.php?data=date&val1=09&val2=07 HTTP/1.0

comunque per i test delle richieste GET usa telnet :-)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie funziona però mi fa una immissione sola non mi ripete il ciclo strano....
e se lo lascio nel loop ne fa 2 e poi stop...

poi avrei un altra domanda ma se voglio usare nella query get tipo val2="ValueSensor1" e fargli leggere il valore degli ingressi?

Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a fine loop() hai un ciclo infinito che blocca l'esecuzione del loop():
// do nothing forevermore:
for(;smiley-wink
  ;

il codice è scritto per fare una richesta dal setup, e usare il loop() per mntenere attiva la connessione fino a risposta del server (altrimenti la get potrebbe non essere elaborata, poichè tanto il client si è disconnesso si risparmiano risorse....)


per la seconda domanda leggi il tuo valore e poi crei la stringa get..
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Marche
Offline Offline
Edison Member
*
Karma: 32
Posts: 2263
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
a fine loop() hai un ciclo infinito che blocca l'esecuzione del loop():
// do nothing forevermore:
for(;smiley-wink
  ;
Bella notizia Lesto.
Giusto per curiosità quante volte si può fare una query ad un database senza sovraccaricare il server di richieste?
Ci può stare una query ogni 5 secondi o il server si arrabbia?
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

una ogni 5 secondi è più che ok, poi dipende anche dalle righe della tabella etc..
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho tolto la stringa ma fa sempre l'inserimento singolo e poi si pianta li.... lo sprintf funziona è tutto ok
l'unica cosa è che non mi loopa la seguenza
Code:
#include <SPI.h>
#include <Ethernet.h>


char buffer[1000];
int sensorPin = A0; // select the input pin for the potentiometer
int sensorPin2 = A1;
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor
int sensorValue2 = 0;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

byte ip[] = { 192,168,1,177 };
byte server[] = { 192,168,1,185 }; // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):

Client client(server, 80);

void setup() {
  pinMode(ledPin, OUTPUT);
  // start the Ethernet connection:
  Ethernet.begin(mac, ip);
  // start the serial library:
  Serial.begin(9600);
  // give the Ethernet shield a second to initialize:
    sensorValue = analogRead(sensorPin);   
  // turn the ledPin on
  digitalWrite(ledPin, HIGH) 
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);         
  // turn the ledPin off:       
  digitalWrite(ledPin, LOW);   
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);               
  delay(1000);
  Serial.println("connecting...");


  // if you get a connection, report back via serial:
  if (client.connect())
    Serial.println("connected");

 // Recupero le letture dagli ingressi analogici

 sensorValue = analogRead(sensorPin);
 sensorValue2 = analogRead(sensorPin2);
 
  sprintf(buffer, "GET /arduino/connet.php?val1=%d&val2=%d HTTP/1.0", sensorValue,sensorValue2);

   client.println(buffer);
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}
 

void loop()
{
   
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

   // if the server's disconnected, stop the client:
   if (!client.connected()) {
    Serial.println();
   Serial.println("disconnecting.");
   client.stop();

     
  }
 
}
Logged

Pages: [1] 2   Go Up
Jump to: