Hjälp med arduinoprojekt för bevattning av kolonilotten?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
småsten
Inlägg: 8
Blev medlem: 16 augusti 2015, 09:07:10

Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av småsten »

Hej,

Jag har länge tänkt automatisera bevattningen av min kolonilott för att slippa vattna var och varannan dag. Har därför införskaffat diverse arduinoprylar, såsom arduino nano, realtidsklocka, lcd display och 12 v solenoidventiler. Inser nu att jag inte riktigt är kapabel att fixa ihop delarna och programmera på egen hand varför jag undrar om någon kunnig här på forumet kan hjälpa mig? Skulle bli mycket glad och tacksam. Kolonilotten är belägen i en södersluttning så vattentrycket sköts av gravitation. Därför behövs inga pumpar. Tycker även det vore roligt knyta kontakt och träffas irl.. Både jag och kolonilotten finns i stockholm.

MVH

Andy
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32626
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av HUGGBÄVERN »

Jag tycker du ska börja med att göra några utkast till program. Sätt på pränt hur saker ska fungera, ta hjälp av t ex Hackster och Instructables och arduino.cc för att få lite tips hur man kan använda realtidsklocka, hur man vattnar blommor och annat, och så fixar vi resten tillsammans på forumet.

Några snabba ideer:
https://www.instructables.com/id/Arduin ... ng-System/
https://www.instructables.com/id/Plant-Manager/

Detta sagt för jag tror du får mer respons om du börjar nysta i projektet och ber om support när du får problem, än om du vill ha något mer ”nyckelfärdigt”.
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3743
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av Mickecarlsson »

Kolla in denna länk för tips
https://create.arduino.cc/projecthub/pr ... irrigation
Googla på arduino irrigation controller så får du massor av tips.
småsten
Inlägg: 8
Blev medlem: 16 augusti 2015, 09:07:10

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av småsten »

Hej,

Jag hade tänkt mig något liknande detta. dvs en timer som tidpunkt för bevattning. Om fuktighetssensorn indikerar att marken är fuktig ska ingen ytterligae vattning ske. I exemplet nedan finns två reläer. Skulle vilja ha en knapp för manuell drift också. samt en lcddisplay. Vad tror ni om detta?

#include <virtuabotixRTC.h>
virtuabotixRTC myRTC(6, 7, 8); //digital pin 6 = SCCIC or CLK 7 = I/O or DAT 8 = CE oe RST
int moisturePin = 0; //define a pin for moisture sensor
int threshold = 300; //Treshhold value for moisture sensor
int x = 0;
int Moisture = 0; // Value from moisturesensor
int TimeM = 0; // Variable for storing Minutes
int TimeH = 0; // Variable for storing Hours

void setup() {
Serial.begin(9600); //Begin serial communcation
pinMode(13, OUTPUT); // Pin 13 as output used by ventil ett.
pinMode(12, OUTPUT); // Pin 13 as output used by ventil två.
//myRTC.setDS1302Time(10, 08, 22, 3, 16, 1, 2019); // Used to set time vith the DS1302 libray
Serial.println("Datum / Klockslag: ");
}

void loop() {
Light = analogRead(moisturePin);
digitalWrite(13, LOW);
myRTC.updateTime();
TimeH = myRTC.hours;
TimeM = myRTC.minutes;

Serial.print(myRTC.year);
Serial.print("-"); //|
Serial.print(myRTC.month); //|
Serial.print("-");
Serial.print(myRTC.dayofmonth);
Serial.print(" "); //|
Serial.print(myRTC.hours); //|
Serial.print(":"); //|
Serial.print(myRTC.minutes); //|
Serial.print(":"); //|
Serial.print(myRTC.seconds);
Serial.print(" ");
if (TimeH=21 && TimeM>=0 && TimeM<=10){ //Klockan 21:00 öppnas ventil ett om torrt i markern därefter //stänger ventilen 10 minuter senare.
if (Moisture < threshold ){
digitalWrite(13, HIGH);
Serial.print(" Ventil ett öppen ");
}

else {
digitalWrite(13, LOW);
Serial.print(" Ventil ett stängd");
}

if (TimeH=21 && TimeM>10 && TimeM<=20){ //Klockan 21:10 öppnas ventil ett om torrt i markern. if (Moisture < threshold ){
digitalWrite(12, HIGH);
Serial.print(" Ventil två öppen ");
}

else {
digitalWrite(13, LOW);
Serial.print(" Ventil två stängd ")
}

}
Serial.print(Moisture);
Serial.println();
delay(1000);
}
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32626
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av HUGGBÄVERN »

Jag sitter på chicago o’hare med huvudvärk (av oro och för lite sömn) men tycker du har gjort ett bra jobb, även om jag inte kan verifiera koden.

Vad du kan göra är att sätta ihop en enkel testpanel med lysdioder, tryckknappar och annat som får simulera in- och utorgan. Sedan kan du ju sätta dina timers så de gör snabbare (om det går).
Jag gjorde så med en enkel men ändå tillkrånglad histora som skulle köra som längst en tretimmars-cykel. När tre timmar var nerställda till 0,03 timmar körde jag kretsen fullt ut en natt.
kodar-holger
EF Sponsor
Inlägg: 916
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av kodar-holger »

