[AYUDA] Trabajo de Investigación sobre Domótica (2do Bachillerato).

Hola, me llamo José Luis Pérez y estoy haciendo un trabajo de investigación sobre la domótica y tengo unos cuantos problemas en relación a la conexión Bluetooth entre la placa y el dispositivo que envia los datos.
En mi proyecto estoy utilizando una Arduino Leonardo, un módulo Bluetooth HC-06, una placa de 8 relés a 12 voltios, un regulador de corriente que funciona con 12 voltios y alimenta a 12 y 5 voltios y una bateria de 12 voltios.
Mi problema es que cuando yo envío un dato (por ejemplo, un “1”) desde el monitor serial, la placa me actúa correctamente pero si en vez de enviarlo por el monitor serial, lo envío desde mi dispositivo móvil con el módulo conectado a la placa no funciona nada.
Yo deduzco que el problema esta entre la conexión módulo/placa o en el código ya que el módulo se me conecta sin problemas a mi dispositivo móvil.
Si tenéis alguna sugerencia o algún cambio en el código que pueda solucionarme el problema os lo agradecería de veras.
Un saludo,
José Luis Pérez.

PS: Os adjunto el código por si encontráis algún error.

/*
  Programa para el control domótico de la maqueta del trabajo de investigación de José Luis Pérez.
  La maqueta consta de diferentes mecanismos y controles de iluminación que seran controlados por el siguiente programa.
*/

#include <Servo.h>

String dato;
Servo PinIn1;                // Pin que corresponde al relé que controla el servo de la persiana.
Servo PinIn2;                // Pin que corresponde al relé que controla el servo de la puerta de la entrada.
Servo PinIn3;                // Pin que corresponde al relé que controla el servo de la puerta del garaje.
int PinTxBluetooth = 0;      // Pin por el que el bluetooth transmite información a la arduino.
int PinRxBluetooth = 1;      // Pin por el que el bluetooth recibe información de la arduino.
int PinIn4 = 5;              // Pin que corresponde al relé que controla el zumbador y la luz de la alarma en paralelo.
int PinIn5 = 6;              // Pin que corresponde al relé que controla la luz del garaje.
int PinIn6 = 7;              // Pin que corresponde al relé que controla la luz exterior.
int PinIn7 = 8;              // Pin que corresponde al relé que controla la luz del comedor.
int PinIn8 = 9;              // Pin que controla el sistema de seguridad de la cocina (ventilador + termoresistencia).
int LuzHab = 10;             // Pin que controla la luz del dormitorio.
int LuzLavabo = 11;          // Pin que controla la luz del baño.  
int LuzCocina = 12;          // Pin que controla la luz de la cocina. 
int LuzArmario = 13;         // Pin que controla la luz del armario.
int Interruptormag = 14;     // Pin que controla el interruptor magnético (Pin 14 = A0).
int Fotoresistencia = A2;    // Pin que acciona la fotorresistencia.
int Termoresistencia = A3;   // Pin que controla la termoresistencia.
int estadoAlarma;
int termoresist;
int fotoresist;
int pos = 0;
unsigned long startTime = millis();
unsigned long interval = 3600000UL; // 3600 segundos (1 hora).


void setup() 
 {
  Serial.begin(9600);                 //inicializar la comunicación serial.
  PinIn1.attach(2);
  PinIn2.attach(3); 
  PinIn3.attach(4);
  pinMode(PinTxBluetooth, INPUT);
  pinMode(PinRxBluetooth, OUTPUT);
  pinMode(PinIn4, OUTPUT);
  pinMode(PinIn5, OUTPUT);
  pinMode(PinIn6, OUTPUT);
  pinMode(PinIn7, OUTPUT);
  pinMode(PinIn8, OUTPUT);
  pinMode(LuzHab, OUTPUT);
  pinMode(LuzLavabo, OUTPUT);
  pinMode(LuzCocina, OUTPUT);
  pinMode(LuzArmario, OUTPUT);
  pinMode(Interruptormag, INPUT);
  pinMode(Fotoresistencia, INPUT);
  pinMode(Termoresistencia, INPUT);
 }

