Arduino Forum

International => Italiano => Software => Topic started by: GiacomoSam on Apr 02, 2014, 12:42 pm

Title: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 02, 2014, 12:42 pm
Ciao a tutti,

sono nuovo nel forum e scusate se vi chiedo subito aiuto, ma spero che qualcuno mi possa dare qualche consiglio sul mio progetto. Come scritto nella presentazione, sto cercando di fare un progetto per controllare un fermentatore tramite Arduino e mandare tutti i dati a Visual Basic per un interfaccia grafica e registrare i dati.

Ho già provato con Firmata, ma dopo qualche minuto (a volte anche secondo) si interrompe la comunicazione e si blocca tutto. Ho caricato su arduino un insieme di Simple Analog e Simple Digital Firmata come visto su un tutoria su internet, caricato in VisualBasic l'applicazione e controllato i pin di Arduino con "FirmataVB1.DigitalWrite(pin, stato)". Tutto funziona perfettamente, ma dopo un po' sembra che si interrompe la comunicazione e su VB mi dice che una periferica collegata non è infunzione.

Ho provato anche a fare una libreria mia ma credo che è troppa la mole di dati da scambiare (forse uso int al posto di Char o qualcosa di simile).

Qualcuno ha qualche consiglio da darmi?

Vi ringrazio fin da subito per il prezioso aiuto.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 02, 2014, 05:46 pm
Ciao,
allora ... se ben capisco da una parte hai un PC con VB e dall'altra Arduino ...

Arduino, collegato tramite la USB al PC, viene visto da quest'ultimo come una porta COM: quindi, da VB, dovrai aprire la COMx: e parlare con essa.

Dal lato Arduino, lascia stare Firmata e scriviti tu il codice per fare ciò che ti serve. Avrai più flessibilità e tutto sotto controllo ;)

Ricorda solo che su Arduino la porta seriale lavora "carattere a carattere" ... un carattere alla volta ... quindi, qualsiasi cosa devi trasmettere/ricevere, devi farlo con dei loop che spediscono/ricevono un carattere alla volta.
Studiati attentamente tutti i vari metodi della classe Serial (http://arduino.cc/en/Reference/Serial) e vedrai che puoi fare veramente di tutto ...

In merito all'uso della porta seriale, qui sul forum ci sono decine e decine di discussioni ... comunque ... se serve, noi siamo qui ... ;)

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 03, 2014, 02:47 pm
Ciao Guglielmo,

innanzitutto grazie mille per la risposta. Come hai capito perfettamente ho un Arduino che comunica tramite USB com il PC sul quale ho Visual Basic dal quale gestisco tutti i parametri. Per la comunicazione in se per se non ci sono problemi, ovvero riesco a comunicare sia lato Arduino che lato PC, ma usando Firmata dopo un po si blocca tutto, cos' ho deciso di fare una libreria per conto mio (come hai giustamente consigliato tu ;)). Ma anche ora ho dei piccoli problemi: ogni tanto Arduino non fa precisamente quello che voglio io e soprattutto ci mette tanto (5 - 10 secondi) prima di agire, ma non sempre il che provoca problemi (aziono pompe, iniezione di gas, eccc). Vorrei sapere se per caso è un problema di programmazione o è solo un problema di velocità di scambio di dati?
Ecco il codice lato Arduino (lo so, è un cavernicolo come codice) per mandare al PC il valore dell'entrata analogica A0
Code: [Select]
int sensore;
void setup(){
Serial.begin(57600);
}
void loop(){
sensore = analogRead(A0);
Serial.println(sensore);
}



per quella digitale metto

Code: [Select]
int sensoreDig;

void setup(){
Serial.begin(57600);
pinMode(5, INPUT);
}

void loop(){
sensoreDig = digitalRead(5)
if (sensoreDig == HIGH){
Serial.println ("A");
}

dal lato PC gli dico che se arriva una "A" vuol dire che il valore del sensoreDig e HIGH

e invece per ricevere comandi, nel loop metto :
Code: [Select]
int comando;
comando = Serial.read();
if (movemento == 'P'){
digitalWrite(12, HIGH);
}
//avendo dichiarato nel setup che il pin 12 era di OUTPUT


ho decine di segnali da mandare e poteri fare il loop da parte PC ogni 1000 millisecondo e mettere un deley ma ugualmente non va come vorrei? Potrei mettere qualcosa come Byte al posto di int ma non me lo legge da perte PC?

Grazie mille per qualsiasi aiuto in merito.

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 03, 2014, 03:08 pm
scusate l'italiano :smiley-red:

gli ultimi due, erano dei punti, non punti di domanda.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 03, 2014, 03:31 pm
Allora, guardando i tre pezzi di codice ...

Il primo :
quello è un loop veramente stretto, nella realtà immagino che farai un'acquisizione dal canale analogico, la trasmetterai e ... aspetterai X millisecondi prima di rileggere, quindi ... aggiungi un delay ...

Il secondo :
... stessa cosa ... se il segnale rimane HIGH ... in un loop così stretto hai una trasmissione continua ... metti anche qui un delay()

Il terzo :
c'è un errore di base che sicuramente ti crea problemi ... non puoi leggere dalla seriale se prima non verifichi che ci sia qualche cosa da leggere (... pena ricevere a raffica il valore -1) ... devi condizionare la Serial.read() ad una :

Code: [Select]
if (Serial.available() > 0) {
  ...
  ...
}


Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 03, 2014, 03:40 pm
... aggiungo, relativamente al primo e secondo pezzo di codice che, come puoi leggere nel reference :

"As of version 1.0, serial transmission is asynchronous; Serial.print() will return before any characters are transmitted."

il che significa che ciò che tu dai da trasmettere viene bufferizzato, ma ... il buffer è piuttosto limitato (credo 64 bytes) e quindi devi dargli il tempo di svuotarsi o ... perdi i dati che trasmetti ...

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 03, 2014, 04:04 pm
Perfetto.

Sembra che possa essere questo il problema. Proverò a condizionare la seriale prima di inviare tutti i dati e metto un delay dopo ogni lettura (ne ho una decina digitali e 7 analogici, per questo uso il Mega) delay(50); può andare bene, anche per far scuotere il buffer o è meglio mettere un delay maggiore tra la parte dello sketch che riceve i dati e quello che manda al PC?

Grazie mille di nuovo.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 03, 2014, 04:45 pm
... vedo che hai la seriale a 57600 ... il che significa che ogni char impiega come minimo, solo per la trasmissione fisica 1/5760 sec. e quindi, in funzione di quanti caratteri invii (caratteri, mi raccomando ... il numero intero 32500 inviato con una Serial.print via seriale sono come minimo 5 caratteri più, se li trasmetti il CR e LF finali, che fanno in tutto 7) cambia il tempo ...

Comunque, con un delay(50) ... ci dovresti stare dentro alla grande ;)

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 03, 2014, 05:18 pm
Ok. Provo a fare tutte queste modifiche e ti faccio sapere ;)
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 04, 2014, 11:13 am
Rieccomi qui e purtroppo non sono riuscito a risolvere i miei problemi  :~

sembra che vada tutto bene, i valori analogici mandati da Arduino arrivano bene, ma dopo un po che gli mando dei comandi, a un certo punto si blocca tutto. Dalla parte di VB mi esce un Msg box con scritto:

Code: [Select]

IOException non è stata gestita
Una periferica collegata al sistema non è in funzione.


Ma fino a un secondo fa reagiva perfettamente e tutto di un tratto si è impuntata.

ti metto il codice per intero, l'ho snellito ma anche così non funziona

Code: [Select]
int pH1;
int pH2;
int DO;
int Co2 = 8;
int O2 = 12;


void setup(){
  Serial.begin(57600);
  pinMode(Co2, OUTPUT);
  pinMode(O2, OUTPUT);
 
}

void loop(){
pH1 = analogRead(A1);
Serial.println(pH1);
delay(50);
pH2 = analogRead(A0);
Serial.println(pH2);
delay(50);
DO = analogRead(A2);
Serial.println(DO);
delay(50);

if (Serial.available() > 0){
   int iniezione = Serial.read();
   if (iniezione == '1'){
     digitalWrite(Co2, HIGH);
     digitalWrite(O2, LOW);
   }
   if (iniezione == '2'){
     digitalWrite(Co2, LOW);
     digitalWrite(O2, HIGH);
   }
   if (iniezione == '0'){
     digitalWrite(Co2, LOW);
     digitalWrite(O2, LOW);
   }
   delay(50);
}
}[code]

dove il comando "iniezione"  lo mando da VB con un timer ogni 300 ms, il cui valore lo cambio premendo dei pulsanti.

Che possa essere un problema di Hardware o che il Pc che sto usando è un po' vecchiotto (ha ancora Windows XP).

Non saprei più cosa provare. Non c'è un comando per svuotare il buffer?

Ti ringrazio ancora per l'infinita pazienza.

Giacomo.
[/code]
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 04, 2014, 11:31 am
Mmm ... a me sembra che non ci sia nulla di sbagliato ...  :smiley-roll:

Comunque ...
... relativamente ai buffer ci sono due strade, una per il TX buffer ed una per il RX buffer :

