Difference between revisions of "RaspberryPi"
Pablomarin (talk | contribs) |
Pablomarin (talk | contribs) |
||
Line 26: | Line 26: | ||
* [http://www.raspberrypi-es.com/ejecutando-android-en-la-raspberry-pi/ RaspberryPi con Android] | * [http://www.raspberrypi-es.com/ejecutando-android-en-la-raspberry-pi/ RaspberryPi con Android] | ||
− | = Configuración puerto GPIO | + | = Guías de instalación = |
− | * [http://hertaville.com/2012/11/18/introduction-to-accessing-the-raspberry-pis-gpio-in-c/ GPIO | + | |
+ | = GPIO = | ||
+ | El puerto GPIO tiene las siguientes características: | ||
+ | |||
+ | The GPIO connector actually has a number of different types of connection on them. There are: | ||
+ | - True GPIO (General Purpose Input Output) pins that you can use to turn LEDs on and off etc. | ||
+ | - I2C interface pins that allow you to connect hardware modules with just two control pins | ||
+ | - SPI interface with SPI devices, a similar concept to I2C but a different standard | ||
+ | - Serial Rx and Tx pins for communication with serial peripherals | ||
+ | In addition, some of the pins can be used for PWM (pulse Width Modulation) for power control and another type of pulse generation for controlling servo motors called PPM (Pulse Position Modulation). | ||
+ | In this tutorial, you are not actually build anything, but you will learn how to configure your Raspberry Pi and install useful libraries ready to start attaching some external electronics to it. | ||
+ | |||
+ | En la [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup página] aparece un overview y los primeros pasos para configurar el puerto. | ||
+ | |||
+ | [[File:Raspberry-Pi-GPIO-Layout-Revision-2.png|600px]] | ||
+ | [[File:Gpio-srm.png]] | ||
+ | |||
+ | |||
+ | == Librerías == | ||
+ | |||
+ | === C/C++ === | ||
+ | Configuración puerto GPIO | ||
+ | Buen tutorial en C/C++ para controlar el GPIO | ||
+ | * [http://hertaville.com/2012/11/18/introduction-to-accessing-the-raspberry-pis-gpio-in-c/ GPIO C/C++] | ||
+ | |||
+ | === Python === | ||
+ | Existen dos librerías para poder controlar el GPIO de la Raspberry Pi: | ||
+ | ==== Adafruit ==== | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ sudo apt-get install git | ||
+ | $ git clone http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git | ||
+ | $ cd Adafruit-Raspberry-Pi-Python-Code | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Es un repositorio de proyectos-ejempos en Python para gobernar el puerto GPIO. | ||
+ | Para poder usarlos es necesario tener estas librerías instaladas | ||
+ | |||
+ | ==== rpi.gpio ==== | ||
+ | |||
+ | En el siguiente [http://learn.adafruit.com/playing-sounds-and-using-buttons-with-raspberry-pi/install-python-module-rpi-dot-gpio link] están los pasos a seguir. Se reducen a instalar las librerías de GPIO para la Raspberry: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $sudo apt-get update | ||
+ | $sudo apt-get install python-dev | ||
+ | $sudo apt-get install python-rpi.gpio | ||
+ | </syntaxhighlight> | ||
+ | Para ejemplos visitar esta [http://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/ página] | ||
+ | |||
+ | * Ejemplo | ||
+ | <syntaxhighlight lang="python"> | ||
+ | #!/usr/bin/python | ||
+ | import RPi.GPIO as GPIO | ||
+ | import time | ||
+ | |||
+ | channel = 15 | ||
+ | GPIO.setmode(GPIO.BOARD) | ||
+ | |||
+ | GPIO.setup(channel, GPIO.OUT) | ||
+ | |||
+ | for i in range (10): | ||
+ | GPIO.output(channel, GPIO.LOW) | ||
+ | time.sleep(3) | ||
+ | GPIO.output(channel, GPIO.HIGH) | ||
+ | time.sleep(3) | ||
+ | |||
+ | GPIO.cleanup(channel) | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | == PWM == | ||
+ | |||
+ | <syntaxhighlight lang="python"> | ||
+ | #!/usr/bin/python | ||
+ | import RPi.GPIO as GPIO | ||
+ | |||
+ | GPIO.setmode(GPIO.BOARD) # pin GPIO | ||
+ | GPIO.setup(12, GPIO.OUT) # salida | ||
+ | |||
+ | p = GPIO.PWM(12, 0.5) # channel=12 frequency=0.5Hz | ||
+ | p.start(1) # duty cycle (en este caso 1%) | ||
+ | input('Press return to stop:') # use raw_input for Python 2 | ||
+ | p.stop() | ||
+ | GPIO.cleanup() | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Este programa configura el pin 12 como salida pwm de 0.5 HZ. 1 vez cada 2 seg hace parpadear el led) | ||
+ | |||
+ | === Servo === | ||
+ | Para poder controlar un servo, no es posible alimentarlo directamente desde la raspberry pi. En vez de eso, es necesaria una fuerte externa de alimentación ya sea una pila o un transformador. | ||
+ | El control del servo se realiza mediante el ancho de pulso PWM. Para más [http://en.wikipedia.org/wiki/Servo_control#Pulse_duration info] | ||
+ | |||
+ | |||
+ | == I2C == | ||
+ | En esta [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c página] se recogen los pasos para la correcta configuración. | ||
− | = | + | = Procesamiento de imagen = |
− | == OpenCV == | + | Instalación y configuración de las librerías necesarias para controlar la Raspi Cam en C++ y utilizar openCv. Pasos extraídos del [http://thinkrpi.wordpress.com/opencv-and-pi-camera-board/ tutorial] |
+ | == C/C++ == | ||
+ | === OpenCV === | ||
Las librerías de openCV se instalan mediante un script autoejecutable. | Las librerías de openCV se instalan mediante un script autoejecutable. | ||
Line 40: | Line 134: | ||
</pre> | </pre> | ||
− | === Posibles problemas === | + | ==== Posibles problemas ==== |
No se pudieron obtener algunos archivos, ¿Quizá deba ejecutar <<apt-get update>> o deba intentarlo de nuevo con --fix-missing? | No se pudieron obtener algunos archivos, ¿Quizá deba ejecutar <<apt-get update>> o deba intentarlo de nuevo con --fix-missing? | ||
Line 66: | Line 160: | ||
El paso 3 es para crear el primer programa y poner a prueba los pasos anteriores. | El paso 3 es para crear el primer programa y poner a prueba los pasos anteriores. | ||
− | |||
A la hora de compilar con make (una vez modificado el CMakeLists.txt) | A la hora de compilar con make (una vez modificado el CMakeLists.txt) | ||
<pre> | <pre> | ||
Line 130: | Line 223: | ||
En el archivo camcv.c a partir de la línea 232 está el código preparado para procesar la imagen con OpenCV. | En el archivo camcv.c a partir de la línea 232 está el código preparado para procesar la imagen con OpenCV. | ||
− | + | == Python == | |
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== picamera === | === picamera === | ||
En este [http://picamera.readthedocs.org/en/release-1.2/quickstart.html link] están los primeros pasos y toda la documentación de la librería picamera en python. | En este [http://picamera.readthedocs.org/en/release-1.2/quickstart.html link] están los primeros pasos y toda la documentación de la librería picamera en python. | ||
− | === OpenCv | + | === OpenCv === |
Leer estos [https://github.com/abidrahmank/OpenCV2-Python tutoriales] de opencv en python. | Leer estos [https://github.com/abidrahmank/OpenCV2-Python tutoriales] de opencv en python. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
---- | ---- | ||
[[File:By-sa.png|100px| link=http://asrob.uc3m.es/index.php/Asociaci%C3%B3n_de_Rob%C3%B3tica_UC3M:General_disclaimer]] Este obra está bajo una [http://creativecommons.org/licenses/by-sa/3.0/deed.es_ES licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 Unported]. | [[File:By-sa.png|100px| link=http://asrob.uc3m.es/index.php/Asociaci%C3%B3n_de_Rob%C3%B3tica_UC3M:General_disclaimer]] Este obra está bajo una [http://creativecommons.org/licenses/by-sa/3.0/deed.es_ES licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 Unported]. |
Revision as of 10:23, 26 February 2014
Diseños
Todos los diseños disponibles se encuentran en el siguiente enlace.
Sistemas Operativos
Proyectos interesantes
- 6 proyectos para hacer con la RaspberryPi
- 10 proyectos para hacer con la RaspberryPi
- 10 mejores proyectos
- Página de proyectos para RaspberryPi
- Controlando la RaspberryPi con un Smartphone
- RaspberryPi con Android
Guías de instalación
GPIO
El puerto GPIO tiene las siguientes características:
The GPIO connector actually has a number of different types of connection on them. There are:
- True GPIO (General Purpose Input Output) pins that you can use to turn LEDs on and off etc. - I2C interface pins that allow you to connect hardware modules with just two control pins - SPI interface with SPI devices, a similar concept to I2C but a different standard - Serial Rx and Tx pins for communication with serial peripherals
In addition, some of the pins can be used for PWM (pulse Width Modulation) for power control and another type of pulse generation for controlling servo motors called PPM (Pulse Position Modulation). In this tutorial, you are not actually build anything, but you will learn how to configure your Raspberry Pi and install useful libraries ready to start attaching some external electronics to it.
En la página aparece un overview y los primeros pasos para configurar el puerto.
Librerías
C/C++
Configuración puerto GPIO Buen tutorial en C/C++ para controlar el GPIO
Python
Existen dos librerías para poder controlar el GPIO de la Raspberry Pi:
Adafruit
$ sudo apt-get install git
$ git clone http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
$ cd Adafruit-Raspberry-Pi-Python-Code
Es un repositorio de proyectos-ejempos en Python para gobernar el puerto GPIO. Para poder usarlos es necesario tener estas librerías instaladas
rpi.gpio
En el siguiente link están los pasos a seguir. Se reducen a instalar las librerías de GPIO para la Raspberry:
$sudo apt-get update
$sudo apt-get install python-dev
$sudo apt-get install python-rpi.gpio
Para ejemplos visitar esta página
- Ejemplo
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
channel = 15
GPIO.setmode(GPIO.BOARD)
GPIO.setup(channel, GPIO.OUT)
for i in range (10):
GPIO.output(channel, GPIO.LOW)
time.sleep(3)
GPIO.output(channel, GPIO.HIGH)
time.sleep(3)
GPIO.cleanup(channel)
PWM
#!/usr/bin/python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD) # pin GPIO
GPIO.setup(12, GPIO.OUT) # salida
p = GPIO.PWM(12, 0.5) # channel=12 frequency=0.5Hz
p.start(1) # duty cycle (en este caso 1%)
input('Press return to stop:') # use raw_input for Python 2
p.stop()
GPIO.cleanup()
Este programa configura el pin 12 como salida pwm de 0.5 HZ. 1 vez cada 2 seg hace parpadear el led)
Servo
Para poder controlar un servo, no es posible alimentarlo directamente desde la raspberry pi. En vez de eso, es necesaria una fuerte externa de alimentación ya sea una pila o un transformador. El control del servo se realiza mediante el ancho de pulso PWM. Para más info
I2C
En esta página se recogen los pasos para la correcta configuración.
Procesamiento de imagen
Instalación y configuración de las librerías necesarias para controlar la Raspi Cam en C++ y utilizar openCv. Pasos extraídos del tutorial
C/C++
OpenCV
Las librerías de openCV se instalan mediante un script autoejecutable.
$ wget https://raw.github.com/jayrambhia/Install-OpenCV/master/Ubuntu/2.4/opencv2_4_5.sh $ chmod +x opencv2_4_5.sh $ ./opencv2_4_5.sh
Posibles problemas
No se pudieron obtener algunos archivos, ¿Quizá deba ejecutar <<apt-get update>> o deba intentarlo de nuevo con --fix-missing?
Para resolver, dejar instalar y cuando acabe, hacer:
$ sudo apt-get update
Y volver a ejecutar
$./opencv2_4_5.sh
Una vez compilado despues de unas cuatro horas y media:
$ cd programs/OpenCv/opencv-2.4.5/build $ sudo make install
A partir de aquí es necesario seguir el tutorial del la siguiente página.
El paso 2 trata sobre instalar userland que es un programa llamado rapistill que usa el acceso a la cámara de la raspberry y demás.
El paso 3 es para crear el primer programa y poner a prueba los pasos anteriores.
A la hora de compilar con make (una vez modificado el CMakeLists.txt)
fatal error EGL/egl.h: no such file or directory
Se soluciona instalando las librerías legl de synaptic que son las genéricas. Se han instalado las siguientes:
eglibc-source libegl-0.2-0 libegl-dev
Se instalarán algunas dependencias más pero con estas valen. El último paso es modificar el CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(camcv)
SET(COMPILE_DEFINITIONS -Werror)
include_directories(/opt/vc/host_applications/linux/libs/bcm_host/include)
include_directories(/opt/vc/interface/vcos)
include_directories(/opt/vc/)
include_directories(/opt/vc/interface/vcos/pthreads)
include_directories(/opt/vc/interface/vmcs_host/linux)
include_directories(/opt/vc/interface/khronos/include)
include_directories(/opt/vc/interface/khronos/common)
add_executable(camcv RaspiCamControl.c RaspiCLI.c RaspiPreview.c camcv.c RaspiTex.c RaspiTexUtil.c teapot.c models.c square.c mirror.c)
target_link_libraries(camcv /opt/vc/lib/libmmal_core.so /opt/vc/lib/libmmal_util.so /opt/vc/lib/libmmal_vc_client.so /opt/vc/lib/libvcos.so /opt/vc/lib/libbcm_host.so /opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so)
Ahora sí se puede compilar con make y no da problemas.
Finalmente para añadir opencv al programa seguir el paso 4 del tutorial
Para esta parte es necesario haber instalado el lilbfacerec (reconocimiento facial) <c lang="make"> projects $ git clone https://github.com/bytefish/libfacerec.git $ cd libfacerec $ mkdir build $ cd build $ cmake .. $ make </syntaxhighlight lang="make"> Ya se puede modificar el CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(camcv)
SET(COMPILE_DEFINITIONS -Werror)
#OPENCV
find_package( OpenCV REQUIRED )
link_directories( /home/pi/projects/libfacerec )
include_directories(/opt/vc/host_applications/linux/libs/bcm_host/include)
include_directories(/opt/vc/interface/vcos)
include_directories(/opt/vc)
include_directories(/opt/vc/interface/vcos/pthreads)
include_directories(/opt/vc/interface/vmcs_host/linux)
include_directories(/opt/vc/interface/khronos/include)
include_directories(/opt/vc/interface/khronos/common)
add_executable(camcv RaspiCamControl.c RaspiCLI.c RaspiPreview.c camcv.c RaspiTex.c RaspiTexUtil.c teapot.c models.c square.c mirror.c)
target_link_libraries(camcv /opt/vc/lib/libmmal_core.so /opt/vc/lib/libmmal_util.so /opt/vc/lib/libmmal_vc_client.so /opt/vc/lib/libvcos.so /opt/vc/lib/libbcm_host.so /opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so /home/pi/projects/libfacerec/build/libopencv_facerec.a ${OpenCV_LIBS})
En el archivo camcv.c a partir de la línea 232 está el código preparado para procesar la imagen con OpenCV.
Python
picamera
En este link están los primeros pasos y toda la documentación de la librería picamera en python.
OpenCv
Leer estos tutoriales de opencv en python.
Este obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 Unported.