Arduino
HC-11/HC-12
Transmisor-Receptor 433MHz
Ejercicio 1
Adrián Neil
Adrián Neil
HC-11/HC-12
Es imprescindible el uso de una antena
En la figura vemos el módulo con una antena helicoidal soldada
Adrián Neil
HC-11/HC-12
Conector para
Antena Exterior
Adrián Neil
HC-11/HC-12
Conector para
Antena Exterior
Adrián Neil
HC-11/HC-12
VISTA
SUPERIOR
VISTA
INFERIOR
Terminales
a conectar
a Arduino
Adrián Neil
HC-11/HC-12
Para que la comunicación semiduplex se establezca tanto el modulo
receptor como el transmisor debe tener la misma configuración.
Igual canal de comunicación
Igual velocidad la velocidad de comunicación
(transmisión/recepción)
Adrián Neil
HC-11/HC-12
Pata “set” a masa
para programar:
velocidad, canal,
modo, y potencia
de transmisión.
Modulo
programado
listo para usar
Adrián Neil
HC-11/HC-12
Con el pin etiquetado como “Set” conectado a masa, y los
demás pines como indica el esquema anterior, cargamos en la
placa de Arduino el sketch AT commanders (Comandos AT)
Adrián Neil
HC-11/HC-12
Comandos AT
//HC-12 AT Commander. Autor Tom Heylen tomtomheylen.com
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // (RX, TX) (RX del HC-12 a 3 de Arduino[TX])
// (RX, TX) (TX del HC-12 a 2 de Arduino[RX]) //Terminal Set a GND
void setup() {
Serial.begin(9600);
Serial.println("Enter AT commands:");
mySerial.begin(9600);
}
void loop(){
if (mySerial.available()){
Serial.write(mySerial.read());
}
if (Serial.available()){
mySerial.write(Serial.read());
}
}
Adrián Neil
HC-11/HC-12
Comandos AT
Luego de subirlo a la placa Arduino abrimos el monitor serie.
Aparecerá la siguiente leyenda
Escribimos en el cuadro de dialogo la leyenda AT
Presionamos ENTER o cliqueamos sobre el comando enviar
El modulo HC-11/12 responderá a través de la placa de Arduino OK
Adrián Neil
HC-11/HC-12
Comandos AT
TIPs a tener en cuenta para utilizar los COMANDOS AT
•El terminal Transmisor del HC12 (Tx) va al terminar Receptor de Arduino (Rx)
Respetando la configuración programada (SoftwareSerial mySerial(2, 3); // (RX, TX))
•El terminal Receptor del HC12 (Rx) va al terminar Transmisor de Arduino (Tx)
Respetando la configuración programada (SoftwareSerial mySerial(2, 3); // (RX, TX))
•Si estoy configurando el terminal Set debe estar enviado a masa antes de
cargar el programa
Adrián Neil
HC-11/HC-12
Comandos AT
Si ahora escribimos en el cuadro de dialogo la leyenda AT+RX
Al presionar ENTER obtenemos la configuración de
todos los parámetros de nuestro modulo HC-12
U: modo.
B: velocidad en baudios.
C: canal de radio.
P: potencia
Adrián Neil
HC-11/HC-12
Comandos AT
1.AT – comando de prueba. Retornará OK si la interfaz AT está habilitada
2. AT + Bxxxx: establece la velocidad en baudios del puerto serie. Por
ejemplo, AT + B57600 establece la velocidad en baudios a 57600bps
3. AT + Cxxx – establece el canal de radio. Los canales comienzan desde
001 a 433,4MHz. Cada siguiente canal añade 400kHz. El canal 100 es
473,0MHz. AT + C002 ajustará la frecuencia a 433,8MHz. Dos dispositivos
HC-12 que crean un enlace inalámbrico tienen que operar en la misma
frecuencia
Adrián Neil
HC-11/HC-12
Comandos AT
4. AT + FUx – configura el modo de dispositivo: FU1, FU2, FU3 o FU4.
Dos dispositivos HC-12 que crean un enlace inalámbrico tienen que
usar el mismo modo
5. AT + Px: configura la potencia de transmisión del dispositivo. Por
ejemplo, AT + P2 ajusta la potencia a 2dBm (1.6mW)
1.1. -1dBm (0.8mW)
2.2. 2dBm (1.6mW)
3.3. 5dBm (3.2mw)
4.4. 8dBm (6.3mW)
5.5. 11dBm (12mW)
6.6. 14dBm (25mW)
7.7. 17dBm (50mW)
8.8. 20dBm (100mW)
Adrián Neil
HC-11/HC-12
Comandos AT
6. AT + RX – recupera todos los parámetros: modo, canal,
velocidad de transmisión, potencia
7. AT + V – recuperar la versión del módulo
8. AT + DEFAULT: restablece los parámetros del módulo a la
configuración predeterminada
Adrián Neil
HC-11/HC-12
Es recomendable programar las dos placas trasmisora y receptora
simultáneamente para asegurar la paridad, y luego continuar con el armado
Adrián Neil
HC-11/HC-12
Adrián Neil
HC-11/HC-12
Escribimos en el cuadro de dialogo la leyenda AT+RX
Al presionar ENTER obtenemos la configuración de todos los parámetros de nuestro
modulo HC-12
U: modo.
B: velocidad en baudios.
C: canal de radio.
P: potencia
Es recomendable programar las dos placas trasmisora y receptora simultáneamente para
asegurar la paridad, y luego continuar con el armado
En caso de dudas sobre los parámetros, con AT + RX – recuperamos todos los parámetros:
modo, canal, velocidad de transmisión, potencia
Adrián Neil
HC-11/HC-12
Armamos la placa trasmisora con un pulsador para enviar un dato
Al presionar el pulsador enviamos un 1, HIGH, o alto, a la pata 8 de Arduino
Entonces el modulo HC-12 trasmite el código guardado en Arduino
Adrián Neil
HC-11/HC-12
Adrián Neil
HC-11/HC-12 Trasmitir un código al presionar el pulsador
//HC-12 Momentary Button Send
//Autor Tom Heylen tomtomheylen.com
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX(Arduino), TX(Arduino)
int buttonPin = 8;
boolean onOff = 0; //boolean, 0 o 1 , en este caso 0
void setup() {
pinMode(buttonPin, INPUT);
mySerial.begin(9600);
}
void loop() {
int buttonState = digitalRead(buttonPin);//lee si el pulsador está presionado
if(buttonState == 1){//si el ulsador está presionado
mySerial.println(1111);//envía el codigo que reconocerá el receptor. En este caso 1111
onOff = 1;//establece el valor boolano a onoff de 1.
}
if(buttonState == 0 && onOff == 1){//Verifica para enviar señal una vez
mySerial.println(0000);//envíe un código único al receptor para apagarlo. En este caso 0000
}
delay(20);//pequeña demora para una mejor comunicación serial
}
Adrián Neil
HC-11/HC-12
Armamos la placa receptora con un led con su resistencia de 120 Ohms
entre la pata 13 y masa de Arduino
La pata 13 está normalmente en 0, LOW, o bajo.
Al recibir el código adecuado desde nuestro trasmisor, Arduino lo reconoce y la pata
13 pasa a 1, HIGH, alto.
Adrián Neil
HC-11/HC-12
Adrián Neil
HC-11/HC-12 Encender un led al recibir el código correcto
//HC-12 Momentary Button Receive
//Autor Tom Heylen tomtomheylen.com
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX(Arduino), TX(Arduino)
int ledPin = 13;
void setup() {
mySerial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
if(mySerial.available() > 1){
int input = mySerial.parseInt();//lee la entrada serie y la convierte en entero
if(input == 1111){//si el codigo de encendido es recibido
digitalWrite(ledPin, HIGH);//prendo el led
}
if(input == 0000){//si el codigo de apagado es recibido. En este caso 0000
digitalWrite(ledPin, LOW);//apago el led
}
}
mySerial.flush();//borrar o limpia el búfer serie
delay(20);//pequeña demora para una mejor comunicación serial
}
Adrián Neil
HC-11/HC-12
Con nuestra programación hacemos que el conexionado básico del trasmisor sea igual
al del receptor, la diferencia está en el agregado del pulsador o del led
Adrián Neil
HC-11/HC-12
•El HC-12 es un transceptor con buen alcance.
•Es satisfactorio para la mayoría de los pasatiempos y aplicaciones industriales.
•Es una alternativa muy económica, de baja potencia.
•Su alcance y simplicidad de uso hacen que el HC-12 sea una excelente opción para
proyectos.
•Es ideal para monitorear dentro de un ámbito y sin cables, múltiples puntos
simultáneamente.