TX Buffer:
Usare la Serial.flush() (http://arduino.cc/en/Serial/Flush) che ferma il programma fino a quando il TX buffer non è vuoto. Qundi allo statement successivo, sei sicuro che il TX buffer e completamente stato trasmesso.

RX Buffer:
Per svuotare completamente il RX buffer puoi fare un loop stretto del tipo :

Code: [Select]
while (Serial.available()) {
  Serial.read();
  delay(1);
}


... e all'uscita dal while non ci sono più caratteri disponibili nel buffer.

Solo per fare una prova, allunga il tempo ogni quanto trasmetti da PC qualche cosa ... da 300 msec. prova a fare 750 msec. .... tanto per vedere ...

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 04, 2014, 05:39 pm
Nulla da fare =(.

Ho anche provato a mandare i comandi "iniezione" dalla seriale di Arduino e fino a un po' funziona e poi chiude la connessione e i led di comunicazione TX e RX o rimangono sempre accesi o rimangono sempre spenti. Invece se non mando nulla tutto ve bene e ho provai a lasciarlo anche tutta la notte senza problemi.

ora il codice è così:

Code: [Select]

int pH1;
int pH2;
int DO;
int Co2 = 8;
int O2 = 12;


void setup(){
  Serial.begin(57600);
  pinMode(Co2, OUTPUT);
  pinMode(O2, OUTPUT);
 
}

void loop(){
pH1 = analogRead(A1);
Serial.println(pH1);
delay(50);
Serial.flush();
pH2 = analogRead(A0);
Serial.println(pH2);
delay(50);
Serial.flush();
DO = analogRead(A2);
Serial.println(DO);
delay(50);
Serial.flush();

if (Serial.available() > 0){
   int iniezione = Serial.read();
   if (iniezione == '1'){
     digitalWrite(Co2, HIGH);
     digitalWrite(O2, LOW);
   }
   if (iniezione == '2'){
     digitalWrite(Co2, LOW);
     digitalWrite(O2, HIGH);
   }
   if (iniezione == '0'){
     digitalWrite(Co2, LOW);
     digitalWrite(O2, LOW);
   }
   while (Serial.available()){
   Serial.read();
   delay(1);
}
}



inizio a pensare sul serio che sia un qualche problema di HW. Una cosa: una volta ho collegato il cavo USB ad Arduino mentre era collegato all'alimentazione (9V tramite il Jack) è possibile che si sia danneggiato qualcosa?

Proverò in questi giorni a montare il tutto su un nuovo Arduino Uno che ho e provo a vedere che succede.

Ti ringrazio ancora per la disponibilità.

Ti farò sapere lo sviluppo della vicenda. Buon Week end

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 04, 2014, 05:43 pm
In effetti sembrerebbe un problema HW ... non vorrei fosse un problema del PC ... un po' antiquato ...  :smiley-mr-green:

Buon fine settimana anche a te !

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 04, 2014, 05:46 pm
Se ti può aiutare mi esce questa scritta quando si impianta il tutto


Code: [Select]

Dimensione del file binario dello sketch: 5.380 bytes (su un massimo di 258.048 bytes)
java.io.IOException: Input/output error in writeArray
at gnu.io.RXTXPort.writeArray(Native Method)
at gnu.io.RXTXPort$SerialOutputStream.write(RXTXPort.java:1124)
at processing.app.Serial.write(Serial.java:517)
at processing.app.Serial.write(Serial.java:540)
at processing.app.SerialMonitor.send(SerialMonitor.java:200)
at processing.app.SerialMonitor.access$100(SerialMonitor.java:32)
at processing.app.SerialMonitor$3.actionPerformed(SerialMonitor.java:89)
at javax.swing.JTextField.fireActionPerformed(JTextField.java:492)
at javax.swing.JTextField.postActionEvent(JTextField.java:705)
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:820)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2886)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6040)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:704)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:969)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:841)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:668)
at java.awt.Component.dispatchEventImpl(Component.java:4502)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


scusami ancora, ma ho fatto spendere un bel po al dipartimento pensando che potevo farcela, ma credo che sia più difficile di quanto pensassi
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 04, 2014, 06:19 pm
Stai usando l'ultima versione dell'IDE vero ? 1.0.5-r2 ???

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 04, 2014, 06:27 pm
... mi sono permesso di aggiustartelo ... ottimizzandolo un po' ...

Code: [Select]

int pH1;
int pH2;
int DO;
int Co2 = 8;
int O2 = 12;
//
char iniezione;
//
void setup(){
  Serial.begin(57600);
  pinMode(Co2, OUTPUT);
  pinMode(O2, OUTPUT);
}
//
void loop(){
  pH1 = analogRead(A1);
  Serial.println(pH1);
  delay(50);
  Serial.flush();
  //
  pH2 = analogRead(A0);
  Serial.println(pH2);
  delay(50);
  Serial.flush();
  //
  DO = analogRead(A2);
  Serial.println(DO);
  delay(50);
  Serial.flush();
  //
  if (Serial.available() > 0){
     iniezione = Serial.read();
     switch (iniezione) {
     case '1':
        digitalWrite(Co2, HIGH);
        digitalWrite(O2, LOW);
        break;
     case '2':
        digitalWrite(Co2, LOW);
        digitalWrite(O2, HIGH);
        break;
     case '0':
        digitalWrite(Co2, LOW);
        digitalWrite(O2, LOW);
        break;
     default:
        break;
     }
     //
     while (Serial.available()){
        Serial.read();
        delay(1);
     }
  }
}


Guglielmo

P.S. : Ricordati sempre di usare da menu dell'IDE ... Tools -> Auto Format ... che ti sistema le indentature del codice ;)
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 04, 2014, 06:33 pm
Credo proprio di si

l'ho scaricata dal sito di Arduino qualche mese fa.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 04, 2014, 06:50 pm

Credo proprio di si ...


... beh ... fai presto a verificarlo ... è scritto in testa all'IDE ;)

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 07, 2014, 12:33 pm
Ora sembra che funzioni perfettamente  :smiley-surprise: almeno mettendo i dati direttamente dalla seriale ;)
Sulla testa dell'IDE c'era scritto solo 1.0.5 e quindi ho cancellato tutto (anche Visual Basic però  :smiley-eek:) e rimesso tutto facendo attenzione che sia r2. Ho anche usato il switch/case che mi hai proposto. Sembra che vada alla grande. Ti farò sapere se va tutto perfettamente anche con VB.

Grazie mille del preziosissimo aiuto.

Giacomo.

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 07, 2014, 01:16 pm
Il problema è che su arduino UNO si sono dimenticati di mettere il controllo di flusso hardware, in arduino2009 non c'era questo problema perchè il segnale  DSR è disponibile sul pin2 di X3,  basta collegare questo pin ad un qualsiasi pin di meg328  così quando arduino è impegnato abilita l'ingresso DSR per comunicare al PC l'interruzione del flusso.

La cosa identica l'ho fatta quì:   http://www.dmxpassion.altervista.org/pg015.html (http://www.dmxpassion.altervista.org/pg015.html)
vedi lo schema in PACK LNCNC

E' comunque possibile variare il firmware su mega16u2 aggiungendo le funzioni per la linea DSR,  non sò se è già disponibile in rete
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: zoomx on Apr 07, 2014, 02:50 pm
@GiacomoSam
l'errore "Una periferica collegata al sistema non è in funzione." sembrerebbe indicare che l'Arduino si sia bloccato che che quindi la COM corrispondente non funzioni più. Puoi controllare da gestione dispositivi se sparisce. Può anche essere colpa dell'USB sul PC, magari non fa bene contatto e si scollega. A me capita con un portatile.
Il secondo messaggio di errore che hai postato riguarda invece l'IDE e non il VB. Forse indica la stessa cosa.

Io avrei scritto lo sketch diversamente. Avrei raccolto tutti i dati analogici e digitali, li avrei stampati tutti in una volta (o in due se supero o mi avvicino ai 64 caratteri del buffer), avrei atteso un po', poi avrei controllato l'arrivo di comandi da seriale ed eventualmente li avrei eseguiti. Infine avrei riiniziato il ciclo.

@Guglielmo gpb01
La storia della seriale che lavora un carattere alla volta non l'ho capita.
Nelle comunicazioni Arduino->PC mando un stringa alla volta e su PC la ricevo senza problemi.
La differenza è nelle comunicazioni PC->Arduino dove, se supero il carattere, devo inventarmi qualcosa.
Potrebbe anche bastare di aspettare che nel buffer ci sia il numero di caratteri attesi ma invece mi son implementato una routine che aspetta un carattere terminatore. Intendevi questo caso?
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 07, 2014, 03:42 pm
Ok. quindi dici di accumulare  dati in una stringa con tutti i dati (analogici e digitali) e poi mandarli tutti per volta e poi mandarli via seriale al PC?
devo fare un array o va bene anche una semplice print.ln per ogni dato?
e per mandarle dal PC?

Quello che mi ha mandato Guglielmo sembra molto efficace e mettendo chat al posto di INT risparmio molto nella velocità mi sembra di capire. Ora appena metto VB (non so cosa ho combinato con internet) vedo se va tutto bene.

Anche io avevo notato che c'è un qualche problema di connessione tra i due sistemi e mi chiedevo se ci fosse qualche problema di Hardware (tipo contatto USB). Ora controllo un po'. Ho visto che collegando Arduino con un Mac tutto va bene (ma li non ho VB :0).

Grazie,

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 07, 2014, 03:44 pm

La storia della seriale che lavora un carattere alla volta non l'ho capita.
Nelle comunicazioni Arduino->PC mando un stringa alla volta e su PC la ricevo senza problemi.


