Como instalar una pantalla tactil de 5″ en una Raspberry Pi 3


En realidad, en efecto,  es bastante sencillo y “económico”  dotar a nuestra Raspberry Pi 3 de una pantalla táctil  siempre que no optemos por adquirir la version oficial  , la cual es mucho mas cara ( sobre unos 70€  mas gastos de envió  ) en clara  contraposición de  versiones de otras pantallas mas pequeñas pero mas económicas .

La cuestión es que la  pantalla oficial ofrece ,excepto por su tamaño, características muy similares a las de otros fabricantes, pues de  hecho las características de  la version oficial  son las siguientes:

  • Tamaño: 7″
  • Resolución: 800×480 hasta 60fps
  • Color: hasta 24bits
  • Táctil: capacitiva de 10 puntos
  • Placa adicional para hacer la conexión, también que sirve para alimentar la Raspberry Pi 3 por lo que con un solo cable de alimentación tendremos todo funcionando
  • Función dual screen de esta pantalla y la salida HDMI que pueden estar activas de forma simultánea

Es de destacar  que la pantalla al final no es tan nativa como cuentan pues  ademas usa una placa intermedia para convertir la señal de la salida directa de la placa a una señal de un tipo más simple y que abarata el tipo de pantalla. Esta placa básicamente es un convertidor LVDS a  HDMI quedando integrada con la pantalla y con la Raspberry Pi 3 bastante bien pero no mejor que con otras soluciones. Dual screen permitiría usar como pantalla principal un monitor HDMI y mantener esta como secundaria pudiendo hacer cosas como lanzar una app desde esta pantalla TFT, OMXPlayer por ejemplo, y que se vean en la otra, esto da mucho juego pero tampoco quizás no sea  algo tan frecuente .

En contraposición a la pantalla oficial vamos a ver  una  solución mucho  mas barata propuesta por Kuman  que cuenta mas de la mitad  de la solución oficial .(unos 35€  a Amazon.es) El modelo  que vamos  que hemos probado en este blog  es el modelo Kuman 5 Pulgadas , con pantalla resistiva, resolución  800×480  con salida  HDMI para Raspberry Pi 3 2 Modelo B RPI 1 B B + A A + SC5A

Estas son algunas de las características de este modelo de kuman,

  • Pantalla estándar TFT de 5 ‘”
  • Resolución 800 × 480
  • Con pantalla táctil resistiva, control táctil compatible
  • Con control de luz de fondo(  la luz de fondo se puede apagar para ahorrar energía con un interruptor integrado)
  • Es compatible con la entrada de interfaz HDMI estándar
  • Se puede insertar directamente con Raspberry Pi (3ª, 2ª y 1ª generación)
  • Se puede usar como monitor HDMI de uso general, por ejemplo: conectando un ordenador  por medio del HDMI como pantalla secundaria (la resolución debe poder forzar la salida de 800 x 480)
  • Por supuesto se puede usar con Raspberry Pi  siendo compatible con Raspbian, Ubuntu, Kodi, win10 IOT (táctil resistiva)
  • Puede funcionar como monitor de PC  pues es compatible con XP, win7, win8, sistema win10 (no admite touch) touch Certificación CE, RoHS

A diferencia del modelo oficial este modelo de kuman, cuenta con interfaz USB para alimentarlo externamente por ejemplo  para usar la pantalla de forma independiente ,de modo que  cuando se conecta a la Raspberry Pi a través del conector de expansión   de 13×2 se pude  obtener  5V de alimentación del  propio  conector  USB  y obviamente no haya que alimentar  a la  raspberry  y al   modulo   de kuman,de forma independiente,

Respecto al vídeo  al incorporar el interface Interfaz HDMI simplemente hay que conectar un puente macho hdmi- macho hdmi  entre la Raspberry Pi  y la placa de  la pantalla  lo cual ademas permite mantener unidas ambos módulos

Por cierto , cuenta con  interruptor de encendido de la luz de fondo para controlar la retroiluminación encendida y apagarla  cuando no se necesite  para ahorrar energía por ejemplo en aplicaciones portátiles

A diferencia de otras soluciones   la conexión del digitalizador  adherido a  la pantalla se  hace  directamente    por medio del  socket de 13 * 2 pines , el cual ademas sirve   para alimentar con 5V al   modelo de kuman, desde  el pin de potencia de la Rasperry Pi  al mismo tiempo que  se transfiera la señal táctil

De vuelta a la Raspberry Pi algo muy interesante es la interface interfaz extendida  de la placa  pues de la señal 13 * 2   volvemos a tener nuevamente los mismo pines en la placa de control para poderlo usar para  nuestras  aplicaciones   con la importante salvedad que para el digitalizador se usan los pines 19(MI) , 22(IRQ), 21 (MO) , 23 (SCK)  y 26 (TC) , pines que por tanto no deben ser usados en otras aplicaciones.

1) "NC" significa No conectado, los pines "NC" no se utilizan en esta pantalla LCD.
2) SI solo se usa para visualización (sin tocar), puede dejar que este Pin 13 * 2 sea libre, solo conecte el USB ySeñal HDMI para hacerla mostrar.
3) 13 * 2 señales de pin extendidas para el usuario.

Una vez entendida las conexiones de la placa, veamos los pasos para conectar el   modulo de kuman,   a la  raspeberry Pi;

Software

Instalación automática

Con este  modulo de kuman   se adjuntan en un dvd  tres imágenes  con los drivers  ya instalados   y configurados  .Estas  imágenes corresponden   a  tres sabores de Linux:  KALI, RASPBIAN  y UBUNTU , y  que deberemos copiar desde el propio dvd. Estos son los nombres de los ficheros:

  • 5inch_KALI2017.01.7z
  • 5inch_raspbian20180418.7z
  • 5inch-RPI3-RPI2-ubuntu-mate-16.04-beta2.7z

Una vez haya decidido   que imagen vaya   a instalar ( recomendamos la de Raspbian 20180418 ) , necesitara  descomprimir el ficheo con el programa gratuito 7zip

Con la imagen correcta del S.O.  ahora   realice  el formateo de tarjeta TF  usando  SDFormatter

Por ultimo grabe la imagen oficial en la tarjeta TF utilizando Win32DiskImager.
Cuando termine  el proceso , saque la memoria  sd del lector del pc  ,   e introduzca esta en su Raspberry Pi
Observe que las credenciales de acceso  , según la imagen que  haya grabado en la sd son diferentes:

  • <5inch_raspbian20170705> user:pi      password:raspberry
  • <5inch-RPI3-RPI2-ubuntu-mate-16.04-beta2> user:pi password:raspberry
  • <5inch_kali2017.01> user:root  password:toor

Instalación manual

Podemos hacer una instalación  automática  que ya hemos hablado, en la que se han incluido  todos los drivers  necesarios para soportar el digitalizador, o bien podemos hacer la instalación controlada , veamos ahora los pasos a seguir:
En primer lugar necesitamos   instalar la imagen oficial de Raspbian o UbuntuMate ,para  ello descargue desde el sitio web oficial: https://www.raspberrypi.org/downloads/   o https://ubuntu-mate.org/download/ .

