Un ROV de agua dulce, con mando de PS2

Si te gustan los modelos Radio Control RC este es tu foro.
Responder
asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Mié May 06, 2020 11:27 pm

Buenas noches.

Ya me extrañaba a mí que estuviera todo tan perfecto, como para que no tuvierais que preguntar.

La librería del GY-MPU6050, pertenece a un paquetón de librerías de sensores, que utilizan el protocolo I2C, que puedes encontrar en Github, pongo el enlace.

https://github.com/jrowberg/i2cdevlib

Las libreáis de Github, se descargan pulsando el botón verde que pone “CLONAR O DESCARGAR”, se abre otro botón de dialogo que dice, “DESCARGAR ZIP”, y te guardas el fichero con la extensión “ .zip “, en la carpeta del ordenador que quieras, pero que sepas cual es, para luego poder volver a ella, para descomprimirla.

Las descargas de Github, son gratis, y no te tienes que registrar, aunque te solicitan una colaboración económica para el mantenimiento del sistema.

Para descargar los ficheros, NO ES OBLIGATORIO, pagar nada, cuando le das al botón de “descargar zip”, se inicia la descarga del fichero automáticamente, solo te pregunta donde quieres guardar el fichero.

Para descomprimir el fichero, tienes una opción de “descomprimir aquí”, o “elegir carpeta” porque si no, se va a descomprimir en una carpeta por defecto que no vas a saber luego cual es, y te vas a volver loco buscando la dichosa carpeta.

Cuando descomprimas el fichero, se va a generar una carpeta llamada “i2cdevlib-master”, dentro de esa carpeta, se generan un montón de subcarpetas, hay una que pone “Arduino”, y dentro de esa carpeta, tienes las librerías de un montón de sensores que funcionan con el protocolo i2c, hay una carpeta que pone MPU6050, esta es la que tienes que copiar dentro de la carpeta de tu ordenador, donde están las librerías de Arduino.

Normalmente está en

C:\ Usuarios\ (tu nombre de Administrador)\ Documentos \ Arduino \ libraries

También la puedes encontrar en

Mi equipo, en el desplegable de la izquierda, Documentos, Arduino, libraries

Y ya tienes la librería a disposición del IDE de Arduino, para poder utilizarla.

Como la pagina de Github es gratis y de uso público para la comunidad Arduino, por eso, no pongo el pie de página, que he puesto otras veces, cuando hago referencia a otras páginas de internet.

Un saludo



asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Jue May 07, 2020 10:32 pm

Buenas noches.

Permitirme que vuelva a hablaros, (escribiros), sobre los sensores de infrarrojos, os he presentado el E18-D80NK, que es un sensor sencillo, que puede sacarnos de más de un apuro, pero se queda corto en cuanto a prestaciones, puesto que con él no se pueden medir distancias.

Ahora os voy a comentar las propiedades de otro sensor de infrarrojos, el SN-IRS-01, tampoco es que sea una maravilla, pero quiero que sepáis, que con los sensores infrarrojos SI se pueden medir distancias.

Os pongo el enlace de la página donde describen con todo detalle las funciones de este sensor, para que voy a escribir yo lo mismo que ya ha escrito otro antes.

https://tutorial.cytron.io/2015/04/30/sn-irs-01-work/

Ya os he dicho, que no me gusta poner paginas de tiendas, pero es que hay algunas que merece la pena leer, por la cantidad de cosas que explican.

Este tipo de sensor se puede conseguir mucho más barato en otras páginas de Internet, pero no explican tan bien su funcionamiento

Si os sigue interesando el tema de los sensores de infrarrojos, hay otro mucho más completo, y a su vez más caro, que también os voy a poner la pagina donde explican cómo funciona.

Este ya es un sensor de los buenos, con unas prestaciones mucho mayor que los otros, pero es igual de fácil de controlar, se llama GP2Y0A710K0F.

Y a demás estoy deseando que me legue para poder probarlo, ya he probado los demás, y no me terminan de convencer para el proyecto, pero este seguro que se quedará dentro de mi ROV.

https://www.makerguides.com/sharp-gp2y0 ... -tutorial/

En esta página se explica que es y cómo funciona un sensor de infrarrojos, y como controlar el sensor.

