Fork me on GitHub

Posts in tag `Raspberry'

NeoPixels en Raspi Zero W

July 28, 2017

Los NeoPixels se conectan en serie, por lo que podés controlar una gran cantidad de ellos simplemente con un pin. Aunque sólo tengas que usar un único LED RGB en tu proyecto, te conviene usar un Neopixel frente a un LED RGB tradicional, porque, te ahorrás 2 pines y porque los colores son realmente nítidos. Los he venido usando tanto con Arduino como con ESP8266, gracias a la lib de Adafruit. Hay por lo menos dos versiones: los WS2812 y los WS2812b. Estos últimos son la versión más nueva y los que muestro aquí.

Estos leds funcionan con 5v, así que usé uno de los pines de 5v de la Raspberry. Los pines 2 y 4 están conectados directamente a la fuente de alimentación por lo que pueden proveer tanta corriente como esta esté entregando. En el sitio pinout.xyz se puede ver esto y una descripción de cada pin.

La lib que hay que instalar se llama rpi_ws281x y hay que compilarla ya que no existe actualemente un empaquetado. Así que a instalar dependencias:

sudo apt-get update
sudo apt-get install build-essential python-dev git scons swig

Luego bajamos la lib y la compilamos:

git clone https://github.com/jgarff/rpi_ws281x.git
cd rpi_ws281x
scons

Finalmente la instalamos:

cd python
sudo python setup.py install

Listo, ahora ya podemos probarla

cd example
vi strandtest.py

Aquí editamos el valor de LED_COUNT según la cantidad de leds que tengamos y finalmente:

sudo python strandtest.py

Read more »

Python Raspberry

Alarma con Raspberry Pi

June 27, 2016

En la MagPi salió un suplemento, Beginner's Electronic Raspberry Pi, que tiene varios tutoriales usando la nueva lib de Python gpiozero. Me gustó especialmente el que muestra cómo hacer una alarma usando un sensor de movimiento, es realmente simple con gpiozero.

El código está sacado del ejemplo, simplemente cambié los pines del sensor y el buzzer para que me quedara más cómodo en mi diagrama.

El esquema de conexiones lo hice con Fritzing

Python Raspberry Trabajos

Arduino Snake

December 4, 2014

Estuve haciendo dos proyectos en Arduino: Arduino Matrix RGB y Arduino Gamepad. Los dos tienen la característica de que se comunican por serial. En el caso de la matriz el sketch está permanentemente escuchando el puerto serial y cuando recibe un comando ejecuta alguna instrucción simple. En el gamepad es al revés, cada vez que se detecta un cambio, ya sea porque se mueve el joystick o se presiona un botón, se envía por serial el evento. De esa forma puedo controlar ambos desde un mismo programa. Para los clientes elegí Python.

Para combinar ambos se me ocurrió hacer un juego sencillo, el clásico Snake. La matrix funciona sobre un Arduino UNO y el gamepad sobre un Nano, ambos conectados a una Raspberry Pi B+

gamepad = Gamepad(Serial('/dev/ttyACM0', 9600))
matrix = Matrix(Serial('/dev/ttyUSB0', 9600))
snake = Snake(gamepad, matrix)

Arduino Juegos Python Raspberry Trabajos Video

2.2 TFT LCD Display Raspberry Pi

September 14, 2014

Hace unos días compré un display de 2.2'' (320x240 pixels) para la Raspberry. Está muy lindo: se ve muy bien y es fácil de instalar. Aquí van las instrucciones.

xlde on tft

El primer paso es actualizar el firmware para incorporar FBTFT (Linux Framebuffer drivers for small TFT LCD display modules). Eso se hace con rpi-update

sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update
sudo chmod +x /usr/bin/rpi-update
sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update

Luego habilitar el módulo en /etc/modules

fbtft dma
fbtft_device name=adafruit22a rotate=270 speed=48000000 fps=50 debug=32
tft and raspberry pi

Habiltar SPI comentando la siguiente línea en /etc/modprobe.d/raspi-blacklist.conf

#spi-bcm2708

Para bootear directamente en el display hay que agregar fbcon=map:10 fbcon=font:VGA8X8 en /boot/cmdline.txt. La línea final debe quedar así

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:VGA8X8

Reiniciar.

terminal

dPara levantar el servidor X en el display hacemos

sudo FRAMEBUFFER=/dev/fb1 startx -- -dpi 60

Connexiones

TFT connections to Raspberry

Este es el cableado. También hay un buen diagrama aquí.

RPI Pin  Display Pin  gpio
21-------MISIO--------GPIO09
12-------LED----------GPIO18
23-------SCK----------GPIO11
19-------MOSI---------GPIO10
18-------D/C----------GPIO24
22-------RESET--------GPIO25
24-------CS-----------GPIO08
6--------GND----------GND (-)
1--------VCC----------VCC +3V3

Recursos

Raspberry Trabajos

Timelapse en el delta de Tigre

April 22, 2014

El finde pasado estuve en el delta de Tigre y aproveché para probar la cámara de la Raspberry. Hice un par de timelapses probando distintas frecuencias para la captura de imágenes.

Es bastante entretenido hacer cuentas para calcular las imágenes que tenemos que tomar. Por ejemplo, este video de 1440 fotos a 24 fps dura exactamente 1 minuto. Las fotos fueron tomadas cada 1 seg, así que el timelapse condensa 24 minutos reales.

Raspberry Trabajos Video

Conectando la RPi directamente a la netbook

August 30, 2013

Ahora que tengo la cámara para la Raspberry quería salir por ahí a hacer algún que otro timelapse así que para no depender de routers ni conexiones externas las conecté directamente mediante un cable de red. Además la alimentación de la Raspberry la hago con un cable USB y así tampoco dependo de alimentación externa.

Raspberry Pi conectada a la Netbook directo con un cable de red

En ambas compus seteé lo siguiente en /etc/network/interfaces

auto eth0
iface eth0 inet static
    address 192.168.10.249
    netmask 255.255.255.0
    network 192.168.10.255
    broadcast 192.168.10.255
    gateway 192.168.10.1

Sólo que en una de ellas (la netbook) cambié la IP a 192.168.10.248

Raspberry Pi conectada a la Netbook directo con un cable de red

Para ver la cámara en la netbook y así poder ubicarla correctamente antes de comenzar el timelapse hice un par de funciones para Bash. En la Raspberry tengo

camera-server () 
{ 
    PORT=${1:-5001};
    echo "Server on 192.168.10.249:$PORT ..";
    raspivid -w 1024 -h 600 -t 999999 -o - | nc -l -p $PORT
}

En la netbook tengo el cliente que le pasa el streaming a mplayer

camera-client ()
{ 
    PORT=${1:-5001};
    nc 192.168.10.249 $PORT | mplayer -fs -fps 31 -cache 1024 -
}

Luego hice otra funcion en la Raspberry para generar timelapses que de paso me sirve de ayuda memoria

function timelapse ()
{
    W=${1:-1024}
    H=${2:-600}
    TL=$((${3:-5}*1000)) # 5 seconds
    T=$((${4:-7200}*1000)) # 2 hours
    DIR=`date +%s`
    mkdir $DIR
    raspistill --verbose --width $W --height $H \
               --timelapse $TL --timeout $T \
               --output $DIR/%04d.jpg
    ls $DIR/*.jpg > $DIR/images.txt
    mencoder -nosound -ovc lavc \
             -lavcopts vcodec=mpeg4:autoaspect:vbitrate=8000000 \
             -mf type=jpeg:fps=24 mf://@$DIR/images.txt \
             -vf scale=$W:$H -o $DIR/timelapse.avi
    echo "Timelapse saved on $DIR/timelapse.avi"
}

Para generar el video de esta forma se necesitan los paquetes mencoder y ffmpeg

GNU/Linux Raspberry

Timelapse con Raspberry Pi

August 26, 2013

Este domingo con mi hija estrenamos la cámara de la Raspberry Pi e hicimos este primer timelapse en la casa de mis viejos en Ciudad Evita. Iba a ser una prueba nomás, por eso seteamos la resolución en 640 x 480. Después resultó que nos gustó mucho así que acá está. Ya vendrán otros en full HD :)

Acá un par de fotos de la Raspberry con la cámara. La alimentamos con un cargador USB portable Sony CP1L.

Raspberry Pi Camera

Había algo de viento pero el flexible que sostenía la cámara se la bancó bien.

Raspberry Pi Camera

Tomamos una foto cada 10s. El código que ejecutamos en la Raspberry es

raspistill -o image%04d.jpg -t 1000000 -tl 10000 -w 640 -h 480

Luego así generamos el video

ls *.jpg > images.txt
mencoder -nosound -ovc lavc \
    -lavcopts vcodec=mpeg4:aspect=4/3:vbitrate=8000000 \
    -vf scale=640:480 -o timelapse.avi \
    -mf type=jpeg:fps=24 mf://@images.txt

+ Info

Raspberry Trabajos

Cámara para la Raspberry Pi

August 15, 2013

Hoy recibí la camarita para la Raspberry Pi. La compré hace 15 días en ModMyPi, un sitio que vende de todo para la Raspberry. Además tienen algunas cosas de Adafruit (una empresa que me gusta mucho, da para otro post) como este conector en T para sacar los GPIOs directamente a un protoboard.

Camera Board for Raspberry Pi

La semana que viene me junto con un amigo para hacer el proyecto obligado: un video time-lapse.

Por otra parte pude hacer andar un adaptador wifi Tp-Link TL-WN725N v2 gracias a este hilo del foro de Raspberry donde colgaron el módulo 8188eu.ko compilado por uno de los usuarios. Simplemente tuve que activarlo y salió andando.

cp 8188eu.ko /lib/modules/`uname -r`/kernel/driver/net/wireless
depmod -a
modprobe 8188eu
ifup wlan0

Acá está el módulo compilado para distintas versiones del kernel. Para conectarse automáticamente al iniciar:

#/etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-ssid "network-name"
    wpa-psk "password"

Raspberry Trabajos

Lector de RSS con Arduino y Raspberry Pi

July 30, 2013

Luego de un par de meses de darle vueltas finalmente llegué a una versión usable de este lector de RSS. El display del lector está hecho con un Arduino UNO y una matriz de LEDs A-5570E que está soldada sobre un proto shield. Los mensajes los recibe por serial. Esto se hace desde la Raspberry Pi, que tiene un servidor hecho con Tornado y el cual tiene una interfaz web desde la que cualquier usuario puede encolar sus propios mensajes y ver los mensajes del resto mediante WebSockets. Esto es, mientras no haya mensajes de usuarios se lee algún feed. Así que el display siempre está mostrando algo.

Arduino and Raspberry Pi

El servidor está permanentemente leyendo el serial. Si el display le envía un 1 significa que está listo para recibir un nuevo mensaje. El servidor revisa la cola de mensajes de usuario primero y la cola de RSS después así que es posible intercalar un mensaje en cualquier momento.

Aquí los programas que se ejecutan de uno y otro lado: sketch.ino y server.py. Aquí la interfaz web con WebSockets: publisher.html

El display

La matriz de LEDs usa una técnica llamada clarlieplexing de la cual ya escribí algo acá y acá. El diagrama de conexiones es el siguiente

Read more »

Arduino Python Raspberry Trabajos Video

Older | Newer →