0% encontró este documento útil (0 votos)
32 vistas20 páginas

Cap 7

Este documento describe un sistema de alarma inalámbrico utilizando módulos de transmisión y recepción RF de 433MHz con Arduino. Los módulos permiten la transmisión remota de datos como la temperatura y humedad medida por un sensor DHT11. El sistema incluye un transmisor Arduino que envía los datos y un receptor Arduino que los recibe y los muestra en un display Nokia 5110. La librería VirtualWire se utiliza para facilitar la comunicación inalámbrica entre los Arduinos.

Cargado por

mparejacurso
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas20 páginas

Cap 7

Este documento describe un sistema de alarma inalámbrico utilizando módulos de transmisión y recepción RF de 433MHz con Arduino. Los módulos permiten la transmisión remota de datos como la temperatura y humedad medida por un sensor DHT11. El sistema incluye un transmisor Arduino que envía los datos y un receptor Arduino que los recibe y los muestra en un display Nokia 5110. La librería VirtualWire se utiliza para facilitar la comunicación inalámbrica entre los Arduinos.

Cargado por

mparejacurso
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 20

Control, adquisición y

monitoreo con Arduino y


Visual Basic .net
MTRO. RUBEN OLIVA RAMOS
Capítulo 7: Sistema de Alarma
inalámbrica
Conexión de dispositivos
Características de los
módulos: transmisor

Voltaje de alimentación 3v-12v

Corriente de Operación 5-50mA

Tasa de Transferencia 2.4KHz(Max 9.6KHz)

Modulación AM

Frecuencia de operación 433MHz

Rango de Transmisión Según el fabricante hasta 1000m


Receptor:

Voltaje de Alimentación 5v

Modulación ASK

Frecuencia de Operación 433MHz


Librería virtual wire

Estos módulos son muy diversos y tiene muchas ventajas , una de ellas
es que reciben casi cualquier señal digital, si quisiéramos usarlos en un
PIC o en un AVR podríamos usarlos con comunicación UART. Arduino
tiene una librería llamada “VirtualWire” que nos ahorra problemas con
la comunicación.
Funciones de configuración
vw_set_tx_pin(transmit_pin)
Define el pin de transmisión de datos, de no indicar alguno la librería
usa el pin 12.
vw_set_rx_pin(receive_pin)
Define el pin de recepción de datos, de no indicar alguno la librería usa
el pin 11.
vw_setup(2000)
Inicia la comunicación a la velocidad indicada.
Funciones de transmisión
vw_send(message, length)
Función que se encarga de enviar datos alojados en la
variable “message” con longitud “length”.
vw_tx_active()
Función booleana que devuelve “true” si el mensaje se envió
correctamente.
vw_wait_tx()
Genera el tiempo de espera necesario para poder enviar otro mensaje.
Funciones de recepción
vw_rx_start()
Función para comenzar la recepción de datos.
vw_have_message()
Función booleana que devuelve “true” si el mensaje se recibió
correctamente.
vw_get_message(buf, &buflen))
Se encarga de leer y almacenar en un bufffer el mensaje recibido, el
término “buflen” es una matriz de datos
vw_rx_stop()
Detiene la recepción de datos.
Ejemplo en Arduino
Aplicación lectura de canal analógico
y envio de forma inalambrica
Materiales:
2 Arduinos UNO R3 Compatibles
2 cables USB
1 placa de prototipos / One protoboard 170 pins
1 juego cables para el kit,/ Jumper cables
1 transmisor RF 433Mhz / TX
1 receptor RF 433 Mhz / RX
1 Sensor DHT11 temperatura y humedad / DHT 11
Descripción:

La transmisión de datos se hace de una forma remota de uno a otro


arduino. El arduino receptor visualiza en el ordenador y a través del
puerto serie los datos de temepratura y humedad que envía el arduino
transmisor.
Envio de mensajes

#include <VirtualWire.h>

String mensagem;

void setup()
{
Serial.begin(9600);
//Define o pino 8 do Arduino como
//o pino de dados do transmissor
vw_set_tx_pin(8);
vw_setup(2000); // Bits per sec
Serial.println("Digite o texto e clique em
ENVIAR...");
}
void loop()
{
char data[40];
int numero;
if (Serial.available() > 0)
{
numero = Serial.readBytesUntil
(13,data,40);
data[numero] = 0;
Serial.print("Enviado : ");
Serial.print(data);
Serial.print(" - Caracteres : ");
Serial.println(strlen(data));
//Envia a mensagem para a rotina que
//transmite os dados via RF
send(data);
}
}

void send (char *message)


{
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx(); // Aguarda o envio de dados
}
Receptor:
//Programa : Receptor RF com Arduino Mega e Display Nokia 5110
//Autor : Arduino e Cia

#include <Adafruit_GFX.h> //Carrega a biblioteca do display


#include <Adafruit_PCD8544.h> //Carrega a biblioteca grafica
#include <VirtualWire.h>

byte message[VW_MAX_MESSAGE_LEN]; // Armazena as mensagens recebidas


byte msgLength = VW_MAX_MESSAGE_LEN; // Armazena o tamanho das
mensagens

// Pinagem do LCD :
// pin 8 - Serial clock out (SCLK)
// pin 9 - Serial data out (DIN)
// pin 10 - Data/Command select (D/C)
// pin 11 - LCD chip select (CS/CE)
// pin 12 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);
//Inicializa e seta os parametros do display
void setup() {
Serial.begin(9600);
vw_set_rx_pin(5); // Define o pino 5 do Arduino como entrada
//de dados do receptor
vw_setup(2000); // Bits por segundo
vw_rx_start(); // Inicializa o receptor

display.begin();
display.setContrast(50); //Ajusta o contraste do display
display.clearDisplay(); //Apaga o buffer e o display
display.setTextSize(1); //Seta o tamanho do texto
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(0,0); //Seta a posição do cursor
display.print("Aguardando...");
display.display();
delay(2000);

}
void loop()
{
uint8_t message[VW_MAX_MESSAGE_LEN];
uint8_t msgLength = VW_MAX_MESSAGE_LEN;

display.setCursor(0, 0); //Seta a posição do cursor


if (vw_get_message(message, &msgLength)) // Non-blocking
{
Serial.print("Recebido: ");
display.clearDisplay(); //Apaga o buffer e o
display
for (int i = 0; i < msgLength; i++)
{
Serial.write(message[i]);
display.write(message[i]);
display.display();
}
Serial.println();
}
}

También podría gustarte