Vai al contenuto
PLC Forum


Arduino1 Porta Seriale


accacca

Messaggi consigliati

comincio ad approfondire il mondo arduino

Parto subito con un dubbio: I pin della porta seriale dell'arduino uno si possono utilizzare per la propria applicazione ?

Dallo schema vedo che tramite due resistenze da 1K finiscono in un ATMEGA16 che presumo si occupi della conversione da usb a seriale

Il traffico da PC verso arduino durante la programmazione finirebbe inevitbailmente anche alla mia scheda collegata sulla stessa seriale

Inoltre dovrei mettere anche io 1K sulla mia linea TX per salvare il mio driver quando trasmette dal lato USB.

Si fa così o la uart di arduino uno la si usa solo per la programmazione ? Perchè ho visto che c'è una libreria per uart software

(Viste le premesse non credo resterò molto sul pianeta arduino ...)

Però quasi quasi mi metto anche io nel mondo dell'elettronica per hobby ma con una scheda molto più seria ho già in mente il nome: SUINO!

Link al commento
Condividi su altri siti


Arduino ha anche 2 pins dedicati alla comunicazione seriale, comunicazione che esegue direttemente il microcontrollore. I pins, se ricordo bene, per arduino 1 R3 sono 0 e 1. ovviamente è necessario usare un chip di interfaccia, come ad esempio il MAX232, per poter comunicare in RS232 con altro dispositivo come il PLC. SI può usare amche il MAX485 per cominicare in RS 485, però è necesario un terzo pin da usarsi come uscita per selezionare il modo Tx o Rx del drive.

Ci sono librerie ed esempi innumerevoli sulla rete.

Link al commento
Condividi su altri siti

Sì su arduino 1 sono 0 e1 ma sono collegati internamente all'altro atmega della scheda che poi si collega all'USB

A me risultano condivisi non ad uso esclusivo dell'applicazione.

Link al commento
Condividi su altri siti

La condivisione ti interessa solo mentre scarichi il programma. Io sto propio facemdo alcune prove in invio dati e leggo dati sulla seriale senza alcun problema. E' ovvio che mentre trasferisco il programma posso fare solo quello.

Link al commento
Condividi su altri siti

No aspetta tu utilizzi la seriale per la tua applicazione ?

Se ad esempio collego la seriale di un altro micro ai due pin 0 e 1 di arduino quando scarichi il programma su arduino fai danni!

o mi sfugge qualcosa..

Link al commento
Condividi su altri siti

con questo sketch di solito parametrizzo le schedine bluetooth HC-06

La seriale standard viene usata da Arduino per essre programmato e per fare da debug col terminale .

La seriale software e' presa su due pin ed e' gestita dalla libreria SoftwareSerial

Ovviamente e' a livelli TTL .Se metti un MAX232 la puoi collegare ad un pc

Mentre poi sui pin 0 e 1 hai l'altra seriale intesa come periferia uart del microcontrollore , ma anche li se vuoi collegarti ad un pc devi metterci i driver di livello

/* con questo sketch e' possibile leggere e modificare i parametri del 
* modulo Bluetooth tramite comandi AT 
* va collegato il pin "Key" e mantenuto alto sul modulo Bluetooth per fare queste operazioni 
* terminale settato con nessun fine riga
*/
#include <SoftwareSerial.h>

#define RxD 11
#define TxD 12
#define RST 5
#define KEY 4

SoftwareSerial BTSerial(RxD, TxD);

void setup()
{
  
  pinMode(RST, OUTPUT);
  pinMode(KEY, OUTPUT);
  digitalWrite(RST, LOW);
  digitalWrite(KEY, HIGH);
  digitalWrite(RST, HIGH);
  
  delay(500);
  
  BTSerial.flush();
  delay(500);
  BTSerial.begin(9600);
  Serial.begin(9600);
  Serial.println("Comando AT :");

  BTSerial.print("AT\r\n");
  delay(100);

}

