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.
muchas gracias, me sirvio de mucha ayuda.
Gracias, de mucha ayuda, esta la continuación?
RPI NOIR Camera es con el sensor imx219 con 8 megapixel
Buen dia la RPI NOIR camera que tiene el sensor IMX219 es la versión 2.1
Buen articulo, gracias. Pregunta, servirá hacer esto mismo pero con un micro-controlador ESP-32? me pasa exactamente lo mismo pero con el modulo ESP-32, no logro enviar o recibir paquetes por UART, estoy usando microPython, voy a intentar hacer esto mismo a ver como me va.
Con raspberry ya lo hice pero con una interfaz USB-Serial-232 TrendNet, logro comunicación serial con un variador de velocidad leo y escribo datos. Lo intenté hacer por UART pero no me funciono, supongo que es por lo que dice este articulo. Adquirí con ustedes el ESP-32 para este mismo fin, voy a seguir estos pasos a ver si me funciona, sino estaré por acá preguntando, gracias.
Muy buen articulo. La tarjeta FT232 sirve para conectarla en un RASPBERRY PI 3 y recibir datos de una balanza a través de puerto serie. Después se guardaría el dato en un servidor (Ethernet) hacia una tabla de la Base de datos. Desde ya muchas gracias
Buen artículo, me gustaría saber cómo conectar una shield sim808 y la pantalla tactil al mismo tiempo, presento problemas ya que ambos necesitan los mismo puertos TX,rx
buenos dias, creo que la unica alternativa es usar un coversor como la tarjeta ft232 la cual convierte de USB a comunicación serial.Teniendo en cuenta que se deben instalar los correspondientes drivers para su funcionamiento. https://www.sigmaelectronica.net/producto/tarjeta-ft232/
Muchas gracias por la información
Muy interesante, información concreta