Comunicacion Serial Raspberry Pi
Comunicación serial en Raspberry Pi 3
Proximamente Sigma lanzara a la venta un modulo GSM en tecnologia 3G y para ello se ha venido haciendo un exahustivo trabajo y traemos a nuestros clientes la información pertinente para trabajar el modulo desde Raspberry mas especificamente en el lenguaje de Python gracias al amplio soporte que tiene y la facilidad para interpretar el lenguaje.
Este tutorial se debe hacer cuando al instalar las respectivas librerías como PYSERIAL desde Python el puerto serie no funciona, algunos síntomas que se presentan es que al enviar algún dato por el puerto se queda congelada la consola de comandos y no se logra ni enviar ni recibir ningún paquete.
Aparentemente sucede más a menudo con las Raspberry pi 3 debido a que se incluyo un bluetooth dedicado pasando de tener una sola UART a tener dos; una para el bluetooth y otra para los GPIO. Ésta modificación implico que los pines GPIO ya no están direccionados en ttyAMA0 como ocurre en las versiones 1 y 2 de Raspberry, ahora pasa la interfaz UART a la dirección ttyS0, por tanto se debe hacer el respectivo cambio en el archivo de configuración del sistema operativo de la raspberry, en este articulo te indicaremos como hacer la respectiva configuración para trabajar desde la UART.
Necesitaremos:
Raspberry Pi3 B o B+ con raspbian precargado
Pantalla HDMI Conectada SIG0121 (Opcional)
Verifiquemos que el púerto serie Funciona:
Por defecto la UART permite accesar por medio del puerto serial a la Raspberry para mediante login acceder a diferentes funciones de la consola de Linux. Es importante que para leer la UART y escribir en ella se necesita un nivelador logico pues la tarjeta trabaja a 3.3VDC para ello usaremos la Tarjeta FT232 conectada a los GPIO14 (TXD), GPIO15 (RXD) y Pin 6 (GND).
Si conectamos la tarjeta FT232 a un monitor serial en un computador para acceder lo configuraremos de la siguiente forma:
- Speed (baud rate): 115200
- Bits: 8
- Parity: None
- Stop Bits: 1
- Flow Control: None
Desde un computador cada que iniciemos la Raspberry podemos mirar la siguiente información:
Esto nos confirmará que la conexion Serial esta correctamente conectada.
Configurar el puerto serie para Python
Lo primero que debemos hacer es encender la Raspberry y ejecutar en la consola de Linux los comandos para verificar los puertos disponibles asi en el terminal digitaremos:
dmesg | grep tty
Ésta instrucción permite ver los puertos seriales conectados.
Una vez verificados los puertos pasemos a configurar la Raspberry para que el linux no use la UART para login Shell, para ello en la consola de comandos digitaremos:
sudo raspi-config
Con esta instrucción abriremos el software de configuración general de la tarjeta nos dirigiremos a la opcion 5 de opciones de interfaz, posteriormente inhabilitaremos el login Shell, pero mantendremos habilitado el Hardware de la UART.
Una vez hecho el ajuste, salimos del raspi-config y reiniciaremos la tarjeta para confirmar que se hizo correctamente el cambio mientras inicia la tarjeta no volvera a enviar datos por la UART.
Ahora nuevamente debemos abrir la consola de Linux en la Raspberry Pi y configurar el archivo de inicio para ajustar el reloj de la UART para ello editaremos el archivo digitando:
sudo nano /boot/config.txt
En el archivo debemos adicionar las lineas al final del texto
core_freq=250
enable_uart=1
Salimos digitando CTR+C confirmamos los cambios digitando Yes y guardando el archivo con el mismo nombre. Finalmente reiniciaremos la Tarjeta.
Una vez hechos los cambios en el archivo podemos acceder a el puerto serie mediante Python digitando:
puerto = serial.Serial(“/dev/ttyS0″, baudrate=9600, timeout=1)
Esto lo podemos verificar con la consola de Linux llamando el Python, importando la libreria y enviando algun mensaje por el puerto serie. Al tener la tarjeta FT232 en otro equipo podremos verificar el envio de los datos.
python
import serial
import os, time
# Enable Serial Communication
port = serial.Serial(“/dev/ttyS0”, baudrate=9600, timeout=1)
port.write(‘Inofrmacion serial’+’\n\r’)
rcv = port.read(10)
print rcv
Con esto verificamos que desde python este abreindo el puerto y esta en la capacidad de escribir y leer lo que se monta sobre el puerto.
Si todo fue correctamente configurado podremos enviar información de forma bidireccional ya sea para enviar o recibir datos.
Con esto termina esta primera parte del turorial para la tarejta GSM para Raspberry pi
para revisar mas detalles de la libreria serial mediante Python puedes consultar:
https://pyserial.readthedocs.io/en/latest/shortintro.html
Recuerda que todos los elementos aca listados los puedes encontrar en nuestra tienda virtual y fisica. ¿Te parecio util éste articulo? Dejanos tus inquietudes, opiniones y sugerencias en la caja de comentarios.
- Publicado en Nuevos Lanzamientos, Raspberry Pi