Perché hai la "pappa fatta" da parte della Serial.print() che trasforma lei, i tipi che conosce, in una serie di caratteri ...
... prova a dover trasmettere una "struttura dati" ... poi mi dici come fai ;)


La differenza è nelle comunicazioni PC->Arduino dove, se supero il carattere, devo inventarmi qualcosa. ....


La trasmissione dei dati asincroni lungo una seriale funziona sempre allo stesso modo ...
... l'IDE di Arduino può venirti incontro in tante cose e nascondertene tante altre, ma se non sai ESATTAMENTE come funziona, appena ti allontanerai da Arduino ... avrai i tuoi problemi  ]:D ]:D ]:D

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: zoomx on Apr 07, 2014, 04:10 pm
@GiacomoSan
io suggerivo un approccio ma se già ti va bene quello proposto non c'è bisogno di cambiare, non è che il mio sia meglio.
In caso puoi usare un Array oppure anche una serie di print che alla fine termini con un carattere speciale. Se usi solo Ascii puoi terminare con /n e dal lato VB usare Stringa= SerialPort1.ReadLine() che, se non c'è una stringa che termina con il carattere /n restituisce Nothing altrimenti restituisce la stringa contenente tutte le letture. Devi poi interpretare la stringa.

@Gugliemo
mi è chiaro, adesso.
So quasi esattamente come funziona, con Arduino mi son riavvicinato ai microcontrollori ma mi è capitato di usare ST6 e ST9 qualche annetto fa, in assembler. Ma potevo non saperlo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 03:53 pm
Rieccomi. Riassumo quello che ho fatto in questi giorni:

ho cambiato PC, vecchio lo stesso e sempre con Windows XP e ho scaricato il software per arduino e caricato lo sketch.

Ma come al solito non funziona. Ovvero quando Arduino deve solo mandare dati tutto va bene, il problema è che quando devo mandare i comandi (lo faccio direttamente digitando i chart dalla serial) si vede che i numeri che manda in seriale rallentano, come se il PC facesse fatica e poi si blocca tutto il PC.  Facendo la Task manager di Windows con citrl+alt+canc mi dice che Java non risponde. Non saprei più cosa fare.

@Icio Non riesco a scaricare il file e non ho capito bene quello che intendi.

Domani proverò a comprare un Arduino UNO (questa volta poi al massimo riprendo un Mega nuovo se vedo che funziona) e vedere se con lui funziona.

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 04:02 pm
Un altra cosa

poi quando riapro lo sketch e provo a lanciarlo di nuovo mi dice che la COM3 (a cui è collegato Arduino) è già in uso. Così devo rinstallare i driver di Arduino per poi riprovare.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 09, 2014, 04:09 pm
Ricordo che con Win XP c'erano dei problemi ... hai già letto QUI (http://arduino.cc/en/Guide/UnoDriversWindowsXP) ???

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 04:23 pm
Si, scelgo anche io il driver manualmente. Ora però su questo computer non mi viene la schermata del driver che non ha passato il logo testing.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 09, 2014, 04:25 pm
@Giacomo, uso Windows XP è ho già mandato dati da serial monitor ad Arduino Uno (IDE 1.0.5), non in maniera intensiva, ma non mi ha mai dato questi problemi. Con la Mega mi sembra non ho provato.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 04:30 pm
ho provato anche con un Arduino UNO nuovo ma niente da fare   =(
 
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 04:35 pm
@nid69ita

io sto usando l'IDE 1.0.5-r2 e mando i comandi direttamente dalla seriale, ma anche andando piano (distanza di qualche secondo) mi si impalla tutto.

ho provato anche a copiare lo sketch di Guglielmo così com'è ma nulla.

P.s. Non è che c'è qualche problema con Java? :smiley-slim:

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 09, 2014, 04:37 pm
Se voi, pubblica lo sketch, e provo anche io con la mia Arduino Uno e Windows XP.
Quali valori bisogna mandare da monitor seriale?
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 04:44 pm
Grazie mille, così mi tolgo il dubbio e capisco se il problema è nel mio PC

ecco lo sketch:

Code: [Select]

int pH1;
int pH2;
int DO;
int Co2 = 8;
int O2 = 12;

char iniezione;

void setup(){
   Serial.begin(57600);
   pinMode(Co2, OUTPUT);
   pinMode(O2, OUTPUT);
}

void loop(){
   pH1 = analogRead(A1);
   Serial.println(pH1);
   delay(50);
   Serial.flush();
   
   pH2 = analogRead(A0);
   Serial.println(pH2);
   delay(50);
   Serial.flush();
   
   DO = analogRead(A2);
   Serial.println(DO);
   delay(50);
   Serial.flush();

   if (Serial.available() > 0){
      iniezione = Serial.read();
      switch (iniezione) {
      case '1':
         digitalWrite(Co2, HIGH);
         digitalWrite(O2, LOW);
         break;
      case '2':
         digitalWrite(Co2, LOW);
         digitalWrite(O2, HIGH);
         break;
      case '0':
         digitalWrite(Co2, LOW);
         digitalWrite(O2, LOW);
         break;
      default:
         break;
      }
     
      while (Serial.available()){
         Serial.read();
         delay(1);
      }
   }
}


bisogna mandare i valori '1', '2' o '0' per attivare o meno le uscite 8 e 12.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 09, 2014, 04:53 pm
Fatto. A me non sembra dare problemi. Io però non ho nulla di collegato agli analogici.
Su 8 e 12 ho messo 2 led e funzionano.
P.S. uso la 1.0.5 non credo r2 però.
Allego immagine del monitor seriale prima di inviare 2
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 04:55 pm
Se vi può essere utile, una volta caricato lo sketch, sotto la scritta "Caricamento terminato"

mi esce questa scritta

Code: [Select]
Dimensione del file binario dello sketch: 5.110 bytes (su un massimo di 258.048 bytes)
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer


Vi dice qualcosa.

Grazie ancora,

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 09, 2014, 04:56 pm
Banalmente, hai provato a cambiare il cavo USB ?

Ho provato anche con versione 1.5.5 nessun problema.
Quegli errori non mi dicono nulla ma a me non li da.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 05:09 pm
provo subito ;)
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 09, 2014, 05:35 pm
Allora

ho cambiato il Cavo

cambiato PC

cambiato Arduino

cambiato IDE (1.0.5, 1.0.5-r2, 1.5.6-r2)

e nulla da fare.

LA cosa più curiosa è che mettendo tutto su un Mac va tutto bene, ma non posso usare VB sul Mac

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: zoomx on Apr 09, 2014, 05:59 pm
Se hai qualche altro dispositivo che funziona in serale collegalo al PC e fai un test con la console seriale dell'IDE, giusto per vedere se non è un problema dell'IDE.

Oppure invece di usare il terminale seriale dell'IDE usa Hyperterminal o questo http://sites.google.com/site/terminalbpp/.

Fra l'altro il terminale dell'IDE non manda nulla finché non si preme il return mentre quello che ho linkato manda il carattere immediatamente.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 10, 2014, 09:52 am
@ zoomx.

ho provato a fare come dici tu (credo  :~).

Ho scaricato il terminal che mi hai postato. Su l'arcuino nuovo con cavo nuovo ho caricato uno sketch come quello postato in precedenza ma togliendo la parte di read, mettendo solo la parte di ricezione, tramite il mac.


Code: [Select]
int avanti = 8;
int indietro = 12;

char movimento;

void setup(){
Serial.begin(9600);
pinMode(avanti, OUTPUT);
pinMode(indietro, OUTPUT);


}

void loop(){
 
  if (Serial.available() > 0){
    movimento = Serial.read();
    switch(movimento){
    case '1':
    digitalWrite(avanti, HIGH);
    digitalWrite(indietro, LOW);
    break;
   
    case '2':
    digitalWrite(avanti, LOW);
    digitalWrite(indietro, HIGH);
    break;
   
    case '3':
    digitalWrite(avanti, LOW);
    digitalWrite(indietro, LOW);
    break;
    }
    while (Serial.available()){
      Serial.read();
      delay(1);
    }
  }
}
   


testato e funziona perfettamente. Poi ho spostato il cavo USB dal mac al PC, aperto il programma, scelto la porta COM4, premuto "Connect" e dato gli ordini dalla text box con di fianco scritto "+CR e -> Send". Ho messo nello sketch il baou rate a 9600 e lasciato nel terminal 9600 senza toccare altro. Come al solito mi prende i primi 3 o 4 comandi e poi si impianta e devo fare Citrl+alt+canc. Una cosa: a me non li manda subito, ma devo premere invio e poi cancellare il carattere prima di mettere quello nuovo, che poi mi mette tutto nel box sotto.

Un'altra cosa: ma è normale che il led 13 rimanga sempre acceso a meno che io non gli dica di spegnersi?

Per collegare altri dispositivi alla seriale per vedere se funziona, non mi viene in mente nulla. Mi consigli di provare con altro?

Grazie mille per i consigli.

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 10, 2014, 10:07 am
Attenzione! 8) :)

mandando i comandi da Hyperterminal di Windows tutto funziona quasi perfettamente (forse era lui che mandava i carateri direttamente :~). si blocca solo quando mando comandi molto velocemente (ora sto usando 9600 baud)

Cosa vuol dire?

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 10, 2014, 11:27 am

...e dato gli ordini dalla text box con di fianco scritto "+CR e -> Send". Ho messo nello sketch il baou rate a 9600 e lasciato nel terminal 9600 senza toccare altro.

