Closed MaxiJuarez33 closed 6 months ago
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.
Hay dos opciones
Haciendo la simulacion del sistema de hardware lo mas pobre posible, usariamos un solo controlador y conectado a la pc
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.
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
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
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
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.
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.
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.
Tirar ideas del funcionamiento y utilidades del software tanto base como opciones alternativas a futuro