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:
[...] - Arduino, Max232 e comunicazione seriale – Parte 1 [...]
RispondiElimina