Con la imagen correcta del S.O.  ahora   realice  el formateo de tarjeta TF  usando  SDFormatter

Por ultimo grabe la imagen oficial en la tarjeta TF utilizando Win32DiskImage

Ahora nos toca instalar manualmente los drivers para lo cual podemos usar dos métodos parecidos en función de que tenga  la Raspebrry Pi o conexión a internet

Método 1: instalación en línea

En este  método  la Raspberry Pi necesita conectarse a Internet,
Los pasos  a seguir son los siguientes:

  1.  Inicie sesión en la Raspberry Pi usando el programa y Putty SSH (Usuario: pi; Contraseña: raspberry)
  2. Ejecute los siguientes comando (puede hacer clic con el botón derecho del ratón para pegar después de copiarlo en Putty)                                                                                                        git clone https://github.com/goodtft/LCD-show.git
    chmod -R 755 LCD-show
    cd LCD-show/
    sudo ./LCD5-show
  3. Espere hasta finalizar la ejecución del ultimo comando antes de usar el panel LCD

Método 2: instalación fuera de línea

  1. Escanee el código QR en el lado derecho    .
  2. Puede copiar el fichero    llamado  “LCD – show – 160701. The tar. gz” desde  el  DVD   al directorio raíz de la tarjeta del sistema Raspberry Pi; (Sugerencia: copie directamente en su pc  directamente a la tarjeta TF después de completar el paso inicial, o copie por SFTP u otros métodos para copia remota).
  3. Descomprima y extraiga los archivos del disco con los siguientes comandos                                                                                                                cd /boot
    sudo tar zxvf LCD-show-160701.tar.gz
    cd LCD-show/
    sudo ./LCD5-showmo el siguiente comando:cd / bootsudo tar zxvf LCD-show-160701.tar.gzcd LCD-show /sudo ./LCD5-show3)
  4. Cuando termine  el proceso , saque la memoria  sd del lector del pc  ,   e introduzca esta en su Raspberry Pi

Instalación hardware

Una vez tengamos  ya instalado el S.O.   con los drivers del digitalizador , es hora de instalar esta  en nuestras Raspberrry Pi  (i (3ª, 2ª y 1ª generación).
En primer lugar  colocaremos los  4  separadores roscados en la pantalla  >Ahora  solo hay que conecte el zócalo del Pin LCD 13 * 2 a la Raspberry Pi como se muestra en la imagen de abajo.Observe que  encaja en el conector exactamente , pero ademas también debe  encajar uno de los separadores roscados en uno de los orificios de las Rasberry Pi así como debe estar alineados ambos conectores hdmi ( el de la placa con el de la raspberry Pi)  Conecte  ahora  la pantalla LCD y la Raspberry Pi con el adaptador HDMI  espacial .Observe  que debe encajar  el puente hdmi -hdmi  entre ambas placas , lo cual  ademas le dará rigidez mecánica al montaje

Observe por cierto en la parte de atrás abajo a la izda el interruptor que permite apagar la luz de retro-iluminación de la pantalla
A su favor esta placa  también que sirve para alimentar la Raspberry por lo que con un solo cable de alimentación tendremos todo funcionando  y el montaje queda bastante robusto  que difiere por cierto   bastante diferente  la versión  oficial  cuyo conjunto es  un poco endeble con mucho cablecito plano y mucho hilo suelto que no parecen encajar bien con un entorno tipo educativo.

En la imagen  mas abajo podemos ver el montaje terminada a falta de la carcasa , donde se aprecia claramente que es manejable con el dedo   aunque  también  se pueda usar el lápiz táctil que acompaña este kit

Para terminar , si hecha de menos una caja , hay un diseño  que la podemos descargar desde aqui :https://www.thingiverse.com/thing:1698162

Para terminar una nota de aplicación : por si  no nos parece suficiente la  pantalla conectada  a la Raspberry Pi ,   si desconectamos el adaptador  hdmi -hdmi entre la pantalla y la Raspberry Pi , podemos conectar la salida HDMI desde  un ordenador  a la interfaz LCD HDMI mediante un cable normal  HDMI. Luego solo   necesitaremos conectar  el microUSB  del LCD a  un  puerto USB del   pc  mediante un cable USB  y así podremos usar este pequeño LCD , como segundo monitor  o    incluso monitor de   pruebas( obviamente como monitor de pc  la función táctil no estará disponible).

Para terminar , este kit esta accesible en Amazon  por unos 36€

Anuncios

Cámara trasera inteligente con Raspberry Pi. Parte 2


Añadiendo reconocimiento de imágenes

 

En los tutoriales de instalación de OpenCV  se  recomienda compilar desde la fuente; sin embargo, en el último año ha sido posible instalar OpenCV a través de pip, el propio administrador de paquetes de Python. Si bien la instalación desde la fuente le dará el mayor control sobre su configuración de OpenCV, también es la más difícil y la que más tiempo consume. Si está buscando la manera más rápida posible de instalar OpenCV en su sistema, querrá  usar pip para instalar OpenCV, pero hay algunas cosas que pueden hacer que se tropiece en el camino, así que asegúrese de leer el resto de este  post. 

Script  en Python

Ahora  este script    puede  ser nombrado  como  car_detector.py  y lanzarlo desde  la consola  .

Ojo no basta con lanzarlo F5 desde el propio Python pues dará probablemente error a l ahora de importar al libreria cv2, pero no se preocupe situarse en la ruta del scrript  en prython  y   ejecutar

sudo python car_detector.py

IMG_20181113_224935[1].jpg

A partir desde ahí debería funcionar la detección de imágenes  con lo que capte la imagen de  la Raspberry Pi

En el siguiente vídeo podemos ver el script en acción

 

 

Como vemos en elvideo en pequeña escala, lo hizo bastante bien detectando un montón de objetos innecesarios, ( aunque  a veces detecta las sombras como objetos.)En un escenario del mundo real, los resultados fueron sorprendentemente precisos ,pero si es  cerca de las condiciones perfectas, Tenga en cuenta que el código es  básico actualmente y necesitaria muchas más pruebas y depuración)

De los dos métodos,este  método , pero el primer método  es más confiable en múltiples situaciones. Así que si usted fuera a hacer esto para su coche, iría con el método  inicial ( el que usa overlay).

 

 

Conexión hacia la Raspberry Pi via vnc

Ya que se ha conectado exitósamente a la consola de comandos por ssh , seguro que le interesa también poderse conectar tambien  al interfaz gráfico por lo que ahora nos toca instalar y configurar el servidor de VNC sobre Raspberry Pi  en su tablet/smartphone.

Para instalar y configurar el VNC viewer en su tablet/smartphon en  android  siga los siguientes pasos:

  • Descargue la app Vnc Viewwer desde Google Play desde la url  oficial https://play.google.com/store/apps/details?id=com.realvnc.viewer.android
  • Al ejecutar la   app por primera vez le pedira una cuenta de  vnc, de modo qeu si no la tiene tendra que creala desde la propia aplicacion introduciendo una cuenta de correo, un nombre , apellido,pais   y un catcha,
  • En nuestro correo electrónico recibiremos un email que debemos validar para confirmar que  cuenta nos pertenece
  • Una vez que haya confirmado los datos puede intentar volver a entrar en la app VNV Viewer ingresando las credenciales que introdujo
  •  Ahora  siga el procedimiento similar al del ssh
    • Haga clic en el el Boton del signo más en la parte inferior izquierda de la pantalla y seleccione la opción Nuevo Host.
    • Entrar los siguientes datos:

    Alias: cualquier nombre es aceptable como por ejemplo Raspberry Pi 

    Username: pi

    Nombre de host: la  dirección Ip  obatnida con el comando ifconfig

    Contraseña: la pwd que haya puesto

    Los demás campos se pueden dejar espacios en blanco, luego toque la marca de verificación en la derecha superior. Después de eso, haga clic en una Conectar cuando se le preguntó ” Si desea conectar el dispositivo

  • Para  conectarse  a  su Raspberry Pi , dado que ya ha creado la conexión, pulse  sobre el icono nuevo que aparece en la pantalla de inicio
  • Enseguida deberían aparecer   las credenciales de acceso  y probablemente el pwd en blanco que deberemos completar  .
  • Finalmente progresar la conexión  pulsando en CONTINUE
  • Una vez dado el botón de conectar debería aparecer la pantalla principal de Raspbian que ahora podremos controlar desde nuestro smartphone
  • Podemos ver la imagen de la cámara  ahora desde el propio teléfono

Screenshot_2018-11-13-22-55-52-301_com.realvnc.viewer.android[1]

 

Mas información en :https://www.hackster.io/tinkernut/raspberry-pi-smart-car-8641ca

 

Bot de Telegram con Raspberry Pi


Telegram Messenger como todos sabemos  es una famosa aplicación de mensajería y VoIP  desarrollada por los hermanos Nikolái y Pável Dúrov    con altas  capacidades de  alojamiento de contenido (con historial de las conversaciones y mensajes guardados),6​7​ archivos (hasta 1.5 GB, incluyendo documentos, multimedia y animaciones gráficas), búsqueda global de usuarios, sincronización de contactos, llamadas, canales de difusión, supergrupos, entre otros.

Inicialmente en 2013  fue empleado en smartphones pero al poco tiempo en 2014 comenzo a ser  multi-plataforma para más de 10 sistemas operativos: Android, iOS, macOS, Windows, GNU/Linux, Firefox OS, navegadores web, entre otros y actualmente rivaliza  con Whatsapp al que poco a poco esta intentando arrebatando usuarios.

Además de las características citadas  Telegram ,ofrece la plataforma de bots que además de hacer conversaciones inteligentes y pueden realizar otros servicios y complementar la experiencia en las conversaciones.

En este post precisamente nos vamos a centraros  en el uso del bot Botfather para interactuar desde Telegram  con nuestra Raspberry Pi

En primer lugar,para empezar buscaremos  BotFather seleccionando la opción “Bot”

Ahora pretendemos crear un Bot nuevo ,por lo que pulsaremos en crear nuevo o enviaremos  /newbot
Screenshot_2018-11-06-22-34-27-741_org.telegram.messenger[1]
Enseguida nos pedirá un nombre   , como por ejemplo “soloelectronicos_bot”
ademas tenemos qeuñadir un usuario para nuestro bot ,La regla es que debe terminar en bot , como por ejemplo soloelectronicosbot

 Configurar nuestra Raspberry Pi

En primer lugar necesitamos ,  obtener la dirección IP de la Raspberry Pi

Para conocer la dirección IP del Raspberry Pi, tendrá que  conectar la Raspberry Pi  a la alimentación y  deberá tener conexión a  Internet   .

Ahora  desde    un terminal   ejecutar el comando ifconfig. La  salida  desde una Raspberry Pi 3 sera similar a esta:

[email protected]:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.64 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::625:6aec:6f57:df7c prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:67:0c:6f txqueuelen 1000 (Ethernet)
RX packets 661 bytes 45810 (44.7 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 585 bytes 202270 (197.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 17 bytes 1004 (1004.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17 bytes 1004 (1004.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:27:eb:32:59:3a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[email protected]:~ $

 

Observe que en negrita casi al principio de la salida del comando donde  nos indica la dirección IP para podernos conectarnos  de forma remota, asi  que recomendamos que la anote aparte.

raspberrypi

Una vez que tenemos la ip   si antes no  se ha conectado de forma remota asegúrese de que esta habilitado la conexión tanto por SSH como por VNC , para lo cual  nos iremos a Preferencias-->Configuración de la Raspberry Pi y seleccionaremos la pestaña Interfaces.

Es esta pantalla , debemos seleccionar SSH y VNC . Finalmente pulsaremos aceptar  pero  para que se apliquen los cambios tendremos que reiniciar la Raspberry  Pi

 

ssh.PNG

Por cierto, si no recuerda la clave que escribió en la primera configuración debería ir a  Preferencias–>Configuración de la Raspberry Pi y en la pestaña Sistema pulsar cambiar clave, pues sera esta la que tendrá que escribir casa vez que intente conectarse a la Raspberry Pi

 

clave.PNG

Ahora nos conectaremos  con el vnc ingresando la dirección ip de l aRaspeberry Pi obtenida, anteriormente , el  nombre de usuario ( suele ser pi )   y la password

Ahora por si estamos en una version antigu de Python ( la version ultima ya lo incluye ) deberiamos instalar  el indice de paquetes Python

sudo apt-get install python-pip
 sudo pip install telepot

 Ejecutar el código de Python

Ahora ya tenemos todos los ingredientes faltándonos tan solo el script en python que nos permitirá   transcribir la información enviada por Telegram si corresponde con nuestro Token  ,   hacia   ordenes   qeu pueden ser procesada  por la Raspberry Py

El script en  Python escrito  por Salman Faris es bastante sencillo  pues tras importar los modulos necesarios , define el pin 11  con dos estados (on  y off) y en funcion de las ordenes que reciba del Telegram   pondrá o no a nivel alto dicho pin

Este el código completo del script escrito por Salman:

#coder :- Salman Faris

import sys
import time
import random
import datetime
import telepot
import RPi.GPIO as GPIO

#LED
def on(pin):
            GPIO.output(pin,GPIO.HIGH)
return  def off(pin):
           GPIO.output(pin,GPIO.LOW)
return

# para numerar en  la  placa  Raspberry Pi por el numero de los pines

GPIO.setmode(GPIO.BOARD)

# configurar el canal de salida del GPIO

GPIO.setup(11, GPIO.OUT)

bot = telepot.Bot('TOKEN OBTENIDO DESDE TELEGRAM')

def handle(msg):
chat_id = msg[‘chat’][‘id’]
command = msg[‘text’]

print ‘Got command: %s’ % command

if command == ‘on’:
bot.sendMessage(chat_id, on(11))
elif command ==’off’:
bot.sendMessage(chat_id, off(11))

bot = telepot.Bot(‘Bot Token’)
bot.message_loop(handle)
print ‘I am listening…’

while 1:
time.sleep(10)

 

Podemos sencillamente  clonar el script anterior desde  el respositorio  git de Salman mediante  el siguiente camando  git clone:

git clone https://github.com/salmanfarisvp/TelegramBot.git 

[email protected]:~ $ git clone https://github.com/salmanfarisvp/TelegramBot.git
Cloning into ‘TelegramBot’…
remote: Enumerating objects: 25, done.
remote: Total 25 (delta 0), reused 0 (delta 0), pack-reused 25
Unpacking objects: 100% (25/25), done.
[email protected]:~ $

Ahora  tenemos  que asignar el Token obtenido  en pasos anteriores al script por lo tendremos que editar  desde el editor de texto de Python    y  escribir  ahí su valor

 bot = telepot.Bot('TOKEN OBTENIDO DESDE TELEGRAM') 

Salvaremos los cambios  y ejecutaremos  el código  bien con F5 desde el entorno de programacion de Python o bien desde shell  mediante la siguiente orden:

python telegrambot.py 

Ahora  si conectamos un led entre el pin 11 y masa podremos activarlo o desactivarlo desde Telegram enviando al bot  las frases  “on” y “off”: inmediatamente, estemos donde estemos deberiamos poder encender  el LED  o apagarlo  cuando envíamos “on” y “off” a nuestro bot desde Telegram.

 

Obviamente puede modificar el script base de Salman para activar mas cargas ( de hecho hasta 26)  que obviamente pueden ser mas complejas que un  sencillo led ,  como puede ser  un rele , motor , etc mediante el driver adecuado     y a  traves de ordenes desde Telegram ( por ejemplo on1, off1, on2, etc) 

 

 

Cómo conectarse a una Raspberry Pi desde un smartphone


No siempre esta fácilmente accesible un ordenador para conectarnos cómodamente desde ssh o por vnc   o tal vez no tenga un segundo teclado o ratón disponibles, así que ¿porque no intentar acudir a  una  smartphone  o tableta para conectarnos desde allí ?

 

Screenshot_2018-11-04-23-01-45-352_com.realvnc.viewer.android[1]

 

Pues en  efecto es posible conectarse a una Raspberry Pi desde un smartphone o tableta , y de forma muy sencilla ,como vamos a  ver a  continuación, pero para ello, en primer lugar necesitamos ,  obtener la dirección IP de la Raspberry Pi

Para conocer la dirección IP del Raspberry Pi, tendrá que  conectar la Raspberry Pi  a la alimentación , deberá tener conexión a  Internet   .

Ahora  desde    un terminal   ejecutar el comando ifconfig. La  salida  desde una Raspberry Pi 3 sera similar a esta:

[email protected]:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.64 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::625:6aec:6f57:df7c prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:67:0c:6f txqueuelen 1000 (Ethernet)
RX packets 661 bytes 45810 (44.7 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 585 bytes 202270 (197.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 17 bytes 1004 (1004.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17 bytes 1004 (1004.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:27:eb:32:59:3a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[email protected]:~ $

 

Observe que en negrita casi al principio de la salida del comando ,  el comado nos indica la dirección IP para podernos conectarnos  de forma remota, asi  que recomendamos que la anote aparte.

Una vez que tenemos la ip   si antes no  se ha conectado de forma remota asegúrese de que esta habilitado la conexión tanto por SSH como por VNC , para lo cual  nos iremos a Preferencias-->Configuración de la Raspberry Pi y seleccionaremos la pestaña Interfaces.

Es esta pantalla , debemos seleccionar SSH y VNC . Finalmente pulsaremos aceptar  pero  para que se apliquen los cambios tendremos que reiniciar la Raspberry  Pi

 

ssh.PNG

Por cierto, si no recuerda la clave que escribió en la primera configuración debería ir a  Preferencias–>Configuración de la Raspberry Pi y en la pestaña Sistema pulsar cambiar clave, pues sera esta la que tendrá que escribir casa vez que intente conectarse a la Raspberry Pi

 

clave.PNG

Conexión hacia la Raspberry Pi por ssh

Lo  primero  que quizás se nos ocurra es la la conexión de Pi con teléfono via  SSH cliente):SSH (Secure Socket Shell), el cual  es un protocolo de acceso  muy común a todo los equipos unix  y Linux que nos da acceso a la consola de comandos

Existe  una app llamada  Serverauditor  que se puede descargar desde la store de Android (Google Play ) gratuitamente. Asimismo también está disponible para dispositivos iOS.

Asegúrese de que el smartphone o tableta y la Raspberry  Pi están en la misma red para poder realizar la conexión

Los pasos para instalar Serverauditor en el teléfono:

Alias: cualquier nombre es aceptable como por ejemplo Raspberry Pi 

Username: pi

Nombre de host: la  dirección Ip  obtenida con el comando ifconfig

Contraseña: la pwd que haya puesto

Los demás campos se pueden dejar espacios en blanco, luego toque la marca de verificación en la derecha superior. Después de eso, haga clic en una Conectar cuando se le preguntó ” Si desea conectar el dispositivo

  • Nota:Nombre de usuario y contraseña son los de frambuesa Pi. Si uno ha cambiado del predeterminado, necesita entrar con el actual nombre de usuario y contraseña.
Screenshot_2018-11-04-22-30-22-624_com.server.auditor.ssh.client[1]

Ahora  ya tiene un modo muy sencillo de ejecutar consola de Raspberry Pi en la pantalla así que !disfrútelo!.

En el vídeo siguiente precisamente podemos ver el programa en funcionamiento

Conexión hacia la Raspberry Pi via vnc

Ya que se ha conectado exitósamente a la consola de comandos por ssh , seguro que le interesa también poderse conectar tambien  al interfaz gráfico por lo que ahora nos toca instalar y configurar el servidor de VNC sobre Raspberry Pi  en su tablet/smartphone.

Para instalar y configurar el VNC viewer en su tablet/smartphon en  android  siga los siguientes pasos:

  • Descargue la app Vnc Viewwer desde Google Play desde la url  oficial https://play.google.com/store/apps/details?id=com.realvnc.viewer.android
  • Al ejecutar la   app por primera vez le pedira una cuenta de  vnc, de modo qeu si no la tiene tendra que creala desde la propia aplicacion introduciendo una cuenta de correo, un nombre , apellido,pais   y un catcha,
  • En nuestro correo electrónico recibiremos un email que debemos validar para confirmar que  cuenta nos pertenece
  • Una vez que haya confirmado los datos puede intentar volver a entrar en la app VNV Viewer ingresando las credenciales que introdujo
  •  Ahora  siga el procedimiento similar al del ssh
    • Haga clic en el el Boton del signo másen la parte inferior izquierda de la pantalla y seleccione la opción Nuevo Host.
    • Entrar los siguientes datos:

    Alias: cualquier nombre es aceptable como por ejemplo Raspberry Pi 

    Username: pi

    Nombre de host: la  dirección Ip  obatnida con el comando ifconfig

    Contraseña: la pwd que haya puesto

    Los demás campos se pueden dejar espacios en blanco, luego toque la marca de verificación en la derecha superior. Después de eso, haga clic en una Conectar cuando se le preguntó ” Si desea conectar el dispositivo

  • Para  conectarse  a  su Raspberry Pi , dado que ya ha creado la conexión, pulse  sobre el icono nuevo que aparece en la pantalla de inicio
  • Enseguida deberían aparecer   las credenciales de acceso  y probablemente el pwd en blanco que deberemos completar  .
  • Finalmente progresar la conexión  pulsando en CONTINUE
  • Una vez dado el botón de conectar debería aparecer la pantalla principal de Raspbian que ahora podremos controlar desde nuestro smartphone  haciedo uso de las herramientas que nos aparecen en la parte superior de la pantalla

 

Screenshot_2018-11-04-23-01-45-352_com.realvnc.viewer.android[1]

  • Para faciliar el manejo VNC sin teclado  y ratón   clásicos  aparte de la barra de herramientas , este  programa  añade soporte de gestos con los dedos  para  facilitarnos la interaccion con Raspbian:

Screenshot_2018-11-04-23-00-59-320_com.realvnc.viewer.android[1]Screenshot_2018-11-04-23-00-52-332_com.realvnc.viewer.android[1]

 

NOTA: En caso de versiones MUY  antiguas de Raspbian que no traigan VNC instalado deberá instalar al version servidor de VNC  en la Raspberry Pi de forma manual desde consola por   línea de consola, para ello introduzca los siguientes comandos en orden.

  1.  Instalar el paqueete TightVNC paquete:  sudo apt-get install tightvncserver
  2. Ejecutar servidor TightVNC; tightvncserver
  3. Se le pedirá que introduzca una contraseña y una contraseña de sólo lectura opcional.
  4. Crear un archivo de secuencia de comandos para iniciar el servidor VNC. Use Oeditor de texto  escribiendo el siguiente comando:nano
  5. Poner el siguiente script en él: #!/bin/sh  vncserver :1 -geometry 1920×1080 -depth 24 -dpi 96
  6. “Ctrl+o” para guardar el archivo. La extensión debe ser “.sh” por ejemplo llamelo “vnc.sh”. A continuación, “Ctrl + X” para salir del editor de.
  7. Hacer el archivo ejecutable.sudo chmod +x vnc.shCon este archivo, puede iniciar servidor VNC desde tu tablet/smartphone enviando un comando a través de SSH: ./vnc.sh dsfs

 

 

 

:

 

Cámara trasera inteligente con Raspberry Pi. Parte 1


El término “Coche inteligente” puede tener miles de significados diferentes dependiendo a quién le preguntemos., así que empecemos con una definición   modesta  de algunos componentes que podemos añadir :

  • Información básica sobre el coche, como la marcha engranada, eficiencia de combustible, horas de conducción ,etc.
  • Ayudas a la conducción de tipo ADAS , siendo   los mas comunes la puesta en marcha del  coche delantero, acceso involuntario a línea de separación de carril o aviso de colisión por vehículo delantero que circula  muy próximo
  • Cámara trasera inteligente que avise si un objeto está demasiado cercano
  • etc

Del primer punto lo hemos comentado en diferentes post , explicando que para automóviles de unos 10 años, es decir que cuentan con interfaz ODB2,  es relativamente simple añadir un HUD con toda esta información  con  un HUD conectado por ODB2

Resumidamente los sistemas ADAS  de ayuda  a  la conducción  mas usuales son las siguientes:

  • FCWS   del ingles  Forward Colission Warning Sytem (advertencia de colisión delantera) ayuda al conductor a mantenerse a una distancia segura del vehículo delantero y alerta a los conductores de una colisión inminente con advertencias visuales y audibles.Este sistema permite al dispositivo detectar cuando no se mantiene una distancia segura entre su vehículo y el vehículo delante de usted. El dispositivo determinará la velocidad de su vehículo calculando una distancia estimada de siguiente segura basada en su velocidad.Normalmente para que esta  función pueda estar habilitada se  debe estar  viajando a más de 48KM/H ( a una velocidad de menos de 32 KM/H, se suele  desactivar la función). Precisamente por esta limitacion el FCWS no puede detectar los vehículos que están  alejados más de 40m  o más cerca de 5m.

fcw.png

  • LDWS  del inglés Lane Departure Warning  System  ( SISTEMA DE  ADVERTENCIA DE SALIDA DE CARRIL) monitorea las marcas del carril y avisa al conductor con advertencias visuales y audibles cuando ocurre una salida involuntaria del carril sin la notificación de la señal de giro.Es un mecanismo diseñado para advertir al conductor cuando el vehículo empieza a moverse fuera de su carril (salvo que una señal de la vuelta en esa dirección) en las autopistas y carreteras de la zona. Este sistema está diseñado para minimizar los accidentes por abordar las principales causas de colisiones: error del conductor , distracción y somnolencia.

ldw

  • HMW( VIGILANCIA Y ADVERTENCIA DEL AVANCE DE PISTA)- Mide la distancia al vehículo que está por delante (“headway”) en segundos. Ayuda al conductor a mantener una distancia segura de conducción. Alerta al conductor al entrar en una zona predefinida de “avance peligroso”

.hmw.png

  • FVSA (ALARMA DE INICIO DEL VEHÍCULO DELANTERO ) Notifica al conductor si el vehículo delantero comienza a avanzar en el estado parado completo y el coche del conductor no se mueve en 2 segundos.

fvsa

Casi todas estas ayudas ADAS  están implementadas  en  numerosas cámaras  disponibles en el mercado como vismo en este post destacando por voz propia  el modelo Dash de Garmin

Respecto al ultimo punto de cámaras traseras  , hay muchos kits para  añadir una cámara  trasera a  nuestro vehículos usando una conexión analógica de video compuesto , lo cual se traduce en  que la mayoría de ellas requieren hacer modificaciones al coche  ,por  ejemplo para ubicar la cámara en el porta-matriculas  , o fijar la pantalla especifica   de modo que no siempre en sencilla su instalación .Además las cámaras traseras comentadas requieren una  fuente de alimentación externa alimentándose con los  cables de las luces de atrás de su coche para que automáticamente se enciendan cuando el coche está en marcha lo cual tampoco le  gusta a muchas personas .

Dado que el mercado no ofrece por  el momento soluciones mas avanzadas una idea es usar la Raspberry Pi pues es la plataforma perfecta  porque básicamente es un mini ordenador con un montón de entradas y salidas.

Al conectar una cámara a la Pi, se puede utilizar prácticamente cualquier webcam USB genérica, o  por supuesto  mejor puede usar una  Cámara Pi conectada al conector DSI pues estas ofrecen una mayor calidad , versatilidad y  no  requiere una fuente de alimentación separada (pero asegúrese de tener un montón de cable para ir a la parte posterior del coche)

Solución con Raspberry Pi

Gracias a una Raspberry Pi  por medio del procesamiento de imágenes en efecto  podemos  hacer más inteligente nuestro vehículo y añadir  nuevas funcionalidades

Para esta idea  podemos  usar  los siguientes componentes:

 

Conexión del módulo de cámara

El modulo de cámara de Pi  tiene un mayor rendimiento que una cámara USB  por lo que lo ideal es usar una cámara del tipo compatibles con Raspberry Pi  (se puede comprar por unos 15€ en Amazon) 

No es  problema  la distancia pues con un cable plano  de 200 cm suele ser suficiente para llevar la cámara  hasta la  posición de conducción (puede comprarlo   aqui en Amazon por unos 7,29€ )

Se puede pues llevar el cable plano al l frente del coche y luego conectado a una pantalla de táctil de 7″ de modo que  la Pi y la pantalla táctil pueden ser alimentados por el adaptador USB en el coche.

Estos  son los pasos para instalar la cámara especifica para su uso , con la Raspberry Pi 

    • Localice el puerto de la cámara y conecte la cámara:Connect the camera
    • Poner en marcha la Raspberry Pi 
    • Abra la Herramienta de configuración de frambuesa Pi desde el menú principal:Raspberry Pi Configuration Tool
    • Asegúrese de que está activado el software de la cámara:Camera software enabled
    • Si no está activado, habilítelo y reinicie su Pi para comenzar. Asimismo si va utilizar una pantalla táctil también necesitara activar I2C  y SPI

Es decir resumidamente;  con la Raspberry Pi apagada, debe conectar el módulo de la cámara al puerto de la cámara de la Raspberry Pi,ahora encienda el Pi  y asegúrese de que se activa el software.

Conexión de un pantalla táctil(opcional)

Existen pantallas TFT para Raspberry Pi con  resolución de 320×240 (16-bits) que además son táctiles con una pantalla resistiva. Se entregan montadas y suelen ser  compatible con los modelos Raspberry Pi Model A+, B+ y Pi 2  disponiendo  además de de un conector de 40 pines para los GPIO.

La pantalla y el digitalizador   utilizan los pines I2C (SDA y SCL), SPI (SCK, MOSI, MISO, CE0) y los pines GPIO #24 y #25. Todos los demás pines GPIO no se utilizan así que podrá conectar más cosas como sensores, LEDs etc. Algunos modelos disponen deposiciones para pulsadores miniatura (no incluidos) por si quiere hacer algún otro tipo de interfaz de usuario.

Puede utilizarla utilizar la librería PyGame u otra librería SDL para dibujar directamente en el frame buffer y hacer interfaces propios.

Tenga en cuenta que para que funcione debe tener activado el I2C en tu Pi o se quedará en blanco. Si utiliza la imagen de Adafruit funcionará sin problema, sino puedes ver su tutorial para ver cómo hacerla funcionar.

La conexión de este tipo de pantallas suele ser por el  propio conector de 25 pines  y por hdmi con un adaptador

Respecto al sw, estos son los pasos  que puede  seguir;

!Ojo el conector plano de la pantalla pues es MUY frágil y debe manejarse con cuidado.!

Montaje final

Una vez montada  la pantalla y la cámara , encender el coche, la Pi y la pantalla . Para ver la camara   de la Pi, abra el terminal y ejecute simplemente  el  siguiente  script:

raspivid -t 0

o

raspivid -t 0 --mode 7

Después de entrar esto ,   la imagen captada por la cámara debería aparecer  en pantalla  completa , pero  !ojo !  no lo veremos  si estamos conectado via VNC!, es decir ,solo si estamos conectados a la propia  Raspberry Pi .

Lo bueno de a Raspberry Pi  es que se puede mejorar  esta forma básica , y tal vez incluso establecer un sistema de alerta si un objeto esta   demasiado cerca , así que, ! vamos a trabajar en ese lado!

 

DETECCIÓN DE OBJETOS

Cuando se trata de aplicaciones de  cámaras de seguridad comerciales, generalmente hay al menos dos versiones  .La primera utiliza una superposición de una imagen estática con gamas de color para que visualmente puede determinarse cuánto de  cerca está un objeto. El segundo método utilizara una cámara junto con sw  que puede detectar un objeto qué tan cerca esta al coche y luego avisa cuando algo está demasiado cerca
Veamos en este post en primer lugar le método de overlay, el cual por cierto es el mas usado en los implementaciones de cámaras traseras de coches actuales.

 

 

Cómo agregar un botón de encendido/apagado a la Raspberry Pi


Siempre debemos apagar con  seguridad nuestra Raspberry Pi ,pues de lo contrario nos exponemos  a perder  el sistema de arranque y  tener que volver  a  crear una  imagen  con todo el trabajo que esto conlleva  respecto a las personalizaciones que tanto nos gustan
Raspberry Pi no cuenta con   un pulsador de encendido para intentar competir con su clones  y de este modo  mantener el precio “bajo”,  aunque  sin embargo, es muy fácil  añadir  el suyo propio  como vamos a ver en este post donde añadiremos un botón de encendido a su Raspberry para que puede encender o  apagar esta con total de seguridad .
No nos bastara añadir el pulsador pues tendremos  que usar unos scripts que vigilen  dos pines GPIO (general entrada/salida) en el Pi para que cuando se presione el botón activar o desactivar el  Pi.

 

raspberrypi

¿Por qué es importante un botón de encendido ?

Como comentábamos  nunca deberíamos “tirar” del cable de alimentación de su Raspberry Pi pues esto puede conducir a la corrupción de los datos graves (y en algunos casos, dañar físicamente tu tarjeta SD) pues para ello se puede cerrar con seguridad el Pi a través de un comando de consola (shutdown)  o por supuesto también  desde el propio interfaz gráfico de Raspian (shutdown)

Veamos  ahora como podemos añadir un pulsador  pero entes tenemos que entender cómo despertar la Raspberry Pi de un estado de suspensión antes de construir la funcionalidad de apagado.

Una manera fácil de comprobarlo es apagando  con sudo shutdown -h now y conectando los pines 5 y 6 con un cable hembra a hembra. Sólo necesitará cortarlo momentáneamente y entonces usted debe encontrar que la Raspberry Pi se “despertó”.

En este punto es interesante destacar que cuando “apaga” el Pi, lo enviará en un estado de suspensión, lo cual significa  que sigue consumiendo una cantidad muy pequeña de  energía ( muy  similar a cómo todos modernos equipos trabajo cunado quedan en stand-bye).

Lógicamente  si  agrega un botón de encendido podrá tanto detener como despertar el Pi de un estado detenido, pero si su Raspberry Pi se ha apagado, usted puede desconectar de forma segura la fuente de alimentación  sin la preocupación de corrupción de datos.

 

El equipamiento hardware como vemos es muy sencillo pues basta dos cablecillos que conectaremos en los pines 5 y 6  de la Raspberry PI del conector de expansión( justos los dos de la tercera columna empezando por la drecha)

IMG_20181018_224306[1].jpg

 

Sencillamente, si se cortocircuitan entre sí los pines 5 y 6 (GPIO3 y GND) se pondrá nivel bajo el pin correspondiente al GPIO y podremos actuaren consecuencia con la Raspberry Pi

Obviamente el cortocircuito lo sustituiremos por un pequeño pulsador normalmente abierto  que conduciremos con dos cablecillo  a los pines 5 y 6  de nuestra Raspbery Pi

 

IMG_20181018_224929[1]

Finalmente sujetaremos el pulsador con cinta de doble cara , pegándolo o practicando un agujero al contenedor de la Raspberry Pi

 

IMG_20181018_225410[1]

 

 

La solución de sleep es bastante sencilla, pero para cerrar con seguridad el Pi vamos a tener que utilizar una solución de software. Ya que sabemos que vamos a utilizar los pines 5 y 6 para el Pi, vamos a usar estos pines para apagarlo tambien . Tanto así que podemos conectar nuestro botón a los alfileres y se concluirá y despertar la Pi.

Vamos a tener que escribir un script que escuche una pulsación y  cierre el Pi. Antes nos fijamos en la secuencia de comandos, vamos a discutir algunos enfoques diferentes. En primer lugar, podríamos escribir un script que inicie un bucle infinito y espere un cambio en el estado de los pines GPIO.

Usando  seudo-código, podría ser algo como:

while True:
    if GPIO3 is pressed:
        shutdown the pi

Mientras que esto funcionaría y probablemente no tenga problema de rendimiento real, hay realmente una manera mejor:podemos escuchar  una interrupción (un cambio de estado de bajo a alto o alto a bajo) que interrumpa  el procesador para qeu realize uan determinada accion .

Afortunadamente la biblioteca de RPi.GPIO proporciona un método llamado wait_for_edge que bloqueará la ejecución de nuestro script hasta que se detecte una interrupción. Así configuramos GPIO3 y una vez que detectamos un borde de caída vamos a apagar el Pi.

Entonces, vamos a usar un script llamado listen-for-shutdown.py.

Para crear el script, podemos usar el editor nano asi  que después de conectar con el Pi, ejecute el siguiente comando para crear este

sudo nano listen-for-shutdown.py

Luego, pegue el código siguiente en el archivo y pulse CTRL-X y salida, Y para guardar cuando se le solicite.

#!/usr/bin/env python


import RPi.GPIO as GPIO
import subprocess


GPIO.setmode(GPIO.BCM)
GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.wait_for_edge(3, GPIO.FALLING)

subprocess.call(['shutdown', '-h', 'now'], shell=False)

A continuación necesitamos poner este script en el arranque por lo que  deberemos copiar el script en lar uta de  usr y hacerlo ejecutable , acciones que haremos con los dos siguintes comandos:

sudo mv listen-for-shutdown.py /usr/local/bin/
sudo chmod +x /usr/local/bin/listen-for-shutdown.py

Pero este script solo apagaria la placa  y nosotros queremso tambien qeu se pueda arrancar pulsando el boton por lo que  añadiremos otro script llamado listen-for-shutdown.py: que e enciende/apaga nuestro servicio.

Para crear el script  escriba  la secuencia de comandos:

sudo nano listen-for-shutdown.sh

Introduzca el código siguiente en el archivo y guárdelo:

#! /bin/sh

### BEGIN INIT INFO
# Provides:          listen-for-shutdown.py
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

# If you want a command to always run, put it here

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting listen-for-shutdown.py"
    /usr/local/bin/listen-for-shutdown.py &
    ;;
  stop)
    echo "Stopping listen-for-shutdown.py"
    pkill -f /usr/local/bin/listen-for-shutdown.py
    ;;
  *)
    echo "Usage: /etc/init.d/listen-for-shutdown.sh {start|stop}"
    exit 1
    ;;
esac

exit 0

 

Ahora necesitamos coloque este archivo en /etc/init.d y hacerlo ejecutable, acciones que haremos con los dos siguientes comandos.

sudo mv listen-for-shutdown.sh /etc/init.d/
sudo chmod +x /etc/init.d/listen-for-shutdown.sh

Ahora registramos la secuencia de comandos para ejecutar en el arranque y le pasaremos el parámetros de arranque con los dos siguientes comandos.

sudo update-rc.d listen-for-shutdown.sh defaults
sudo /etc/init.d/listen-for-shutdown.sh start

 

Seguro querido lector que por lo menos la próxima vez que desconecte su Raspberry de forma violenta recuerda que podría haber puesto un botón para hacer el apagado seguro…  Y por cierto si tiene una Orange Pi u otro clon , este sencillo truco le puede servir tambien..

 

 

Fuente  howchoo.com

Como usar una webcam standard con una Raspberry Pi


Una de las opciones que, a priori, puede parecernos más   atractiva  y tal vez útil por las posibilidades  que  no ofrece como cámara de seguridad, reconocimiento de imágenes, cámara trasera para vehículos , etc   para nuestra Raspberry Pi  es  conectarle una cámara e  intentar  visualizar y/o  capturar en el monitor la imagen captada por la misma..

Lamentablemente  en el universo Linux es algo más complicado añadir drivers para todo el hw disponible ,  y es ahí  donde por desgracia no le son ajenas las cámaras web usadas para pc pues en lugar de utilizar el módulo de la cámara  nativa del Raspberry Pi  que suele tener un coste ciertamente elevado es mas interesante  utilizar una versátil webcam USB estándar para tomar fotos y vídeo en la Raspberry Pi.Tenga en cuenta que la calidad y capacidad de configuración del módulo de cámara nativo con interfaz CSI  es muy superior a una webcam USB estándar,  pero por el contrario este también tiene una gran limitación : la longitud del cable de cinta que excepto compremos que dos  adaptadores de CSi a HDMI (lado cámara) , de HDM a CSI (lado Raspberry Py)   y luego un largo cable hdmi   solo se podría situar tan solo unos pocos centímetros respecto a la Raspberry Pi .

raspberrypi

Requisito previos

Una vez que tengamos una cámara para operar con nuestra RasPi hemos de asegurarnos de que la misma es “soportada” por el S.O. Linux que estamos utilizando.

La consulta de la lista de compatibilidad puede ayudar  pero podemos comprobarlo en desde  linea de  comandos para verificar si el sistema la identifica correctamente.

Antes de conectar la cámara al sistema iremos al terminal y teclearemos el comando dmesg | tail, lo que hará que se nos muestren los últimos mensajes generados por la RasPi.  Ahora conectamos la cámara a la Raspberry Pi y repetimos el comando anterior (dmesg | tail), y en este caso se nos deberán mostrar algunos mensajes que hagan referencia al nuevo hardware detectado.

Otra comprobación interesante es verificar si la cámara ha sido detectada como dispositivo Linux, para ello teclearemos ls /dev , lo que hará que aparezca  , si es que el sistema la detecta , como dispositivo  /dev/videoX ( normalmente /dev/video0 pero asegurese con un ls /dev)

De forma previa podemos instalar  el  software para poder visualizar de una forma cómoda los ficheros obtenidos  para poder verlos desde el propio terminal dentro del entorno gráfico pues la visualización de imágenes desde el entorno gráfico se puede efectuar con solo “pinchar” en la imagen a mostrar desde el navegador gráfico de archivos para los cual podemos instalar el sw de imagen magick

Para instalar el paquete citado  basta teclear:

 sudo apt-get install imagemagick

Existen varias utilidades para capturar imágenes  desde un web cam  veamoslas:

Fswebcam

En efecto la  herramienta fswebcam, que funciona bajo línea de comandos,  nos permite capturar imágenes a través de la Webcam USB, para ello en primer lugar, instale el paquete:fswebcam  con el comando sudo , es decir:

sudo apt-get install fswebcam 

Ahora escriba el comando seguido de un nombre de archivo y una imagen se tomaron con la cámara web y se guardarán al nombre de archivo especificado como por ejemplo fswebcam /dev/video0 image.jpg

Este comando mostrará la siguiente información:

[email protected]:~ $ fswebcam -d /dev/video0 pepe.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'pepe.jpg'

Como vemos la resolución por defecto es pequeña y ademas se complementa en la parte inferior con un pequeño banner  que muestra la fecha y hora.

prueba.PNG

En caso de utilizar una web cam hd,  para especificar la resolución podemos forzar que la imagen para sea tomada  a mayor resolución , para ello se puede  utilizar la bandera:1280 x 720-r

fswebcam -r 1280x720 -d /dev/video0 pepe2.jpg

Este comando mostrará la siguiente información:

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 1280x720 to 640x480.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'pepe2.jpg'

Puede   quitar el banner inferior puede añadir el siguiente parámetro:--no-banner :

fswebcam -r 1280x720 --no-banner image3.jpg

El cual  muestra la siguiente información:

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd6
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to 'image3.jpg'.

Ahora con  ese parámetro ya   se toma la imagen a resolución completa  sin banner

Script de captura

Puede escribir un script de Bash para que tome una foto con la webcam por lo que la secuencia de comandos  que vamos a vera continuación guarda las imágenes en el directorio,

En primer lugar  crear el subdirectorio primero en:/home/pi/webcamwebcam  conmkdir webcam

Para crear una secuencia de comandos, abra su editor de la opción y escriba el siguiente código de ejemplo:

#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H%M")

fswebcam -r 1280x720 --no-banner /home/pi/webcam/$DATE.jpg

Este script tome una fotografía y usa como nombre del archivo con una marca de tiempo.

Para poder ejecutar el script webcam.sh en primer lugar nos gustaría hacer el archivo ejecutable:

chmod +x webcam.sh

Luego ejecutar con:

./webcam.sh

Al ejecutarlo dar la  siguiente salida:

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd6
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to '/home/pi/webcam/2013-06-07_2338.jpg'.

Time-lapse con cron

Usted puede utilizar para tomar una fotografía en un intervalo dado, como cada minuto para capturar un time-lapse.cron ,para ello primero abra la tabla cron para editar:

crontab -e

Esto tampoco pedirá que editor que desea utilizar, o abrirá en su editor predeterminado. Una vez que tenga el archivo abierto en un editor, agregue la línea siguiente para tomar una fotografía cada minuto (refiriéndose a la secuencia de comandos de Bash desde arriba):

* * * * * /home/pi/webcam.sh 2>&1

Guardar y salir y usted debería ver el mensaje:

crontab: installing new crontab

Asegúrese de que su gscript no permite guardar cada fotografía tomada con el mismo nombre de archivo. Esta acción sobrescribirá la imagen cada vez.

 

Uvcpature

Para poder utilizar las prestaciones de nuestra cámara web también podemos instalar los paquetes uvccapture y libv4linux-0

Antes de hacerlo puede ser preciso (recomendable) actualizar las fuentes de instalación con: sudo apt-get update  y para descargar los paquetes ejecutaremos:

 sudo apt-get

install uvccapture libv4l-0

Conectada la cámara y teniendo los programas adecuados ya instalados, vamos a realizar una prueba simple de que todo está funcionando correctamente. Desde el terminal tomamos una instantánea con los parámetros estándar (opción -m) :

 uvccapture -m

Ahora listamos la carpeta para comprobar que se capturó el fichero snap.jpg (nombre por defecto de la captura) y luego lo visualizamos mediante el comando display snap.jpg

En caso de que  el fichero capturado (snap.jpg) salga  bastante obscuro podemos ver como están los ajustes por defecto de la cámara mediante el parámetro -v , uvccapture -m -v

También si el brillo está muy bajo, podemos capturar una nueva imagen pero subiéndolo bastante mediante el comando (parámetro -Buvccapture -m -B50

Además de los parámetros comentados, el comando uvccapture nos permite otra serie de interesantes opciones, como por ejemplo podemos parametrizar una nueva captura – modificando brillo y contraste – pero guardando la misma en un fichero llamado “captura.jpg

uvccapture -m -B50 -C10 -o”captura.jpg”

Por si fuera poco el comando uvccapture permite que efectuemos de forma secuencial, – y en un lapso de tiempo elegido por nosotros – la captura consecutiva de tomas desde la cámara USB. No debemos confundir esta posibilidad – aunque se le parezca – con la toma de un “stream” o flujo de vídeo continuo. Lo que obtendremos al efectuar esta captura consecutiva es imágenes cada cierto intervalo. Así que vamos a verlo con un ejemplo…

Ejecutamos el comando uvccapture con el parámetro -t , el cual hace que se capture una imágen cada cierto número de segundos (3 segundos en nuestro ejemplo), el cual, si no se especifíca algo diferente se guardará en el fichero snap.jpg.

uvccapture -m -B70 -C40 -S5 -t3   (pulsar VTRL+c para finalizar el bucle de captura)

El resultado de la captura será una toma cada 3 segundos que se guardará en el fichero por defecto (snap.jpg). La única desventaja de este método radica en que el fichero de captura se “machaca” con cada una de ellas, por lo que solo estará a nuestra disposición el último de los generados.

Para subsanar esto podemos hacer uso de una de las prestaciones del programa uvccapture que nos permite ejecutar un comando Linux inmediatamente después de efectuar una captura. ¿Y que podemos ejecutar?… pues parece claro que lo más idóneo sería algún tipo de comando o sucesión de estos que nos permita salvaguardar la última captura, de forma y manera que al realizarse la siguiente toma esta no sea “machacada” impunemente de forma muy similar a como vimos en el script anterior.

 

 

 

Otras herramientas útiles

Otras herramientas están disponibles que puede ser útil cuando se utiliza la cámara o una webcam:

  • SSH  Utilizado para acceder remotamente el Raspberry Pi en su red local
  • SCP  Sirve para copiar ficheros sobre SSH  ypara obtener copias de las fotografías tomadas en la Pi en el ordenador principal
  • rsync : Uso para sincronizar la carpeta de imágenes tomadas en una carpeta entre el Pi al ordenadorrsync
  • cron Utilizar para programar tomar una fotografía en un intervalo dado, como cada minuto para capturar un time-lapsecron

 

 

 

Mas  información en  raspberrypi.org