Skip to content

En este repositorio, voy a publicar las modificaciones hechas a los programas para controlar un ROV, he empezado los programas con el IDE de Arduino, pero en vista del tamaño y la complicación de los códigos, ahora estoy utilizando Visual Studio Code, mas Platfor IO

Notifications You must be signed in to change notification settings

asesorplaza1/Programas-ROV-en-evolucion

Repository files navigation

Versión 60 de los programas a fecha 30/11/2020

Los dos primeros programas

01 Programa Maestro
02 Programa Esclavo

Son para el entorno Arduino

El programa llamado
04 VSC PIO projects

Es para utilizar con el programa Visual Studio Code más el complemento Platform-IO

En este repositorio, voy a publicar las modificaciones hechas a los programas para controlar un ROV, comenzó los programas con el IDE de Arduino,
y con dos placas Arduino Mega 2560, pero en vista del tamaño y la complicación de los códigos, ahora estoy usando Visual Studio Code,
con Platfor IO, y posiblemente tengamos que cambiar de placas por dos ESP32, dados los problemas que se me plantean con la depuración de los códigos.
Como bien pone en el título del repositorio, estos programas irán evolucionando y cambiando, según valla progresando en la depuración de los códigos
como de los dos programas.
Los programas ahora mismo, compilan con el IDE Arduino, pero no operan todo lo bien que  deberían, tienen algunos problemas,
por eso puse en el título de los programas, "no funcionan aún", espero poder resolver todos los problemas en breve.
Os mantendré informados de los cambios, un saludo a todo el mundo.

La versión original tomada como punto de partida es la siguiente
_______  CONFIGURACIÓN ORIGINAL  _____________

ROVPS2Control_Slavev8.ino
Hamish Trolove - 30 de marzo de 2016
www.techmonkeybusiness.com

Los datos enviados desde el maestro son configuraciones sin formato para el control ESC.

Este boceto está diseñado para un Arduino Nano con un solo puerto serie.
Yo lo estoy usando en un Mega 2560, y funciona

Las asignaciones de pin son;
D13 = pin LED ROJO.
D12 = Control de faros
D11 = Pasador de puente
D8 = ESC Vertical Izquierda
D7 = ESC Vertical Derecha
D6 = ESC Horizontal Izquierda
D5 = ESC Horizontal Derecha
D4 = Servo de paso de cámara (anulado en el código de asesorplaza1)
D3 = Disparador de video (anulado en el código de asesorplaza1)
D2 = Disparador de foto  (anulado en el código de asesorplaza1)
Para la transmisión del video asesorplaza1 utilizara una Raspberry Pi 3 plus, una cámara USB, y el programa VCL Media Player

A7 = Conexión del divisor de voltaje
A6 = Pin de salida del sensor de temperatura TMP36 (se cambia este sensor por obsoleto, se usan los sensores DHT22)

Pines GND del bus i2c en los sensores MS5803-14BA y BMP180 a pines Nano GND Pines Vcc en los sensores MS5803-14BA y BMP180 a pines Nano 3.3V pines
SDA en los sensores MS5803-14BA y BMP180 a pines Nano A4 pines SCL en MS5803-14BA y BMP180 sensores para pin Nano A5
Se cambian estos sensores por obsoletos, se usan los sensores DHT22 y el giroscopio MPU6050

5V = Suministro al sensor de temperatura TMP36. (Se cambia este sensor por obsoleto, se usan los sensores DHT22)

Conexión serial de comunicaciones: modificado por Asesorplaza1, el 26/03/2020, para separar los datos mandados entre Arduinos,
de los datos a mandar al Monitor serie
Conexión serial: 

Pin 19 Arduino de Control (TX) a Pin 18 Arduino ROV (RX) 
Pin 18 Arduino de Control (RX) a Pin 19 Arduino ROV (TX)
Conecte el GND en ambos

Tenga en cuenta que los ESC ya se habrán programado en este punto del proyecto.

Los datos de voltaje interno, rumbo, profundidad y temperatura interna se envían a través del enlace serie de regreso al maestro
Para su visualización en una pantalla LCD de 16x2.
La pantalla LCD de 16x2, se cambiara por una pantalla Nextion básica de 5"

El encabezado es de una brújula digital HMC5883L (dirección i2c 0x1E)
Y la profundidad de un sensor de alta presión MS5803-14BA (dirección i2c 0x76)
(Se cambia este sensor por obsoleto, se usa el giroscopio MPU 6050)

_____- FIN DE LA CONFIGURACIÓN ORIGINAL  ___________

Modificado por asesorplaza1 en las diferentes fechas indicadas
Las primeras pruebas y cambios del código, se iniciaron en 2.016, debido a la cantidad de modificaciones
A partir de ahora 30/01/2020, se ponen las fechas y los cambios en la descripción del proyecto
Para facilitar la búsqueda de errores en los diferentes cambios del código

