mastergov (Normal User)
Rookie
Messaggi: 22
Iscritto: 26/03/2010
|
Ciao ragazzi ho comprato Arduino non so se lo conoscete, in pratica è un processore programmabile in c/c++ e altri linguaggi.. "atmega"
vorrei capire se è possibile fare dell'inserimenti all'interno del database instaurando una connessione via telnet da arduino al mysql sul server web in internet.
premetto che ho arduino collegato ad un sensore di umidità
quello che sto sperimentando in pratica sarebbe una stazione meteo, che ogni cinque minuti mi invia le letture dei sensori ad un db remoto,
e tramite la pagina web leggo i dati.
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
tutto è possibile, ma non credo che sia il modo migliore quello di comprare qualcosa e sperare che qualcuno ti dia dei lumi sul come fare quello che ti sei messo in testa
considera che come tutte le cose "non dirette" quello che chiedi si comporrà di almeno 3/4 passaggi da hw a sw, ognuno dei quali coinvolge tecnologie che vanno conosciute, pena il fallimento di tutta la "catena".
detto questo, ti presento il tuo migliore amico: www.google.it
|
|
mastergov (Normal User)
Rookie
Messaggi: 22
Iscritto: 26/03/2010
|
me lo aspettavo questo tipo di risposte ma il mio problema, è che quando compilo qualsiasi tipo di aplicativo client/server mi mancano tutte le librerie di rete quali
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
e questo se utilizzassi telnet per concepire il tutto, se volessi invece usare il connector di mysql dunque non saprei come inserirci il pacchetto .tgz e compilarlo su arduino.
ora mi domando: potrei compilare su un ubuntu normale le lib del connector e copiarle singolarmente nella dir delle librerie?
funzionerebbero ugualmente?
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
vedi che il problema è alla base
se stai programmando sotto windows NON hai quei file header
ah giusto, quelli sono headers non librerie, quest'ultime sotto windows hanno estensione .lib (statiche) e .dll (dinamiche), sotto linux sono .so
sostituisci tutti gli include con un semplice:
#include <windows.h>
#include <winsock2.h>
per la seconda cosa, dubito che ci sia abbastanza hardware sull'arduino per compilare e far girare un'intero connector di mysql, ma non credo neanche a calci
|
|
mastergov (Normal User)
Rookie
Messaggi: 22
Iscritto: 26/03/2010
|
uso linux in remoto, e poi volendo ho sull'arduino shield una microsd da 1 gb
io avrei tirato fuori questo codice pèotrebbe andare?
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <mysql.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 void setup() { // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); } void loop() { // read the value from the sensor: 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); MYSQL *conn; MYSQL_RES *result; MYSQL_ROW row; const char* host = "192.168.1.185"; // host const char* database = "table1"; // database const char* db_user = "root"; // nome utente const char* db_pass = "passwdprova"; // password int main (int argc, char *argv[]) { conn = mysql_init (NULL); mysql_real_connect (conn, /* connection handler */ host, /* host */ db_user, /* user name */ db_pass, /* password */ database, /* database */ 0, /* porta */ NULL, /* socket */ 0); /* flags */ mysql_query(conn, "INSERT INTO TABLE1 VAL1=(sensorValue)"); result = mysql_use_result(conn); mysql_close (conn); exit (0); }
|
Ultima modifica effettuata da mastergov il 04/04/2011 alle 20:06 |
|
Alex (Ex-Member)
Expert
Messaggi: 441
Iscritto: 15/08/2005
|
anch'io mi sto interessando ad arduino...è un pò di giorni che mi informo in rete..per prima cosa devi comprare una ethernet shield per poterti connettere via cavo a qualche rete o una xbee shield per il wirless.
poi ci dovrebbero essere le funzioni di libreria apposite (non quelle di windows) per gestire la scheda di rete..
un consiglio:
impara prima a usare bene arduino, poi comincia con i progetti avanzati..
|
|
GuglielmoS (Ex-Member)
Pro
Messaggi: 114
Iscritto: 27/11/2009
|
Postato originariamente da mastergov:
uso linux in remoto, e poi volendo ho sull'arduino shield una microsd da 1 gb
io avrei tirato fuori questo codice pèotrebbe andare?
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <mysql.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 void setup() { // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); } void loop() { // read the value from the sensor: 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); MYSQL *conn; MYSQL_RES *result; MYSQL_ROW row; const char* host = "192.168.1.185"; // host const char* database = "table1"; // database const char* db_user = "root"; // nome utente const char* db_pass = "passwdprova"; // password int main (int argc, char *argv[]) { conn = mysql_init (NULL); mysql_real_connect (conn, /* connection handler */ host, /* host */ db_user, /* user name */ db_pass, /* password */ database, /* database */ 0, /* porta */ NULL, /* socket */ 0); /* flags */ mysql_query(conn, "INSERT INTO TABLE1 VAL1=(sensorValue)"); result = mysql_use_result(conn); mysql_close (conn); exit (0); }
|
|
Hedo ti ha già risposto prima, non puoi usare il mysql connector su arduino.
Una cosa che potresti fare è interfacciare arduino con un router (se non sbaglio c'è il modulo ethernet da comprare) in modo da poter inviare pacchetti delle rilevazioni ad un server che gestisce i dati.
Ciao GuglielmoS. |
|
TheKaneB (Member)
Guru^2
Messaggi: 1792
Iscritto: 26/06/2009
|
arduino è un microcontroller e va usato come tale.
Una volta collegato alla porta USB del computer, creati un software (in Visual Basic o in qualche altro linguaggio semplice) per PC, che interroghi periodicamente il microcontroller sulla porta COM, o ttyS se usi Linux, ne legga le misurazioni e poi ne faccia quello che gli pare (compreso mandarli su un DB se necessario).
Se non hai la possibilità di attaccargli direttamente un PC tramite USB, nell'industria si usa molto il Can BUS per connettere microcontrollori e sensori con decine di metri di cavo. Probabilmente esiste uno shield che implementa tale specifica.
In alternativa puoi usare lo shield ethernet per collegarti in telnet ad un PC. In tutti i casi comunque ti serve un PC che legga i dati e li gestisca.
Il microcontrollore serve solo a pilotare i sensori e a comunicare i dati, il resto deve farlo un computer.
|
|
mastergov (Normal User)
Rookie
Messaggi: 22
Iscritto: 26/03/2010
|
Io ho anche la schedina supplementare, ethershield gia collegata in rete infatti se gli inserisco il webserver ho gia quello che mi serve quando apro il browser e mi ci collego in http://ip/
ho tutte le letture di tutti gli ingressi analogici con i valori.
il mio problema visto che quando tento di compilare anche un qualsiasi client
esempio un ftp server in c mi mancano le librerie basi per tale comunicazione,
però mi sorge un dubbio,
sull'altra scheda che ho dove cè rj45 ho anche uno slot per una microsd, e ce ne ho messa una da 1 gb, all'interno di essa non potrei metterci il connector gia compilato su un altro linux, e richiamare le librerie dentro essa dal codice?
TheKaneB
cmq poi non potrei nemmeno ogni volta che mi servono i dati connettermi con una seriale altrimenti che senso ha usare lo shield ?
mica posso usare un canBUS lungo 10km no?
avevo pensato di usare un logo della siemens per fare questo però costa molto
e fare qualche esperimento non è che posso spendere uno stipendio
|
|