Untitled

The idea


The process


Untitled

The design


Wind speed sensor

Wind speed sensor

Radiation Shield Specification

Radiation Shield Specification

#include <SoftwareSerial.h>                                
#include <DHT.h>                                          
#include <Wire.h>
#include <Adafruit_BMP085.h>

String wifiName = "			";                 //Wifi Name   
String wifiPass = "			";           //Wifi Password

int rainPin = A0;
int thresholdValue = 500;
int rxPin = 0;                                               //ESP8266 RX pin
int txPin = 1;                                               //ESP8266 TX pin
int hall_pin = 3;
float hall_thresh = 10;

#define DHTPIN 2              //DHT Pin
#define DHTTYPE DHT11           //DHT Sensor Type
DHT DHT1_1(DHTPIN, DHTTYPE);       //DHT11 Object
Adafruit_BMP085 bmp;          //BMP085 Object

String ip = "184.106.153.149";          //Thingspeak ip adrress
SoftwareSerial esp(rxPin, txPin);       //Serial Communication pin

void setup() 
{
  Wire.begin();  
  DHT1_1.begin();
  bmp.begin();
  pinMode(rainPin, INPUT);
  Serial.begin(9600);             //Serial communication starts
  pinMode(hall_pin, INPUT);
  Serial.println("Started");
  esp.begin(115200);                                          //ESP8266 communication start
  esp.println("AT");                                          //AT command for test
  Serial.println("AT Sent");
  while(!esp.find("OK"))
  {                                     
    esp.println("AT");
    Serial.println("ESP8266 Not Found.");
  }
  Serial.println("OK");
  esp.println("AT+CWMODE=1");                                 //setting the ESP8266 module to client.
  while(!esp.find("OK")){                                     //waiting until the adjustment is made.
    esp.println("AT+CWMODE=1");
    Serial.println("Setting Up....");
  }
  Serial.println("Set as Client");
  Serial.println("Connecting to network...");
  esp.println("AT+CWJAP=\\""+wifiName+"\\",\\""+wifiPass+"\\"");    //connecting to our network.
  while(!esp.find("OK"));                                     //Waiting until we're connected to the network.
  Serial.println("Connected.");
  delay(100);
}
void loop() 
{
  esp.println("AT+CIPSTART=\\"TCP\\",\\""+ip+"\\",80");           //Connection Thingspeak
  if(esp.find("Error")){                                      //checking for connection error.
    Serial.println("AT+CIPSTART Error");
  }
   
  float hall_count = 1;
  float start = micros();
  bool on_state = false;
  while(hall_count <= 5){
    if (digitalRead(hall_pin)==0){
      if (on_state==false){
        on_state = true;
        hall_count+=1;
      }
    } else{
      on_state = false;
    }
    
  }
  int sensorValue = analogRead(rainPin);
  if(sensorValue < thresholdValue){
    sensorValue = 1;
   }
  else {
    sensorValue = 0;
      }
  
  
  float end_time = micros();
  float time_passed = ((end_time-start)/1000000.0);
  float rpm_val = (hall_count/time_passed)*60.0;
  
  float temperature = DHT1_1.readTemperature();
  float humidity = DHT1_1.readHumidity();
  float temperature2 = bmp.readTemperature();
  float pressure = bmp.readPressure();
  float altitude = bmp.readAltitude();

  
  String data = "GET <https://api.thingspeak.com/update?api_key=6FAYRI8LS16OPDNQ>";    //Thingspeak command. Instead of xxxxx, we write our own api keynote in Key.                                
  data += "&field1=";
  data += String(temperature);
  data += "&field2=";
  data += String(humidity);                                       
  data += "&field3=";
  data += String(temperature2);
  data += "&field4=";
  data += String(pressure);
  data += "&field5=";
  data += String(altitude);
  data += "&field6=";
  data += String(sensorValue);
  data += "&field7=";
  data += String(rpm_val);

  
  data += "\\r\\n\\r\\n"; 
  esp.print("AT+CIPSEND=");                                   
  esp.println(data.length()+10);
  delay(1000);
  if(esp.find(">"))
  {                                          
    esp.print(data);                                        
    Serial.println(data);
    Serial.println("data sent.");
    delay(1000);
  }
                                             
}