Compartir estado de GPIOs de una Raspberry con un Arduino vía serie

Iniciado por mario290386, 22 Julio 2018, 10:40 AM

0 Miembros y 1 Visitante están viendo este tema.

mario290386

Hola a todos!! :D, tengo una duda que no soy capaz de resolver, y espero que alguien conozca la respuesta.

Estoy haciendo un proyecto en el que una Raspberry se comunica con un Arduino nano mediante los GPIO de las Raspberry, esto lo hago cableando los GPIO de las Raspberry a las entradas digitales del Arduino nano y cuando detecto que se ponen en HIGH o LOW las uso en el mi sketch. Mi pregunta es la siguiente:

¿Se puede hacer lo mismo usando un cable USB haciendo uso de la comunicación serie entre las dos placas?

He visto tutoriales sobre como activar la comunicación serie entre el Arduino y la Raspberry pero no se explica nada sobre como usar las activaciones de los GPIO y compartir su estado para usarlos en mi sketch de Arduino.

Gracias y un saludo.

srWhiteSkull

#1
No entiendo que quieres hacer, hablas de comunicación entre Raspberry Pi y Arduino y luego saltas con lo de usar el USB?¿

Si te interesa crear una comunicación entre estas dos placas programables dispones de los pines serial tanto en una como en otra. En la Nano tienes los pines 2 (RXD) y 1 (TXD), y en Raspberry tienes los pines 14 (TXD) y 15 (RXD). Donde el TXD de uno iría en el RXD del otro y lo mismo al revés.

La comunicación serial debe estar configurada a la misma velocidad tanto en una placa como en la otra, de lo contrario no recibirás bien los mensajes. Para trabajar con esos pines en la NAno creo que debes usar Serial1, ya que si usas el objeto Serial lo harías por medio del USB (No tengo una Nano para verificarlo, deberías probar con un polímetro enviando pulsos a intervalos de 5 segundos por el TXD para ver si es con Serial1). Para la Raspberry Pi es más fa´cil, solo tienes que recoger el objeto serial que devuelve wiringpi.serialOpen('/dev/ttyAMA0',velocidadEnBaudios) .

La comunicación es sincronizada, esto significa que las dos placas no pueden hablar a la misma vez, una habla y luego la otra recibe y responde. Para asegurar la comunicación deberás hacer uso de mensajes que verifiquen el proceso... por ejemplo, una presentación, que responda con un OK acompañado de un código que indique que el mensaje aparte de haber sido recibido es comprendido, etc...




mario290386

Hola srWhiteSkull disculpa si no me he explicado bien.

Necesito establecer una comunicación entre el Arduino y la Raspberry usando unicamente un cable USB conectado entre las dos placas.
Ya se que puedo conectar las dos placas mediante los pines tx y rx de ambas placas, pero eso implica usar varios cables y en el caso del arduino nano ademas hay que soldar ya que no se incluye pineado de conexion rapida como en el Arduino uno.

Lo que necesito hacer es muy sencillo pero no se como empezar ya que tengo poca experiencia en tema de la comunicación serie.

Básicamente necesito que cuando la Raspberry active uno de sus GPIO se mande esa información al Arduino para que el programa de arduino actue en consecuencia, por ejemplo, si la Raspberry activa el GPIO10 necesito que en el arduino detecte ese cambio y encienda una luz y si ya no esta activo el GPIO10 pues que se apague.

Ahora mismo consigo que el arduino se entere de las activaciones de la Raspberry cableando fisicamente los GPIO de la raspberry a las entradas digitales de Arduino, con lo cual al activarse los GPIO de la Raspberry el Arduino tambien detectaría el valor HIGH en la entrada digital de la misma forma que actuaria un pulsador.

No se si me he explicado bien, pero se que tiene que haber alguna manera de hacer esto sin necesidad de cablear tanto y hacer esto mediante una unica conexion USB me facilitaria muchismo las cosas.

Gracias por tu ayuda saludo!!  ;-)




srWhiteSkull

#3
Puedes usar el USB también, pero posiblemente sea menos efectivo si pretendes alimentar ambas placas con baterías.

El me´todo sería similar a lo explicado usando los pines, sólo que en vez de Serial1 usarías en la nano el objeto Serial, y en la parte Raspberry usarías la librería de python pyserial. En la cual habría que indicarle el puerto usb.

Este enlace, aunque está en inglés todo (el inglés es necesario para todo) te podrá servir para cumplir con ese objetivo:

http://embeddedlaboratory.blogspot.com/2017/03/serial-communication-in-raspberry-pi.html

PD y por supuesto necesitarás un cable usb muy varonil, macho-macho  :xD
https://www.pccomponentes.com/cables-usb/macho-macho


mario290386

Gracias por la info srWhiteSkull!! estoy ya investigando como obtener los valores de los GPIO de la Raspi y estoy almacenándolos en variables para poder enviar 0, 1 y 2 que son los 3 estados que quiero mandar por puerto serie al Arduino.

En cuando al cable USB, la conexión que tiene el Arduino nano es un cable USB similar al los que usa el mando de PS3, y necesito saber que los datos puedan transmitirse por este cable ya que yo uso este tipo de Arduinos y es el único cable con el que se puede conectar a la Raspi. Me imagino que si se podrá ya que este cable es el que se usa para programar tambien el nano.

Gracias de nuevo!!

felipe87

Hola, creo que lo que buscas lo tienen en esta página proyectos-con-arduino.com
hay mas de 300 proyectos de gente con Rapsberys y Arduinos, y hay varios conectandolas.
Electrónico y músico. Visita mi página de proyectos con Arduino para saber mas

rub'n

Cita de: mario290386 en 28 Julio 2018, 18:11 PM
Gracias por la info srWhiteSkull!! estoy ya investigando como obtener los valores de los GPIO de la Raspi y estoy almacenándolos en variables para poder enviar 0, 1 y 2 que son los 3 estados que quiero mandar por puerto serie al Arduino.

En cuando al cable USB, la conexión que tiene el Arduino nano es un cable USB similar al los que usa el mando de PS3, y necesito saber que los datos puedan transmitirse por este cable ya que yo uso este tipo de Arduinos y es el único cable con el que se puede conectar a la Raspi. Me imagino que si se podrá ya que este cable es el que se usa para programar tambien el nano.

Gracias de nuevo!!

Por supuesto que ese cable te servirá usa ese. creo que te estas rompiendo mucho el coco hommie


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen