Firmware 2 - USB-EC3883-III-2019/EC3883-G09 GitHub Wiki
Diagrama de flujo del proceso por etapas
Luego de la inicialización de las variables y constnates, el programa se mantiene a la espera de que le llegue un mensaje de la PC: en el caso de master, el mensaje contiene la trama completa, con las zonas incluidas, mientras que en el caso de slave la trama contiene solo ceros excepto los dos primero bits del primer byte. Para verificar si el sistema se ha de comportar como master o slave, se verifica el segundo bit del primer byte: si el bit es 0, el modo es slave.
Una vez el mensaje haya llegado desde la PC al microcontrolador y se haya detectado el modo master, el motor se moverá a la mitad de la primera zona definida en la trama y posteriormente la elimina colocando ceros en el lugar de donde tomó la zona. Luego, pasará a alternar entre dos estados: enviar y recibir data por el infrarrojo. En el estado de envío de data, el sistema enviará la trama cuatro veces cada vez que ocurra una interrupción temporal de 50ms. En el estado de recepción, primero limpia el buffer para evitar leer lo mismo que envió y se mantiene a la espera de que le llegue algún mensaje, en caso de que esto ocurra, verifica si todas las zonas están en cero, lo que significa que el mensaje recorrió las 4 torres, y lo envía a la PC. En caso de que no reciba ningún mensaje en cuatro marcos de tiempo de 50ms (200ms en total), el sistema cambia al estado de evío del mensaje.
Una vez el mensaje haya llegado desde la PC al microcontrolador y se haya detectado el modo slave, el sistema se mantiene a la espera de que le llegue algún mensaje. Una vez esto ocurre, procede a la lectura de la zona a la cual debe moverse el motor y se sitúa en esta para luego enviar constantemente el mensaje recibido cada 50ms
Para el caso de la comunicación entre torres, se diseñó una como la que se muestra en la siguiente imagen. Para enviar con el LED infrarrojo y recibir con el TSOP1136, se hizo uso del puerto serial secundario del microcontrolador definido en los pines PTC6 y PTC7 los cuales implementan el protocolo de comunicación RS232. El pin de transmisión se conecto a una de las entradas de una compuerta lógica AND mientras que la otra se conectó la señal PWM a 36KHz y a la salida se tiene la señal modulada. Cabe destacar que la señal del puerto serial secundario del microcontrolador debe estar invertida, según las especificaciones del sensor receptor. La tasa de envío es de 3500 baudios
Trama definida para la comunicación entre torres y torre-PC
Para el caso de la comunicación entre el PC y el microcontrolador, se utilizaron conexiones alámbricas (interfaz DB9) con una tasa de baudios de 115200. Para indicar desde la PC al microcontrolador el modo, se modificaba el segundo bit del primer byte de la trama, siendo 1 si debía actuar como slave o 0 si debía actuar como master.