Kollade lite på din kod. Använd gärna code-taggar när du postar så blir det lättare att läsa.
Hittade några småsaker som du säkert själv hittat rätt snart.

Kod: Markera allt

pinMode(13, OUTPUT); // Pin 13 as output used by ventil ett.
pinMode(12, OUTPUT); // Pin 13 as output used by ventil två.
Copy-paste fel på kommentaren. Det är pinne 12 du sätter som output och inte 13 i andra fallet.

Kod: Markera allt

if (TimeH=21 && TimeM>=0 && TimeM<=10){ //Klockan 21:00 öppnas ventil ett om torrt i markern därefter //stänger ventilen 10 minuter senare.
Nej, det blir 11 minuter eftersom ventilen är öppen minuter som heter 0,1,2,3,4,5,6,7,8,9 och 10.

Kod: Markera allt

if (TimeH=21 && TimeM>10 && TimeM<=20){ //Klockan 21:10 öppnas ventil ett om torrt i markern. 
Nej, ventilen öppnar när TimeM är större än 10, dvs minuter som heter 11,12 ...

Kod: Markera allt

digitalWrite(13, LOW);
Serial.print(" Ventil två stängd ")
Texten i printen är nog rätt men du stänger ventil 1.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av Jan Almqvist »

Det "giftigaste" är

Kod: Markera allt

if (TimeH=21
eftersom du inte jämför TimeH med 21 utan tilldelar TimeH värdet 21. Resultatet blir alltid true eftersom 21 inte är noll.
småsten
Inlägg: 8
Blev medlem: 16 augusti 2015, 09:07:10

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av småsten »

Shysst! Tack för all respons!

Jag har en del att lära som färskning forumet. Bra tips att använda Code funktionen för att göra koden mer lättläst.

kodar-holger
, nu jag mig fatta hur man ska tänka kring tidsintervall. Om jag skriver följande blir det rätt?

Kod: Markera allt

if (TimeH=21 && TimeM>=0 && TimeM<=9){ //Klockan 21:00 öppnas ventil ett om torrt i markern därefter stänger ventilen 10 minuter senare.

if (TimeH=21 && TimeM>=10 && TimeM<=9){ //Klockan 21:10 öppnas ventil två om torrt i markern.
Aj, Ja för att stänga ventil två ska det givetvis vara pin 12 som ska sättas LOW.

Kod: Markera allt

digitalWrite(12, LOW);
Serial.print(" Ventil två stängd ")

Jan Almqvist
, Hur bör jag göra för att komma till rätta med den "giftigaste" ?

Kod: Markera allt

if (TimeH=21
Hur skriver jag för att arduino ska kolla om realtimeklockan är 21? Ska det vara "==" istället?

Huggbävern, ok om jag förstår det rätt så menar du att jag bör prototypa med dioder och ändra tidsintervallen till exempelvis sekunder istället för timmar och minuter?


Följdfråga... Grejen är att jag inte riktigt vet hur jag kopplar ihop allt i en krets. Strömförsörjningen till ventilerna ligger på tolv volt medan arduinon ska ha 5 liksom reläerna. tar man ned söänningen med en spänningsdelare eller finns ett bättre sätt.??

mvh
Andy
kodar-holger
EF Sponsor
Inlägg: 916
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av kodar-holger »

Ja det är ju det där med = igen då.

Kod: Markera allt

if (TimeH==21 && TimeM>=0 && TimeM<=9){ 

if (TimeH==21 && TimeM>=10 && TimeM<=19){ 
För att koppla dina 12V-ventiler till arduinon behöver du någon interface-krets. Ett färdigt reläkort kanske är overkill men enkelt. Det här hittades vid en snabb nätsökning.
https://www.electrokit.com/produkt/rela ... gINQPD_BwE

Annars går det med några transistorer och motstånd om du är flink med lödkolven.
https://electronics.stackexchange.com/q ... duino-nano

Vad är det för sensor du skall använda för att avgöra om det är torrt eller fuktigt? Den behöver ju också kopplas in på något sätt.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av Jan Almqvist »

Ett tips är att skriva konstanten till vänster vid jämförelse mellan variabel och konstant:

Kod: Markera allt

if (21==TimeH
Om man då skriver ett (1) likhetstecken:

Kod: Markera allt

if (21=TimeH
blir det fel vid kompilering.
GalFisk
Inlägg: 304
Blev medlem: 11 mars 2006, 23:53:11
Ort: Horndal

Re: Hjälp med arduinoprojekt för bevattning av kolonilotten?

Inlägg av GalFisk »

Se upp med placeringen av din moisture sensor, så att inte bevattningen från ventil 1 blöter ner den och hindrar ventil 2 från att någonsin öppnas.
Alt. läs av sensorn endast strax före bevattningen, och basera båda ventilöppningarna på resultatet.
Skriv svar