Un saludo a todos
Como indica el titulo de la publicación estoy haciendo un proyecto de robot, que es un ROV, Remote Operate Vehicle, o en castellano, Vehículo Controlado Remotamente, con la particularidad de que este tipo de robot, son sumergibles, llevo bastante tiempo con el proyecto, empece en el 2.016, a dar mis primeros pasos con Arduino, y estudiando proyectos similares como el de homebuiltrovs, y el proyecto de http: //www.techmonkeybusiness.com/tag/rov.html.
Me he atascado varias veces, y he salido de esos atascos como he podido, la mayor parte de las veces buscando en Internet, otras veces preguntando en foros especializados, como [http: //www.homebuiltrovs.com/rovforum/](http://http: //www.homebuiltrovs.com/rovforum/), foro especializado en este tipo de vehículos, y https: //www.cambatronics.com/foro/, foro de proyectos de electrónica y programación, aplicada a diversos proyectos, y que me han ayudado bastante a solucionar algunas dudas sobre el proyecto.
Pero ahora estoy atascado de verdad, y necesito ayuda más específica sobre la programación de Arduino.
También comentaros que mis conocimientos de electrónica y programación son bastante limitados, soy un simple aficionado autodidacta.
Ahora paso a explicar el proyecto que pretendo realizar
La idea es que con 2 Arduinos Mega 2560, uno dentro del ROV llamado Esclavo, y otro en superficie llamado Maestro, y un mando de PS2, controle los movimientos de ROV, y que en una pantalla Nextion de 5 pulgadas del tipo Básica, me muestre los datos de los distintos sensores que tengo pinchados en el Arduino Esclavo.
Esta sería la definición básica del proyecto.
Ahora viene la definición extensa y detallada del proyecto.
El Arduino Mega 2560, lo conocéis de sobra.
El mando de la PS2, creo que también, estoy utilizando el mando inalámbrico con su Shield de control
Y la biblioteca de Bill Porter PSXLib, conocida por muchos de vosotros, que adjuntare en esta publicación, junto con todas las que he utilizado para el proyecto.
Ahora paso a enumerar los sensores que estoy utilizando, son de lo mas normalito, pero para este proyecto creo que son los adecuados por su relación calidad precio
Tengo pinchados 3 sensores de temperatura y humedad DHT22, conocidos por todos los que habéis trasteado un poco con Arduino.
También estoy utilizando un sensor de temperatura DS18B20, con su encapsulado metálico, y conectado mediante una resistencia de 4,7 kΩ, de una manera muy parecida a esta.
También estoy utilizando un sensor de presión HK3025 5MP, como este de la foto, que definitivamente tendrán que ser 2, uno para que me marque la presión interior del ROV, e intentar que no reviente, y otro que me marque la presión exterior para saber a qué profundidad se encuentra el ROV.
A demás estoy utilizando un sensor de infrarrojos E18D80NK, como este
También un modulo de relé para encender un foco, que posteriormente serán 2 focos, pero de momento para las pruebas con uno que funcione me vale, en el montaje definitivo, no sé si pondré 2 relés, uno para foco, o si me podre arreglar con un solo relé para los dos focos, eso se verá en un futuro no muy lejano
Dos motores sin escobillas, con su variador de velocidad, que por lo que he podido comprobar en diversas páginas de Internet, se controlan igual que un servo, esto en principio no tiene mayor problema de control
Y como no un servo que me moverá un eje donde estarán colocados los motores, y se moverá según las necesidades hacia arriba y hacia abajo para hundir el ROV, o sacarlo a la superficie
También tengo conectado un giroscopio GY 5121 MPU6050, para que me marque las inclinaciones del ROV, sobre los ejes de los tres planos X, Y, Z, para saber en qué posición se encuentra el ROV
La corriente de momento la estoy sacando de una fuente ATX de PC, para no gastar baterías con las pruebas del proyecto, y los cables están conectados a una placa de alimentación de Arduino llamada YFRobot
Y por supuesto que en el montaje eléctrico todas las masas están conectadas entre sí, tanto las de las pistas de la protoboard, como las GND de los Arduinos, y los cables negros, Negativos de la fuente de PC
Para la transmisión de los datos entre un Arduino y otro, de momento, como lo tengo todo encima de la mesa, con dos cables de puente del tipo dupont, de momento me puede servir, pero luego esa transmisión se hará con un cable de red CAT5, de 100 metros, que ya conseguí en su momento y que está esperando que lo utilice.
Para la transmisión de video en directo no voy a complicarme la vida, voy a utilizar una Raspberry Pi3 +, una cámara USB, y un ordenador portátil.
El sistema de video funciona de la siguiente manera.
A la Raspberry Pi3 +, se le conecta una cámara de video por USB, se inicia la Raspberry y directamente desde el ordenador, con un programa que se llama VLC media player, se le manda reproducir una dirección web, que es la dirección ip de la Raspberry, y ya estás viendo el video en el ordenador.
Lo único que hay que hacerle a la Raspberry es cargar el sistema operativo, actualizar todo, y que te enseñe su dirección ip, no me he complicado con el lenguaje de programación, solo he seguido el tutorial de inicio de la página oficial de Raspbery. Ya tengo bastantes problemas de programación con un solo idioma el C++, de Arduino, como para encima aprender el otro de la Raspberry, el Python.
Bueno hasta aquí la exposición del proyecto, espero haberme explicado lo suficiente como para que entendáis la idea y podáis ayudarme.
Ahora empiezo a explicar el problema que tengo.
Hasta ahora, he ido incorporando sensor a sensor, de uno en uno, primero haciendo la conexión solo del sensor nuevo en una placa y en un programa nuevo.
Después lo he conectado en un Arduino, y mediante la Comunicación Serie, por los pines RX y TX, a otro Arduino, para comprobar que el montaje funciona, y que puedo ver los datos a través del Monitor Serie.
Y luego incorporándolo al programa donde están el resto de instrucciones, tanto en el Arduino Maestro, como en el Esclavo, y conectándolo en su sitio, para comprobar que funciona.
Esto me ha ido funcionando bien, hasta que de repente ha dejado de funcionar, sin que pueda encontrar una explicación coherente al porque del fallo.
De pronto ha dejado de reaccionar a las órdenes del mando de la PS2, y no es porque las baterías del mando estén gastadas, como alguno me puede indicar, ha sido al incorporar el giroscopio, y creo que hay alguna orden que está interfiriendo en el programa, y no encuentro cual es, en principio no hay ningún pin de Arduino que en el programa haga dos funciones, he comprobado la instalación eléctrica del circuito varias veces y creo poder asegurar que no hay ningún fallo de conexión, me inclino mas a un problema de programación.
Con el programa del Esclavo, si puedo ver los datos en el Monitor Serie, y son bastante coherentes, me da la temperatura de los 4 sensores, la humedad de los tres DHT22, me marca el voltaje de la batería.
Pero el sensor de infrarrojos no marca bien, aleatoriamente marca la proximidad de un objeto o no, sin que se corte la luz del sensor.
Y los datos del giroscopio no varían según la inclinación, están fijos en un número.
Y el monitor Serie del Maestro, va a su aire, o no marca nada, o solo imprime las líneas de texto sin ningún valor, o muestra datos aleatorios de los sensores y el fallo de alguno de ellos.
Ya he probado a cambiar los dos Arduinos, y a cambiar el mando, por si fuese algún fallo de estos, pero nada no consigo arreglarlo.
Adjunto los dos programas, todas las librerías utilizadas, el boceto de Frizting de las conexiones, y un pdf, de cómo se verá en un futuro espero que no muy lejano, el diseño de la pantalla Nextion, y por supuesto me ofrezco a aclarar cualquier duda que tengáis sobre el proyecto y que no haya explicado bien en este
Un saludo a todos




01 Prueba Pantalla.pdf (389 KB)
Programas Arduino.zip (11.9 KB)
Librerias.zip (396 KB)
ARCHIVO FRITZING.zip (42.7 KB)




Fotos Sensores.zip (788 KB)




