Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando
-- Tutorial de iniciación a Arduino --
Volver al índice del tutorial
___________________________
27C.- Bluetooth y Radio Frecuencia. FS1000A y JY-JS03. 433 MHz. App Inventor.
p9AA_bluetooth_radiofrecuencia.aia
- Vamos a enviar un mensaje desde el móvil al Arduino por Bluetooth con una aplicación realizada con App Inventor.
- Cuando el Arduino reciba ese mensaje lo Transmitirá por Radio Frecuencia a otro Arduino.
- El otro Arduino Recibirá el mensaje y lo mostrará en el Monitor Serie.
- Utilizaré los módulos que vimos en el tutorial 27radiofrecuencia.htm
- En esta ocasión utilizaré la librería RadioHead.zip.
- Con esta librería debes utilizar el terminal 12 para el emisor y el 11 para el receptor.
- Puedes alimentar al módulo Transmisor con 12 V, de esta manera llegará más lejos el mensaje.
- He utilizado un cable de 34 cm como antena.
- Con antena en interior de una casa (2 paredes) se puede conseguir transmitir a unos 10 m. En el exterior, espacio diáfano, se puede conseguir unos 100 m.
- [Con este módulo también se puede utilizar la librería VirtualWire]
- El Arduino del emisor lo he alimentado con una pila de 9 V, mediante un conector como indica la imagen.
- El módulo transmisor también lo alimento a 9 V, conectando un cable desde el positivo de la pila a Vcc del módulo.
___________________________
- Conexiones de Arduino.
___________________________
- Códigos de Arduino.
jBluetooth_Transmisor.ino |
// Juan A. Villalpando
// kio4.com
#include <RH_ASK.h>
#include <SPI.h>
char caracterfinal = '\n';
String texto;
RH_ASK rf_driver;
// Conectar DATA al terminal 12 del Arduino.
void setup(){
Serial.begin(9600);
rf_driver.init();
}
void loop() {
if(Serial.available()) {
texto = Serial.readStringUntil(caracterfinal);
Serial.println(texto);
char *msg = texto.c_str();
rf_driver.send((uint8_t *)msg, strlen(msg));
rf_driver.waitPacketSent();
}
}
|
jBluetooth_Receptor.ino |
#include <RH_ASK.h>
#include <SPI.h>
RH_ASK rf_driver;
// Conectar DATA al terminal 11 del Arduino.
void setup(){
Serial.begin(9600);
rf_driver.init();
}
void loop(){
uint8_t buf[16] = {""}; // Tamaño del buffer 16.
uint8_t buflen = sizeof(buf);
if (rf_driver.recv(buf, &buflen)){
Serial.print("Mensaje recibido: ");
Serial.println((char*)buf);
}
}
|
___________________________
- Diseño.
___________________________
- Bloques.
- Si en el Temporizador ponemos el bloque falso, escribimos un texto y pulsamos el Botón de EnviarTexto.
- Si ponemos el bloque cierto, automáticamente se irán enviando una secuencia de números 1, 2, 3, 4,...
jBluetooth_Receptor.ino |
#include <RH_ASK.h>
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
RH_ASK rf_driver;
void setup(){
Serial.begin(9600);
rf_driver.init();
lcd.begin(16,2);// Columnas y filas de LCD.
}
void loop(){
uint8_t buf[16] = {""}; // Tamaño del buffer 16.
uint8_t buflen = sizeof(buf);
if (rf_driver.recv(buf, &buflen)){
Serial.println((char*)buf);
lcd.clear();
lcd.setCursor(0,0);
lcd.print((char*)buf);
}
}
|
_____________________________________________
- Modulacion ASK.
- Modulación OOK
________________________________
|