arduino 2009 ---- Tesina

ciao a tutti sono nuovo
17 anni studente itis informatico
e per la tesina ho bisogno di un vostro aiuto

ho acquistato
basetta arduino 2009
cavo usb
sensore temperature lm35
sensore vibrazione phidget
sensore flessione

vorrei sapere se è possibile avere in output sul pc i valori in tempo reale ricevuti dai seguenti sensori e come fare

attendo info in merito grazie mille

Si e' possibile, e' una "funzionalita'" base di arduino. Il come fare lo scopri in una mezz'ora leggendo una guida introduttiva qualsiasi.

link a qualche guida decente ??

ti ringrazio è possibile con i dati ricevuti dal arduino compilare una tabella magari di access?

Ciao,

anche io sono perito informatico (laureando in ingegneria informatica) e per l'appunto sto facendo un tirocinio che ha alla base proprio arduino e penso proprio che ci farò la tesi.

Cmq per rispondere alla tua domanda è possibile.

Ti spiego in sintesi i vari passaggi di dati che faccio:

Rilevo i dati con arduino relativi a vari sensori.
Invio i dati (inizialmente l'avevo fatta via usb ora via ethernet) da arduino al pc. Ho preparato un programma in java per leggere i dati provenienti da arduino e visualizzarli in una finestra grafica.

Poi i dati elaborati con il programma java, li invio su database (via wireless a un pc su cui vi è un database locale e via ethernet ad un altro pc su cui vi è il server remoto)

Credo che a te basti far arrivare i dati da arduino al pc...
E penso che ti basti inviarli via usb (altrimenti devi prendere lo shield ethernet se vuoi inviarli via cavo ethernet)

Ciao ciao

cecco88 voglio essere citato nella tua tesi non dimenticarti :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:
in bocca al lupo

Vedremo... se farai il bravo!!!

Scherzi a parte... volentieri, ti chiederò qualche dato per essere più precisi!!

@cecco88

So di essere OT, ma vorrei sapere come hai fatto a prelevare i dati di Arduino trasmessi tramite seriale ed Ethernet da Java...
Per ora è una curiosità, ma potrebbe diventare una realtà molto presto!!! :slight_smile:
Mi andrebbe benissimo anche una spiegazione via MP.
Grazie mille, ciao!!

ottimo lavoro il tuo

volevo sapere però visto che non capisco
sotto quale forma arrivano i dati da arduino ....cioè come faccio a vederli a video o salvarli in un file????

prova a iniziare a leggere qua Arduino - Home e qua http://arduino.cc/en/Tutorial/HomePage e dai anche un occhiata qua Arduino Playground - HomePage vedrai che dopo capirai molto di piu di tutto cio e troverai anche molto per la tua tesina

Ciao racingmat,

i dati giungono da arduino via usb.
Tramite usb infatti alimenti arduino, carichi in memoria il programma e puoi anche inviarli al pc sempre tramite usb.

In java ho dovuto aggiungere delle librerie per permettere la comunicazione tra arduino e pc, ma se ti basta solamente inviare i dati al pc, credo che tu possa fare a meno.

che tutto avveniva usb l'avevo capito

devo capire per esempio se la temperatura è 35° come avere questo dato sul pc in tempo reale

@cecco88:
Potresti dirmi che librerie hai usato? Te ne sarei grato!! :slight_smile:

@racingmat:
Se non hai problemi potresti usare anche tu un porting dei dati in java e poi di lì creare il tuo file access.
Alla fine sarebbe una banale scrittura su database e se hai una minima competenza in java riusciresti senza alcun problema in pochissimo tempo!!
Trovi un sacco di materiale online a riguardo!! :wink:

questo è il prtogrmma che ho caricato usu arduino tramite la utility.

void setup() { 
  // initialize serial communication:
  Serial.begin(9600); 

  
}

void loop() {

  Serial.print(analogRead(0), DEC);
  Serial.print(";");
  Serial.print(analogRead(1), DEC);
  Serial.print(";");
  Serial.println(analogRead(2), DEC);
  
}

in pratica legge in """continuo""" i dati provenienti da 3 pin analogiti (comando in tansione 0/5V)
poi con un seplice programma di lettura porta com ...
lo vedo .. poi farlo benissimo in VBA in acess.. (io acess nn lo conosco ma potrei darti una mano in excel )
cio buon lavoro

va bene anche excel per ora mi date una mano ad abbozzare un programmino .... vi ringrazio anticipatamente

Se ci mostri cosa hai fatto fin'ora e ci spieghi i collegamenti che hai possiamo aiutarti a capire cosa non funziona! Fede

per ora ancora niente ho solo comprato i componenti

facciamo una prova con lm35 mi scrivete il programma e i collegamenti da fare cosi provo???

vi ringrazio

Ma chi la deve fare questa tesina?
Guarda qui:

Federico

@ciccio84

Le librerie che ho importato in netbeans per configurare i parametri per la comunicazione seriale sono le seguenti:

antlr.jar
core.jar
ecj.jar
jna.jar
oro.jar
pde.jar
rxtxcomm.jar

Per inviare i dati a un database mysql la libreria da aggiungere è:
mysql-connector-java-5.1.10-bin.jar

Io utilizzo netbeans su linux, non so se ci sia qualche problema per windows, ma non credo.

@racingmat
Per avere il dato di temperatura "in tempo reale" ti scrivo un programmino.
Per poter visualizzare un dato significativo ti conviene fare un campionamento ogni mezzo secondo o ogni secondo (o quello che ti pare)

(Io l'ho fatto per rilevare una velocità di un sensore)

void loop(){

   if (millis() - previousMillis > 1000) {   //entro nell'if una volta al secondo 
      previousMillis = millis();
      
      //lettura valore dal sensore
       velocita = analogRead(0); 
                                                     
      //Preparazione messaggi da visualizzare nel serial monitor
 
      //Velocita 
      strcpy(msgVEL,"##MSG##");
      strcat(msgVEL,"Ricevuto input analogico velocita");
      Serial.println(msgVEL);
            
      //Preparazione comandi 
      //Velocita
      strcpy(cmdVEL,"##CMD##<VEL>");
      char vel_txt[10]  = ""; //stringa che conterrà il valore numerico convertito in caratteri
      itoa(velocita, vel_txt, 10);
      strcat(cmdVEL,vel_txt);
      Serial.println(cmdVEL);
}

Per il momento limitati a visualizzarlo su serial monitor, successivamente potrai preoccuparti di inviarlo al pc

@ciccio 84

Prova a vedere se questa parte di mio programma può esserti utile, è commentata abbastanza, se c'è qualcosa di non chiaro chiedi pure, ci sono anche i parametri di configurazione per ricevere i dati da usb, ciao ciao

package arduino_01;

import gnu.io.*;
import java.io.*;

public class Main {

    //variabili per la ricezione/trasmissione dati da/verso arduino
    static InputStream input;
    static OutputStream output;

    public static void main(String[] args) throws Exception{

        String portName     = "/dev/ttyUSB0";  //controllare il nome nell'IDE di arduino
        int portRate        = 9600;            //bit per secondo
        String carattereDaArduino="";  //carattere letto da arduino
        String stringaDaArduino = "";  //insieme di caratteri letti tra ! e $


        //Configurazione dispositivo collegato al pc
        System.out.println("Using port: " + portName);
        CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(portName);
        SerialPort port = (SerialPort)portId.open("serial talk", 4000);
        input = port.getInputStream();
        output = port.getOutputStream();

        port.setSerialPortParams(portRate,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);

        //Creazione interfaccia grafica
        Main_GUI mainGui = new Main_GUI();
        mainGui.setVisible(true);

        //Creazione oggetto per gestione segnali in ingresso
        SignalManager sm = new SignalManager();
        sm.setMainGUI(mainGui);
        sm.setarduinoOutput(output);
        mainGui.setSignalManager(sm);

        //Ciclo per la lettura dei dati provenienti da arduino
        while(true){
            while(input.available()>0) {
                
                //Carattere letto (lettura carattere per carattere)
                char carattereLetto = (char)(input.read());

                carattereDaArduino = String.valueOf(carattereLetto);

                //Interpretazione del carattere letto
                //I delimitatori di stringa sono '!' e '

//Verrà processata una volta letto il '



                if(carattereDaArduino != ""){
                    switch(carattereLetto){

                        //Carattere di inizio stringa: '!'
                        //Inizio nuova stringa di dati
                        case '!':
                            stringaDaArduino = "";
                            break;

                        //Carattere di fine stringa: '

//Analisi del comando ricevuto
                       case '


:
                            sm.processSignal(stringaDaArduino);
                            break;

                        //Carattere intermedio della stringa
                        default:
                            stringaDaArduino += carattereDaArduino;
                            break;
                    }
                }
            }
        }
    }
}

si... mi accorgo di essere MOLTO pigro rispetto a ciccio..... :slight_smile:
beh .. in pausa pranzo ho fatto una prova di "monitor seriale" in VBA ... excel
e funziona... :slight_smile:
se vi servirà lo metto giù meglio e ve lo mando ...
usa pero lo mscomm.ocx ... che è un filinino scomodo ... ma va....