Firmata with Bluetooht module on Serial2 (TX2, RX2)?

Hi there,

I'm using an Arduino DUE board with a HC-06 Bluetooth module connected to Serial 2 (TX2, RX2). My arduino programming looks like the standard AllInputsFirmata example:

#include <Firmata.h>

byte pin;

int analogValue;
int previousAnalogValues[TOTAL_ANALOG_PINS];

byte portStatus[TOTAL_PORTS];	// each bit: 1=pin is digital input, 0=other/ignore
byte previousPINs[TOTAL_PORTS];

/* timer variables */
unsigned long currentMillis;     // store the current value from millis()
unsigned long previousMillis;    // for comparison with currentMillis
/* make sure that the FTDI buffer doesn't go over 60 bytes, otherwise you
   get long, random delays.  So only read analogs every 20ms or so */
int samplingInterval = 19;      // how often to run the main loop (in ms)

void sendPort(byte portNumber, byte portValue)
{
  portValue = portValue & portStatus[portNumber];
  if (previousPINs[portNumber] != portValue) {
    Firmata.sendDigitalPort(portNumber, portValue);
    previousPINs[portNumber] = portValue;
  }
}

void setup()
{
  byte i, port, status;

  Firmata.setFirmwareVersion(0, 1);

  for (pin = 0; pin < TOTAL_PINS; pin++) {
    if IS_PIN_DIGITAL(pin) pinMode(PIN_TO_DIGITAL(pin), INPUT);
  }

  for (port = 0; port < TOTAL_PORTS; port++) {
    status = 0;
    for (i = 0; i < 8; i++) {
      if (IS_PIN_DIGITAL(port * 8 + i)) status |= (1 << i);
    }
    portStatus[port] = status;
  }

  Firmata.begin(9600);
}

void loop()
{
  byte i;

  for (i = 0; i < TOTAL_PORTS; i++) {
    sendPort(i, readPort(i, 0xff));
  }
  /* make sure that the FTDI buffer doesn't go over 60 bytes, otherwise you
     get long, random delays.  So only read analogs every 20ms or so */
  currentMillis = millis();
  if (currentMillis - previousMillis > samplingInterval) {
    previousMillis += samplingInterval;
    while (Firmata.available()) {
      Firmata.processInput();
    }
    for (pin = 0; pin < TOTAL_ANALOG_PINS; pin++) {
      analogValue = analogRead(pin);
      if (analogValue != previousAnalogValues[pin]) {
        Firmata.sendAnalog(pin, analogValue);
        previousAnalogValues[pin] = analogValue;
      }
    }
  }
}

In my simple windows 10 app I try do switch the onboard LED but it does not work.

Do I need to do some special setup because the bluetooth is connected on Serial2 and not on Serial? Or do I need to tell firmata that it should use bluetooth module on Serial2? But how?

Thanks & best regards, Andreas

Ok, I tried this:

Arduino:

Serial2.begin(9600); //bluetooth
Firmata.begin(Serial2);

Win10 universal App:

public MainPage()
        {
            this.InitializeComponent();

            connection = new BluetoothSerial("HC-06");
            connection.begin(9600, SerialConfig.SERIAL_8N1);
            arduino = new RemoteDevice(connection);

        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            arduino.digitalWrite(13, PinState.HIGH);

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            arduino.digitalWrite(13, PinState.LOW);
            
        }

but with noch effect.