void loop()
{

  if (BTSerial.available())
    Serial.write(BTSerial.read());

  if (Serial.available())
    BTSerial.write(Serial.read());

}

se colleghi i pin della seriale hw o sw ad un altro micro fai un colelgamento TTL compatibile .Devi solo stare attento che l'altro micro lavori su livelli TTL 5V .Se usi un Arduino UNO e un DUE devi metterci una schedina che fa da traslatore di livelli 3.3/5V e viceversa , anche se in realta potresti cavartela con un partitore sul tx in quanto sul rx il livello 3.3V e' gia considerato come alto come soglia per i 5V , però meglio i trslatori di livello.Io per ora ho testato i traslatori di livello veloci per I2C collegati al DUE e qualche periferica I2C , aspetto che mi arrivino quelli per la seriale e quelli meno veloci per i rele' .Ora attendo babbo natale che mi proti un altro scatolone di roba per costruire un hub I2C con selettori per connettere master a 3.3V o a 5V , resistenze di pull up e vari connettori per agganciare real time clock , MCP23017 , accelerometro , sensore temp e umidità ed altre cose .Poi voglio testare la comunicazione ra due arduini in I2C uno master e l'altro slave

Modificato: da walterword
Link al commento
Condividi su altri siti

Io vi ringrazio di tutte le info ma non ci capiamo su un punto.

Arudino 1 pin 0 è RX della periferica seriale del micro arduino.

Su quel pin arriva tramite resistenza di 1K la seriale dal convertitore USB/seriale della scheda arduino ed è la linea da cui arduino riceve dal PC

Se io mi attacco con una'altra periferica al pin0 che sia l'uscita di un traslatore di livello o di un altro micro per me c'è un conflitto.

Ci metto, che ne so, la seriale di un modem ai pin 0 e 1 perciò la linea TX della seriale del modem finisce sul pin0.

Quando decido di riprogrammare la scheda arudino da PC invio il codice che arriva all'arduino tramite il pin0 e nel frattempo il TX del mio modem soffre e forse anche si rompe. se non ci metto almeno uan resistenza in mezzo. (Ma non la trovo una gran soluzione)

Link al commento
Condividi su altri siti

si , e' la stessa seriale

Per questo motivo che ho usato la seriale via software

Se la usi tramite usb non la puoi usare diversamente

Per capirci , la periferica seriale di arduino uno e' solo una

Modificato: da walterword
Link al commento
Condividi su altri siti

Per capirci , la periferica seriale di arduino uno e' solo una

Una volta trasferito il programma puoi usarla per lavorare tranquillamente.

ha un comportamento simile a quello dei pins B6 e B7 dei PIC che sono usati per la programmazione (data e clock). Una volta programmato, se non usi un attrezzo di debug come ICD o PicKit quei 2 piedini sono disponibili come normali piedini di I/O della porta B.

Link al commento
Condividi su altri siti

Grazie Valter

Uhm infatti non capivo. Non è molto che studio arduino, avevo visto diversi schemi di shields che usano l'interfaccia seriale

Alcuni come dici tu utilizzano seriale software altri invece si collegano direttamente ai pin 0 e 1 senza problemi.

In questo modo conflitti a parte, tutti i messaggi di debug verso il PC arrivano anche alla scheda collegata.

Livio (eravamo sulla stessa finestra) è giusto quello che dici però la procedura corretta sarebbe

scollego la seriale della mia periferica

programmo arduino

collego la mia periferica

oppure devo stare attento e mettere qualcosa per evitare il corto sul pin TX della mia periferica durante la programmazione

Ma non ho trovato nessun warning a riguardo anche se ammetto non ho spazzolato molto la documentazione.

Link al commento
Condividi su altri siti

prima la usavo cosi , però devi continuamente attaccare e staccare ....per cui uso la seriale software , almeno quando devo parametrizzare il bluetooth , anche perche se la seriale la uso con il terminale , altre non ne ho ....

comunque se usi la seriale collegata esternamente , quando lo programmi c'e' un conflitto , devi continuamente attaccare e staccare l'RX

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...