Buenas tardes, necesito ayuda, no me funciona bien la comunicación serie de los módulos hc12.
tanto en el receptor como emisor ya tengo los mismos parámetros en cuanto a comandos AT. en realidad son lo de por defecto, pero aun así los he revisado en los dos.
En el nano con el hc12 emisor lo tengo conectado a los pines 10 11 uso la librería SoftwareSerial,
uso el comando Serial.print ("a"); para mandarlo por el hc12.
//para uso en arduino nano//
//modulo maestro//
//para cajoneras 2.0 o para modulos individuales
//este sketh es para modulo maestro y 8 reles pines 2 a 9
//tambien tiene habilitada 4 pines de entrada pulsador 12 a 13 (ojo este ultimo es con led)
//puerto serie 2 en pines rx 10 y tx 11
//variables
//A off pin 2 compresor
//B off pin 3 CONVERTIDOR
//C off pin 4 USB
//D off pin 5 NEVERA
//E off pin 6 LUZ INTERIOR
//F off pin 7 LUZ TRASERA
//G off pin 8 AGUA
//H off pin 9 CALENTADOR
//a on pin 2
//b on pin 3
//c on pin 4
//d on pin 5
//e on pin 6
//f on pin 7
//g on pin 8
//h on pin 9
//z todo off
///
#include <SoftwareSerial.h>
SoftwareSerial serial2(10, 11); //10RX 11TX
int button1 = 0;
int button2 = 0;
int estadoluz = 0;
int estadoagua = 0;
void setup()
{
//pines reles
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
pinMode(3,OUTPUT);
digitalWrite(3,HIGH);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
pinMode(5,OUTPUT);
digitalWrite(5,HIGH);
pinMode(6,OUTPUT);
digitalWrite(6,HIGH);
pinMode(7,OUTPUT);
digitalWrite(7,HIGH);
pinMode(8,OUTPUT);
digitalWrite(8,HIGH);
pinMode(9,OUTPUT);
digitalWrite(9,HIGH);
//pines entrada
pinMode(12,INPUT);
pinMode(13,INPUT);
// BLUETOOTH
Serial.begin(9600);
// HC-12
serial2.begin(9600);
}
void loop()
{
button1 = digitalRead(12);
button2 = digitalRead(13);
if (button1 == 1) {
if (estadoluz == 1) { digitalWrite(6,HIGH); estadoluz = 0;
} else { digitalWrite(6,LOW); estadoluz = 1;
}
}
if (button2 == 1) {
if (estadoagua == 1) { digitalWrite(8,HIGH); estadoagua = 0;
} else { digitalWrite(8,LOW); estadoagua = 1;
}
}
char c = Serial.read();
if (c == 'A') { digitalWrite(2,HIGH); serial2.print('b');
}
if (c == 'B') { digitalWrite(3,HIGH);
}
if (c == 'C') { digitalWrite(4,HIGH);
}
if (c == 'D') { digitalWrite(5,HIGH);
}
if (c == 'E') {digitalWrite(6,HIGH);
}
if (c == 'F') { digitalWrite(7,HIGH);
}
if (c == 'G') { digitalWrite(8,HIGH);
}
if (c == 'H') { digitalWrite(9,HIGH);
}
if (c == 'I') {serial2.print(2);}
if (c == 'J') {serial2.print("J");
}
if (c == 'K') {serial2.print("K");
}
if (c == 'L') {serial2.print("L");
}
if (c == 'M') {serial2.print("M");
}
if (c == 'N') {serial2.print("N");
}
if (c == 'O') {serial2.print("O");
}
if (c == 'P') {serial2.print("P");
}
if (c == 'Q') {serial2.print("Q");
}
if (c == 'R') {serial2.print("R");
}
if (c == 'S') {serial2.print("S");}
if (c == 'T') {serial2.print("T");}
if (c == 'U') {serial2.print("U");}
if (c == 'V') {serial2.print("V");}
if (c == 'W') {serial2.print("W");}
if (c == 'X') {serial2.print("X");}
if (c == 'Y') {serial2.print("Y");}
if (c == 'a') { digitalWrite(2,LOW); serial2.print("a");
}
if (c == 'b') { digitalWrite(3,LOW);
}
if (c == 'c') { digitalWrite(4,LOW);
}
if (c == 'd') { digitalWrite(5,LOW);
}
if (c == 'e') { digitalWrite(6,LOW);
}
if (c == 'f') { digitalWrite(7,LOW);
}
if (c == 'g') { digitalWrite(8,LOW);
}
if (c == 'h') { digitalWrite(9,LOW);
}
if (c == 'i') {serial2.print(1);}
if (c == 'j') {serial2.print("j");}
if (c == 'k') {serial2.print("k");}
if (c == 'l') {serial2.print("l");}
if (c == 'm') {serial2.print("m");}
if (c == 'n') {serial2.print("n");}
if (c == 'o') {serial2.print("o");}
if (c == 'p') {serial2.print("p");}
if (c == 'q') {serial2.print("q");}
if (c == 'r') {serial2.print("r");}
if (c == 's') {serial2.print("s");}
if (c == 't') {serial2.print("t");}
if (c == 'u') {serial2.print("u");}
if (c == 'v') {serial2.print("v");}
if (c == 'w') {serial2.print("w");}
if (c == 'x') {serial2.print("x");}
if (c == 'y') {serial2.print("y");}
if (c == 'z') {digitalWrite(2,HIGH),
digitalWrite(3,HIGH),
digitalWrite(4,HIGH),
digitalWrite(5,HIGH),
digitalWrite(6,HIGH),
digitalWrite(7,HIGH),
digitalWrite(8,HIGH),
digitalWrite(9,HIGH),
serial2.print("z");
}
//delay(1000);
}
el receptor, en este caso el nano tiene conectado el modulo hc12 directamente en rx y tx, uso un chard c = serial.read para leer el puerto serie. Luego uso if para comparar el resultado y activar el pin 13.
void setup()
{
Serial.begin(9600); // Debugging only
pinMode(13, OUTPUT); //Configuramos el pin del Led como entrada
digitalWrite(13, false);
}
void loop()
{
uint8_t dato;
uint8_t datoleng=1;
//verificamos si hay un dato valido en el RF
dato = Serial.read();
if((char)dato=='a')
{
digitalWrite(13, true); //Encendemos el Led
}
else if((char)dato=='b')
{
digitalWrite(13, false); //Apagamos el Led
}
}
Problema: si veo parpadear el rx del receptor pero no activa el led.
No se si ando haciendo algo mal con este modulo o que.