Ma anche da monitor seriale fai aggiungere CR ? Perchè nelle mie prove (vedi la mia foto) non aggiungo nulla, invio il carattere puro senza aggiunte. Tu nel tuo codice dopo lo switch() hai un ulteriore ciclo di lettura.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 10, 2014, 11:41 am
E'  chiaro che perde caratteri!

Hai considerato il mio post in questo argomento? E' il 5 messaggio nella seconda pagina
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: zoomx on Apr 10, 2014, 04:30 pm

premuto "Connect" e dato gli ordini dalla text box con di fianco scritto "+CR e -> Send". Ho messo nello sketch il baou rate a 9600 e lasciato nel terminal 9600 senza toccare altro. Come al solito mi prende i primi 3 o 4 comandi e poi si impianta e devo fare Citrl+alt+canc. Una cosa: a me non li manda subito, ma devo premere invio e poi cancellare il carattere prima di mettere quello nuovo, che poi mi mette tutto nel box sotto.


Devi scrivere direttamente nel box sotto dove poi ti appaiono i caratteri, il box sopra che hai usato serve proprio a comporre una stringa prima di mandarla, come succede con l'IDE. Non devi mettere la spunta su +CR in quanto il tuo programma su arduino non si aspetta alcun CR.

@icio
In effetti sembrerebbe il problema che hai descritto ma non si capisce come mai si pianti invece di ignorare i caratteri.

GiacomoSam,
ma tu quanti caratteri alla volta mandi?
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 10, 2014, 05:39 pm
Dipende da come è gestito il flusso in ingresso da arduino, non scarta il CR ma nemmeno lo elabora più quando la coda è terminata ,  probabilmente e dico probabilmente durante l'elaborazione del messaggio viene toccato qualche registro dell'USART
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 10, 2014, 06:10 pm
Mi quoto. Magari perderà anche un carattere ma a me (anche con +CR) non si inchioda Windows XP ne l'IDE
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 10, 2014, 06:25 pm
Allora:

@nid69ita:

io mandavo semplicemente un '1', poi dopo qualche secondo un '2' e così via, se nessun CR o altro, credo come hai fatto tu.

io mando un solo carattere alla volta, almeno per ora, ma poi dovrò marne una decina, ma visto che non funzionava ha tolto tutto dallo sketch e provato solo a mettere i comandi in ricezione.

Comunque ho chiamato il tecnico del dipartimento che ha portato via il PC incriminato. Ha detto che lo formatta, gli mette un po più di dam e se riesce installa Windows 7 8). Anche lui non si capacitava di questi problemi

Spero per settimana prossima di avere di nuovo il PC e di arrivare a un punto.

Ringrazio tutti voi per l'aiuto e la pazienza

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 10, 2014, 06:29 pm
@ icio

Purtoppo il mio PC non riesce ad aprire il video (provo ad aprirlo con VLC, può andare bene? :smiley-roll:).

E sinceramente non ho capito bene: dovrei collegare il pin 2 a un ingresso di Arduino?

quando arrivo a casa provo ad aprire il file con il computer di casa.

Grazie

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 10, 2014, 07:06 pm

Allora: @nid69ita:
io mandavo semplicemente un '1', poi dopo qualche secondo un '2' e così via, se nessun CR o altro, credo come hai fatto tu.
io mando un solo carattere alla volta, almeno per ora, ma poi dovrò marne una decina, ma visto che non funzionava ha tolto tutto dallo sketch e provato solo a mettere i comandi in ricezione.
Giacomo

Io anche, sia Cr che senza, ed ad un certo punto ho iniziato a mandare caratteri uno dietro l'altro, sembravo il super-eroe Flash  :smiley-mr-green:   
Ma nulla, nessun problema. E poi con Mac non ti dava problemi. Secondo me c'era qualcosa in Windows. (Che era 7 o XP ? )
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 11, 2014, 09:23 am
Allora mi sa che è proprio come hai fatto io :smiley-roll:.

usavo XP professional. Anche il tecnico mi ha detto che forse il PC aveva qualche problema cos' ha detto che lo formattava e provava a mettere Windows 7 al posto di XP, se riusciva a mettere un po di RAM in più. Spero per lunedì di riavere il PC e soprattutto senza problemi  ;)

Vi terrò aggiornati sugli avvenimenti.

Grazie mille per ora.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 14, 2014, 03:30 pm
Sto ancora aspettando che mi aggiustino il PC.

Ho una domanda che forse può essere stupida:

Non è che non  funzioni per colpa della USB 1.0? Ripensandoci è molto strano che su due PC non funzioni allo stesso modo e invece sul Mac va tutto bene. Una delle cose comuni ai due PC sui quali non funziona è, oltre a Windows XP, è la USB che è a 1.0, ma su internet ho visto che comunque viaggiano a Mb al secondo, comunque maggiori dei miei 57600.

Grazie,

Giacomo.



Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: zoomx on Apr 14, 2014, 05:21 pm
Non è che si tratta di un problema di consumi? Cioè l'Arduino inizia a richiedere corrente e la porta non è in grado di darla per cui si inchioda?
Fra l'altro la Wiki inglese
http://en.wikipedia.org/wiki/USB
riporta che la corrente fornita con USB 1.0 è di soli 150 mA contro i 500 della USB 2.0
Non dice nulla sulla USB 1.1
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 14, 2014, 06:05 pm
Può essere :~; 150 Ma mi sembrano un po pochi, anche se in realtà ho attaccato solo una scheda relè con alimentazione esterna (forza ha un darlington per pilotare il relè?? :smiley-roll:)


