Hosted by OSOS , contributed by johnniepap on 10 June 2019

Ο Θεσσαλικός κάμπος, γνωστός και ως Θεσσαλική πεδιάδα, είναι ο δεύτερος σε έκταση κάμπος στην χώρα. Οι καλλιέργειες του είναι το βαμβάκι, το καλαμπόκι, η ντομάτα, τα τεύτλα οι οποίες είναι ποτιστικές, δηλαδή χρειάζονται νερό. Δυστυχώς, κάθε χωράφι δεν έχει τη δική του πομόνα ή αρδευτικό κανάλι και οι αγρότες πρέπει να συνεργαστούν για τη διαχείρηση του νερού. Σε αυτό το σημείο ξεκινούν τα προβλήματα.
Επισκεφτείτε το project μας για να μοιραστούμε μαζί σας την λύση που δώσαμε.
Tunne

Για να αρχίσει ο αγρότης το πότισμα, πρέπει να έχει τελειώσει ο προηγούμενος χρήστης. Πάντα υπάρχει ένα πρόγραμμα, αλλά αυτό καταστρατηγείται, και πάντα υπάρχουν καθυστερήσεις, που αθροίζονται. Το αποτέλεσμα είναι ο επόμενος αγρότης να περιμένει τον προηγούμενο να σταματήσει το πότισμα στο δικό του χωράφι, και κατά συνέπεια να χάνει πολύτιμο χρόνο. Το θέμα είναι πως ο αγρότης δεν έχει τρόπο να ενημερώνεται για το πότε έγινε αυτό.
Kuvittele

Η λύση που προτείνουμε είναι ένας τρόπος, ώστε ο αγρότης να ειδοποίειται για το πότε έκλεισε η παροχή νερού στο προηγούμενο χωράφι. Η συσκευή εφαρμόζεται δίπλα στην πομόνα χωρίς ιδιαίτερη δυσκολία και λειτουργεί αυτόνομα.
Luo

Για την κατασκευή χρησιμοποιήσαμε μια πλακέτα ESP8266, η οποία σε συνεργασία με έναν μαγνητικό διακόπτη εντοπίζει πότε η πομόνα είναι σε κλειστή ή σε ανοιχτή θέση και ανάλογα στέλνει μήνυμα στο κινητό του αγρότη, που έχει δηλωθεί εκ των προτέρων, μέσω της υπηρεσίας IFTTT.
Τα υλικά που χρησιμοποιήσαμε είναι τα παρακάτω:
Reed switch 2x14mm normally open contact
voltage-regulator/3.3v-800ma-linear-voltage-regulator
12x12x6mm Momentary Tactile Push Button Switch for Arduino
led green
led red
10 kΩ αντιστάσεις
https://grobotronics.com/usb-2.0-a-usb-b-micro
https://grobotronics.com/power-supply-5v-2a-usb
nodemcu-lua-based-esp8266.html
στεγανό κουτί
Wire jumper καλώδια
breadboard
Ο Κώδικας
#include <ESP8266WiFi.h>
#include <IFTTTWebhook.h>
#define ledPin 5
#define wakePin 16
#define ssid ""
#define password ""
// Replace with your unique IFTTT URL resource
const char* resource = "/trigger/button_pressed/with/key/dcb-gcL5Rr_UaDYqSLLa9_";
// How your resource variable should look like, but with your own API KEY (that API KEY below is just an example):
//const char* resource = "/trigger/button_pressed/with/key/nAZjOphL3d-ZO4N3k64-1A7gTlNSrxMJdmqy";
// Maker Webhooks IFTTT
const char* server = "maker.ifttt.com";
void setup() {
Serial.begin(115200);
while(!Serial) {
}
Serial.println(" ");// print an empty line before and after Button Press
Serial.println("Button Pressed");
connectToWifi();
//just connected to Wi-Fi so send notification to ifttt
makeIFTTTRequest();
//flash led once
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
//now sending board to sleep
Serial.println("deepsleepnow ");// print an empty line
ESP.deepSleep(100000);
}
void connectToWifi() {
Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name
//Serial.print(ssid);
WiFi.begin(ssid, password);
Serial.println(" ");// print an empty line
Serial.print("Attempting to connect: ");
//try to connect for 10 seconds
int i = 10;
while(WiFi.status() != WL_CONNECTED && i >=0) {
delay(1000);
Serial.print(i);
Serial.print(", ");
i--;
}
Serial.println(" ");// print an empty line
//print connection result
if(WiFi.status() == WL_CONNECTED){
Serial.print("Connected.");
Serial.println(" ");// print an empty line
Serial.print("NodeMCU ip address: ");
Serial.println(WiFi.localIP());
}
else {
Serial.println("Connection failed - check your credentials or connection");
}
}
// Make an HTTP request to the IFTTT web service
void makeIFTTTRequest() {
Serial.print("Connecting to ");
Serial.print(server);
WiFiClient client;
int retries = 5;
while(!!!client.connect(server, 80) && (retries-- > 0)) {
Serial.print(".");
}
Serial.println();
if(!!!client.connected()) {
Serial.println("Failed to connect, going back to sleep");
}
Serial.print("Request resource: ");
Serial.println(resource);
client.print(String("GET ") + resource +
" HTTP/1.1\r\n" +
"Host: " + server + "\r\n" +
"Connection: close\r\n\r\n");
int timeout = 5 * 10; // 5 seconds
while(!!!client.available() && (timeout-- > 0)){
delay(100);
}
if(!!!client.available()) {
Serial.println("No response, going back to sleep");
}
while(client.available()){
Serial.write(client.read());
}
Serial.println("\nclosing connection");
client.stop();
}
void loop(){
//if deep sleep is working, this code will never run.
Serial.println("This shouldn't get printed");
}
