Show Posts
Pages: [1] 2
1  International / Software / Re: Dati seriali on: September 19, 2012, 11:10:58 am
Una cineseria che presi diversi anni fa, un HL-340 ma non so che chipset monta, probabilmente un CH340.
Fatto sta che ha i livelli TTL invertiti e non è utile a niente.

Cercando in rete ho appena trovato questo:

"The actual chip is probably a CH340 (the 341 also supports a parallel port). It may be some other chip compatible with the CH340.
There are two versions of the CH340. One is intended for use with RS-232 drivers and receivers, such as the MAX-232. The other version uses the opposite logic levels on the I/O's and is intended for use with infrared links."

Mimmo.
2  International / Software / Re: Dati seriali on: September 19, 2012, 10:24:07 am
Svelato l'arcano, l'oscilloscopio non mente.

I segnali TTL del cavetto sono opposti a quelli di Arduino.
In trasmissione, Arduino ha lo stato logico alto sul pin TX e modula basso.

In trasmissione, il cavetto ha lo stato logico basso sul pin TX e modula alto.

Ecco svelato il perchè dei dati a pene di segugio. Vedo se ho un integrato inverter nel cassetto e dovrei risolvere.

Mimmo.
3  International / Software / Re: Dati seriali on: September 19, 2012, 10:05:01 am
Sarà che non è molto intuitivo per me o forse è un passo avanti ma non vede altro che la Com1 (fisica) del pc e non capisco come usarlo.

Ora metto Arduino sotto oscilloscopio e controllo i valori di tensione della porta seriale.
4  International / Software / Re: Dati seriali on: September 19, 2012, 09:29:27 am
perchè non provi a fare un loopback?
cioè sul cavetto collega tx con rx d apri un terminale, se tutto funziona correttamente, qalsiasi cosa scrivi sul terminale dovrebbe tornarti indietro così come l'hai scritta.
e così ti levi i dubbi sul cavetto smiley

Stavolta divento scemo.
Grazie della dritta. Il cavo funziona regolarmente in loopback. Mando 1 e ricevo 1 ecc.

Lo collego all'Arduino uno e faccio uno scambio di dati tra il cavetto su seriale software e la seriale hardware e.... scrivo 1 e ricevo g. La cosa è bidirezionale, quindi sia se mando da seriale hardware che da software.

Ma allora, la colpa di chi è?
5  International / Software / Re: Dati seriali on: September 19, 2012, 08:47:11 am
Rieccomi.
Assodato che è il cavo convertitore.

Ho provato a scambiare dati tra la porta seriale hardware ed una creata apposta, software.
Ebbene, il cavetto convertitore restituisce valori differenti dalla tabella ascii sia in ricezione che in trasmissione.

Potrebbe imputarsi al fatto che è cinese e che il driver installato effettui una qualche operazione di conversione dei dati per adattarli ad una tabella ascii per tastiere cinesi?
L'ho buttata lì tanto per farmene una ragione  smiley-roll-blue

Mimmo.
6  International / Software / Re: Dati seriali on: September 19, 2012, 01:57:15 am
Buongiorno a tutti, eccomi dopo un bel riposo.

Tanto per non fare il pirlone, ho controllato i livelli dell'adattatore seriale/usb all'oscilloscopio per accertarmi ancora una volta che fosse TTL.
Confermato, i valori sono 0-5V.

La cosa particolare, facendo delle prove è risultata come sotto:
INVIATO        RICEVUTO (decimanle)
A                 95
B                 47
C                 94
D                 46
E                 93

Questo, aprendo la COM dell'adattatore e visualizzandola con Advance Serial Port Monitor (COM 19).
Se con Advance Serial Port Monitor apro la porta di Arduino UNO, la COM 15, visualizzo correttamente i caratteri inviati tramite la sua usb.
Il Serial Monitor dell'IDE, da i valori corretti.
Notate come i valori alternati vadano a scalare. Che stranezza, non me ne faccio una ragione.In Windows, la porta del cavetto è settata bene, 9600 8N1, nessun controllo di flusso.

Dedurrei che il cavetto funziona ma qualcosa non pareggia i conti...

Mimmo.
7  International / Software / Re: Dati seriali on: September 18, 2012, 10:50:53 am
Niente da fare. Temo sia il cavo adattatore.
Ho provato a mettere l'emulatore sulla stessa porta di Arduino UNO (com 15) e riceve i dati correttamente.
La cosa che mi lascia perplesso è che collegando il software che devo pilotare, sulla stessa porta della UNO, non accade nulla.

Sono stanco, è da questa mattina che ci sbatto la testa, ora mi riposo un po e poi si vede.

Intanto grazie per le risposte.

Mimmo.
8  International / Software / Re: Dati seriali on: September 18, 2012, 09:48:50 am
sicuro che l'emulatore comunichi alla stessa velocità della seriale?
Si, entrambi a 9600.

Quote
che si aspetti dei bytes e non dell'ascii?
.... il comando completo da inviare è ZZAU02... ma escono i pupazzetti se visualizzati in ascii...
Precisamente A9 A9 55 7D 9B 00 hex.

Quote
che la massa del convertitore usb-seriale sia collegata con quella di arduino?
Si, sul pin accanto ad AREF (GND)

Quote
di aver collegato Tx di arduino con Rx del convertitore e viceversa?
Si, infatti i dati escono, ma arrivano sballati sull'emulatore, mentre il serial monitor dell'IDE me li visualizza corretti.
[/quote]