Non sono riuscito a trovare nessuna specifica sulle richieste della porta USB di Arduino. Se così fosse è chiaro perché non funziona sui due PC identici (i potenti mezzi dell'Università) e invece funziona sul Mac.

Spero che il tecnico sappia metterci mano altrimenti mi sa che devo comprare un PC nuovo  =(
Se attacco il cavo USB, e l'alimentatore con cavo jack insieme succede qualcosa? Arduino prende corrente sia dalla USB che dall'alimentatore? Vorrei vedere qual'è l'assorbimento totale di Arduino comandando le varie uscite, se supera i 150 ma ci sta che si è trovato il problema.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 16, 2014, 09:27 am
Buongiorno a tutti,

e come al solito sono ancora a rompere le scatole (ogni commento sulla mia insistenza è ben accetta ;)).

mi è tornato il PC con un po di modifiche, ho provato subito Arduino Uno con dei led per vedere se funziona: funziona perfettamente; anche mandando comandi più velocemente della luce non si blocca e fa tutto come dovrebbe.

Ma non finisce qui.

Attaccato Arduino Mega con attaccata la scheda relè: tutto come prima. Dopo qualche comando si blocca.

Ora stavo cercando di capire il perché. Mi viene in mente, come proposto qualche posta fa, che sia colpa dell'alimentazione, ovvero che Arduino non riesce a far fronte ai consumi della scheda (anche se, per ora ho collegato solo 2 relè degli 8 disponibili).

Ho chiesto in un altro topic se il collegamento possa andare bene, ma allora cosa posso fare? lo devo comandare con dei transistor? non è fatto apposta per funzionare con Arduino a 5V con 20 Ma di assorbimento?

vi posto la marca della scheda relè:

http://www.dx.com/p/keyes-8-channel-relay-expansion-module-w-optocoupler-isolation-red-blue-209453#.U00qLot0HZU

e come confermato da Brunello, lo schema di collegamento, con un alimentatore esterno,  è il seguente.


Qualche consiglio? Dove posso comprare una scheda relè seria o consigliate di farlo da me?

Grazie mille,

Giacomo.

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: zoomx on Apr 16, 2014, 09:36 am
Ho anche io moduli simili. Quello che hai tu ha dei fotoaccoppiatori. Se l'Arduino alimenta solo i fotoaccoppiatori non ci dovrebbero essere problemi  a meno che il consumo anche dei fotoaccoppiatori superi il massimo disponibile da Arduino.

Ma il computer ha adesso USB2 o no? Penso non si possano trasformare delle usb1 in 2, bisogna aggiungere una scheda nuova.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 16, 2014, 09:56 am
Il tecnico ha detto che ha dovuto mettere una PIC?  :smiley-roll: nuova perché Windows 7 non supportava le USB1 o qualcosa del genere. Ha anche cambiato la scheda di rete e messo un po di dam in più, almeno per quello che ho capito io.

La scheda l'ho proprio presa con i fotoaccoppiatori sia per proteggere Arduino che per farlo consumare poco, anche se ho messo anche l'alimentatore esterno.

Potrebbe essere che la scheda è difettosa? quale altra consigliate di acquistare, di buona qualità?

Grazie a tutti,

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 16, 2014, 10:12 am
Ma quale sketch usi ? Non è che adesso usi uno sketch + complesso e magari con un errore?
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 16, 2014, 10:18 am
era quello che mettevo anche prima, anzi più leggero dell'iniziale.

te lo posto, magari mi sfugge qualche errore

Code: [Select]


int Co2 = 8;
int O2 = 13;

char iniezione;

void setup(){
   Serial.begin(57600);
   pinMode(Co2, OUTPUT);
   pinMode(O2, OUTPUT);
}

void loop(){

   if (Serial.available() > 0){
      iniezione = Serial.read();
      switch (iniezione) {
      case '1':
         digitalWrite(Co2, HIGH);
         digitalWrite(O2, LOW);
         break;
      case '2':
         digitalWrite(Co2, LOW);
         digitalWrite(O2, HIGH);
         break;
      case '0':
         digitalWrite(Co2, LOW);
         digitalWrite(O2, LOW);
         break;
      default:
         break;
      }
     
      while (Serial.available()){
         Serial.read();
         delay(1);
      }
   }
}


Ho messo un led con una resistenza da 220 e ho usato il led del pin 13 come indicatori e tutto funziona su arduino uno, ma quando passo sul Mega, con in quei pin le uscite per la scheda relè dopo un po si blocca
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 16, 2014, 12:29 pm
Ho provato anche a staccare le scheda relè da Arduino Mega e mettevi solo un led con resistenza di 220 ohm e usare il led sul pin 13 come altro indicatore e tutto funziona benissimo. Non è che devo mettere una resistenza anche per i led del fotoaccoppiatore o dite che è la scheda che è da buttare?

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 16, 2014, 12:47 pm

Non è che devo mettere una resistenza anche per i led del fotoaccoppiatore o dite che è la scheda che è da buttare?


Purtroppo non vedo lo schema di quella scheda, ma certo che se NON ci sono, le resistenze in serie ai LED le DEVI mettere tu !!!

Non riesci a vedere sulla scheda che in serie all'entrata su ogni singolo fotoaccoppiatore c'è la resistenza o meno ??? Normalmente ci dovrebbero essere ...  :smiley-roll:

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 16, 2014, 02:08 pm
credo proprio che ci sia una resistenza con scritto 102. Ti mando la foto (anche se di pessima qualità) dovrebbe essere quallo subito sopra la lettera "e" di Keys.

Quindi può essere che la scheda è difettosa?

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 24, 2014, 03:14 pm
Scusatemi se vi rompo ancora le scatole ma sono disperato =(


ho ancora problemi di comunicazione seriale tra PC e Arduino Mega.

com vi ho detto:

ho cambiato PC (ora ho uno con Windows 7)
ho fatto prove con Arduino differenti
sketch vari ma nulla, dopo un po Arduino si impianta e blocca la comunicazione seriale.

Vi aggiorno:

ecco lo sketch che per ora sto cercando di usare:

Code: [Select]
const int avanti = 8;
const int indietro = 12;
int luceTot;
int luceSu;
int luceGiu;
const int sondaCass = 6;
const int sondaGwp = 5;
const int evScarico = 11;
const int evCarico = 10;
byte sensoreCass;
byte sensoreGwp;
byte sensAvanti;
byte sensIndietro;
const int fineAvanti = 3;
const int fineIndietro = 4;
const int led13 = 13;

char movimento;
char diluizione;


void setup(){
 Serial.begin(57600);
 pinMode(avanti, OUTPUT);
 pinMode(indietro, OUTPUT);
 pinMode(sondaCass, INPUT);
 pinMode(sondaGwp, INPUT);
 pinMode(evCarico, OUTPUT);
 pinMode(evScarico, OUTPUT);
 pinMode(fineAvanti, INPUT);
 pinMode(fineIndietro, INPUT);
 pinMode(led13, OUTPUT);
 digitalWrite(led13, LOW);
 delay(1000);
}

void loop(){
 
 Serial.flush();
 delay(500);

 luceTot = analogRead(A0);
 Serial.println(luceTot);
 delay(100);
 Serial.flush();

 luceSu = analogRead(A1);
 Serial.println(luceSu);
 delay(100);
 Serial.flush();

 luceGiu = analogRead(A2);
 Serial.println(luceGiu);
 delay(100);
 Serial.flush();

 sensoreCass = digitalRead(sondaCass);
 if(sensoreCass == HIGH){
   Serial.println ('1');
 }
 if (sensoreCass == LOW){
   Serial.println ('2');
 }
 delay(100);
 Serial.flush();

 sensoreGwp = digitalRead(sondaGwp);
 if(sensoreGwp == HIGH){
   Serial.println ('3');
 }
 if (sensoreGwp == LOW){
   Serial.println ('4');
 }
 delay(100);
 Serial.flush();

 sensAvanti = digitalRead(fineAvanti);
 if (sensAvanti == HIGH){
   Serial.println('7');
 }
 if (sensAvanti == LOW){
   Serial.println('8');
 }
 delay(100);
 Serial.flush();

 sensIndietro = digitalRead(fineIndietro);
 if (sensIndietro == HIGH){
   Serial.println('5');
 }
 if (sensIndietro == LOW){
   Serial.println('6');
 }
 delay(100);
 Serial.flush();


 if (Serial.available() > 0){
   movimento = Serial.read();
   diluizione = Serial.read();
   switch (movimento) {
   case '1':
     digitalWrite(avanti, HIGH);
     digitalWrite(indietro, LOW);
     break;

   case '2':
     digitalWrite(avanti, LOW);
     digitalWrite(indietro, HIGH);
     break;

   case '0':
     digitalWrite(avanti, LOW);
     digitalWrite(indietro, LOW);
     break;

   }

   switch (diluizione){
   case '3':
     digitalWrite(evScarico, HIGH);
     digitalWrite(evCarico, LOW);
     break;

   case '4':
     digitalWrite(evScarico, LOW);
     digitalWrite(evCarico, HIGH);
     break;

   case '5':
     digitalWrite(evScarico, LOW);
     digitalWrite(evCarico, LOW);
     break;

   }


   while (Serial.available()){
     Serial.read();
     delay(1);
   }
 }
}


ho provato a mettere tanti delay lunghi e forse un Serial.flush() in più ma forse sembra che vada un po meglio, ma si impalla uguale ed è anche molto lento.

Da parte di VB ho messo sia la mandata che la ricezione dei dati in due blocchi try/catch e ho visto che il problema sta proprio nel mandare i dati da PC verso arduino, ed è confermato dal fatto che se non mando nulla da PC ad arduino tutto va perfettamente.

Ho anche cambiato la scheda relè pensando che fosse difettosa, ma nulla (collego i pin di arduino agli IN della scheda, i 5V e GND di arduino a Vcc e GND della scheda e GND e JD-Vcc a un alimentatore da 5V esterno, rimuovendo il Jumper)

Avevo anche dei dubbi sulla corrente erogata dall'USB così ho collegato Arduino a un alimentatore da 9V, 500 ma esterno e la USB solo per la comunicazione seriale.

Ho visto che se il codice è colto (far accendere e spegnere un solo LED) va tutto perfettamente.

Guardando  queste due pagine

(http://www.leonardomiliani.com/2012/come-sapere-loccupazione-di-ram-del-proprio-sketch/) http://www.leonardomiliani.com/2013/la-memoria-sram-dei-microcontrollori/

(http://arduino.cc/en/Tutorial/Memory) http://arduino.cc/en/Tutorial/Memory

mi sono chiesto se non è un problema di SRAM,

perché mi chiude solo la connessione (ora basta solo che scollego fisicamente il cavo usb dal pc, ricollegarlo e rilanciare il programma VB per farlo funzionare perfettamente)

e i segnali in entrata analogica sono poco stabili.

Qualcuno ha qualche idea di cosa stia succedendo?

Vi ringrazio tantissimo per l'infinita pazienza.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 24, 2014, 04:16 pm
A me non convince quel ciclo alla fine dello switch. Prova a commentarlo.
Code: [Select]
while (Serial.available()){
      Serial.read();
      delay(1);
    }
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 24, 2014, 04:24 pm
sarebbe per svuotare il buffer in ricezione.

all'uscita del while il buffer è vuoto e pronto per ricevere altri dati?

Hai qualche altra prova in mente?

Grazie infinite,

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 24, 2014, 04:54 pm
Da VB non mi ricordo come spedisci il dato. Aggiungi anche il \n (new line) ?
Si potrebbe provare (forse però è un pò un casino) con Processing, gira su PC e si programma con una specie di Java. Ha un IDE simile ad Arduino. Era per capire se non è per caso la gestione della seriale di VB ad avere problemi (non credo, però ormai le hai provate tutte)
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 24, 2014, 05:05 pm
da VB mando dei byte con un

SerialPort1.write(byte)

credo che mandi solo il byte senza /n. Sarebbe mettercelo?

Il problema è che anche inserendo i dati a mano attraverso la seriale dell'IDE, da sempre problemi.

Credo che il problema si proprio o nella ricezione dei dati da parte di Arduino o nello sketch. mi sembra strano perché va e qualche volta anche per qualche minuto, ma poi si blocca.


Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 24, 2014, 05:11 pm
anzi

se mando 1 o 2 o 0 mi da molti meno problemi.

se mando 3, 4 o 5 ci mette qualche secondo a partire e spesso non parte, come se ignorasse il comando,

mentre da VB va tutto perfettamente fino a quando non si impunta.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 24, 2014, 05:49 pm
Ancora porta pazienza ma a distanza di giorni non ricordo l'analisi.
Quel che non capisco sono questi println di A0-A1-A2 (ne spedisci 3):
Code: [Select]
 luceTot = analogRead(A0);
 Serial.println(luceTot);


Questi li fai solo per sapere su Serial Monitor i valori? O li stai spedendo a VB ?  Non hanno lunghezza fissa, potrebbe essere una volta 0\n  poi 233\n poi 1023\n   e solo il \n fa da terminatore. Li leggi da VB ?
A me pareva il dialogo tra Arduino-VB fossero i caratteri 1,2,3,4,5,6,7,8

Quindi a ogni loop() tu spedisci i 3 valori analogici A0-A2 con \n poi spedisci 4 char con \n, 1 per ogni digitale sondaCass, sondaGwp, fineAvanti, fineIndietro. A questo punto leggi da VB sempre 2 char (se presenti),  movimento e diluizione.
Giusto ?

Inoltre tu spedisci sempre, di continuo lo stato dei 4 digitali e dei 3 valori analogici, indipendentemente dal fatto che non siano cambiati.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 24, 2014, 06:22 pm
giusto.

I 3 ingressi analogici sono delle misure di luce che mando a VB per registrarli e perché il PC possa elaborarli e mandare dei comandi ad Arduino e non hanno lunghezza fissa (anche per questo li spedisco sempre tutti, altrimenti non saprei di quale sensore è il valore).

A ogni loop mando i 3 valori analogici e lo stato dei 4 ingressi digitali e poi vedo se c'è qualche comando da VB.

Mando sempre anche lo stato degli ingressi digitali, anche se non sono cambiati.

Mi consigli invece di fare una cosa del genere?

Code: [Select]

if (valoreOra != valorePrecedente){
valorePrecedente = valoreOra;
Serial.println(ValoreOra);
}
else…..


Consigli quindi di alleggerire il codice?

Grazie mille,

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 24, 2014, 11:42 pm
No, era giusto per rinfrescarmi la memoria con l'analisi di quello che fai.
Ho però il dubbio che il traffico sulla seriale sia molto e dopo un pò si "ingolfa" il buffer.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 25, 2014, 01:45 am
l problema è che su arduino UNO si sono dimenticati di mettere il controllo di flusso hardware, in arduino2009 non c'era questo problema perchè il segnale  DSR è disponibile sul pin2 di X3,  basta collegare questo pin ad un qualsiasi pin di meg328  così quando arduino è impegnato abilita l'ingresso DSR per comunicare al PC l'interruzione del flusso.
E' comunque possibile variare il firmware su mega16u2 aggiungendo le funzioni per la linea DSR,  non sò se è già disponibile in rete

E questo per quanto riguarda il contrllo di flusso hard che è quello che preferisco, se preferisci implementare quello software puoi tentare di usare l' XON-XOFF oppure studiarti il sorgente delle stampanti 3D tipo repetier o marlin o etc... per vedere come hanno fatto loro


Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 25, 2014, 11:18 am
@ nid69ita

anche io pensavo che la mole di dati fosse molta e che i buffer si potessero ingolfare. Ho provato a scaricarsi i buffer anche più del necessario e mandare i comandi da VB ogni 2 secondi, e sinceramente ho visto dei piccoli miglioramenti.

@icio

sembra molto interessante quello che proponi, ma sinceramente non ho capito molto. Proverò, come suggerito anche precedentemente, a scaricare il video che mi hai postato e cercare di vedere come hai fatto tu. Ora sto usando Arduino mega con il mega16u2. Proverò a cercare in rete qualcosa per variare il firmware. No è che c'è una prova semplice per vedere se il problema è quello che dici tu?

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 25, 2014, 11:49 am
... ma sbaglio o .. te lo fa SOLO con Win e non con Mac ... come dicevi all'inizio ???


Ora controllo un po'. Ho visto che collegando Arduino con un Mac tutto va bene (ma li non ho VB :0).


Se è così ... spiegatemi cosa cavolo c'entrano i buffer e la velocità ...
... se con Mac va e con il PC no ... il problema deve essere altrove ...  ]:D ]:D ]:D

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 25, 2014, 01:29 pm

... ma sbaglio o .. te lo fa SOLO con Win e non con Mac ... come dicevi all'inizio ???


Ora controllo un po'. Ho visto che collegando Arduino con un Mac tutto va bene (ma li non ho VB :0).


Se è così ... spiegatemi cosa cavolo c'entrano i buffer e la velocità ...
... se con Mac va e con il PC no ... il problema deve essere altrove ...  ]:D ]:D ]:D

