Raspberry Pi

13) Webkamera

Využití RasPi jako záznamníku obrazu z kamery byl jeden z mých hlavních cílů.
Mám takovouhle malou webovku

Chtěl jsem si z ní vytvořit meteokameru, která by zaznamenávala v určitých intervalech obrázek oblohy a ten obrázek by pak posílala přes FTP na můj web.

V linuxu existuje grafický program camorama, který umožňuje zobrazování videa na ploše, snímání fotek a dokonce i jejich odesílání na FTP server.  Instalace toho programu  camorama je možná buď přes Synaptic Package Manager, nebo přes příkazovou řádku:

sudo apt-get install camorama
Není to úplně špatná věc, ale bralo to 100 % výkonu procesoru. Takže je to výborné třeba na nastavení směru kamery, nebo pro zaostření - ukazuje to on-line obraz. Pro používání jako meteokamera se mi to nezdá moc dobré.

 

Lepší se mi zdál program fswebcam. Je možné, že existují i jiné a možná i kvalitnější programy, ale už se mi nechtělo moc experimentovat a pořád něco instalovat a odinstalovávat.

Ten program fswebcam jsem nainstaloval takto:

sudo apt-get install fswebcam

Má jednoduché ovládání přes příkazovou řádku. Pomocí různých parametrů se dá s výsledným obrázkem dělat spousta věcí.
Po připojení kamery do USB portu jsem provedl pokusné sejmutí fotky příkazem:
fswebcam --resolution 800x600 --png 0 fotka.png      
 

Když jsem zkoušel nainstalovat fswebcam na "čistý" systém, tak při pokusu o sejmutí fotky zahlásil, že nemůže najít font "sans", a proto nezobrazí banner (spodní proužek s datumem a časem).

Musel jsem tedy ručně zkopírovat font s názvem FreeSans.ttf  ve složce /usr/share/fonts/truetype/freefont do té samé složky a tu kopii jsem přejmenoval na sans.ttf.
Pak bylo potřeba ještě programu fswebcam říct, kde přesně se ten font nachází.
To jsem provedl tímto příkazem: 

export GDFONTPATH=/usr/share/fonts/truetype/freefont

  

 

Pomocí parametrů je možné například skládat několik fotek "přes sebe" a tím snížit šum. Také  se pomocí parametrů dá nastavit spodní informační lišta, nebo velikost a kvalita obrazu. Všechny parametry programu jsou popsány tady :
 http://www.digipedia.pl/man/doc/view/fswebcam.1/

Fotka s velikostí 800x600 bodů má v nejvyšší kvalitě PNG velikost asi 1,5MB - to je dost. Proto je lepší trochu experimentovat s velikostí obrázku a s kvalitou PNG.

Další věc, kterou jsem musel vymyslet, byl přenos fotky pomocí FTP na web.
Nejdřív jsem u svého poskytovatele webového prostoru (http://www.isol.cz) zřídil k mému webovému prostoru zvláštní FTP účet s názvem "raspiftp" a k němu jsem vytvořil jeho vlastní složku.
 

Na RasPi bylo třeba nejdřív nainstalovat podporu pro FTP:

sudo apt-get install ftp

Potom jsem na Raspíčku vytvořil skript s názvem "prenos" ve složce /usr/bin a vložil jsem do něj tento kód:


#!/bin/sh
HOST='ftp.astromik.org'
USER='raspiftp.astromik.org'
PASSWD='***supertajne_heslo****'
FILE='/home/pi/fotka.png'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE fotka.png
quit
END_SCRIPT
exit 0

Souboru prenos jsem nastavil atribut spustitelnosti:

sudo chmod 755 /usr/bin/prenos

Pak už jen stačilo do terminálu zadat postupně tyto 2 příkazy:

fswebcam --resolution 400x300 --frames 3 --png 3 fotka.png 
 
/usr/bin/prenos

... a fotka se objevila na mém webu : http://raspiftp.astromik.org/fotka.png

 

Takže na závěr už je jen třeba, aby se ty dva příkazy spouštěly automaticky (například pomocí CRONu) a meteokamera je hotová.

Skript pro spuštění kamery, následnou několikasekundovou pauzou (spojenou se zablikáním LEDky na GPIO24) a FTP upload na web jsem napsal takhle (skript jsem dal do souboru /usr/bin/meteocam):

#!/bin/sh

# rozsviceni LEDky 24
  gpio-admin export 24
  echo out > /sys/devices/virtual/gpio/gpio24/direction
  echo 1 > /sys/devices/virtual/gpio/gpio24/value

# nastaveni cesty k fontu sans
  export GDFONTPATH=/usr/share/fonts/truetype/freefont

# sejmuti obrazku z webkamery
# (velikost 400x300; 3 fotky pres sebe; format PNG s kvalitou 3)
# obrazek se ulozi do souboru "/home/pi/fotka.png"
  fswebcam --resolution 400x300 --frames 3 --png 3 /home/pi/fotka.png

#zhasnuti a rozsviceni ledky
  echo 0 > /sys/devices/virtual/gpio/gpio24/value
  sleep 2
  echo 1 > /sys/devices/virtual/gpio/gpio24/value
  sleep 1

# FTP prenos
  /usr/bin/prenos


#zhasnuti ledky a uvolneni GPIO
  echo 0 > /sys/devices/virtual/gpio/gpio24/value
  gpio-admin unexport 24

  exit 0
 

Blikání je tam kvůli tomu, aby bylo vidět v jaké fázi se skript nachází:

1) rozsvícení LED
2) sejmutí obrázku
3) zhasnutí LED
     PAUZA 
4) rozsvícení LED
5) přenos na web
6) zhasnutí LED = hotovo

A jako obvykle nastavení spustitelnosti skriptu meteocam:

sudo chmod 755 /usr/bin/meteocam

A úplně na závěr nastavení spouštění skriptu na každých 5 minut pomocí CRONu:

sudo crontab -e

A v editoru, který se pak otevře, vložit poslední řádku:

 ... a uložit (Ctrl+X, Y, Enter)

 

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 3.8.2012