Tengo un sistema de 3 nodos (y una PC). El nodo central solicita a los otros 2 nodos algunos datos (y también se los envía a ellos) de forma inalámbrica mediante nRF24 (protocolo de propiedad nórdica de 2,4 Ghz). El nodo central luego envía un paquete a un software que he escrito usando Java. Esta transmisión se realiza utilizando el módulo Bluetooth HC05 utilizando el perfil SPP.
Java escucha en el puerto serie de la PC. Cuando los datos están disponibles, le adjunta una marca de tiempo, luego procesa y guarda los datos en algún lugar.
El problema es que no obtengo una respuesta de tasa fija de mi nodo central.
Aquí está la estructura del código del nodo central:
void loop() {
current = millis();
if (current - prev > 20) {
prev = current;
talkToOtherNodes();
sendToPCViaBluetooth();
}
1- He hecho la depuración en el nodo central usando impresiones. El bucle principal se ejecuta en 20 ms de tasa fija.
2- talkToOtherNodes () toma 15ms max. Así que tengo ~ 5 ms de espacio libre
3- Estoy hablando con HC05 a través de un UART con un golpe fuerte . Mi tasa de baudios requerida es ~ 32000 pero se establece en 57600 (su valor máximo posible)
Aquí hay un gráfico que muestra mi frecuencia de muestreo de depuración de bajo nivel (es de ~ 20 ms):
YaquíhayungráficoquemuestramifrecuenciademuestreodelladodeJava(lasprimeras200muestrasnosonválidas):
Preguntas:
1- ¿Es incluso posible esperar una transmisión de datos inalámbrica de velocidad fija utilizando el módulo Bluetooth HC05 con perfil SPP?
2- En general ( WiFi, BLE, ...)?
3- Si no, ¿hay algún problema con mis códigos del lado de Java o es la limitación de Java / PC / Windows?
Gracias por tu ayuda.