Guglielmo


Si ma ha già cambiato versione di Windows, ha cambiato il PC e tante altre prove.
Non conosco Mac, magari quel S.O. gestisce "meglio" la comunicazione seriale di Windows ?

@icio si, hai ragione, ma con un Mac @Giacomo dice che non ha problemi, solo con Windows !?!?!
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 25, 2014, 01:36 pm

Non conosco Mac, magari quel S.O. gestisce "meglio" la comunicazione seriale di Windows ?


... con una scheda (Arduino) che non gestisce handshaking né hardware né software ???  :smiley-eek: :smiley-eek: :smiley-eek:

Non credo ... c'è qualche altra cosa sotto ...  :smiley-roll:

Guglielmo

P.S. : ... come sai io ho Mac e non ho mai visto di questi problemi ...
... e passo attraverso HUB USB messi in cascata (... ho 24 porte USB piene al 80%  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:)
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 25, 2014, 01:41 pm
Magari VB.NET ha problemi con la gestione seriale ?  (Quel cavolo di strato di NET.framework rallenta? )
Però scusa @Giacomo, come hai fatto a provare il programma VB sotto Mac? VB.NET non è solo per Windows ?
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 25, 2014, 01:44 pm
... leggi bene Nid ... ti sei perso un pezzo :


Ora controllo un po'. Ho visto che collegando Arduino con un Mac tutto va bene (ma li non ho VB :0).


... quindi ... il problema potrebbe essere VB  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: nid69ita on Apr 25, 2014, 01:48 pm

... leggi bene Nid ... ti sei perso un pezzo :

Ora controllo un po'. Ho visto che collegando Arduino con un Mac tutto va bene (ma li non ho VB :0).

... quindi ... il problema potrebbe essere VB  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:
Guglielmo

:smiley-mr-green: :smiley-mr-green: :smiley-mr-green:   vero!!!
Quindi su Mac hai fatto prove NON alla stessa velocità della coppia VB-Arduino, giusto?
Perciò quello che dice @icio potrebbe essere il problema, che verrebbe fuori anche sul Mac se avessi il VB

@Giacomo, sò che non è semplice ma potresti pensare di tradurre la parte VB in Processing. Si programma con un IDE simile a quello di Arduino e si programma in Java (che poi è simile al C/C++ che usi su Arduino).
E Processing mi pare gira anche su Mac !!!
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 25, 2014, 01:50 pm

E Processing mi pare gira anche su Mac !!!


Confermo !  :D

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 25, 2014, 01:54 pm
@ Giacomo : ma implementare un minimo di protocollo SW no ???

Non dico che devi fare chissà che, ma il classico :

<STX>... dati .. <ETX><CRC><EOT>   ed in risposta  <ACK> o <NAK>  ... sincronizzerebbe tutto.

Insomma, se occorre scambiarsi seriamente delle informazioni tra un unità ed un altra ... un protocollo occorre pure metterlo in piedi, altrimenti uno incrocia le dita e spera sempre che tutto vada bene (... e si dimentica di Murphy  :smiley-mr-green:) ...

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 25, 2014, 02:32 pm
intanto grazie mille per l'interessamento e le risposte.

Provo a spiegarmi meglio:

quando ho visto che avevo problemi di comunicazione tra Arduino e VB ho lasciato stare VB e ho iniziato ad alleggerire il codice e mandare i comandi a "mano" attraverso il serial monitor dell'IDE di arduino. Ho provato con il PC con XP, con lo stesso PC ma sistemato con Windows 7 e con il MACBook e funziona per bene (almeno inserendo i caratteri a mano per qualche minuto) solo con il MAC.

guardando questo topic

http://forum.arduino.cc/index.php?topic=128006.0

ho pensato che anche io ho un PC vecchiotto e problemi di comunicazione seriale e quindi mi sono fatto una bello prolunga (una ventina di metri) e sono andato a prendere la corrente nel dipartimento a fianco e ci ho attaccato solo il PC e tutto il resto continuo ad alimentario con le prese solite (sono in una serra, costruita una cinquantina di anni fa).

per ora funziona, almeno da cinque minuti.

Avevo pensato di implementare il conduce con una serie di domande risposte da parte del PC, tipo qualcosa preso da questo, (secondo me molto valido) sito:

http://www.leonardomiliani.com/2013/arduino-invio-seriale-di-dati-da-e-per-il-computer/

ma non appesantisce il codice?

Giacomo

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 25, 2014, 02:45 pm

Avevo pensato di implementare il conduce con una serie di domande risposte da parte del PC, tipo qualcosa preso da questo, (secondo me molto valido) sito:
http://www.leonardomiliani.com/2013/arduino-invio-seriale-di-dati-da-e-per-il-computer/


... ahahahah ... è sicuramente un sito molto valido, ci mancherebbe ... è quello del nostro moderatore leo72  XD XD XD

Ma l'esempio che riporti non è pertinente ... quello fa vedere come inviare dei "comandi" e gestire la seriale (... ed è il modo corretto di farlo), ma quello di cui parlo io è tutt'altra cosa ... un "protocollo" ...
... ovvero una serie di regole per lo scambio dei messaggi tra due unità, con il controllo sulla correttezza del messaggio ricevuto.

Se non sai cosa è ... cerca ... "protocolli di comunicazione" ... ;)

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 25, 2014, 04:01 pm
Allora:

confermo che collegando il PC a una rete differente migliora notevolmente. Ho raggiunto record di connessione di cricca 10 - 15 min. Una volta si è staccata in concomitanza dell'accensione di un compressore attaccato a quella rete e un'altra quando ho appoggiato il Mac sul case del PC (è possibile che ci sia qualche interferenza? magari la terra?). In questi giorni approfondisco questo argomento, non vorrei che sia sono una mia convinzione :~