Questo il codice:
Code:
void setup()
{
  Serial.begin(9600);
}

void loop() {
 Serial.print("ZZAU02");
 delay(1000);
  }

L'emulatore è Advance Serial Port Monitor, un software semplicissimo che di solito uso come sniffer.
9  International / Software / Dati seriali on: September 18, 2012, 07:48:11 am
Ciao a tutti, rieccomi al galoppo.
Sto interfacciando Arduino UNO con un software per pc.
Ho, però, problemi con i dati seriali.
La configurazione è:
- Arduino UNO e Serial Monitor;
- pin 0 ed 1 su cavo adattatore seriale/usb TTL;
- emulatore porta seriale su pc.

Usando Serial.print("1"), sul Serial Monitor dell'IDE, visualizzo 1.
Ma, e quì l'amara scoperta, l'emulatore che gira sul pc riceve una "g" (67 hex, 103 dec).

Infatti, provando al posto dell'emulatore, il software a cui si interfaccerà Arduino, non ottengo nessuna reazione.
Dove mi sto incartando?
Perchè l'emulatore non riceve il numero 1 che gli ho mandato ma una g?

Grazie anticipatamente,
Mimmo.
10  International / Software / Re: Rilevare porta seriale on: September 09, 2012, 05:10:00 pm
Leo,
nella tua scheda UNO hai già l'8U2 come convertitore usb/seriale o ancora l'FTDI?
11  International / Software / Re: Rilevare porta seriale on: September 09, 2012, 01:23:29 pm
Niente da fare  smiley-sad

Per forza, non esiste nessun modo su Arduino, ad esclusione della Leonardo....
http://arduino.cc/en/Serial/IfSerial

Allora perchè viene riportata anche la sintassi relativa alla MEGA?
Non ha senso, dato che non funziona.

Per leo72:
1.0.1
UNO R2 (quella con chip 8U2 al posto dell'FTDI)
12  International / Software / Re: Rilevare porta seriale on: September 09, 2012, 12:08:24 pm
Niente da fare  smiley-sad

Risolto il problema del reset, grazie alla dritta di Ettore, usando un cavo convertitore, ma il comando if(Serial) proprio non ne vuole sapere.

Con il codice di leo, quanto di più elementare possa esserci, il led si accende passati due secondi da quando alimento le schede, sia la UNO che la MEGA (tramite jack) senza nessun cavo inserito.

Non so che altro fare  smiley-cry
13  International / Software / Re: Rilevare porta seriale on: September 09, 2012, 06:53:41 am
Grazie a Leo per la stesura corretta del codice, provato ma non funziona, il led rimane sempre acceso anche a cavo scollegato sia su arduino uno che mega  smiley-cry
Alimento Arduino 'uno con il jack e dopo due secondi il led si accende, senza aver inserito il cavo usb.

Grazie anche a cyberhs, Ettore, che mi ha aperto gli occhi su un errore che commettevo.
Praticamente, connetto il software del pc tramite la porta utilizzata dalla scheda Mega.... che pollo!
Userò un cavetto convertitore rs232(ttl)/usb

Come sempre, siete fantastici   smiley

Buona domenica a tutti e grazie di nuovo  smiley-wink

Mimmo.
14  International / Software / Re: Rilevare porta seriale on: September 09, 2012, 03:36:54 am
Ciao Leo e grazie per la tua risposta.

Serial.available() lo uso subito dopo per ricevere i dati seriali, ho ridotto il codice per non postare chilometri inutili. Quello che mi lascia sconcertato è l'uso di if(Serial). Dice tutto e dice niente, almeno per me.

Se cancello la riga Serial.begin(9600), il comando if(Serial) mi restituisce sempre valore true!!
Ma come fa a darmi valore true se io neanche ho inizializzato una porta seriale?
Per me è incomprensibile e ci sto sbattendo la testa.

Quello che vorrei, è segnalare su un display, la connessione e l'apertura di una comunicazione seriale senza che ci sia stato scambio di dati. Solo l'apertura tra le due porte.
L'unica soluzione che mi rimane, penso, è monitorare il pin DTR che va a 1 quando si instaura l'apertura tra due porte di comunicazione seriali, anche se preferirei lasciare il cablaggio con i soliti tre fili RX, TX, GND.
15  International / Software / Rilevare porta seriale on: September 09, 2012, 01:47:38 am
Buona domenica a tutti.
Vorrei interfacciare un Arduino Mega con un software per pc.
Il firmware è già autonomo di suo ma all'occorrenza si può interfacciare con il pc per essere controllato da quest'ultimo.
Avrei, quindi, la necessità di far rilevare alla scheda Arduino Mega, la presenza di una connessione seriale.

Premetto che il pc mi manda una stringa di dati solo al variare dei parametri, quindi appena faccio la connessione, dal pc non mi arriva niente fino al cambiamento di qualche parametro.

Ho provato con questo codice ma probabilmente non mi è chiara la funzione "if(Serial)" in quanto mi da sempre risultato true.


Code:
void setup()
{
 Serial.begin(9600);
}


void loop()
{
int stato = (Serial);
if (stato = 1)
 {
   
   Serial.println("Seriale rilevata");
}
else
{
   Serial.println("Nessuna seriale");
}
}

Grazie in anticipo.
Pages: [1] 2