File size: 2,170 Bytes
977db45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#NODE mcu code
#include <ESP8266WiFi.h>
#include <ThingSpeak.h>
#include <DHT.h>

const char* ssid = "PU_HACKATHON";
const char* password = "Parul%2025";
unsigned long myChannelNumber = 2800421;
const char* myWriteAPIKey = "NDCWC397CZJLULAB";

#define DHTPIN 4  
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

#define WATER_SENSOR_PIN 5 
#define N_PIN A0  
#define SOIL_MOISTURE_PIN A0 

WiFiClient client;

void setup() {
  Serial.begin(115200);
  delay(100);
  pinMode(N_PIN, INPUT);

  dht.begin();

  Serial.print("Connecting to Wi-Fi");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("\nConnected to Wi-Fi!");

  ThingSpeak.begin(client);
}

void loop() {
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  int waterLevelRaw = analogRead(WATER_SENSOR_PIN);
  float waterLevel = map(waterLevelRaw, 0, 1023, 0, 100);

  int nValue = analogRead(N_PIN);
  float nVoltage = (nValue / 1023.0) * 3.3 * 10; 

  int soilMoistureRaw = analogRead(SOIL_MOISTURE_PIN);
  float soilMoisture = map(soilMoistureRaw, 0, 1023, 100, 0);

  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.print(" °C | Humidity: ");
  Serial.print(humidity);
  Serial.println(" %");
  Serial.print("Water Level: "); 
  Serial.println(waterLevel); 
  Serial.print("NPK Sensor Data: ");
  Serial.println(nVoltage);
  Serial.print("Soil Moisture: ");
  Serial.println(soilMoisture);
  
  ThingSpeak.setField(1, temperature);
  ThingSpeak.setField(2, humidity);
  ThingSpeak.setField(3, waterLevel);
  ThingSpeak.setField(4, nVoltage);
  ThingSpeak.setField(5, soilMoisture);

  int statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  if (statusCode == 200) {
    Serial.println("Data uploaded to ThingSpeak successfully!");
  } else {
    Serial.println("Failed to upload data. Error code: " + String(statusCode));
  }
  delay(20000);
}