Hvordan holde planten i live?


Hei

Litt informasjon om hvordan vi i iGrow prøver å holde planten i live.

For å ta avgjørelser på hva vi bør gjøre med blomsten må vi vite litt om hvordan den har det. Det finnes en måte å se på hvor aktiv den er ved bruk av et IR kamera og ett blått filter. Vi gjøre deretter en NDVI  kalkulasjon.

Teorien bak dette er at vegetasjon som er frisk vil absorbere det meste av det synlige lyset, men vil reflektere mer av det nesten infrarødt lyset.  Formelen bak dette er:

NDVI = (NIR-VIS) / (NIR + VIS)

ndvi_example

Dette bør generere bilder som dette:

Good NDVI

Med No IR pi kameraet fikk vi etter mye trøbbel ut dette:

Ikke så god NDVI

Som dere ser er ikke bildene i nærheten av hva vi bør ha for å differensiere en frisk plante fra en ikke så frisk plante. Dette gjør at denne løsningen ikke vil være noe sikker måte å finne ut om planten har det bra. Vi har derfor bestemt at vi isteden detektere fargene planten har. Det er ikke optimalt, men det å få til deteksjon via IR kamera har vist seg å være mye vanskeligere enn vi trodde fra starten av.

Hvordan skal vi holde planten i live?

For å samle inn sensor data har vi en Arduino. Der samler gutta fra elektro inn sensor data som de sender til Pi’en. Når vi mottar data fra Arduinoen lagrer vi det i ett objekt som holder på alt av sensor data. Vi har også et objekt som holder på verdiene vi prøver å oppnå.  Dette gjør det enkelt å holde styr på om vi bør sende ny informasjon til Arduinoen.  Vi har ett kamera som vi regelmessig bruker til å undersøke hvordan det står til med planten. Her ser vi etter tegn som kan tyde at den ikke er frisk. Det hjelper oss når vi skal bestemme om vi vil endre forholdene til planten og se om det hjelper. Vi lagrer alle sensor data i en database slik at det er mulig å finne ut litt om hvordan planten pleier å være. Dette er viktig når vi detekterer  avvik.  Når vi merker ett avvik er det flere ting vi kan prøve å endre på. Hvilket valg vi tar avhenger av hvordan informasjonen fra sensorene ser ut. Feks om vi merker at planten ikke ser så frisk ut og vi merker at det er lite fuktighet i jorden. Er det mest sannsynlig at planten vil trenge kortere intervall mellom vanninger. Er det derimot motsatt at planten har veldig mye fukt kan det være vi bør prøve med ett kortere intervall mellom vanningene.

For å få til alt dette har vi brukt endel eksterne biblioteker. Vi bruker OpenCV for å behandle bilder vi tar av blomsten. SQlite for database. Serial for kommunikasjon  og Flask for å integrere Python koden med web serveren.  Vi kjører en tråd for hoved løkken som kjører rekursivt med jevne mellomrom slik at vi får oppdateringer for planten.

Det er også mulig å koble seg opp mot Pi’en for å sjekke hvordan det står til med planten. Her bruker vi en web framework som heter  Flask. Den muliggjør kjøring av en web server som trigger funksjoner når brukeren kommer inn på siden eller trykker på knapper. I vårt tilfelle har vi laget mulighet for å endre parametere til blomsten manuelt om man skulle ønske det. Brukeren vil også ha mulighet til å se informasjon vi har samlet fra sensorene der. Vi har også implementert en webview i en Android applikasjon slik at det er mulig å få mobil vennlig visning

 

,

Leave a Reply