A demás también hace referencia al sensor de ultrasonidos HC-SR04, que ya hemos visto, y a su hermano el JSN-SR04T, que se utiliza en exteriores.

No me canso de repetirlo, pero sí de escribirlo.

Que quede claro que yo no tengo nada que ver con la página, ni con ninguno de los productos a los que se hace referencia en su página, así como con ninguna otra página de Internet, a la que pueda hacer referencia en esta publicación. Solamente la considero como una buena pagina de referencia y consulta, para resolver muchas dudas que nos puedan surgir.

Un saludo



asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Jue May 07, 2020 11:42 pm

Buenas noches, otra vez.

Otro elemento que resulta muy vistoso en nuestros modelos es una Bomba de agua, se puede utilizar como elemento decorativo, por ejemplo, un barco que tire un chorro de agua a una distancia considerable, o también se puede utilizar para mantener la temperatura interior de los componentes electrónicos de nuestros modelos.

Que si, que no estoy tan loco como parece.

Si utilizas motores y ESC o BEC, preparados para ser refrigerados por agua, puedes hacerte 2 tipos de circuitos, uno sencillo o pasivo, que es el que utilizan las lanchas rápidas de RC, que tienen 2 tomas de agua a la parte de popa, a los lados del timón, y el movimiento del barco genera una diferencia de presión entre el agua que pretende entrar por la toma de agua, y el agua que está dentro del circuito, esta diferencia de presión, genera una corriente de agua que pasa por unos tubos de silicona, y enfría los motores y los ESC.

Esto se utiliza en barcos cortos y rápidos donde el circuito es corto.

Pero si el barco es más grande, esa diferencia de presión es más difícil de conseguir y la corriente de agua generada, no es capaz de moverse por todo el circuito, y entonces es donde entra nuestra protagonista.

Al mismo circuito se le añade una bomba de agua, y esta se encarga de hacer circular el agua por todo el circuito de gomas de silicona.

Adjunto una foto del circuito, con la bomba de agua.

Implementar esto con Arduino es bastante fácil, ya os he comentado como se controla un motor con Arduino, pues una bomba de agua no deja de ser un motor, por lo tanto se controla igual.

Como las bombas de agua, para que tengan una mínima fuerza son de 12V, y Arduino no puede mover directamente esa corriente, se utiliza la ayuda o bien un relé, o bien un controlador de motores como puede ser un L298, como ya hemos visto en comentarios anteriores.

Os pongo la pagina de Don Luis Llamas, ( a este paso ya lo podemos llamar Luis, o Luisito), donde nos explica cómo poner en marcha una bomba de agua, que este funcionando un tiempo, y se pare.

https://www.luisllamas.es/bomba-de-agua-con-arduino/

Este tipo de circuitos lo podéis complicar y automatizar, todo lo que queráis, yo por ejemplo, tengo asociado un sensor de temperatura, para que cuando el Arduino Esclavo, reciba que ese sensor detecta una temperatura de 45 º C, dispare automáticamente un relé, que me encienda la bomba de agua, para enfriar el circuito, y a su vez, cuando el sensor me marque 50ºC, me envíe una señal de alarma al Arduino Maestro, y encienda una alarma, cuando la temperatura pasa de 50ºC.

Por lo tanto lo tengo automatizado en los dos Arduinos, el Esclavo me enciende la bomba de agua, cuando llegue a los 45ºC, y yo todavía no lo sé, y cuando la temperatura pasa de 50ºC, y el circuito no es capaz de bajar la temperatura, me manda un mensaje al maestro de que hay un problema de temperatura, encendiendo una alarma, que esta si la veo yo, y entonces ya sé que hay un problema de temperatura en el ROV.

Espero no haber sido demasiado plasta con las explicaciones, pero creo que es un componente digno de una extensa explicación.

Y como siempre, Bla, bla, bla la página y sus anuncios, bla, bla bla.

Un saludo.
Adjuntos
01R.jpg
01R.jpg (112.85 KiB) Visto 763 veces



asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Vie May 08, 2020 9:01 pm

Buenas tardes

Ahora quiero presentaros un sensor, que muchos no le veréis la utilidad, pero si hay alguien que se quiera hacer un barco a vapor, o un submarino, le resultara imprescindible, si no este modelo concreto, alguno parecido, y como ya sabéis, es fácil que el control con Arduino, si no es exactamente igual, será muy parecido.

