Comunicación en serie rasperberry pi y atmega328p

0

Tengo un sistema de diseño que genera datos. Mi sistema incluye sensor lidar y atmega328p. Atmega está manejando mi sensor y generando datos. No hay problema aquí. Pero mi objetivo es el procesamiento de datos en matlab, así que tengo que comunicarme con matlab y my rasperberry wireless porque este proyecto es un proyecto robótico.

Estoy usando rasperberry pi. Rasperberry pi es el centro del sistema. Todos los datos se recogen aquí. será analizado y el robot se moverá con estos datos. Rasper enviará datos matlab. Matlab mostrará gráficos e información también. Esta es una descripción de mi proyecto.

Mi problema es la comunicación serial frambuesa y atmega. No puedo tener éxito. Como puedó resolver esté problema. Soy principiante y no entiendo nada. Mucha gente dice minicom, etc. Lo instalo pero no puedo ver nada. Todo el mundo dice que el primer paso es que debe conectar rx tx pin a rasper y enviar rasper ls / dev / tty este comando y se enviará de esta forma / dev / ttyAMA0 pero no puedo ver esta salida también.  pi frambuesa

    
pregunta Dogan Ugurlu

2 respuestas

1

Supongamos que estás usando python por simplicidad.

Parte electrónica:

Conecte los puertos serie de ATmega a los puertos serie de Rpi. Esto es:

Rx < - > Tx

Tx < - > Rx

GND < - > GND

Debe estar seguro de dos cosas para asegurarse de que no va a grabar nada y los niveles lógicos se reconocen correctamente: las fuentes de cada una deben ser las correctas; eso significa, el Rpi a 5V y el ATMega a lo que use. La segunda es que los motivos deben estar conectados entre sí, si no lo están, cada uno tendría una referencia potencial diferente y esto podría terminar muy mal.

Configuración de frambuesa:

La frambuesa está configurada de forma predeterminada para usar la serie como consola en caso de que tenga problemas y no se encuentre con una pantalla, Ethernet o lo que sea. Para conectarlo con otro dispositivo, primero debe desactivar esta opción.

Tengo que: sudo raspi-config y por adelantado la opción desactiva la opción "como serial".

También debes verificar que tengas los permisos para hablar con tty, para esto puedes google tty linux y encontrarás 5 respuestas de cómo agregarte al grupo correcto.

Software

Al hacer dmesg | grep tty deberías ver tu dispositivo conectado a tty (serie) y el nombre dado por Rpi.

Luego, solo puede utilizar la biblioteca de Python pyserial y hablar a través de la serie sin ningún problema. utilizando serial.Write y serial.Read

enlace

¡Buena suerte!

    
respondido por el Zekemyapp
1

Si está utilizando una imagen reciente de Raspbian, el módulo de pyserial ya debería estar incluido en las bibliotecas de Python. Con este módulo, puede abrir un puerto serie y comunicarse con su chip ATmega.

Como el RPi solo recibirá datos, por lo que ha dicho, solo necesita conectar el pin TX del ATmega al pin RX del RPi. Sin embargo, debido a que el ATmega328 emite señales TTL de 5V y los pines GPIO de RPi usan una lógica de 3.3V y no son tolerantes a 5V, primero debe usar un divisor de voltaje para llevar el voltaje de señal al pin ATmegas TX dentro del rango aceptado por el RP, para evitar daños. Pin RX.

Un par de resistencias con relación 2: 3 funcionará, por ejemplo. Resistencia de 2.2k a GND, resistencia de 3.3k al pin ATmega TX y finalmente el pin RX de RPi conectado a la unión entre los 2 resistores. Finalmente, conecte las GND de ATmega y RPi juntas.

Luego, abra el IDLE de Python 3 y ejecute este código:

import serial

ser = serial.Serial('/dev/ttyAMA0', 9600) # use your ATmegas baud here

while ser.isOpen():
    try:
        print(str(ser.read(), encoding='ascii'))
    except:
        ser.close()

Si su ATmega está enviando algo, debería verlo en IDLE. Puedes detener el programa con Ctrl + C.

    
respondido por el TisteAndii

Lea otras preguntas en las etiquetas