@ Guglielmo

mi sembra molto interessante un controllo della comunicazione seriale. Provo a spiegarti quello che ho capito io. Provo a postare un codice di esempio

Code: [Select]
Serial.print(0x02); // dico che ho iniziato la trasmissione
Serial.print(luceSu); // mando tutti i dati
ecc….
Serial.print(0x03); // dico che è finita la trasmissione
Serial.print(0x0D); // questo non l'ho capito bene
Serial.print(0x04) // chiudo la trasmissione



e dall'altra parte se ho ricevuto tutti i byte che mi aspettavo mando indietro ad arduino un 0x15 per dirgli che ci sono stati problemi di ricezione e quindi rimandarli o un 0x06 per continuare con la trasmissione

non ho capite bene il CRC.
ho guardato anche in questo tuo post

http://forum.arduino.cc/index.php?topic=161221.0

ma non ho capito bene di cosa si tratta

Mi sbilancio un po: non è che sapresti consigliarmi un sito, post o libro dove spiegano bene queste cose? :smiley-roll:
come per gli altri problemi ho guardato in giro ma spesso ci sono pareri discordanti.

Grazie mille,

Giacomo


Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 25, 2014, 04:14 pm
Il CRC ( o Cyclic Redundancy Check) è un calcolo che viene fatto su un blocco di dati e che da un risultato che è fortemente legato al blocco di dati e, se cambia anche un solo bit (... entro certi limiti di lunghezza del messaggio e del CRC usato), restituisce un valore differente.

Tipico esempio di trasmissione controllata ...

<STX> ... indico che inizio la trasmissione
<... blocco di bytes che trasmetto ...>
<ETX> ...  indico che è finita la parte dei dati
<CRC> ... calcolo il CRC, includendo nel calcolo il blocco dei dati e lo <ETX> ma non lo <STX> e metto qui il valore
<EOT> ... indico che ho finito

Chi riceve ... parte all'arrivo dello <STX> e, alla ricezione del <EOT> effettua anche lui lo stesso calcolo del CRC sui dati ricevuti. Se questi sono arrivati bene, il valore trasmesso deve essere ovviamente uguale a quello ricalcolato, se è differente c'è stato un errore di trasmissione.

Se tutto è ok, chi riceve trasmette <ACK> e chi trasmette sa che può passare al prossimo blocco, se invece c'è stato un errore chi riceve trasmette <NAK> e chi trasmette ritrasmette il blocco.

Precauzioni da prendere :

1. chi trasmette aspetta <ACK> o <NAK> per un tempo ragionevole, poi suppone che qualche cosa sia andata storta e ritrasmette il blocco (timeout di trasmissione)

2. chi riceve applica anche lui un meccanismo a tempo ... a partire dallo <STX> ... DEVE riceve <EOT> entro un certo tempo o ... se lo è perso e quindi deve dare <NAK> (timeout di ricezione)

3. per la massima sicurezza, ciascun blocco di dati dovrebbe essere numerato, così se io che trasmetto ricevo male il tuo <ACK> e ti ritrasmetto lo stesso blocco (con lo stesso numero identificativo), tu che ricevi, vedi che lo hai già ricevuto bene, dai <ACK>, ma lo butti via perché già lo hai.

4. sempre per la massima sicurezza, conti quante volte di seguito accade il .3 ... perché se accade più di N volte di fila .. c'è qualche cosa che non va in chi trasmette e quindi inutile continuare

Tutto chiaro ?

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 25, 2014, 06:00 pm
Guglielmo,

grazie infinite.

Sulla carta è tutto chiaro. Il CRC è come un "cartellino" con scritto le caratteristiche dell'array (sarà un array alla fine quello che mando?) di dati che mando. Questo CRC conterrà il tipo di dati che mando (se byte, int, dcc..) e il numero di byte totali. Quindi l'altro dispositivo controlla che se l'array non è come descritto nel CRC comunica che c'è qualcosa che non va e manda il segnale di rimandarlo sino a un tot di volte, poi mi dice che c'è un vero problema? Giusto?

proverò a fare un codice del genere in questi giorni. MA credo che mi sentirete comunque per qualche consiglio.

Giacomo

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 26, 2014, 12:48 am
La diffenza tra Win e MAc potrebbe essere la tempistica tra i caratteri, bastano pochi uSec in più che ritarda  MAC che non si verifica il problema con mAC mentre con WIN sì


Eh si GPB01 , quando c'è solo RXD eTXD come in arduino UNO non c'è nessun Handshake Hardware, mentre in arduino 2009 erano disponibili i segnali RIng DCD    DSR e CTS,  questo perchè 2009 aveva il FT232RL mentre in UNO i segnali sono creati via software tramite il firmware in mega16U2,  quindi basta aggiungerli sul sorgente del firmware LUFA , ricompilare il sorgente e caricarlo nel mega16u2 e connettere il segnale di ingresso DSR a un qualsiasi pin di mega328 che bloccherà il flusso quando il buffer circolare è quasi pieno , di solito io metto all'70-80%, mi pare che è tutto chiaro no?



Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 26, 2014, 12:51 am
Sul mega16u2 di UNO e MEGA2560 sono disponibili i pin PB4  PB5   PB6  PB7  , si può usare uno qualsiasi di questi pin per implementare il segnale DSR

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: leo72 on Apr 26, 2014, 01:20 am
Sulla UNO i pin PB4..7 non sono liberi, sono collegati rispettivamente ai pin 12 e 13 ed ai 2 pin occupati dal risuonatore ceramico. Non so sulla Mega, non mi ricordo.

PS:
carina la tua idea, anzi ingegnosa (anche se al costo di un pin)  ;)
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 27, 2014, 11:12 am
Parlo del mega16u2 non del mega328, l'ho anche scritto

Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 27, 2014, 05:29 pm

... mentre in UNO i segnali sono creati via software tramite il firmware in mega16U2,  quindi basta aggiungerli sul sorgente del firmware LUFA , ricompilare il sorgente e caricarlo nel mega16u2 e connettere il segnale di ingresso DSR a un qualsiasi pin di mega328 che bloccherà il flusso quando il buffer circolare è quasi pieno , di solito io metto all'70-80%, mi pare che è tutto chiaro no?


Molto simpatica questa idea ... :)

Ma tu l'hai già implementata ???
Perché ... mi/ci (... immagino che saremmo parecchi ad essere interessati) eviteresti di dover capire come è fatto il firmware LUFA (... ma magari Leo lo ha già studiato) e di trovare dove mettere le mani ;)

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: leo72 on Apr 27, 2014, 08:58 pm

Parlo del mega16u2 non del mega328, l'ho anche scritto

Hai ragione, ho fatto confusione.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: leo72 on Apr 27, 2014, 09:02 pm

Perché ... mi/ci (... immagino che saremmo parecchi ad essere interessati) eviteresti di dover capire come è fatto il firmware LUFA (... ma magari Leo lo ha già studiato) e di trovare dove mettere le mani ;)

Ho solo dato una occhiata a quel codice, mai studiato a fondo. 
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: icio on Apr 28, 2014, 04:52 am

Molto simpatica questa idea ... :)
Ma tu l'hai già implementata ???
Guglielmo


Ci sto ancora lavorando.... :D
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 03:29 pm
Eccomi con delle novità.

Ho aggiustato il codice come diceva Guglielmo (a parte il crc, che lato Arduino funziona, ma da parte PC mi da un valore di CRC differente. Per ora gli mando la somma aritmetica come controllo. Poi provvederò a sistemare il tutto con il crc).

Ora è tutto sincronizzato, Arduino manda i dati, il PC li riceve e se sono dati buoni li elabora e manda i comandi ad Arduino, Arduino li controlla, se sono dati giusti li esegue e riparte il ciclo. Funziona tutto alla perfezione !!!!!!  ma a una condizione. Mi spiego 8) :).


ho questa scheda relè collegata ad Arduino:  http://cgi.ebay.it/ws/eBayISAPI.dll?ViewItem&item=230917609536&ssPageName=ADME:X:RTQ:IT:1123

purtroppo non ho la schema elettrico, ma credo che sia simula a quello dell' 8 channel, 5V relay shield di questa pagina

http://arduino-info.wikispaces.com/arduinopower

avevo collegato la scheda con un alimentatore swiching da 5V esterno su Jd-Vcc e GND e collegato Vcc a 5V di Arduino, senza collegare il GND di sinistra al GND di Arduino.

Nei contatti dei relè ho collegato un trasformatore da 24V per pilotare delle elettrovalvole (comune e NA, hanno la logica invertita)

dopo un po che si aprono o chiudono i relè, Arduino blocca la comunicazione in seriale e si blocca tutto. Pensavo in un collegamento errato. e ho collegato Arduino al GND e VCC, lasciando stare l'alimentatore (mettendo il Jumper su JD-Vcc e Vcc).

Ma nulla da fare:

Funziona perfettamente solo se non collego nulla ai contatti dei relè  (i led si accendono e spengono e i relè scattano). Come è possibile questa cosa? La corrente nei contatti può dare noia ad arduino? Devo metterci dei diodi??


C'è qualcuno che ha avuto un problema simile?

Grazie mille per l'eventuali consigli.

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 03:43 pm