Me refiero al Sensor de Presión SKU237545, que resulta que no es más que el sensor que se utiliza en automoción para regular presiones de líquidos.

Hay infinidad de sensores de presión para Arduino, pero no están preparados, como este, para estar en contacto con líquidos, solo tenéis que poner el buscador “Arduino sensor presión”, y os aparecerán miles de páginas, o si lo pones en el buscador de una tienda, como pueda ser Aliexpres.com, y te saldrán cientos de sensores de distintos tipos, colores y precios.

En esta página explican muy bien que es, como funciona, y como se controla, el sensor de presión SKU237545, tiene otro nombre por ser de otra marca, porque SKU 237545, es el nombre genérico del tipo de sensor,

https://wiki.dfrobot.com/Gravity__Water ... U__SEN0257

Os digo lo de siempre, esta página tiene información para parar un carro, y podéis estar leyendo meses y no acabarla, por lo tanto centraros en el sensor, y luego, ya volveréis a ella para entreteneros.

Pongo la coletilla de siempre

No me canso de repetirlo

Que quede claro que yo no tengo nada que ver con la página, ni con ninguno de los productos a los que se hace referencia en su página, así como con ninguna otra página de Internet, a la que pueda hacer referencia en esta publicación. Solamente la considero como una buena pagina de referencia y consulta, para resolver muchas dudas que nos puedan surgir.

Un saludo.



asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Vie May 08, 2020 11:07 pm

Buenas noches.

Ahora vamos a ver un elemento algo más vistoso que lo que hemos visto hasta ahora, la pantalla, o display LCD.

Con este tipo de periférico de Arduino, podemos ver como Arduino se comunica con nosotros y nos dice que es lo que está haciendo.

Esta es la manera más complicada de conectar la pantalla LCD, y la más difícil de programar, pero es la que nos enseñan la primera.

Os parecerá un follón tremendo de cables, pero ya veréis que no es para tanto.

https://www.luisllamas.es/arduino-lcd-hitachi-hd44780/

En esta otra página, veremos la manera más fácil de conectar la pantalla, solo con 4 cables contados literalmente, y bastante más fácil de programar, pero como siempre, necesitamos la ayuda de un dispositivo, que nos haga el trabajo duro y complicado, para que nos sea más fácil trabajar con la pantalla.

https://www.luisllamas.es/arduino-lcd-i2c/

Y si, como ya os habéis dado cuenta, volvemos a la página de Luis Llamas, para ver como se controlan estas pantallas, ya os dije que la visitaríamos con frecuencia.

Pongo la coletilla de siempre

No me canso de repetirlo

Que quede claro que yo no tengo nada que ver con la página, ni con ninguno de los productos a los que se hace referencia en su página, así como con ninguna otra página de Internet, a la que pueda hacer referencia en esta publicación. Solamente la considero como una buena pagina de referencia y consulta, para resolver muchas dudas que nos puedan surgir.

Un saludo.



asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Vie May 08, 2020 11:40 pm

Buenas noches.

Ahora voy a presentaros algo que más de uno estaba esperando con ansia y una cierta emoción, el mando de la Play Station 2, mando PS2, para los amigos, (y enemigos).

Es un controlador barato, y que nos abre un abanico de posibilidades tremendo, siempre y cuando seamos capaces de hacerlo funcionar como es debido.

El funcionamiento en si no es complicado, el problema es adaptarlo a nuestros proyectos, lo digo porque yo llevo más de un año peleándome con él, para hacerlo funcionar en mi proyecto, pero como ya habéis visto, mi código no es moco de pavo, y se las trae.

A demás no se conecta igual en un Arduino Uno, que en un Arduino Mega 2560, para complicar más las cosas.

Vamos a ver como se conecta en un Arduino Uno, primero.

Para este proyecto, demostrar que sois un poco hábiles y manitas, y en vez de cortar el cable, que es lo único que no me gusta de la pagina, insertarle unos cables tipo dupont, los que se usan como puente para hacer las conexiones en la placa sin soldadura, y conseguiréis un trabajo más fino.

http://electrotuto.com/2014/04/24/manet ... controler/

