Raspberry Pi porta seriale

 

Raspberry Pi porta seriale

 

raspberry pi porta seriale

Per chi come me, viene dall’automazione industriale, associa alla porta seriale sempre grandi possibilità di acquisizione dati dai più svariati dispositivi. Anche il Raspberry Pi, nello specifico caso, non tradisce le aspettative. Cominciamo con un semplice collegamento seriale tra PC e Raspberry Pi, per poi realizzare un sistema di bus RS485 con alcuni dispositivi.

 


Indice


 

Raspberry Pi porta seriale – specifiche generali

 

La porta seriale del Raspberry Pi è del tipo UART con logic level di 3,3V. Per collegare dispositivi con logic level diversi (5V,12V) all’UART del Raspberry, bisogna limtare/adeguare questi livelli.

L’UART si trova ai pin GIPO14(TXD) e GPIO15(RXD) del raspberry. Per interfacciarsi con la porta, il sistema offre il file /dev/ttyAMA0.

raspberry pi porta seriale pinout

 

Collegamento PC – Raspberry Pi

 

Per collegarsi dal PC al Raspberry Pi in seriale, indifferente dal tipo di porta che si vuole utilizzare(USB – D-SUB), serve un convertitore di livello logico.

Adesso si può tirare fuori un Breadboard, ed assemblare un convertirore da solo, oppure come ho fatto io, comprare uno (USB TTL – RS232) già fatto. Ho pagato 9euro con spedizione dalla Cina inclusa. Posso dire che ci stanno tutti.

 

raspberry pi porta seriale putty

Una volta fatto i collegamenti (non scordatevi di invertire RXD – TXD), per poter stabilire una connessione, abbiamo bisogno di un emulatore terminale (Putty, Tera Term ecc.). In effetti potremmo utilizzare anche DOS in Windows oppure il Terminale in Linux per stabilire la connessione, però la configurazione della porta, a quel punto, è più „rognosa“.

Col emulatore terminale configurato e connesso, adesso accendiamo (facciamo il reboot) il Raspberry Pi.

Quello che si nota da subito è, che sull’interfaccia /dev/ttyAMA0 viene specchiata/protocollata anche tutta la procedura di boot. Caratteristica, che più avanti ci darà fastidio, quando invece del PC colleghiamo altri dispositivi (microcontrollori) a quella porta.

Attraverso questa sessione, addesso sul Raspberry Pi su può lavorare ababbastanza comodamente.

Problem solving

 

Se il collegamento non funziona, in Windows eseguite il terminal come amministratore, oppure guardate se ci sono conflitti di periferiche.

In Linux, non scrodatevi di dare i guisti permessi all’interfaccia, un

ci sta sempre. Guardate anche se ci sono conflitti fra dispositivi USB, soprattutto se utilizzate diversi dispositivi che utilizzano un processore di Silicon Labs (CP210x) sullo stesso PC.

Collegamento Atmega8 – Raspberry Pi

raspberry pi porta seriale atmega8

Come prima cosa dobbiamo controllare i nostri permessi come user, riguardo l’interfaccia ttyAMA0.

Se come „user“, non faccio parte di nessun gruppo visualizzato (controllare appartenenza con il comando id nel terminal), mi devo aggiungere manualmente con

oppure cambiare i permessi dell’interfaccia con

Fatto questo, veniamo a una parte essenziale della procedura, cioè, dobbiamo impedire all sistema, che la procedura di boot viene protocollata sulla porta ttyAMA0.

Questo importante dettaglio infatti, da me quando faccevo delle prove, venne trascurato completamente e fu motivo di qualche parolaccia :) (di troppo) a causa del non funzionamento.

Dobbiamo elaborare 2 file:

  • /boot/cmdline.txt
  • /etc/inittab

Il file /boot/cmdline.txt regola la procedura di boot del Raspberry Pi. Dobbiamo cercare la riga

e cambiarla in

togliendo (console=ttyAMA0,115200 kgdboc=ttyAMA0,115200).

 

Il file /etc/inittab invece, specifica il comportamento del interfaccia (login attivo oppure no). Quindi cambiare la riga