...
avevo collegato la scheda con un alimentatore swiching da 5V esterno su Jd-Vcc e GND e collegato Vcc a 5V di Arduino, senza collegare il GND di sinistra al GND di Arduino.
...


Aaarrrggghhh ... Giacomo ... le masse devono essere in comune, non i Vcc !!!!

Se usi due alimentazioni differenti (come devi fare visto il numero di relè), le masse dei due alimentatori devono essere in comune, mentre ciascuno (Arduino e la relè board) avrà il suo Vcc separato !!!

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 04:03 pm
Anche a me la logica mi pare più giusto così  :smiley-roll:

ma il tutoria dice:

The 8-relay board shown here gives you a choice of powering the relay drive circuits from the same supply as Arduino, or isolating Arduino by removing the jumper over at the right. In that case you need to have some separate +5V supply connected to GND and the "JD-VCC" pin (whatever THAT label means...). Here's a closeup look at the pins:
If you isolate Arduino, you need to connect +5V ONLY (NOT GND) from Arduino to the VCC pin. The Arduino output pins go to IN1 through IN8. And again, these pins are Active LOW.

è sbagliato??
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 04:17 pm
Secondo me SI ...

... tu, togli i Jumper come dice qui :

Quote
... or isolating Arduino by removing the jumper over at the right ...


... poi alimenti Arduino con il suo alimentatore e alimenti la board relè come dice qui :

Quote
... you need to have some separate +5V (power) supply connected to GND and the "JD-VCC" pin ...


... infine prova a mettere solo le masse in comune ed ha pilotare gli ingressi con Arduino ... e vedi cosa succede ...  :smiley-roll:

Guglielmo

P.S. : Ricorda che, stando alla descrizione, è a logica inversa ... i relè scattano con LOW e non con HIGH.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 04:25 pm
io all'inizio mettevo il Vcc e il GND (dalla morsettiera dove ci sono le entrate In1-8) ai rispettivi 5V e GND di arduino e JD-Vcc e GND separati ai 5V e GND dell'alimentatore (per avere l'isolamento) e funzionava bene, così come funziona bene alimentando la scheda solo con Vcc e GND di Arduino e mettendo il jumper.

Il mio problema è che se non attacco nessun carico ai contatti relè tutto funziona, mentre se ci attacco qualcosa si blocca tutto? come è possibile?
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 04:28 pm
Senza le masse in comune non può funzionare bene (... ti è chiaro il concetto di "differenza di potenziale" ??? se NO, cerca su Google) ...
... e ovviamente può darti anche i problemi che stai riscontrando !!!

Hai fatto la prova che ti ho detto ???

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 04:51 pm
Ho fatto la prova che mi hai consigliato:

GND dei "pin degli ingressi" al GND di Arduino. JD-Vcc al +5V dell'alimentatore, GND di fianco al - dell'alimentatore. NON ho collegato il Vcc di Arduino al 5V, ma così non si eccitano i relè. Funziona solo se collego anche i 5V di Arduino al Vcc.

Non riesco a trovare lo schema di questa scheda, e non riesco a capirne il funzionamento.

Non so se cambia qualcosa, ma per ora di ingressi sono tutti collegati (ho collegato solo i primi 4,  gli altri sono scollegati).

Anche a me torna che tutti e due gli apparecchi devono avere lo stesso riferimento di terra, ma magari c'è già dentro la scheda :smiley-roll:
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 05:02 pm
Frena ... quella è una scheda tutta OptoIsolata ... e, a parte il connettore di alimentazione (sulla destra) ha le alimentazioni degli opto sul connettore centrale (quello degli ingressi).

Ho idea che ...

1. Alimenti Arduino con il suo alimentatore
2. Alimenti la scheda, con il connettore di destra con il suo alimentatore
3. Alimenti gli opto con il GND e +Vcc di Arduino sui pin predisposti sul connettore degli ingressi
4. comandi gli ingressi con Arduino (attivi LOW)

Guglielmo

P.S. : In questo modo è effettivamente tutta opto-isolata e con due alimentazioni separate !
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 05:16 pm
Sempre nel forum c'è scritto

Code: [Select]
You can control a lot of different lights, water valves, and ventilation systems with relays like this. With some sensors and your Software Sketch ideas, an intelligent system may be born. NOTE: Sometimes switching these kinds of loads can cause Electromagnetic Interference, Arduino lockup etc. More information on handling these problems is available HERE:

e poi cliccando il link:

Code: [Select]
Sometime, when controlling lights and other loads such as motors, pumps, Solenoids etc., problems occur. Problems may include:
Lockup of the Arduino controlling the relays and switching
Loss of ability to communicate with a PC connected to the Arduino by USB
Noise and erroneous readings on sensors or attached devices when relays or loads are switched


ma non era optoisolata?

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 05:21 pm
Credo che sto facendo proprio così.

Ho provato anche a collegare fisicamente con un Jumper i due GND
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 05:27 pm
L'opto-isolamento ti garantisce che le due alimentazioni non entrano in contatto e che i due circuiti siano separati, ma ... un bel "Impulso Elettromagnetico" (che hai con carichi induttivi) genera appunto un campo elettromagnetico che si accoppia anche con i fili che passano li vicino ...

Devi minimizzare l'impulso ... es. condensatori di smorzamento, diodi, ecc. ecc.

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 05:28 pm

Ho provato anche a collegare fisicamente con un Jumper i due GND


... però così non hai più la separazione galvanica dei due circuiti data dagli opto ...  :smiley-roll:

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 05:38 pm
proverò a mettere dei diodi in entrata alle bobine delle elettrovalvole e cambiare solenoidi in CC.

Abbassando il voltaggi dei solenoidi delle elettrovoalvole dovrebbe influire positivamente?

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 05:45 pm

Abbassando il voltaggi dei solenoidi delle elettrovoalvole dovrebbe influire positivamente?


Non è che puoi deciderlo tu a che tensione alimentare le elettrovalvole ... salvo non cambiarle ...  :smiley-mr-green:

Ma sono in AC o DC ???

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 05:50 pm
ora sono in corrente alternata (24V) e volevo metterci un diodo, ma in alternata non credo che serva qualcosa.

Nelle valvole che usiamo possiamo cambiare le bobine, proverò con una e se funziona cambierò le atre. Pensavo in 12V dc così da metterci un diodo.

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 05:53 pm
NON mettere il diodo in parallelo su quelle AC ... faresti un corto  XD

Se metti le DC, allora, oltre al diodo in parallelo, metti anche un condensatore  (sempre in parallelo) ;)

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on Apr 30, 2014, 06:01 pm
Guglielmo, grazie mille dei consigli!!!!

provo a vedere se riesco a prendere i solenoidi nuovi e metterò il diodo e un condensatore (100uf sono troppi?)

Giacomo.
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on Apr 30, 2014, 06:04 pm

100uf sono troppi?


... direi di SI, ricorda che devi smorzare impulsi elettromagnetici ad alta frequenza ;)

Parti con valori più bassi, anche sotto il µF e prova a salire (o mettine due in parallelo, uno qualche centinaio di nF e uno più grande) ...

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: brunello22 on Apr 30, 2014, 08:01 pm
questi sono i filtri che uso io
e diciamo che nella maggior parte dei casi si risolve il problema

Lo snubber ( filtro RC )  sulla bobina del rele' lo uso solamente quando ce ne sono diversi e nel tuo caso, visto che hai una board gia' pronta, e' un problema inserirceli
Prova solo con lo snubber in parallelo ai contatti del rele'
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on May 01, 2014, 01:09 pm
La soluzione di Brunello è interessante: mi potrebbe risparmiare di comprare le bobine e alimentatore nuovo.

Ho provato subito la soluzione, mettendo una resistenza da 100 ohm, 1/4w e un condensatore al tantalio .33, 35V ma credo che ha iniziato a tremare il tutto e si è bruciato il filtro RC. Dovrei mettere il condensatore preciso (0,1 come descritto tu) e in questo caso non mi importa della polarità? Devo aumentare la potenza dissipabile della resistenza? la mia bobina assorbe 3,5VA a 24 AC. Se è complicato una buona soluzione è quella proposta da Guglielmo anche se devo spendere un po di soldi (una domanda: il condensatore in questo caso deve essere montato al contrario, nel senso opposto di quello del diodo? :smiley-roll:).

Grazie ancora degli aiuti,

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: gpb01 on May 01, 2014, 01:46 pm

Ho provato subito la soluzione, mettendo una resistenza da 100 ohm, 1/4w e un condensatore al tantalio .33, 35V ma credo che ha iniziato a tremare il tutto e si è bruciato il filtro RC.


Giacomo ... sei in AC !!! NON puoi usare cose polarizzate ... come diodi, condensatori elettrolitici, al tantalio e quant'altro !!!

Quel condensatore mettilo ceramico da 100 nF ...

Guglielmo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on May 01, 2014, 05:24 pm
Perfetto. Domani vado a procurarmi dei condensatori CERAMICI da 100 nF (e oggi mi studio la differenza tra i vari condensatori :smiley-red:).

Spero di aver trovato il problema ed aver risolto questo problema.

Grazie mille dell'aiuto, consigli e soprattutto dell'infinita pazienza,

Giacomo
Title: Re: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010
Post by: GiacomoSam on May 02, 2014, 03:57 pm
Ragazzi,

forse s'è risolto: è da qualche ora che funziona tutto perfettamente.  :) ;)

Grazie mille dei preziosissimi aiuti,

Giacomo