void loop() {
  while (Serial.available()) { 
    delay(10);
     if (Serial.available() > 0) {
      char c = Serial.read();               
      dato += c;                            
      
  if (dato.length() > 0) {                     
     if(dato == "1") {                       // SERVO DE LA PERSIANA.
       for(pos = 0; pos < 720; pos += 1)
        {  
          PinIn1.write(pos); 
          delay(30); 
          Serial.println("Persiana abajo");
        } 
     }
     if(dato == "A") {
        for(pos = 720; pos >= 1; pos -= 1)
        {
          PinIn1.write(pos); 
          delay(30);
          Serial.println("Persiana arriba");
        } 
     }
     if(dato == "2") {                      // SERVO DE LA PUERTA DE LA ENTRADA.
       for(pos = 0; pos < 90; pos += 1)
        { 
          PinIn1.write(pos); 
          delay(15);
          Serial.println("Puerta abierta");
        } 
     }
     if(dato == "B") {
       for(pos = 90; pos >= 1; pos -= 1) 
        {
          PinIn1.write(pos); 
          delay(15);  
          Serial.println("Puerta cerrada");
        } 
     }
     if(dato == "3") {                      // SERVO DE LA PUERTA DEL GARAJE
       for(pos = 0; pos < 180; pos += 1) 
        { 
          PinIn1.write(pos);
          delay(30); 
          Serial.println("Garaje abierto");
        } 
     }
     if(dato == "C") {
       for(pos = 180; pos >= 1; pos -= 1)
        {
          PinIn1.write(pos);
          delay(30);
          Serial.println("Garaje cerrado");
        }
     }
     if(dato == "4") {
         digitalWrite(PinIn5, HIGH);
         Serial.println("Luz de garaje encendida");
     }
     if(dato == "D") {
         digitalWrite(PinIn5, LOW);
         Serial.println("Luz de garaje apagada");
     }
     if(dato == "5") {
         digitalWrite(PinIn7, HIGH);
         Serial.println("Luz comedor encendida");
     }
     if(dato == "E") {
         digitalWrite(PinIn7, LOW);
         Serial.println("Luz comedor apagada");
     } 
     if(dato == "6") {
         digitalWrite(LuzHab, HIGH);
         Serial.println("Luz del dormitorio encendida");
     }
     if(dato == "F") {
         digitalWrite(LuzHab, LOW);
         Serial.println("Luz del dormitorio apagada");
     }
     if(dato == "7") {
         digitalWrite(LuzLavabo, HIGH);
         Serial.println("Luz del baño encendida");
     }
     if(dato == "G") {
         digitalWrite(LuzLavabo, LOW);
         Serial.println("Luz del baño apagada");
     }
     if(dato == "8") {
         digitalWrite(LuzCocina, HIGH);
         Serial.println("Luz de la cocina encendida");
     }
     if(dato == "H") {
         digitalWrite(LuzCocina, LOW);
         Serial.println("Luz de la cocina apagada");
     }
     if(dato == "9") {
         digitalWrite(LuzArmario, HIGH);
         Serial.println("Luz del armario encendida");
     }
     if(dato == "I") {
         digitalWrite(LuzArmario, LOW);
         Serial.println("Luz del armario apagada");
     }
     // CÓDIGO PARA LA ALARMA (POR ACABAR).
     if(dato == "10") {
         estadoAlarma = digitalRead(Interruptormag);
         if(estadoAlarma == '1') {
            digitalWrite(PinIn4, LOW);
            Serial.println("Alarma Desactivada");
         }
         if(estadoAlarma == '0') {
           while(millis() - startTime < interval) {
            digitalWrite(PinIn4, HIGH);
            delay(500);
            digitalWrite(PinIn4, LOW);
            delay(500);
           }
            Serial.println("Alarma activada");
         }
      }
      if(dato == "J") {
         digitalWrite(PinIn4, LOW);
         Serial.println("Alarma desactivada");
      }
       dato="";  
     }
    }     
   }
   fotoresist = analogRead(Fotoresistencia);
      if(fotoresist >= 200) {
        digitalWrite(PinIn6, LOW);
      }
      if(fotoresist < 200) {
        digitalWrite (PinIn6, HIGH);
      }
    termoresist = analogRead(Termoresistencia);
      if(termoresist < 30) {
        digitalWrite(PinIn8, LOW);
      }
      if(termoresist >=30) {
        digitalWrite(PinIn8, HIGH);
      }
}

Si estas usando el puerto serial no puedes usar los pines 0 y 1 para la comunicacion bluetooth.desconozco si el leonardo tiene mas puertos serie ,si no tendras que elegir entre usar esos pines solo para bluetooth o solo para el serial ,o bien usar la libreria SoftwareSerial que viene con el ide y definir otros pines como puerto virtual para el bluetooth

Hola. No hace ni 24 horas que he respondido esto mismo en otro post:

Según la documentación del leonardo:

Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using the ATmega32U4 hardware serial capability. Note that on the Leonardo, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class.

Osea que serial es para comunicar con el usb que lleva incluido, y para trabajar con los pines 0 y 1 debes utilizar Serial1.

Muchas gracias a los dos, he conseguido resolver mi duda. Un saludo. ;D