From ea5608dac3a1c05438f94b1b344c20687a971b51 Mon Sep 17 00:00:00 2001 From: alban Date: Thu, 2 May 2024 22:51:50 +0200 Subject: [PATCH] init: first commit --- 01-resistance/diagram.json | 131 +++++++++++++++++++++++++++++++++++++ 01-resistance/sketch.ino | 63 ++++++++++++++++++ 02-water-pump/diagram.json | 69 +++++++++++++++++++ 02-water-pump/sketch.ino | 78 ++++++++++++++++++++++ README.md | 1 + 5 files changed, 342 insertions(+) create mode 100644 01-resistance/diagram.json create mode 100644 01-resistance/sketch.ino create mode 100644 02-water-pump/diagram.json create mode 100644 02-water-pump/sketch.ino create mode 100644 README.md diff --git a/01-resistance/diagram.json b/01-resistance/diagram.json new file mode 100644 index 0000000..55178a8 --- /dev/null +++ b/01-resistance/diagram.json @@ -0,0 +1,131 @@ +{ + "version": 1, + "author": "Anonymous maker", + "editor": "wokwi", + "parts": [ + { "type": "wokwi-arduino-nano", "id": "nano", "top": 4.8, "left": -0.5, "attrs": {} }, + { + "type": "wokwi-resistor", + "id": "r1", + "top": 139.2, + "left": 57.05, + "rotate": 90, + "attrs": { "value": "10000" } + }, + { + "type": "wokwi-led", + "id": "led2", + "top": -128.4, + "left": 3.8, + "attrs": { "color": "green", "flip": "1" } + }, + { + "type": "wokwi-led", + "id": "led3", + "top": -128.4, + "left": 42.6, + "attrs": { "color": "yellow", "flip": "1" } + }, + { "type": "wokwi-gnd", "id": "gnd1", "top": 201.6, "left": 229.8, "attrs": {} }, + { + "type": "wokwi-resistor", + "id": "r3", + "top": -62.4, + "left": 210.65, + "rotate": 90, + "attrs": { "value": "1000" } + }, + { + "type": "wokwi-resistor", + "id": "r4", + "top": -24, + "left": 181.85, + "rotate": 90, + "attrs": { "value": "1000" } + }, + { + "type": "wokwi-slide-potentiometer", + "id": "pot1", + "top": 259.2, + "left": -39.2, + "rotate": 90, + "attrs": { "travelLength": "30" } + }, + { "type": "wokwi-relay-module", "id": "relay1", "top": 19.4, "left": 326.4, "attrs": {} }, + { + "type": "wokwi-slide-potentiometer", + "id": "pot2", + "top": 259.2, + "left": -202.4, + "rotate": 90, + "attrs": { "travelLength": "30" } + }, + { + "type": "wokwi-resistor", + "id": "r2", + "top": 139.2, + "left": -77.35, + "rotate": 90, + "attrs": { "value": "100000" } + }, + { + "type": "wokwi-led", + "id": "led1", + "top": -138, + "left": 81, + "attrs": { "color": "red", "flip": "1" } + }, + { + "type": "wokwi-resistor", + "id": "r5", + "top": -110.4, + "left": 239.45, + "rotate": 90, + "attrs": { "value": "1000" } + }, + { + "type": "wokwi-led", + "id": "led4", + "top": 8.8, + "left": 592.2, + "rotate": 90, + "attrs": { "color": "blue", "flip": "1" } + }, + { "type": "wokwi-vcc", "id": "vcc2", "top": -104.84, "left": 585.6, "attrs": {} }, + { + "type": "wokwi-resistor", + "id": "r6", + "top": -33.6, + "left": 565.85, + "rotate": 90, + "attrs": { "value": "220" } + }, + { "type": "wokwi-gnd", "id": "gnd2", "top": 134.4, "left": 585, "attrs": {} } + ], + "connections": [ + [ "nano:GND.1", "gnd1:GND", "black", [ "v0" ] ], + [ "led2:A", "nano:12", "green", [ "v0" ] ], + [ "led2:C", "r4:1", "green", [ "v0" ] ], + [ "led3:C", "r3:1", "green", [ "v0" ] ], + [ "r3:2", "gnd1:GND", "green", [ "h0" ] ], + [ "r4:2", "gnd1:GND", "green", [ "h0" ] ], + [ "nano:5V", "r1:1", "red", [ "v0" ] ], + [ "r1:2", "pot1:SIG", "green", [ "h0" ] ], + [ "nano:A0", "pot1:SIG", "green", [ "v0" ] ], + [ "nano:5V", "r2:1", "red", [ "v0" ] ], + [ "r2:2", "pot2:SIG", "green", [ "h0" ] ], + [ "pot2:SIG", "nano:A1", "green", [ "v-67.2", "h164" ] ], + [ "pot1:VCC", "gnd1:GND", "red", [ "v0" ] ], + [ "pot2:VCC", "gnd1:GND", "red", [ "v0" ] ], + [ "nano:10", "led3:A", "green", [ "v0" ] ], + [ "nano:8", "led1:A", "green", [ "v-67.2", "h38.4" ] ], + [ "led1:C", "r5:1", "green", [ "h76.4", "v19.2" ] ], + [ "r5:2", "gnd1:GND", "green", [ "v104.4", "h-28.8" ] ], + [ "nano:6", "relay1:IN", "green", [ "v0" ] ], + [ "r6:2", "led4:A", "green", [ "h0" ] ], + [ "vcc2:VCC", "r6:1", "red", [ "v0" ] ], + [ "relay1:NO", "gnd2:GND", "green", [ "h0" ] ], + [ "relay1:COM", "led4:C", "green", [ "h0" ] ] + ], + "dependencies": {} +} diff --git a/01-resistance/sketch.ino b/01-resistance/sketch.ino new file mode 100644 index 0000000..eb86ab0 --- /dev/null +++ b/01-resistance/sketch.ino @@ -0,0 +1,63 @@ +/* + + C1 : humidité du sol + + I1 : Circuit alimenté si On + I2 : Substrat sec si On + +*/ + + + +#define AOUT_PIN A0 + +#define LED_POWER 12 +#define LED_ALERT 4 + + +#define THRESHOLD 530 // CHANGE YOUR THRESHOLD HERE + + + +void setup() { + // put your setup code here, to run once: + + Serial.begin(9600); + + + +} + + +void loop() { + int value = analogRead(AOUT_PIN); // read the analog value from sensor + + digitalWrite(LED_POWER, HIGH); + + if (value > THRESHOLD){ + Serial.print("The soil is DRY ("); + digitalWrite(LED_ALERT, HIGH); + + }else{ + Serial.print("The soil is WET ("); + digitalWrite(LED_ALERT, LOW); + } + Serial.print(value); + Serial.println(")"); + + + delay(500); +} + +/* + + C1 : humidité du sol + C2 : remplissage du réservoir + + I1 : Circuit alimenté si On + I2 : Substrat sec si On + I3 : Réservoir vide si On + + P1 : Pompe réservoir -> substrat + +*/ diff --git a/02-water-pump/diagram.json b/02-water-pump/diagram.json new file mode 100644 index 0000000..6d87bc4 --- /dev/null +++ b/02-water-pump/diagram.json @@ -0,0 +1,69 @@ +{ + "version": 1, + "author": "Anonymous maker", + "editor": "wokwi", + "parts": [ + { "type": "wokwi-arduino-nano", "id": "nano", "top": -4.8, "left": -0.5, "attrs": {} }, + { + "type": "wokwi-resistor", + "id": "r1", + "top": 139.2, + "left": -10.15, + "rotate": 90, + "attrs": { "value": "10000" } + }, + { + "type": "wokwi-led", + "id": "led2", + "top": -128.4, + "left": 3.8, + "attrs": { "color": "green", "flip": "1" } + }, + { + "type": "wokwi-led", + "id": "led3", + "top": -128.4, + "left": 100.2, + "attrs": { "color": "yellow", "flip": "1" } + }, + { "type": "wokwi-gnd", "id": "gnd1", "top": 201.6, "left": 229.8, "attrs": {} }, + { + "type": "wokwi-resistor", + "id": "r3", + "top": -62.4, + "left": 210.65, + "rotate": 90, + "attrs": { "value": "1000" } + }, + { + "type": "wokwi-resistor", + "id": "r4", + "top": -24, + "left": 181.85, + "rotate": 90, + "attrs": { "value": "1000" } + }, + { + "type": "wokwi-slide-potentiometer", + "id": "pot1", + "top": 259.2, + "left": -39.2, + "rotate": 90, + "attrs": { "travelLength": "30" } + } + ], + "connections": [ + [ "nano:GND.1", "gnd1:GND", "black", [ "v0" ] ], + [ "led2:A", "nano:12", "green", [ "v0" ] ], + [ "led2:C", "r4:1", "green", [ "v0" ] ], + [ "nano:4", "led3:A", "green", [ "v0" ] ], + [ "led3:C", "r3:1", "green", [ "v0" ] ], + [ "r3:2", "gnd1:GND", "green", [ "h0" ] ], + [ "r4:2", "gnd1:GND", "green", [ "h0" ] ], + [ "nano:5V", "r1:1", "red", [ "v0" ] ], + [ "r1:2", "pot1:SIG", "green", [ "h0" ] ], + [ "pot1:VCC", "gnd1:GND", "red", [ "v0" ] ], + [ "nano:A0", "pot1:SIG", "green", [ "v0" ] ] + ], + "dependencies": {} +} diff --git a/02-water-pump/sketch.ino b/02-water-pump/sketch.ino new file mode 100644 index 0000000..7a6615d --- /dev/null +++ b/02-water-pump/sketch.ino @@ -0,0 +1,78 @@ + +/* + + C1 : humidité du sol + C2 : remplissage du réservoir + + I1 : Circuit alimenté si On + I2 : Substrat sec si On + I3 : Réservoir vide si On + + P1 : Pompe réservoir -> substrat + +*/ + +#define AHUMITY A0 +#define AWATER_LEVEL A1 + +#define LED_POWER 12 +#define LED_DRY 10 +#define LED_ALERT 8 +#define PUMP 6 + +#define HUMIDITY_THRESHOLD 530 +#define WATER_LEVEL_THRESHOLD 530 + +// Durations in seconds +#define DURATION_PUMP 30 +#define DURATION_DELAY 1800 +#define SECOND 3 // OR 1000 + +void setup() { + Serial.begin(9600); +} + + +void loop() { + int humity = analogRead(AHUMITY); + int water_level = analogRead(AWATER_LEVEL); + + digitalWrite(LED_POWER, HIGH); + + bool is_dry = humity > HUMIDITY_THRESHOLD; + bool is_empty = water_level > WATER_LEVEL_THRESHOLD; + + if (is_dry){ + Serial.print("The soil is DRY ("); + digitalWrite(LED_DRY, HIGH); + + }else{ + Serial.print("The soil is WET ("); + digitalWrite(LED_DRY, LOW); + } + + Serial.print(humity); + Serial.println(")"); + + // if the water is too low, never pump + if( is_empty ){ + Serial.println("The water level is LOW "); + digitalWrite(LED_ALERT, HIGH); + }else{ + Serial.println("The water level is HIGH"); + digitalWrite(LED_ALERT, LOW); + if( is_dry){ + Serial.println("Starting the pump"); + digitalWrite(PUMP, HIGH); + delay(DURATION_PUMP * SECOND); + digitalWrite(PUMP, LOW); + Serial.println("Stopped the pump"); + } + } + + Serial.println("Sleeeping"); + delay(DURATION_DELAY * SECOND); + Serial.println("Slept"); + +} + diff --git a/README.md b/README.md new file mode 100644 index 0000000..ece680a --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# ESP32 Garden Basics