30/01/2020 ya se han comentado todas las líneas de control de la cámara y del LCD
Le añado 2 DHT22 y así estarán los 3 que me hacen falta
He borrado varias líneas de control de la cámara que no se va a utilizar

01/02/2020 le añado los controles del giroscopio facilitados por Dea de www.cambatronics.com

02/02/2020 le añado la orden para leer solo 1 vez X segundo el DHT22, truco de José Luis de
www.cambatronics.com y se borran las líneas correspondientes al control de la cámara de video, no utilizadas por asesorplaza1,
en esta modificación del proyecto original

04/02/2020 modifico las líneas de lectura de los sensores, porque hasta ahora solo me imprime en Monitor Serie el texto, no los datos

06/02/2020 se depura un poco el código, y se modifica el encabezado del código

08/02/2020 se corrige el error de lectura en los sensores, y se corrige la escritura del Monitor Serie

12/02/2020 para poder añadir cualquier código hay que seguir unas reglas especificas de programación
Se modifica la estructura del código siguiendo esas órdenes de programación, según la información obtenida y guardada
En la carpeta 01_UNIR_2_CODIGOS

https://forum.arduino.cc/index.php?topic=242641.0

Se crean varios bloques en el void loop, para el funcionamiento de cada uno de los sensores, eliminando los delay(), y utilizando millis()

13/02/2020 se incluye el sensor de temperatura DS18B20, ayudado por DEA de www.cambatronics.com

16/02/2020  Se añade el sensor de distancia infrarrojo E18-D80NK, sin errores y consigo adaptar un código para leer el sensor de presión SKU237545

08/03/2020 se conecta un relé en el pin 12 del Arduino Esclavo, para encender los focos de luz externos, no hace falta cambiar el código del Maestro

26/03/2020 Se incluye la librería MPU6050, para controlar el giroscopio
Se arregla el envió de datos, separando los datos del Monitor Serie, y los datos que hay que enviar al Arduino Maestro,
iniciando dos puertos serie con las ordenes

Serial.begin(57600);     // Puerto Serie USB

Serial1.begin(57600);    // Puerto Serie en los pines 18 y 19

ETin.begin(details(rxdata), &Serial1);    // Comienza la recepción de datos a través de Serial, en los pines 18 y 19

ETout.begin(details(txdata), &Serial1);   // Comienza el envío de datos a través de Serial, en los pines 18 y 19

28/03/2020 Se incluyen el envió de todas las instrucciones del mando, para tener todos los botones operativos (no funciona)

03/04/2020 Se incluye la parte nueva del Giroscopio MPU6050, que muestra los 3 ejes de inclinación, más la temperatura del Giroscopio.
También se incluye el segundo sensor de presión

05/04/2020 se cambia el código del sensor infrarrojo E18D80NK, por uno mejor

11/04/2020 Corrijo el código según las instrucciones de mi amigo Atilano Belinchón

13/04/2020 Corrijo las lecturas y envió de datos del sensor de infrarrojos E18D80NK

15/04/2020 Se incluye el servo de dirección para accionarlo con los botones R1 y R2 del mando según información obtenida de la página

https://arduparatodos.blogspot.com/2017/02/controlar-servomotor-con-arduino-varios.html

Al pulsar R1, el servo inclina el eje donde están situados los tubos de los motores, y el ROV debe subir a superficie,
al pulsar R2, el eje se inclina en sentido contrario y el ROV debe bajar ganando profundidad.

18/04/2020 Se cambian algunos " if ", por " else if ", para darle agilidad al código, siguiendo las instrucciones de DEA de www.cambatronics.com

Entre el día 24/03/2020 y el día 28/04/2020, se hacen varios cambios en el código para mejorarlo y conseguir que el mando funcione,
Siguiendo las instrucciones de Bigbadbob en las publicaciones del foro

http://www.homebuiltrovs.com/rovforum/viewtopic.php?f=18&t=1908

A partir de la página 4

28/04/2020 Se corrige la ortografía de todo el texto que no son órdenes

03/05/2020 Se cambian las asignaciones de los pines del mando PS2, según el código de Github, para el Arduino Mega 2560

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

Las nuevas asignaciones de pines son:

Salida de 3.3V a PIN rojo PS2
Pin 24 a PIN amarillo PS2 + resistencia 1k
Pin 23 a PIN naranja PS2
Pin 25 a PIN marrón PS2 + resistencia 1k
Pin 22 a PIN azul PS2

Se arregla el código para que me salga en el Maestro el estado de los focos, encendidos / apagados

04/05/2020 Se depura el código según los consejos de Bigbadbob de http://www.homebuiltrov.com

05/05/2020 Se incluye la Macro F, en todos los Serial.print, para reducir el consumo de memoria dinámica
Según los consejos de Bigbadbob de  https://www.homebuiltrov.com , pero me da problemas

