Programación Con Raspberry Pi & Python
Programación Con Raspberry Pi & Python
En el año 2006 el Dr. Eben Upton y sus colaboradores del laboratorio de informática
de la Universidad de Cambridge, estaban preocupados por el retroceso de los
conocimientos y habilidades de los estudiantes que entraban en informática en
comparación con los estudiantes de anteriores cursos. Por este motivo, el Dr. Eben
Upton decidió crear un equipo barato, pensando en que quizás los padres no
dejaban a los estudiantes experimentar con los modernos y relativamente caros
PCs, de esta idea surgió la Raspberry Pi, un ordenador de bajo precio el cual permite
a los niños que aprendan y experimenten en programación, al tiempo que no
supone ninguna preocupación para los padres si algo sale mal y la placa acaba
rompiéndose.
• La clave del éxito de la Raspberry Pi reside en utilizar un chip de tipo
SoC en la placa, el uso de este tipo de chip hace que los costes sean
muy bajos respecto el uso de la arquitectura convencional. SoC
(System on a Chip) tecnología que físicamente coloca la memoria, el
microprocesador y el procesador de gráficos en una especie de
sándwich de silicio
• Inicialmente aparecieron en el mercado dos tipos de placas: el modelo
A, el cual estaba destinado para desarrolladores y poseía menores
prestaciones que el modelo B, modelo que es el más utilizado por los
usuarios.
• El 29 de febrero de 2012 se pone a la venta el Modelo B en dos
tiendas de gran reputación en componentes electrónicos como son
‘Farnell’ y ‘Rs Components’, estas compañías también tuvieron una
gran sobrecarga en sus servidores inmediatamente después del
lanzamiento a la venta, pero sin lugar a duda, también tubieron un
gran éxito al lograr vender 500.000 unidades en los 6 primeros meses
Introducción
¿Hay otra cosa aparte de Linux? ¡Claro! Tienes, por ejemplo, esta versión
especial de Windows para Raspberry Pi. Lógicamente, no esperes encontrar una
versión completa de Windows como la que puedes tener en el PC; se trata más
bien de una plataforma de desarrollo para que los programadores experimenten
con dispositivos conectados a Internet (el llamado Internet of things).
Gestor de contenido multimedia
• OSMC
Consola de videojuegos
• RetroPie
RetroPie es, como su nombre
indica, un gestor de
contenido centrado en lo
retro; concretamente, en
videojuegos retro que,
mediante ROMs, puedes
reproducir en tu Raspberry Pi
para convertirla en una
consola retro en toda regla.
UNIDAD 2
•CONFIGURACIÓN DE RED
Direcciones IP
Las direcciones IP permiten que la ubicación de literalmente miles de millones de
dispositivos digitales que están conectados a Internet se identifiquen.
"IP" significa Protocolo de Internet, por lo que una dirección IP es una dirección de
Protocolo de Internet. Qué significa eso? Un protocolo de Internet es un conjunto
de reglas que rigen la actividad de Internet y facilitan la realización de una
variedad de acciones en la World Wide Web
Una dirección IPv4 consta de cuatro números, cada uno de los cuales contiene de
uno a tres dígitos, con un único punto (.) Que separa cada número o conjunto de
dígitos. Cada uno de los cuatro números puede ir de 0 a 255. Aquí hay un ejemplo
de cómo se vería una dirección IP: 78.125.0.209.
Dirección IP: 192.168.1.xx
Mascara de red: 255.255.255.0
Clases de Direcciones
Direcciones Dinámicas y Estáticas
Las direcciones IP pueden ser estáticas o dinámicas.
Seleccionar “Format”
Descargar el programa que permite
grabar imágenes “win32imager” :
Descomprimimos y ubicamos la ruta donde esta la
https://sourceforge.net/projects/win32diski imagen, seleccionamos la unidad en Device y
mager/ presionamos Write
En CMD
En la imagen nos presenta una lista de las redes que están conectadas y tenemos que encontrar las IP dentro
Del rango 192.168.137.x
SSH
ASIGNACIÓN DE UNA DIRECCIÓN IP ESTÁTICA
interface eth0
static ip_address=192.168.137.2/24
static routers=192.168.137.1
static domain_name_servers=192.168.137.1
$ sudo reboot
Comprobamos conectividad con internet
A la DNS pública de Google; 8.8.8.8
UNIDAD 3
TERMINAL y LINUX
"Todo lo que se puede hacer en modo gráfico, se puede hacer también en modo
texto, a base de comandos. Pero no todo lo que se puede hacer en modo texto, se
puede hacer en modo gráfico."
Administración
Copiando directorios
• Un ejemplo en el cual copiaríamos la carpeta “practicas”
(/home/pi/Documents/practicas) en “/home/pi/prueba/”sería el
siguiente:
$ cp /home/pi/Documents/practicas/ /home/pi/prueba/
Copiando Ficheros
$ cp [archivo] [dirección directorio destino]
Estructura básica de permisos en archivos CHMOD
Hay 3 atributos básicos para archivos simples: lectura, escritura y ejecutar.
>> Permiso de lectura (read)
Si tienes permiso de lectura de un archivo, puedes ver su contenido.
$ chmod -w tuArchivo
si quieres hacer un script ejecutable, escribe
$ chmod +x tuScript
si quieres remover o agregar todos los atributos a la vez
/Documentos/practicas/
Servidor Cliente
INSTALAR SERVIDOR
$ vncserver :1
Ingresamos y editamos el archive rc.local con el siguiente comando:
$ sudo nano /etc/rc.local
Reiniciamos la RPI
$ sudo reboot
Instalación de cliente m1
Abrir en Windows conexión a escritorio remoto
Ingresar con ip y user/pass de rapberry
Si es necesario reiniciar el servidor
$ sudo service xrdp restart
Instalación de cliente m2
• https://www.realvnc.com
• Pestaña de descargas/windows
Instalamos el ejecutable y nos registramos con
nuestro e-mail en modo demo hogar
Ejecutamos el programa y nos logeamos
VNC Viewer extensión de Google
En address colocamos la IP asignada a la Rpi con sesión establecida en
terminal a través del comando que ya se configuró “vncserver :1” en
este caso es la sesión 1
En nuestro caso quedaría : 192.168.137.2::1, nos pedirá durante el
arranque la contraseña.
Finalmente tendremos acceso a la interfaz gráfica
CONFIGURAR WIFI
Raspberry Pi 3B viene con un
adaptador LAN inalámbrico 802.11n
incorporado, lo que significa que ya no
es necesario comprar un dongle WiFi
independiente. También es bastante
más fácil de configurar.
PYTHON
Es un lenguaje informático por el cual expresamos órdenes e
instrucciones precisas, que deben ser llevadas a cabo por una
computadora. El mismo puede utilizarse para crear programas
que controlen el comportamiento físico o lógico de un
ordenador. Está compuesto por una serie de símbolos, reglas
que definen la estructura del lenguaje
Programa (Código fuente)
• Es un conjunto de instrucciones y
órdenes lógicas, compuestos de
algoritmos que se encuentran
escritos en un determinado
lenguaje de programación, las
cuales deben ser interpretadas o
compiladas, para permitir la
ejecución del programa
informático.
Estados de un programa
Empezar día
Desarrollar actividades
Resultados de actividades
Terminar el día
Estados de un programa en Python
Empieza programa
Terminar el programa
TIPO DE DATOS
Enteros
En Python se pueden representar mediante el tipo int (de integer, entero) o el tipo
long (largo).
Reales
Los números reales son los que tienen decimales. En Python se expresan mediante
el tipo float.
Cadenas
Las cadenas no son más que texto encerrado entre comillas simples (‘cadena’) o
dobles (“cadena”). Dentro de las comillas se pueden añadir caracteres especiales
escapándolos con \, como \n, el carácter de nueva línea, o \t, el de tabulación
En Python no es necesario declarar que tipo de dato vamos a utilizar,
solo hay que asignar a una variable un valor :
mi_variable = 15
En este caso mi_variable es un dato tipo entero
print (mi_variable)
Especificadores de argumentos
nombre = "Juan"
print "Hola, %s!" % nombre
# Esto imprime "Hola, Juan!"
• Usa dos o mas especificadores de argumento
nombre = "John"
edad = 23
print "%s tiene %d años." % (nombre, edad)
# Esto imprime "John tiene 23 años
Aquí hay algunos especificadores de argumentos básicos:
%s - Cadena
%d - Integral
%f - Números de punto flotante
%.<numero de dígitos>f - Números de punto flotante con una
cantidad de números fijos a la derecha del punto.
%x/%X - Integral con representación hex (minuscula/mayuscula)
Ejemplos
Ejercicio:
• Crear dos variables numéricas, sumarlas y mostrar el resultado según
el siguiente formato:
84
Estructuras de control de flujo condicionales
86
Y para evaluar más de una condición simultáneamente,
se utilizan operadores lógicos:
87
Sentencia if
If condición:
Instrucción 1
Instrucción 2
....
88
IF extendida
if condicion 1:
expresion
elif condicion 2:
expresion
else:
expresion
while condicion:
cuerpo del bucle
Ejemplo 1
B
C
M
GROUND ó GND
PIN BOARD 12
PIN BCM GPIO 8
gpio.setup(12, gpio.OUT) // definir que vamos a usar el pin 12 como una salida
y después escribir en el True, para levantar la señal y
encender el LED.
gpio.output(12, True)
//Escribiendo False en el pin, bajamos la señal y lo
gpio.output(12, False) apagamos
GPIO.setmode(GPIO.BMC)
GPIO.setup(24, GPIO.OUT)
Trigger BCM 18
Echo BMC 23
PROGRAMACIÓN “MIDIENDO DISTANCIA”
Utilizaremos la biblioteca Adafruit DHT11 Python. Se puede descargar la biblioteca usando Git de la
siguiente manera :
Nota: Si obtenemos un error al instalar Git, ejecute sudo apt-get update y vuelva a intentarlo.
Para instalar la biblioteca de Adafruit DHT11
1. Ingrese esto en el símbolo del sistema para descargar la biblioteca:
$git clone https://github.com/adafruit/Adafruit_Python_DHT.git
2. Una vez descargado los archivos, se debe ingresar a la carpeta contenedora:
$ cd Adafruit_Python_DHT
3. Ahora ingresamos:
$sudo apt-get install build-essential python-dev
4. A continuación, instale la biblioteca con:
$sudo python setup.py install
Conexión DHT 11
Realizar un programa que permita realizar la lectura de temperatura y
humedad, el pin salida del sensor debe conectarse al BCM GPIO 4
PROGRAMANDO EL SENSOR DE TEMPERATURA
#!/usr/bin/python
import Adafruit_DHT
while True:
Uso básico
Ingresamos el comando fswebcam seguido de un nombre
de archivo y se tomará una foto con la webcam y se
guardará en el nombre de archivo especificado:
$ fswebcam image.jpg
$ lsusb
Si no reconoce entonces hay algún problema en su cámara o la cámara no es compatible con 'movimiento'.
Para encontrar las secciones a cambiar, usamos 'ctrl + w' dentro del archivo de configuración, procedemos con
la configuración que se muestra a continuación:
1. Asegurarnos de que 'daemon' esté on
2. Cambie 'Stream_localhost' a off
3. Cambie 'webcontrol_localhost' a off
En primer lugar, debe reiniciar el software de movimiento. Para hacerlo, escriba el comando 'sudo
service motion restart' y presione enter.
• Escriba nuevamente el comando 'sudo motion' y presione enter. Ahora el servidor está listo.
• En el navegador. Digitamos la dirección IP de la Raspberry Pi y el
número de puerto de esta manera:
192.168.137.X:8081 (Primero aparece la dirección IP, luego un ':', luego
el número de puerto). Presionamos Enter
2. Utilizando mutt
$ echo "Email from your RPi" | mutt -a "/home/pi/Desktop/fotos/im.jpg" -s "captura de foto "$taken --
[email protected]
Para comenzar la instalación y tal como siempre se recomienda cuando se va realizar cualquier
instalación es actualizar los repositorios y programas de la Raspberry pi, para ello deberemos aplicar
los siguientes comandos
$sudo apt-get update
$sudo apt get upgrade
El servidor web que se va a instalar es Apache, que es un servidor HTTP de código abierto, para su
instalación vamos a ejecutar el siguiente comando:
Con el editor introduciremos el siguiente código PHP, el cual nos mostrara información del
servidor PHP.
<?php
phpinfo();
?>
Una vez hayamos creado el fichero php, desde el navegador fijando la
dirección IP de la Raspberry Pi y añadiendo el nombre del fichero, de la
siguiente manera, http://192.168.137.2/phpinfo.php , con ello el
navegador conseguiremos la confirmación de que está funcionando el
servidor PHP.
Control orientado a domótica
Programar HTML/PHP
- Permisos del sistema
- Ejecución de .py
6. reiniciamos el servidor:
sudo /etc/init.d/apache2 restart