Aldin
Published

Wireless Weather Station

How I made a weather station.

BeginnerShowcase (no instructions)2,653
Wireless Weather Station

Things used in this project

Story

Read more

Code

Transmitter code

Arduino
 #include<dht.h> 
#include <Wire.h> 
#include <VirtualWire.h>  
#include <Adafruit_Sensor.h> 
#include <Adafruit_BMP280.h> 
#define dht_apin A0 
dht DHT; 
char msg[8]; 
float pritisak; 
#define BMP_SCK 12 
#define BMP_MISO 11 
#define BMP_MOSI 10  
#define BMP_CS 9 
Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK); 
void setup(){ 
 vw_set_ptt_inverted(true); 
 Serial.begin(9600); 
 vw_set_tx_pin(4);  // Sets pin D12 as the TX pin 
 vw_setup(2000);  
 if (!bme.begin()) {   
   Serial.println("Could not find a valid BMP280 sensor, check wiring!"); 
 while (1);} 
 delay(1000);//Wait before accessing Sensor      
} 
void loop(){ 
 DHT.read11(dht_apin); 
 dtostrf(DHT.humidity, 8,1,msg); 
 msg[0]='H'; 
 vw_send((uint8_t *)msg, strlen(msg)); //transmits the data 
 vw_wait_tx(); 
 dtostrf(DHT.temperature,8,1,msg); 
 msg[0]='T'; 
 vw_send((uint8_t *)msg, strlen(msg)); //transmits the data 
 vw_wait_tx(); 
 dtostrf(analogRead(3), 8,1,msg); 
 msg[0]='U'; 
 vw_send((uint8_t *)msg, strlen(msg)); //transmits the data 
 vw_wait_tx(); 
 pritisak = bme.readPressure()/100; 
 dtostrf(pritisak,8,1,msg); 
 msg[0]='P'; 
 vw_send((uint8_t *)msg, strlen(msg)); //transmits the data 
 vw_wait_tx(); 
 delay(3000); }

Receiver code

Arduino
 #include <VirtualWire.h> 
#include <LiquidCrystal.h> 
String poruka; 
LiquidCrystal lcd(8,9,4,5,6,7); 
unsigned char ledPin=1; 
unsigned char ledPin2=2; 
int flag = 0; 
void setup(){ 
 vw_set_ptt_inverted(true); 
 Serial.begin(9600); 
 delay(500); 
 vw_set_rx_pin(12);       //Sets pin D12 as the RX Pin 
 vw_setup(2000);       
 vw_rx_start();            
 pinMode(ledPin, OUTPUT); 
 pinMode(ledPin2, OUTPUT); 
 digitalWrite(ledPin, LOW); 
 digitalWrite(ledPin2, LOW); 
 digitalWrite(ledPin, HIGH); 
 lcd.begin(16,2); 
 lcd.setCursor(0,0); 
 lcd.print("  Wheater"); 
 lcd.setCursor(0,1); 
 lcd.print("    station"); 
 delay(2000); 
 lcd.clear(); 
} 
void loop(){ 
 uint8_t buf[VW_MAX_MESSAGE_LEN]; 
 uint8_t buflen = VW_MAX_MESSAGE_LEN; 
 if( vw_get_message(buf, &buflen) ) 
 { 
   if(flag<2){ 
     lcd.setCursor(15,1); 
     lcd.print("*"); 
     flag++; 
   } 
   else if(flag<4){ 
     lcd.setCursor(15,1); 
     lcd.print(" "); 
     flag++; 
   } 
   else 
     flag=0; 
   if(buf[0]=='H'){ 
     buf[0]=' '; 
     poruka=String((char *)buf); 
     poruka.trim(); 
     lcd.setCursor(0,1); 
     lcd.print("V="); 
     lcd.print(poruka); 
     lcd.print("%"); 
   } 
   else if(buf[0]=='T'){ 
     buf[0]=' '; 
     poruka=String((char *)buf); 
     poruka.trim(); 
     lcd.setCursor(0,0); 
     lcd.print("T="); 
     lcd.print(poruka); 
     lcd.print("C"); 
   } 
   else if(buf[0]=='U'){ 
     buf[0]=' '; 
     poruka=String((char *)buf); 
     poruka.trim(); 
     lcd.setCursor(8,1); 
     lcd.print("U="); 
     lcd.print(poruka); 
   } 
   else if(buf[0]=='P'){ 
     buf[0]=' '; 
     poruka=String((char *)buf); 
     poruka.trim(); 
     lcd.setCursor(8,0); 
     lcd.print("P="); 
     lcd.print(poruka); 
   } 
 } }

Credits

Aldin

Aldin

0 projects • 1 follower

Comments