MaxiJuarez33 / ProyectoFinal-Informatica2

Proyecto Final de Informatica 2 - SCOREH Integrantes: De Biaggio; Decilli; Juarez
0 stars 0 forks source link

Software #6

Closed MaxiJuarez33 closed 6 months ago

MaxiJuarez33 commented 7 months ago

Tirar ideas del funcionamiento y utilidades del software tanto base como opciones alternativas a futuro

MaxiJuarez33 commented 7 months ago

Transmision y recepcion de datos

Suponiendo que la comunicacion es inalambrica

Hay cuatro opciones:

La mas barata seria la de dos arduinos, ya que tenemos todo lo que necesitamos para esta comunicacion, pero no es la mejor para la comunicacion entre la computadora porque hay que hacer un sistema de calls para cuando se requiere una recepcion o una transmision. Usando las otras alternativas seria mas facil la comunicacion porque se pueden hacer varios buses de transmision independientes, lo mejor es un ESP32 que nos permitira usar una base de datos.

Suponiendo que la comunicacion es alambrica

Hay dos opciones

Haciendo la simulacion del sistema de hardware lo mas pobre posible, usariamos un solo controlador y conectado a la pc

En resumen

El uso de que tipo de comunicacion y que tipo de sistema usemos para la transmision y recepcion depende, principalmente, de la cantidad de pines que necesitamos en la placa, como dependencias secundarias esta el gusto de cada uno. Seguido a lo anterior y a lo proximo; lo ideal es usar una comunicacion con doble UART para un flujo asincrono y mas facil de leer y manejar. Una de las posibilidades con wifi esta disponible ya mismo pero no es la mejor en version a la complejidad del proyecto, lo mejor es el ESP32.

MaxiJuarez33 commented 7 months ago

Organizacion de Arduino

Como era de esperar; Arduino no permite ejecutar mas de un .ino a la vez, por lo que hay varias formas de hacer nuestro codigo si no queremos tener un solo programa de 500 lineas, al no ser que programamos usando metodos nuevos

Cabeceras y archivos .cpp

Unico metodo para separar por archivos

Esto puede varias si lo hacemos por cada elemento o por zonas, pero en general la idea es usar las cabeceras (.h) para definir variables y ese tipo de cosas de los sensores y actuadores; los archivos .cpp es donde estarian declaradas las funcionalidades que tengan los sensores o actuadores

Metodos nuevos

Nucleos

El ESP32 que vamos a usar tiene 2 nucleos, asi que no quedaria tan mal programar cosas dividiendo las funciones y tareas por nuceo, por ejemplo uno es para el tema de los datos de sensores y otro para los datos para los actuadores. Este metodo va a permitir que tengamos un .ino ordenado pero puede que sea un desperdicio de potencial si tenemos relativamente pocos elementos externos

Multithreading

Esto puede ir de la mano con los nucleos pero no es necesario uno para otro. Usando este metodo se programarian las cosas de manera normal, por funciones o clases, el cambio esta en como se ejecutan en el loop. Arduino ejecuta las lineas de codigo de manera lineal o sincrona, por por lo que no puede haber dos funciones actuando al mismo tiempo, esto puede llegar a perjudicar el tema de los datos en tiempo real. Usando este metodo podemos establecer los hilos como funciones para permitir ejecutarlas al mismo tiempo o por intervalos, hasta es posible hacer rutinas, hay que investigar mejor esto.

Async

Una alternativa igual pero diferente al multithreading es la programacion asincrona. Esto nos permite crear respuestas en base a eventos o callbacks, puede ser mas util para la parte de procesamiento en C/C++ pero lo dejo aca asi analizamos mejor las opciones.

En resumen

De estas opciones, la que veo mas conveniente para un mayor entendimiento de la escructura, es usar un metodo nuevo; estos metodos los encontre investigando sobre arduino, puede que buscando especificamente sobre ESP32 cambie la cosa y haya mas opciones. Los tres metodos nuevos pueden ser unificados pero esto lo analizamos sobre la marcha, dependiendo que metodo usemos.