Connessione seriale pin 0 e 1

Salve a tutti :slight_smile:

Sto cercando di far comunicare Arduino Uno con questa scheda:

collegando l'interfaccia UART di questa ai pin TX e RX di Arduino:

ARDUINO OMNIMA
TX ------------------- RX
RX ------------------- TX
GND ------------------- GND

Lo sketch di prova è il banale:

int led = 12;  
 
int incomingByte = 0;


void setup() {
   pinMode(led, OUTPUT);
   
   Serial.begin(9600); 
  
 }
 
 
void loop() {
   
   if (Serial.available() > 0) {
     
     incomingByte = Serial.read(); 
     if (incomingByte == 'a') {
       digitalWrite(led, HIGH);
     } 
     if (incomingByte == 's') {
       digitalWrite(led, LOW);
     }
     if (incomingByte == 'l') {
       digitalWrite(led, HIGH);
       delay(10);
       digitalWrite(led, LOW);
       delay(10);
       digitalWrite(led, HIGH);
       delay(10);
       digitalWrite(led, LOW);
     }
     
   }
}

Invio i caratteri dalla UART collegandomi all'Omnima tramite rete.
La scheda ha su un sistema OpenWRT:

# echo 'a' > /dev/ttyS0

Il risultato è... niente... :cry:

Ho provato a collegare la scheda al pc (con apposito cavo) ed in questo modo ricevo correttamente i caratteri inviati sulla seriale.

Ho provato anche ad usare la libreria SoftwareSerial, ma il risultato è li stesso niente..

Qualcuno ha un'idea di cosa può esserci che non va o di cosa sto sbagliando?

Grazie :slight_smile:

uhmm 3.3v vs 5v??
che impostazione dai alla seriale del "pc"?

Per connettere la scheda al pc uso questo cavo:

L'integrato Prolific 2303 si occupa della conversione dei livelli

Quando provi con arduino e scheda non è che hai l'arduino collegato al pc e hai il serial monitor aperto...

Nel dubbio ho provato in entrambi i modi, ma il risultato è lo stesso...

uhmm 3.3v vs 5v??

mmm... cavolo hai ragione... :blush:

omnima 3,3V <--> arduino 5V
mi servirà un convertitore di livelli...

Grazie :slight_smile:

puoi fare la prova del 9 facendo un'arduino on a bradboard, e farlo girare a 3,3v.
Però è un pò un casino, devi riflashare il boot-loader e usare l'oscillatore interno a 8MHz, quindi anche cambiare i fuse etc...

qiì invece trovi "schematics" che è un PDF con lo schema di un convertitore di logiche. su una usa il partore, sull'altra un NPN. consiglio il doppio NPN perchè è bidirezionale, quindi potresti riutilizzare il circuito anche per l'I2C, per esempio, oltre a non avere il problema di quanta roba colleghi.

--> http://www.regaliedesideri.it/hobby-equip/electronics/breakout-boards/logic-level-converter.html

omnima 3,3V --> arduino 5V
omnima 3,3V <-- partitore con 2 r <- arduino 5V
cosi non va ?

eh col partitore non ho ancora provato...

appena riesco provo :slight_smile:

non ci sono problemi ad usare cnvertitore a 3,3
arduino interpreta correttamente il 3,3 come 1 logico, viceversa il chip da te citato e' 5v tollerant
quindi il problema e' da qualche altra parte

beh, in effetti io avevo visto foto in rete di arduino connesso direttamente a router con uart a 3.3 V come nel mio caso.

a questo punto però non ho idea di dove possa essere il problema... :frowning:

una mano? :slight_smile:

OK :smiley:

La trasmissione omnima -> arduino funziona!!
Non so, forse avevo impostato male la seriale su OpenWRT quando ho provato l'altra volta, perché oggi è andata al volo.

Quello che non funziona è la trasmissione al contrario...
Stupido sketch di prova:

void setup() {
   Serial.begin(9600);  
 }
 
void loop() {
   Serial.print("Pippo ");    
}

Collegato al pc con l'usb e Serial Monitor aperto, il led TX su arduino è acceso fisso e la scritta "Pippo" viene trasmessa di continuo.

Se invece collego arduino all'omnima tramite il pin 1, il led TX non si accende neanche... quindi non viene trasmesso niente.

mmm... perché? :~