Tecnicamente's Weblog

Just another WordPress.com weblog

Arduino, Max232 e comunicazione seriale – Parte 1

Dopo vari test e semplici esercizi di studio con Arduino è giunto il momento di mettere in piedi un progetto ambizioso, permettere ad Arduino di comunicare con un cellulare o un modulo GSM, in modo da inviare informazioni e ricevere comandi tramite SMS.

Ma i grandi progetti cominciano con piccoli passi, e nel mio caso il primo passo da fare e permettere la comunicazione tra Arduino e un telefono cellulare, usando i classici comandi “AT“.

Se come me state pensando di usare il PIN 0 ed il PIN 1 per collegare Arduino al cellulare, vi annuncio di lasciar perdere, lo sbaglio è già stato fatto da me.

I PIN in questione sono già utilizzati dalla comunicazione seriale che instauriamo con Arduino quando lo colleghiamo al PC tramite cavo USB.

Occorre quindi far ricorso ad altre risorse, in particolare possiamo usare due uscite digitali tra quelle disponibili (nel mio caso PIN 6 e PIN 7), e far ricorso alle librerie: “SoftwareSerial.h” che sono comprese nell’ambiente di sviluppo.

Le librerie SoftwareSerial ci permetterano di impostare i precedenti PIN 6 e 7 come i PIN adeguati ad una comunicazione tramite TTL.
In tal modo potremo usare tutti i comandi classici della comunicazione seriale di Arduino su questi due nuovi PIN.
La condizione da rispettare è che la forma “Serial.xxxxx()” diventi una forma del tipo “mySerial.xxxxx()“, per tutta la documentazione del caso vi invito alla lettura del link: http://arduino.cc/en/Reference/SoftwareSerial.

Oltre alla libreria software ci occorre un famosissimo integrato, il MAX232!
Il Maxim MAX232 permette di convertire i segnali TTL provelienti dai PIN 6 e 7 nei segnali previsti dalla comunicazione RS232, per tutte le informazioni del caso cliccate qui.

Come potete vedere nel sito ufficiale della Maxim, lo schema del MAX232 è:

L’integrato permettere di realizzare due comunicazioni seriali secondo l’RS232 semplicemente usando altri due PIN di Arduino, ma per il mio scopo va bene utilizzare solo un canale di trasmissione per tale motivo nello schema successivo trovate collegati solo i PIN 11 e 12 (T1in e R1out) ad Arduino.

La porta seriale del cellulare sarà invece collegata ai PIN 13 e14 (R1in e T1out):

Dallo schema del MAX232 si vede benissimo che esso esegue un inversione del segnale di ingresso, i segnali TTL inviati da Arduino.

I segnali TTL inviati da Arduino posso assumere i valori:

  • 0V per esprimere lo “0″ logico;
  • +5V per esprimere l’ “1″ logico.

Tali livelli logici sono inviati al MAX232 che li inverte dando in uscita:

TTL RS-232
livello logico “0″/ 0V +10 V

Lo Standard RS232 prevede un valore da +6V a -15V

livello logico “1″ / +5V -10 V

Lo Standard RS232 prevede un valore da -6V a -15V

Quindi se avete qualche dubbio sul corretto funzionamento dell’integrato basta collegare il PIN T1in di ingresso a +5V ed in uscita al T1out dovete leggere un valore da -6V a -15V.

Ripetendo il test mettendo a massa il PIN T1in il valore in uscita al T1out deve essere compreso tra +6V e +15V.

Il collegamento tra Arduino, il MAX232 ed il connettore DB9 dove collegare il cellulare è stato fatto rispettando lo schema ed i commenti che trovate qui.

Nel mio caso ho:
Vcc = 5 volt, prelevati dall’opportuno PIN di Arduino, verificate che il vostro max232 richieda 5 Volt e non di più.
RX = PIN 6
TX = PIN 7
GND = PIN GND di Arduino
Per il condensatore sul PIN 16 del max232 ho usato un condensatore da 100uF, causa non disponibilità del 10uF, e tutto funziona benissimo.

Bene con SoftwareSerial.h, il maxim max232, ed una manciata di condensatori abbiamo creato l’interfaccia che ci serve per la comunicazione, ma la via è ancora lunga ed il debug anche, quindi nella seconda parte metteremo mano ad un po’ di codice e a qualche altro accessorio che potrebbe servire.

Il circuito realizzato, scusate la qualità, è quindi il seguente:

About these ads

4 risposte a “Arduino, Max232 e comunicazione seriale – Parte 1

  1. Deny Antonino 29 novembre 2013 alle 8:15 am

    Ciao, grazie per la guida su come collegare un arduino ad un modem gsm/cellulare. La mia domanda è perchè non è possibile utilizzare i pin0 e pin1 per trasmettere/ricevere dati dal modem. Ho fatto alcune applicazioni del genere utilizzando proprio questi 2 pin.

    • tecnicamente 3 dicembre 2013 alle 10:00 pm

      Ciao,
      il pin0 ed il pin1 sono usati dalla seriale di arduino, quindi hai tutti i messaggi scambiati con il PC.
      Per comodità ho usato altri due pin per avare una seconda comunicazione seriale dedicata al cellulare.
      Oltre a ciò se usi i pin 0 e 1 puoi avere problemi durante la flashatura

  2. Spare 9 dicembre 2013 alle 4:08 pm

    Sul sito dell’RS ho visto che vi sono diversi di modelli del MAX232.
    Qual è il codice dell’integrato MAX232 che hai usato tu?
    Grazie

    • tecnicamente 22 dicembre 2013 alle 3:46 pm

      Non ho l’integrato sotto mano, ma mi pare fosse un MAXIM MAX232A.
      Vedi pagina 17 del link http://docs-europe.electrocomponents.com/webdocs/078a/0900766b8078aef5.pdf
      Di fatto puoi usare il MAX*** più vicino alla tue necessità realizzando un circuito esterno come rischiesto sul documento del link, la parte di codice per Arduino è immutata.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

%d blogger cliccano Mi Piace per questo: