
Raspberry Pi – Introducció
Aquests dies que anàvem testant diferents ThinClient han passat per les meves mans una Raspberry Pi, que no és un ThinClient, però òbviament es pot utilitzar com això, volia escriure aquest article per acostar aquest dispositiu a tots aquells que no el coneguin o hagin tingut la sort de poder provar-ho. La RPi (model B) és un petit ordinador (CPU ARM de 700Mhz i 512Mb RAM) amb 2 sortides USB, 1 RJ45, 1 HDMI, 1 RCA, connector GPIO, espai per a 1 SD CARD i que alimentarem amb un MicroUSB a 5V. Podrem fer-nos amb una Raspberry Pi per uns 30 €. ¿Barat? No! El següent!
Definida molt breument el que és una RPi, ens quedarà pensar per a què la necessitem, ja que la seva petita mida (d' un paquet de tabac), la seva escassa alimentació i el seu potencial, ens permetrà alliberar la ment i pensar diferents utilitats. Com a equip ThinClient (i arrencar aplicacions de Citrix XenApp, escriptoris amb VMware View/XenDesktop, RDP…), equip multimèdia, equip de video vigilància, equip mòbil (amb una bateria de 10.000 mAh tindrem una autonomia de 12h aprox. O posar-li un USB nano Wifi per tenir connectivitat…), domotica… La fundació que l'ha creat, té com a objectiu apropar a tots els infants i escoles la possibilitat de tenir un ordinador. Un dels projectes que més estan cridant l'atenció és la possibilitat de traduir de forma simultània (amb subtitules en unes ulleres) la conversa entre dues persones de diferents països, millor veure-ho que explicar-ho: http://www.raspberrypi.org/archives/1689.
Bo, el primer pas serà descarregar el S.O. que volem a la nostra RPi, per això tindrem el web d'imatges oficials: http://www.raspberrypi.org/downloads. Podrem utilitzar imatges oficials o personalitzades pels usuaris de la comunitat, en aquest primer exemple baixarem una Raspbian "wheezy", que és una disstrossada basada en Debian.
Per encabir la imatge a la targeta SD Card, ho farem amb la utilitat Win32DiskImager en Windows o en Linux o Mac mediante:
– Encabir la SD Card als nostres PC's i veure amb 'mount’ quina és la SD card
– Desmuntar la SD card amb: diskutil umount /dev/disk2s1
– Bolcar la imatge a la SD Card: sudo dd if=2012-10-28-wheezy-raspbian.img of=/dev/disk2s1 bs=1
– Expulsar-la amb: diskutil eject /dev/disk2s1
La introduirem a la nostra Raspberry i l'encenem, ens preguntarà uns paràmetres bàsics com si volem arrencar X automàticament, canviar la contrasenya de l'usuari 'pi', estendre la partició a tota la SD, idioma, rangs horaris, si volem SSHd habilitat per defecte…
Un cop arrencada serà aconsellable actualitzar-la amb: 'apt-get update’ & 'apt-get upgrade'.
Si volem practicar abans de tenir una Raspberry Pi o per després bolcar-la una imatge de disc personalitzada, podrem utilitzar l'emulador QEMU (o Q en Mac OS).
Per a una configuració avançada de la RPi, podrem editar '/boot/config.txt’ amb els paràmetres que ens interensin de http://elinux.org/RPi_config.txt.
Modificant el logo d' inici,
Si volem personalitzar el ràpid inici de la nostra RPi d'una forma corporativa amb el logo de la nostra organització podrem instal·lar el visor amb 'apt-get install fbi', deixarem la imatge a '/etc/splash.png’ i crearem l'script '/etc/init.d/asplashscreen’ amb:
[sourcecode]——————————————–[/sourcecode]
[sourcecode]#! /bin/sh
### BEGIN INIT INFO
# Provides: asplashscreen
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start: S
# Default-Stop:
# Short-Description: Show custom splashscreen
# Description: Show custom splashscreen
### END INIT INFO
do_start () {
/usr/bin/fbi -T 1 -noverbose -a /etc/splash.png
exit 0
}
case "$1" in
start|"")
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1’ not supported" >&2
exit 3
;;
stop)
# No-op
;;
estatus)
exit 0
;;
*)
echo "Usage: asplashscreen [start|stop]" >&2
exit 3
;;
esac
:
——————————————–[/sourcecode]
Ho farem amb 'chmod a+x /etc/init.d/asplashscreen’ i indiquem que sigui un dimoni que arrenqui automàticament 'insserv /etc/init.d/asplashscreen'. Reiniciem i ho comprovem! Per cert, la RPi no ve per defecte amb una carcassa, per la qual cosa si busquem bé, podrem adquirir-les directament amb una caixa també corporativa amb el logo imprès. Un producte per connectar a qualsevol xarxa i donar servei als nostres usuaris, accedint de forma segura a la seva organització!
Com a visor de vídeos o equip multimèdia,
Sobre la distribució Wheezy, directament podrem utilitzar el visor de vídeos Omxplayer executant: 'omxplayer -r -o hmdi PATH_FICHERO’ per obrir un vídeo i treure'l per l'HDMI.
Si volem donar-li doble click a un vídeo i que se'ns reprodueixi automàticament, valdrà amb crear el fitxer '/usr/share/applications/omxplayer.desktop’ amb el contingut:
[sourcecode]——————————————–
[Desktop Entry]
Type =Application
Name = OMXPlayer
Categories = AudioVideo;Player;
Exec = lxterminal –command "omxplayer -o hdmi %f"
Terminal = false
Icon=/usr/share/icons/nuoveXT2/96×96/categories/applications-multimedia.png
——————————————–[/sourcecode]
Si unicament el volem com a equip multimèdia l'ideal serà posar una distribució totalment preparada amb XBMC com poden ser XBian o RaspBMC, per citar dues de les millors. La prova que va verificar que la Raspberry Pi és totalment vàlida per a això, vaig reproduir perfectament una pel·lícula amb format matroska 1080p!!!
Muntant-li un servidor VNC,
Per si algú necessita un accés remot (que no sigui amb ssh) n'hi haurà prou amb instal·lar-li TightVNC amb 'apt-get install tightvncserver'. Configurem el servei indicant-li la contrasenya per a l' accés amb: 'vncserver'. Creem una sessió amb: 'vncserver :1 -geometry 1280×800 -depth 24'.
Si volem que arrenqui TightVNC a l'inici amb la Raspberry Pi, afegim al final del tot (però abans de l'exit!) a '/etc/rc.local':
el seu -c “vncserver :1 -geometry 1280×800 -depth 24” pi
Ús de micròfon,
Un cop connectat un (o el propi d'una WebCam), carregarem el mòdul amb: 'modprob snd_bcm2835’
I podrem fer les gravacions amb:
– a WAV: 'arecord -D plughw:1,0 test.wav’ (es para després amb CTR+ C)
– a MP3: Instal·larem prèviament LAME ('apt-get install lame') i executar després: 'arecord -f cd -t raw | lame -x -r – out.mp3’
Per reproduir l'àudio: 'aplay test.wav’
Per jugar amb el micro i donar-li més/menys àudio utilitzarem: 'alsamixer’ i després gravar els canvis amb: 'alsactl store'.
Per fer streaming (o treure l'àudio) del Raspberry Pi a un altre equip en remot, ho farem amb: 'arecord -D plughw:1,0 -f dat | ssh -C USUARIO@EQUIPO_REMOTO aplay -f dar’
Ús de Webcam,
Per a mi una de les coses a la qual li vaig donar més utilitat, des de posar un detector de moviment a la porta de casa i que em mani un correu amb les imatges detectades, o en anar gravant els recorreguts amb el meu cotxe per tots els motius que se'ns ocorrin…
El primer, una aplicació senzilla per treure fotos al de X segons (-l), la instal·lem amb 'apt-get install fswebcam'. Comando:
'fswebcam -r 640×480 -S 15 –flip h –jpeg 95 –shadow –title “Tundra IT” –subtitle “Blog bujarra.com” –info “Monitor: Active @ 1 fpm” –save home.jpg -q -l 60'.
Per gravar un vídeo directament amb: 'ffmpeg -f video4linux2 -r 25 -s 640×480 -i /dev/video0 /tmp/video.avi’
Ús de 'motion', aquesta eina ens permetrà utilitzar la nostra RPi com a sistema de videovigilància, des de gravar vídeo o imatges, a poder connectar-nos a una URL i poder visualitzar el que està succeint… El primer serà instal·lar-lo amb 'apt-get install motion'. Editarem '/etc/motion/motion.conf’ tots els paràmetres que necessitem, per a mi els que més m'han encaixat:
– Habilitar connexió remota: 'webcam_localhost off’
– Canviar el destí de les imatges amb: 'target_dir /home/pi/Desktop/motion’
– Canviar el port al qual ens connectarem des del navegador: 'webcam_port 8081’
– Assignar un usuari per autenticar-nos al web: 'control_authentication usuari:contrasenya’
– Establir la qualitat d' imant: 'quality 60’
– Establir la correcta mida de captura de les nostres imatges amb: 'width’ & 'height’
– Per escollir el codec amb què comprimirà el vídeo: 'ffmpeg_video_codec mpeg4’
– Pujar de 1500 al que ens encaixi perquè detecti més pídeles moguts amb: 'threshold 4000’
– %f serà el nom del fitxer (amb el seu path), per si el volem utilitzar com a variable.
– Amb 'locate on’ ens dibuixarà un rectangle de l'objecte que va detectar el moviment.
– Amb 'text_right’ o 'text_left’ posarem els textos que ens interessin en cada frame.
– 'output_normal off’ per quan es detecti un moviment que no ens guardi la imatge.
– 'ffmpeg_cap_new off’ perquè no ens guardi vídeos amb els moviments. O 'on’ perquè usi la llibreria ffmpeg, s' haurà d' establir un format de vídeo.
A més, podrem instal·lar sendEmail per manar correus per línia de comandament: 'apt-get install sendemail'.
Comandament per enviar de correu amb la imatge adjunta: 'sendemail -f PERSONA_ORIGEN@DOMINIO_ORIGEN -t PERSONA_DESTINO@DOMINIO_DESTINO -s SERVIDOR_SMTP -m TEXTO_CUERPO -o TEXTO_ASUNTO -xu USUARIO_AUTENTICACION_SMTP -xp CONTRASEÑA_AUTENTICACION_SMTP -o tls=auto -a %f
O unicament pujar-la a un FTP amb: 'wput ftp://USUARI:CONTRASEÑ*@DO*****. COM %f’
Podrem configurar per exemple en els següents esdeveniments l'introduir aquests comandaments per automatitzar aquestes alertes:
on_event_start
on_picture_save
El posarem com a dimoni amb el paràmetre 'daemon on', si volem executar-lo posteriorment sense forçar la manera dimoni l'executarem com a 'motion -n'. I a '/etc/default/motion’ podrem indicar que arrenqui automàticament amb el sistema editant: 'start_motion_daemon=yes'. La primera vegada haurem de crear el directori '/var/run/motion’ perquè no d'errors en arrencar el dimoni.
A mi això últim m'ha estat donant problemes i em bloquejava la càmera al d'uns quants frames trets, així que sense més sentit he hagut de crear-me un procés que l'arrenqui sense dependre del que ens permet motion. Aquest seria el meu '/etc/init.d/hhh-motion’
[sourcecode]——————————————–
#!/bin/bash
### BEGIN INIT INFO
# Provides: blabla
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: blabla
# Description:
#
### END INIT INFO
#! /bin/sh
# /etc/init.d/hhh-motion
#
# Some things that run always
# touch /var/lock/blah
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script hhh-motion"
mkdir /var/run/motion
motion
;;
stop)
echo "Stopping script hhh-motion"
echo "start_motion_daemon = no" > /etc/default/motion
/etc/init.d/motion stop
;;
*)
echo "Usage: /etc/init.d/hhh-motion {start|stop}"
exit 1
;;
esac
exit 0
——————————————–[/sourcecode]
Ho creiem com a servei amb 'update-rc.d hhh-motion defaults’ i reiniciem per provar!
Ús de Citrix,
Si estem utilitzant la imatge base Debian Wheezy (en el model B) no podrem instal·lar el client de Citrix, ja que Citrix genera clients per a linux x86, x64 i ARM (l'ARM no ens val ja que està basat en ARMEL i no en armhf, que és l' arquitectura de la imatge base que porta). Així que sense indagar més i esperant un pròxim document us remeto en utilitzar una imatge anomenada: ‘RPiTC – Raspberry Pi Thin Client Project‘ que és una distribució basada en Thin Client amb les següents utilitats:
– VMWare View Client 1.6.0
– Citrix Receiver para Linux 12.2.3
– Quest vWorkspaces 7.0b.
– RDesktop 1.7.1.
– SPICE Client (virt-viewer 0.5.3).
– IceWeasel 10.x con extension de Citrix.
– …
On podrem personalitzar fàcilment l'obertura de qualsevol d'elles amb els paràmetres que necessitem!! Bo, amb això finalitzem aquest document, on podrem apreciar força característiques i podrem donar regna solta a la nostra imaginació amb les nostres volgudes RPi!