Como no, en esta presentación no podía faltar el amigo Luis Llamas, pero con un mando inalámbrico.

https://www.luisllamas.es/controla-ardu ... de-la-ps2/

En esta otra pagina veremos cómo se conecta de otra manera, el mando inalámbrico.

https://www.prometec.net/controlador-ps2/

Y ahora que ya sabéis cómo funciona el mando, os pongo un enlace a Github, sin muchas explicaciones, pero se conecta el mando a un Arduino Mega 2560

https://github.com/Lynxmotion/Arduino-PS2X

En esta otra página, se conecta el mando inalámbrico, mediante una shield, o sombrero de Arduino, que sirve para controlar directamente muchas otras cosas más

https://www.fambach.net/arduino-ps2-con ... rundlagen/

Os pongo unas fotos para que os valláis haciendo una idea de a que nos enfrentamos.


Pongo la coletilla de siempre

No me canso de repetirlo

Que quede claro que yo no tengo nada que ver con la página, ni con ninguno de los productos a los que se hace referencia en su página, así como con ninguna otra página de Internet, a la que pueda hacer referencia en esta publicación. Solamente la considero como una buena pagina de referencia y consulta, para resolver muchas dudas que nos puedan surgir.

Un saludo.
Adjuntos
Conexionado de cables
Conexionado de cables
ARDUINO_CONTROLE-PS2-1.png (43.77 KiB) Visto 748 veces
Disposición y nombre de los botones
Disposición y nombre de los botones
ps2_controller_h6WUIp9OsW.jpg (74.11 KiB) Visto 748 veces
Disposición y nombre de los botones
Disposición y nombre de los botones
PS2_Controller_PSX_Lib_Labels.jpg (28.41 KiB) Visto 748 veces
Para no cortar el cable
Para no cortar el cable
PS2-Connections 1.jpg (73.21 KiB) Visto 742 veces
Última edición por asesorplaza1 el Sab May 09, 2020 1:18 am, editado 1 vez en total.



asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Vie May 08, 2020 11:53 pm

Buenas noches.

Como podéis ver, os estoy haciendo la presentación de cada uno de los sensores y periféricos para Arduino, por separado, esto es como si fuera un Cocido Madrileño, o un Pote Montañés, que tienen un montón de ingredientes, y que hay que irlos preparando de uno en uno, para que luego al juntarlos, que no mezclarlos, cada uno de su sabor al plato final. Pero hay que saber cómo utilizarlos por separado para que quede un plato exquisito.

Un saludo.



Avatar de Usuario
carlosys
Consejo Foro Modelismo Naval
Consejo Foro Modelismo Naval
Mensajes: 1792
Registrado: Dom Ago 29, 2010 7:37 am
Ubicación: Tarragona
Contactar:

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por carlosys » Sab May 09, 2020 5:35 am

Hi
Muchas gracias por tu dedicación a este hilo.
Como entenderás, poco hay que aportar, solo leer y aprender.
Supongo que si no hay otros compañeros realizando un montaje similar, poco pueden aportar. Solo como digo, leer y aprender.

Sigue así. A mi me interesa.

Saludos y gracias



asesorplaza1
PayPal
PayPal
Mensajes: 152
Registrado: Jue Ene 24, 2019 6:51 am
Ubicación: Cuenca

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por asesorplaza1 » Sab May 09, 2020 2:31 pm

Buenos días.

Gracias por los comentarios.

Como ya os he explicado, lo que pretendo es daros a conocer el entorno Arduino, y que le perdáis el miedo a utilizarlo en vuestros modelos, lo mismo que yo lo estoy utilizando en mi proyecto.

Aunque son dispositivos que están enfocados a la robótica, se puede aplicar en cualquier tipo de modelos, los compañeros que hacen drones, lo están utilizando para todo, para el control de vuelo, la transmisión de FPV, el control de los modelos como si fuesen emisoras, etc.

Lo único que debemos hacer, es ampliar un poco el punto de vista, y encontrar las cosas en común que unen el modelismo en todos sus aspectos, es como si por ejemplo, algo que se utilice en la producción de un coche de la marca SEAT, no se pueda utilizar en un coche de la marca AUDI, simplemente porque no son exactamente iguales.

