Hi,
I want to make meteo station in my garden and I have a problem with distance. I had thought I can use another arduino in my house like repeater(this is the place, where meteo station can transmit) to send data to arduino in my room.
Do you think it´s possible to recieve data and then transmitt what you just recieved ? I would not ask if I found something related, but not.
This is a code I tried, but seems to not work...
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float Celsius = 0;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
#include <VirtualWire.h>
const int receive_pin = 2;
char temperatureChar[10];
char humidityChar[10];
struct package
{
float temperature = 0.0;
float humidity = 0.0;
};
typedef struct package Package;
Package data;
const int transmit_pin = 4;
void setup() {
vw_set_rx_pin(receive_pin);
vw_setup(2000);
vw_rx_start();
vw_set_tx_pin(transmit_pin);
lcd.begin();
lcd.backlight();
lcd.print("AHOJ");
delay(2000);
}
void loop() {
uint8_t buf[sizeof(data)];
uint8_t buflen = sizeof(data);
if (vw_have_message())
{
vw_get_message(buf, &buflen);
memcpy(&data,&buf,buflen);
String temperatureString = String(data.temperature,1);
temperatureString.toCharArray(temperatureChar,10);
String humidityString = String(data.humidity,1);
humidityString.toCharArray(humidityChar,10);
/tx
vw_send((uint8_t *)&data, sizeof(data));
vw_wait_tx();
}
sensors.requestTemperatures();
Celsius = sensors.getTempCByIndex(0);
String temp = " Doma:";
String tempPrint = temp + Celsius + " Stupnu";
lcd.clear();
lcd.print(" Venkovni data:");
lcd.setCursor(0, 1);
lcd.print("Teplota: ");
lcd.print(data.temperature);
lcd.setCursor(0, 2);
lcd.print("Vlhkost: ");
lcd.print(data.humidity);
lcd.setCursor(0, 3);
lcd.print(tempPrint);
delay(1000);
}