06/05/2020 Se depura el código para un mejor funcionamiento, según los consejos de Bigbadbob de http://www.homebuiltrov.com
y siguen los problemas con la Macro F

07/05/2020 Se depura el código para un mejor funcionamiento, según los consejos de Bigbadbob de http://www.homebuiltrov.com
y siguen los problemas con la Macro F

08/05/2020 Se corrigen los problemas de la Macro F, en todos los Serial.print de texto fijo
No se puede poner la Macro F, a los Serial.print de datos de los sensores
Y se consigue reducir el consumo de memoria dinámica y de espacio ocupado por el programa considerablemente

09/05/2020 Se siguen corrigiendo líneas para la depuración del código, según los consejos de Bigbadbob de http://www.homebuiltrov.com
Pero siguen los problemas con el mando de la PS2

10/05/2020 Me doy cuenta de un error en la orden de encender los focos y lo corrijo. Pero el mando sigue sin funcionar como es debido

11/05/2020 Se modifican varias órdenes del control de los botones, pero el mando sigue sin funcionar correctamente
13/05/2020 Se modifica el control de los motores incluyendo la librería ESC.h, del archivo RC_ESC_master, a partir de aquí,
en vez de controlar los ESC como un servo, se controla como lo que son ESC.

16/05/2020 Se hacen diversos cambios, según los consejos de Tsanshon de www.foromodelismonaval.es

02/06/2020, Haciendo caso a Tsanshon, instalo el programa Atom más el complemento Platform-IO, para depurar los programas

06/06/2020, Me registro en el foro Platfor-IO, en busca de soluciones, y me dicen que ya no se da soporte para Atom,
por lo que tengo que desinstalar este programa, e instalar Visual Estudio Code, con el complemento Platform-IO

07/06/2020, Después de conseguir que los programas funcionen en VSC + PIO, resulta que no puedo continuar el trabajo,
porque no se han actualizado los componentes de VSC + PIO, para Arduino, la mayoría de la gente que utiliza estos programas,
también utilizan otras placas, que son las ESP32, con muchas más posibilidades que Arduino, ya he comprado unas placas de esas,
y estoy esperando a que me lleguen, son más baratas que las placas Arduino.

08/06/2020 después de muchas pruebas y modificaciones, consigo que los programas compilen en VSC + PIO,
pero no puedo conseguir hacer mucho mas, puesto que no hay librería especifica para el mando de PS2.

09/06/2020 Consigo introducir librerías especificas con la ayuda de Maxgerhardt de Platforio fórum,
según las publicaciones del fórum https://community.platformio.org/t/un-rov-de-agua-dulce-a-sweet-water-rov/14157

11/06/2020, Después de conseguir que los programas funcionen en VSC + PIO, resulta que no puedo continuar el trabajo,
porque no se han actualizado los componentes de VSC + PIO, para Arduino, la mayoría de la gente que utiliza estos programas,
también utilizan otras placas, que son las ESP32, con muchas más posibilidades que Arduino, ya he comprado unas placas de esas,
y estoy esperando a que me lleguen, son más baratas que las placas Arduino.

18/07/2020 traduzco el archivo léame a Inglés

Entre el 25/08/2020 y el 30/11/2020, se hacen varias mejoras del programa para intentar conseguir que el mando funcione correctamente,
consiguiendo que mejore algo, pero sigue sin funcionar todo lo fino que debería.
También se implantan las funciones
loop_mandoPS2()
{
Ordenes de trabajo
}
En el void loop() del Esclavo, para conseguir una estructura de trabajo de los sensores más limpia y correcta,
mejorando bastante los resultados del trabajo de los sensores.
El mando todavía no funciona correctamente, estoy haciendo un programa aparte solo con las funciones del mando para ver si consigo
hacerlo funcionar correctamente y luego estudiare de qué forma se implanta en el código general del ROV.

27/12/2020 Arreglo la definición de la función millis, estaba creada mediante
Int intervaloMedidas();
Int auxMillis();
El programa hacia cosas raras, porque la definición correcta es
Unsigned long intervaloMedidas();
Unsigned long auxMillis();
Aquí lo explica mejor
https://www.luisllamas.es/multitarea-en-arduino-blink-sin-delay/

A partir de Octubre del 2021, empiezo a usar las pestañas del IDE de arduino, para separar  el void setup del programa, de los void loop de cada uno de los sensores y 
perifericos, usados en el proyecto

El software se proporciona “tal cual”, sin ningún tipo de garantía ni expresa ni implícita,
incluyendo las garantías comerciales. Solo para uso particular NUNCA comercial.
En ningún caso el autor se responsabiliza de ningún tipo de daño derivado del uso del programa.

About

En este repositorio, voy a publicar las modificaciones hechas a los programas para controlar un ROV, he empezado los programas con el IDE de Arduino, pero en vista del tamaño y la complicación de los códigos, ahora estoy utilizando Visual Studio Code, mas Platfor IO

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published