Estamos de acuerdo de que cada marca tiene sus diferencias, pero los dos, no dejan de ser coches, por lo tanto lo que se pueda utilizar en una marca en concreto, también se puede utilizar en otro tipo de modelo, simplemente adaptándolo un poco a las necesidades de cada uno.

Y en cuanto a los aportes, no os preocupéis, que en cuanto retome la construcción del casco, os va a tocar a más de uno aportar lo que se le ocurra, o sepa.

De momento lo único que quiero saber es que sea un tema interesante, para cualquiera de todos vosotros, con la única intención de daros a conocer Arduino, y que alguno, implante algo de lo aquí descrito, en sus modelos, por supuesto, que si le parece bien, nunca como obligación.

Un saludo.



Avatar de Usuario
tsanshon
PayPal
PayPal
Mensajes: 158
Registrado: Mié Jul 29, 2009 1:36 am
Ubicación: Bilbao

Re: Un ROV de agua dulce, con mando de PS2

Mensaje por tsanshon » Sab May 09, 2020 2:40 pm

Hola asesorplaza1.
Finalmente he podido descomprimir los códigos fuente en windows y los he revisado.
En mi opinión, no hay una sola forma buena de programar, de hecho cada persona tiene un estilo propio que no tiene que ser ni mejor ni peor. Por lo que intentaré explicar como haría yo aquellas cosa que me llamen la atención. El código es bastante legible y veo que has seguido el estilo que recomienda Arduino así que es un buen punto de partida.

Una de las cosas que he visto y que por lo que comentas en post anteriores no te funciona bien es la comunicación.
Voy a dar un poco de contexto:
El bucle loop() se esta ejecutando continuamente una vez arrancado el microcontrolador, empieza por la primera linea y va realizando las tareas que le manda el código que hemos escrito hasta llegar al final y comienza de nuevo. Dependiendo del tamaño del código y de la velocidad del microcontrolador esto se repite miles de veces por segundo.
La función delay() interrumpe la ejecución del código por un determinado periodo de tiempo (es como si le damos al pause).
La función while() Interrumpe la ejecución del código hasta que se cumple la condición que hemos puesto entre paréntesis (otro pause).
Los puertos serial tienen un buffer donde se van acumulando los datos que reciben, si la cantidad de datos es mayor que el tamaño del buffer se bloquean.

Este es el código relevante dentro de loop():
maestro
474 ETout.sendData();
476 delay (200);
// Recibe el mensaje al puerto serie para el Arduino del ROV
479 while (!ETin.receiveData());
619 delay (1000);

esclavo
334 while (!ETin.receiveData());
711 ETout.sendData // Esta dentro de la función loop_SKU237545_E()
460 delay(200);


La secuencia de el código seria:
El maestro envía un mensaje (L 474). Se queda en pause 200ms (L 476). Pause hasta recibir datos del esclavo y pause de 1000ms. El loop() se ejecuta completo una vez cada 1.2 segundos y algunas milésimas.
El esclavo esta en pause hasta que recibe un mensaje (L334). envía un mensaje y se queda en pause 200ms (L 460). Como el maestro envía un mensaje cada 1.2s, el loop() del esclavo se ejecuta completo cada 1.4s mas algunas milésimas.
Como resultado tanto el esclavo como el maestro están en pause el 99.99% del tiempo.

Yo utilizaría la función millis() en vez de delay() para aquellas partes del código que quiero que se ejecuten cada cierto tiempo y no bloquear la ejecución del resto del código.
Tambien sustituiria
while (!ETin.receiveData()); por if(ETin.receiveData()) { código para procesar el mensaje ; }
De esta forma el código solo se ejecuta cuando hay un mensaje y se comprueba si hay menaje cada pocos milisegundos de forma que evitamos que el buffer se llene.

Te recomiendo que leas el libro Programación en C++ del enlace.
https://es.wikibooks.org/wiki/Programac ... cci%C3%B3n

Te adjunto dos pantallazos para que veas el mismo código con Arduino-Ide y con Platformio-Ide.
I
I
Ide-Arduino.png (137.98 KiB) Visto 732 veces
Ide-Platformio.png
Ide-Platformio.png (378.19 KiB) Visto 732 veces
Un saludo.
Alberto.



Responder