mettendo il cancelletto „#“ (hash che indica un commento) prima della stringa

A questo punto la procedura di boot e la funzionalità di login sono disattivate.

 

Primo test della configurazione

Come verifica, se abbiamo configurato bene, potremmo adesso collegare i due PIN (8 – 10) gpio14 – gpio15, del Raspberry Pi insieme, creando un cosiddetto „Loopback“.

Apriamo il termiale e una sessione dell’emulatore (p.es. PUTTY) affiancando le due finestre. Se immettiamo nel terminale p. es.

nella finestra dell’emulatore deve comparire l’output dell’echo.

 

Raspberry Pi porta seriale – livelli logici

raspberry pi porta seriale collegamenti

Se tutto va bene, proccediamo con l’adeguamento dei livelli logici fra Raspberry Pi e Atmega8. Dell’Atmega8 esitono vari tipi, oltre alla forma, questi tipi si distinguono per la tensione di alimentazione (3V oppure 5V). Io di solito uso l’Atmega8-16PU, che è alimentato a 5V, di conseguenza questi 5V li troviamo anche sull’interfaccia seriale dell’atmega8.

 

Ci sono alcuni modi, (più o meno eleganti) per ridurre la tensione da 5V a 3V. Io per l’esempio ho scelto un banale partitore di tensione, che abbassa la tensione del TTL dell’atmega8. Per fare delle prove, questo metodo va benissimo. Tuttavia ci sono modi migliori per adeguare il TTL, ogniuno è libero di scegliere il suo preferito.

 

Raspberry Pi porta seriale – ricevere dati

Spiegare per bene, su come si programma un microcontrollore, prenderebbe troppo spazio, sorry. :roll:

Mi limito a postare qualche riga di codice sorgente in C e una brevissima spiegazione. Per l’esempio sotto ripotato leggo ogni secondo (Baud Rate 1200 baud) una tensione all’ingresso PC0 (ADC0) di un’Atmega8 con oscillatore esterno da 8Mhz. Il programma è suddiviso in 2 parti:

  • La prima parte specifica i parametri della porta seriale (UART) e il passaggio dei dati dalla memoria interna dell’Atmega8 all’UART.
  • La seconda parte si occupa della conversione (analogica/digitale) del valore che viene letto attraverso l’ingresso ADC0.

 

 

Se tutto va bene, sul Raspberry Pi possiamo aprire il terminale, abbassare la baud rate della porta seriale e leggere il valore che arriva attraverso la porta seriale.

raspberry pi porta seriale terminal
 

Raspberry Pi porta seriale – trasmettere e ricevere dati

 
Coming Soon
 

Raspberry Pi porta seriale

 
 

L’autore del blog

Werner Schrottenbaum è un appassionato di tecnologia e innovazione. Per scoprire di più, seguilo su Twitter e Google+.

Leave a comment




Allowed HTML Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="" class="" title="" data-url=""> <span class="" title="" data-url="">


Datalogger fotovolta

  Datalogger fotovoltaico con Linux     Ho un'amico, che utilizza per fare il ...

Raspberry Pi visuali

  Raspberry Pi visualizzare grafici Sono "addicted" di andamenti grafici, secondo me ...

Raspberry Pi porta s

  Raspberry Pi porta seriale   Per chi come me, viene dall'automazione industriale, ...

Raspberry Pi misurar

  Raspberry Pi misurare temperatura     Ci sono tanti modi per misurare consumi ...

Raspberry Pi convert

  Raspberry Pi convertitore A/D   Oggi vi presento un modulo A/D con ...

Datalogger fotovolta

  Datalogger fotovoltaico con Linux     Ho un'amico, che utilizza per fare il ...

Raspberry Pi visuali

  Raspberry Pi visualizzare grafici Sono "addicted" di andamenti grafici, secondo me ...

Raspberry Pi porta s

  Raspberry Pi porta seriale   Per chi come me, viene dall'automazione industriale, ...

Raspberry Pi misurar

  Raspberry Pi misurare temperatura     Ci sono tanti modi per misurare consumi ...

Raspberry Pi convert

  Raspberry Pi convertitore A/D   Oggi vi presento un modulo A/D con ...