#include "ThingSpeak.h"
#include <WiFi101.h>
const char ssid[] = ""; // your network SSID (name)
const char pass[] = ""; // your network password
WiFiClient client;
unsigned long counterChannelNumber = ; // Channel ID
const char * myCounterReadAPIKey = ""; // Read API Key
const int FieldNumber1 = 1; // The field you wish to read --- moisture
const int FieldNumber2 = 2; // The field you wish to read --- temperature
const int FieldNumber3 = 3; // The field you wish to read --- light
int in2 = 2; int in3 = 3; // Motor A connections
int in4 = 4; int in5 = 5; // Motor B connections
// optimal environmental conditions for your plant
int minMoisture = 1.5;
int maxMoisture = 2;
int minTemperature = 25;
int maxTemperature = 29;
int minLight = 1022;
int maxLight = 1023;
void setup()
{
Serial.begin(9600);
while(!Serial);
delay(2000);
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
Serial.print(".");
delay(2000);
}
Serial.println("");
Serial.println("WiFi connected");
ThingSpeak.begin(client);
delay(2000);
// Set all the motor control pins to outputs
pinMode(in2, OUTPUT); pinMode(in3, OUTPUT);pinMode(in4, OUTPUT); pinMode(in5, OUTPUT);
// Turn off motors - Initial state
digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(2000);
}
void loop()
{ //-------------- Read it from Thinkspeak -------------//
//----------------Field 1 ----------------//
int statusCode1 = 0;
long moisture = ThingSpeak.readLongField(counterChannelNumber, FieldNumber1, myCounterReadAPIKey);
statusCode1 = ThingSpeak.getLastReadStatus();
if (statusCode1 == 200)
{ Serial.print("|| Moisture: "); Serial.print(moisture); }
delay(1000);
//-------------- Field 2 -------------//
int statusCode2 = 0;
long temperature = ThingSpeak.readLongField(counterChannelNumber, FieldNumber2, myCounterReadAPIKey);
statusCode2 = ThingSpeak.getLastReadStatus();
if (statusCode2 == 200)
{ Serial.print(" || Temperature: "); Serial.println(temperature); }
delay(1000);
//-------------- Field 3 -------------//
int statusCode3 = 0;
long light = ThingSpeak.readLongField(counterChannelNumber, FieldNumber3, myCounterReadAPIKey);
statusCode3 = ThingSpeak.getLastReadStatus();
if (statusCode3 == 200)
{ Serial.print(" || Light: "); Serial.println(light); }
delay(1000);
//-------------- Do something with the motors -------------//
if (moisture > minMoisture && temperature > minTemperature && temperature <= maxTemperature && light > minLight)
{ Serial.print(" plant is happy ");
// put on motor A
digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(2000);
digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(2000);
}
else {
if (moisture < minMoisture && temperature > maxTemperature)
{ Serial.print(" plant is in danger ");
// put on motor A
digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, HIGH); digitalWrite(in5, LOW);
delay(2500);
digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(2000);
}
else {
if (moisture < maxMoisture && temperature < minTemperature && light < minLight)
{ Serial.print(" plant is sad ");
// put on motor A
digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(1500);
digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(2000);
}
else
{ Serial.print(" plant is doing fine ");
// put on motor A
digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(1500);
digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); digitalWrite(in5, LOW);
delay(2000);
}
}
}
delay(30000);
}
Comments
Please log in or sign up to comment.