Övervakning av miniatyrväxthus

I artikeln ”Miniatyrväxthus, odling i rymden mm.” gav jag en viss bakgrund till de experiment man gjort gällande extremt effektiv odling på små ytor med tanke på framtida rymdfärder. Om man vill följa med växtprocessen i detalj måste man naturligtvis mäta tillväxthastigheten på något lämpligt sätt, vattenförbrukning, växtunderlagets fuktighet, ljus etc. Den enda rationella metoden att i detalj följa en växtperiod över ca. 30 dagar är att automatisera processen.

IMGP5345

Fig. 1  Bilden visar datorn ”Raspberry Pi” som är en brittisk ”system på en chip” dator som kör operativsystemet Linux. Mitt system är försett med en kamera på ändan av flatkabeln (grå). Raspberry Pi kostar ungefär 30 Euro och kameran ungefär lika mycket. Kameran tar förvånande bra bilder, sensorn går på 5 Megapixlar.

För närvarande sköter datorn endast en kontinuerlig fotografering av växtunderlagen. Jag har skrivit två små program i programspråket Python. Det ena är ett skelett (som senare byggs ut) för ett grafiskt användarinterface och det andra är själva fotoprogrammet. Programmen har följande utseende:

#!/usr/bin/python

import pygtk
 pygtk.require("2.0")
 import gtk
 import os

class test(object):
    def __init__(self):
        filename = "test.glade"
        builder = gtk.Builder()
        builder.add_from_file(filename)
        builder.connect_signals(self)
        window = builder.get_object("main")
        window.show_all()
        os.system("touch run")
        os.system("./speedup.py &")

    def onDeleteWindow(self):
        exit(0)

    def onButtonExit(self, widget):
        os.system("rm run")
        exit(0)

if __name__ == "__main__":
 app =test()
 gtk.main()

Programmet har ett användarinterface baserat på Glade/gtk. Programmet gör egentligen inget annat än att det startar bakgrundsprogrammet ”speedup.py” och via en fil skickar en signal till ”speedup.py” om huvudprogrammet vill stoppa bakgrundsprogrammet. Observera att indenteringen i ovanstående programlistning kan vara felaktig eftersom mellanslag och tabulatur lämnas bort på en vebbsida. Som programmet ser ut på skärmen så kan det bryta mot Pythons syntax och således inte vara körbart om det kopieras rätt av från vebbsidan.

Bakgrundsprogrammet som sköter fotografering med 30 minuters mellanrum har följande utseende:

#!/usr/bin/python
# Camera testing program
# Name: speedup.py
import os
import time
i = 0
while(True):
   if (os.path.exists("./run")):
      cmd ="raspistill -v -rot 180 -o test" + str(i)
      cmd = cmd + ".jpg"
      print cmd
      os.system(cmd)
   else:
      print "Program done"
      exit(0)
      time.sleep(1800)
   i = i + 1

Programmet är en oändlig slinga som kontrollerar om programmet får köra d.v.s. om filen ”run” går att hitta. Om programmet får köra så skapas ett kommando för att ta ett foto. Ett kommando för att ta ett foto med kameran, med hjälp av programvara för kameran, är:

raspistill -v -rot 180 -o <filnamn>

Eftersom jag vet att jag kommer att ta över tusen bilder under testkörningen är det skäl att generera filnamnet så att bilderna numreras på ett vettigt sätt. Jag bygger upp filnamnet på följande sätt:

test + <löpande nummer> + ”.jpg”

Koden för namnet på en bild blir då (variabeln i är löpande nummer som stegas framåt med ett steg för varje bild):

test + str(i) + ”.jpg”

Kommandot str(i) förvandlar innehållet i variabeln ”i” till en textsträng. Om i har värdet 999 får vi alltså ”test + ”999” + ”.jpg”. Om jag vill ta en bild med namnet ”test999.jpg” så kan jag göra det genom att från kommandoraden ge kommandot:

raspistill -v -rot 180 -o test999.jpg

Flaggan -rot 180 i kommandot gör att bilden svängs upp och ned (kameran är för tillfället upp och ned och detta korrigeras genom att be kameran svänga bilden).

Vilket är läget idag

Det är nu ungefär tre dagar sedan jag sådde sallad och man ser tydligt att ett antal frön har grott. Jag planerar att sätta ihop fotografierna av växtprocessen till en video där tidsavståndet mellan rutorna är 30 minuter.

IMGP5344

Fig. 2  Tredje dagen …

Jag gissar att det inom några dagar går att se rörelse då jag kombinerar bilderna. Hittills har programmet tagit strax över hundra bilder.

Tre veckor har gått och det börjar vara ont om plats i krukorna. Som jag gissade går det livligt till då man tittar på hur växterna växer då man snabbar upp processen till 8 bilder motsvarar en sekund vilket betyder att en sekund på videon motsvarar fyra timmars tillväxt.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s


%d bloggare gillar detta: