UNIDAD 1
PRIMEROS PASOS CON LA
RASPBERRY PI
HISTORIA
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
• Raspberry Pi, un pequeño ordenador de reducidas dimensiones que es
totalmente funcional y que es capaz de ejecutar un sistema operativo,
es por ello que la Raspberry Pi es el elemento central del proyecto, ya
que se encarga de adquirir los datos, procesarlos y mostrar los datos.
Modelos de Raspberry Pi
EL último modelo que encontramos en el mercado y el que vamos a
utilizar para la construcción del proyecto es la Raspberry 3B, aun así en
este apartado vamos a repasar cada uno de los modelos que han
aparecido en el mercado con el fin de observar cómo ha evolucionado
el mercado.
Raspberry Pi Model A+ (256 Mb RAM)
Raspberry Pi Model B (512 Mb RAM )
Raspberry Pi Model B+:
Posee 4 puertos USB
40 pines GPIO
Consume de 3 W
Raspberry Pi 2:
6 veces más rápida que los modelos anteriores
512 Mb en RAM
Procesador ARMv7 ARM Cortex-A7 de 4
núcleos con una frecuencia de trabajo 900
MHz.
Raspberry Pi Zero:
Ante las nuevas oleadas de proyectos que se han realizan con
miniordenadores y en especial el boom del ‘Internet of things’, surge la
Raspberry Pi Zero, un nuevo miniordenador de los más pequeños del
mercado y a un precio impensable de 5 dólares.
CARACTERISTICAS RPI ZERO
Procesador Broadcom BCM2835 @ 1Ghz ARM 11 (un 40% más
potente que el del Raspberry Pi 1)
512 MB de memoria RAM LPDDR2
Ranura para tarjeta Micro-SD
Salida de vídeo mini-HDMI a 1080p
Dos conectores micro-USB para corriente e intercambio de datos y
pines de conexión iguales a los de los modelos A+, B+ y 2B.
dimensiones, este miniordenador tiene un tamaño de 65mm de
largo, 30mm de ancho y tan solo 5mm de grosor.
Raspberry Pi 3B:
Diseñada con mayor potencia computacional respecto sus antecesoras,
es por este motivo que se ha escogido la Raspberry Pi 3.
Fuentes reguladas (protegiendo la Raspberry)
La Raspberry Pi 3B tiene un consumo de
5V y 2A en corriente continua,
necesitamos de un regulador de tensión
que nos proporcione esta tensión y esa
corriente.
El regulador LM7805 es capaz de
regular voltaje positivo de 5V.
Disipador
Otra de las características que deberemos tener en cuenta es el
calentamiento, ya que estamos rozando el límite superior de corriente
del regulador, y por tanto, el regulador deja de ser tan eficiente como lo
es con corrientes bajas, provocando que haya calentamiento y tengamos
que usar un disipador.
Protegiendo los puertos (GPIO)
• Aunque la alimentación de la Raspberry es a 5V,
cabe destacar que la lógica interna de la
Raspberry se basa en 3,3V, por lo que es
necesario que todos los componentes que se
conecten a los puertos GPIO sean compatibles
con la lógica de 3,3V.
• El LM1117 es un regulador lineal positivo de 3,3V
y que es capaz de suministrar hasta 800 mA de
corriente continua. Está formado por 3
terminales, uno para la conexión de la tensión de
entrada, otro para la conexión con la masa y el
último terminal será el que nos proporcione la
tensión de salida.
Proyección y alcance
• Estamos hablando de un mini PC que
funciona con Linux y dispone de docenas
de periféricos y complementos, así que
es fácil imaginar sus aplicaciones.
• En Internet se puede encontrar miles de
proyectos para transformarlo en un
sistema de vigilancia, un reproductor
multimedia, una estación meteorológica,
una miniconsola retro, un robot por
control remoto, y otras muchas funciones
aún más increíbles.
Hardware y Software requerido
Existen varias opciones en cuantos a proyectos que se puede hacer con una
Raspberry Pi como sistemas operativos y gestores de contenido que se pueden
instalar
Raspbian
Es una versión de Linux basada en
Debian y especialmente desarrollada
para Raspberry, y también una de las
más populares. En realidad es un poco
el "sistema operativo oficial" de este
pequeño ordenador.
Fedora
Fedora, una versión especial para Raspberry Pi
Windows IoT Core
¿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.
Las direcciones IP estáticas nunca cambian. Sirven como una
dirección de Internet permanente y proporcionan una manera
simple y confiable para que las computadoras remotas se
comuniquen con usted.
Las direcciones IP dinámicas son temporales y están asignadas
(a través de DHCP ) cada vez que una computadora se une a
una red.
Red de área local (LAN)
Una red de área local (LAN) es un grupo
de computadoras y dispositivos
asociados que comparten una línea de
comunicaciones común o un enlace
inalámbrico a un servidor.
Típicamente, una LAN abarca
computadoras y periféricos conectados a
un servidor dentro de un área geográfica
distinta, como una oficina o un
establecimiento comercial. Las
computadoras y otros dispositivos
móviles usan una conexión LAN para
compartir recursos como una impresora
o almacenamiento en red.
Instalación de Raspbian
Se recomienda utilizar una memoria SD de 8GB clase 10
Pasos para instalar Raspbian:
Descargar el programa para formatear la memoria SD
https://www.sdcard.org
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
Por ultimo descargamos la imagen .iso de
la página oficial de la fundación Raspberry
https://www.raspberrypi.org/downloads/
Dentro de la página de descargas
seleccionamos la versión de Raspbian
Una vez ya realizado en montaje del .ISO en la RPI debemos
habilitar el acceso SSH mediante CMD.
En nuestro Equipo(PC) debemos identificar que unidad se asigna a
la memoria de la RPI en nuestro caso se asigna la letra E:
En CMD ingresamos el siguiente comando
dir E:
Nos proporcionará los archivos que contiene, posterior habilitamos
SSH con el siguiente comando
echo>E:\ssh
Finalmente si se realizo bien el proceso se crea un archivo ssh que
habilita las conexiones remotas con el protocolo SSH
Asignación de una IP estática con Internet
………………compartida al puerto de red de la RPI
Ingresamos en Windows al
Centro de Redes.
Seleccionamos “Conexión
inalámbrica local”
Seleccionamos propiedades
inalámbricas con el fin de
compartir el internet de
nuestra computador para que
la RPI puede actualizarse.
En la opción Uso compartido activamos
la opción “permitir que los usuarios de
otras redes se conecten…...”
Posterior en la etiqueta “Conexión de
red domestica”, seleccionamos la
conexión de área local (conexión local
que recibe el internet). Guardamos las
configuraciones dando clic en
“Aceptar”
Posterior en “conexión de área local/funciones de red/Protocolo de Internet
versión 4” se visualiza la dirección IP asignada automáticamente a nuestra tarjeta
física Ethernet de nuestra PC, entonces al conectar con un cable Ethernet la RPI
con la PC, esta última va a asignar un IP de área local para compartir el internet
que ingresa por la red WIFI
Como podemos observar la IP asignada a la tarjeta física de la PC es:
192.168.137.1 con una máscara 255.255.255.0.
RASPBERRY LISTA PARA ARRANCAR
• Posterior ingresamos la SD dentro del zócalo para memorias que tiene
la RPI, conectamos el cable USB de alimentación y el cable Ethernet
para la conexión.
Automáticamente la RPI se unirá a la red local por la interfaz física de
nuestra PC.
En CMD, podemos encontrar las direcciones IP de la red local y por ende
de nuestra RPI de la siguiente manera
Dentro del CMD de Windows digitamos el comando arp –a
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
Escriba las siguientes lineas en Terminal
$ sudo nano /etc/dhcpcd.conf
Editamos las siguientes líneas del archivo dhcpcd.conf
interface eth0
static ip_address=192.168.137.2/24
static routers=192.168.137.1
static domain_name_servers=192.168.137.1
Finalmente reiniciamos la RPI:
$ 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.
>> Permiso de escritura (write)
Si tienes permiso de escritura de un archivo, puedes modificar el archivo. Puedes
agregar, sobrescribir o borrar su contenido.
>> Permiso de ejecución (execute)
Si el archivo tiene permiso de ejecución, entonces puedes decirle al sistema
operativo que lo ejecute como si fuera un programa. Si es un programa llamado
“foo” lo podremos ejecutar como cualquier comando.
O un script (interprete) que necesita permiso de lectura y ejecución, un programa
compilado solo necesita ser lectura.
Los caracteres atribuidos a los permisos son:
r quiere decir escritura y viene de Read
w quiere decir lectura y viene de Write
x quiere decir ejecución y viene de eXecute
Usando chmod para cambiar los permisos
chmod (change mode) es el comando utilizado para cambiar permisos, se pueden agregar o remover permisos a
uno o mas archivos con + (mas) o – (menos)
Si quieres prevenirte de modificar un archivo importante, simplemente quita el permiso de escritura en tu
“archivo” con el comando chmod
$ chmod -w tuArchivo
si quieres hacer un script ejecutable, escribe
$ chmod +x tuScript
si quieres remover o agregar todos los atributos a la vez
$ chmod -rwx archivo
$ chmod +rwx archivo
Actualización e instalación de repositorios desde
…Terminal a nuestra RPI
$ sudo apt-get update Busca actualizaciones
$sudo apt-get upgrade Instala las actualizaciones
PRACTICAS:
Crear un archivo cadena.py dentro de la siguiente jerarquía:
/Documentos/practicas/
Asignar permisos de escritura, lectura y ejecución al archivo cadena.py
Eliminar el documento “cadena.py”
Eliminar la carpeta “prácticas”
Ingresar el comando cd , verificar la dirección actual
Acceso remoto
• En la lección anterior aprendimos como acceder remotamente a
nuestra Raspberry Pi, mediante el uso del SSH. Esto es muy cómodo
porque nos evita duplicar el teclado, ratón, pantalla en nuestro
escritorio (Que es donde la mayoría tenemos nuestra Raspberry)
• Además, este acceso remoto, nos permite colocar nuestra RPi en
lugares que inicialmente pueden parecer menos frecuentes como
localizaciones exteriores o jardines y también robots o quizás, tomas
de datos en lugares poco accesibles.
• Usando SSH podemos acceder de una forma rápida a equipos
remotos, sin embargo el modo de acceso grafico evita aprender una
gran cantidad de comandos.
• Hay varias maneras de ejecutar sesiones remotas en modo grafico en
nuestras Raspberry, aunque las más habituales son VNC y Teamviewer.
Ambos programas disponen de soluciones útiles y sobre todo muy
extendidas a nivel profesional si estamos en un entorno corporativo.
Vamos a ver como instalar VNC en nuestra
Raspberry, por ser el más utilizado en raspbian
Servidor Cliente
INSTALAR SERVIDOR
$ sudo apt-get install xrdp
$ sudo apt-get install tightvncserver
$ vncserver :1
Nos pedirá una contraseña, por recomendación colocar “raspberry”
$ vncserver :1
Ingresamos y editamos el archive rc.local con el siguiente comando:
$ sudo nano /etc/rc.local
En línea colocamos el siguiente texto tal como se indica en la siguiente figura:
su - pi -c '/usr/bin/tightvncserver :1'
Guardamos y salimos presionamos ctrl + O , damos enter y posterior Ctrl X.
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.
Para conocer las redes que esta
escaneado el wifi de las RPI 3B,
necesitamos ingresar el comando:
$ sudo iwlist wlan0 scan
• Esto genera una lista con las
redes disponibles
• El parámetro ESSID:xxxx, nos
indica el nombre de las redes
con las cuales podemos
enlazar el dispositivo si se
conoce la clave.
Ahora necesitamos agregar el nombre y la contraseña de WiFi al archivo
wpa_supplicant.conf. Escriba esto en el símbolo del sistema:
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Si el archivo ya tiene las líneas de abajo, simplemente edítelas.
• En el parámetro “ssid” debemos colocar el nombre de la red a
conectar y el “psk” colocamos la contraseña
• Digitamos en el teclado CTRL+X, posterior nos solicita que ingresemos
“Y” para guardar los cambios y salir o “N” para salir son guardar,
ingresamos “Y” y damos enter.
• Posterior ingresamos los siguientes comandos para iniciar el adaptador
WiFi:
$ sudo ifconfig wlan0 down
$ sudo ifconfig wlan0 up
Práctica:
• Ingresar a las RPI de su compañero de forma remota y crear una
carpeta con su nombre en el directorio Documentos
• Ya conectado a la red ingresamos al cmd desde cualquier laptop o PC
conectada a la red y hacemos ping a la dirección asignada mediante
DHCP por el router.
Descripción del puerto GPIO
UNIDAD 4
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
Preparar para actividades
Desarrollar actividades
Resultados de actividades
Terminar el día
Estados de un programa en Python
Empieza programa
Llamar librerías, declarar variables,
Constantes, funciones
Lectura de datos, operaciones
Matemátiocas, lógicas
toma de deciciones
Impresión , transferencia de resultados
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
Para imprimir un valor en pantalla, en Python, se utiliza la palabra clave
print:
print (mi_variable)
Especificadores de argumentos
• Python usa estilo de formato de cadenas parecido a C para crear
nuevas cadenas. El operador "%" es usado para dar formato y fijar las
variables encerradas en una "tupla" (una lista de tamaño fijo), juntos
con una cadena con formato, el cual contiene el texto normal junto
con "argumentos especificados", como los símbolos especiales "%s" y
"%d".
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:
“la suma de x1 y x2 = x3”
Estructuras de Control de Flujo
Una estructura de control, es un bloque de
código que permite agrupar instrucciones de
manera controlada. En este capítulo, hablaremos
sobre dos estructuras de control:
•Estructuras de control condicionales
•Estructuras de control iterativas
January 22, 2018 83
Una estructura de control, entonces, se define de la
siguiente forma:
inicio de la estructura de control:
expresión 1
expresión 2
La identación es como la sangría que ponemos en un documento
de texto e indica que líneas de código corresponden a una
estructura de control
84
Estructuras de control de flujo condicionales
Las estructuras de control condicionales, son aquellas que
nos permiten evaluar si una o más condiciones se cumplen,
para decir qué acción vamos a ejecutar. La evaluación de
condiciones, solo puede arrojar 1 de 2 resultados: verdadero
o falso (True o False)
January 22, 2018 85
Para describir la evaluación a realizar sobre una
condición, se utilizan operadores relacionales (o de
comparación):
86
Y para evaluar más de una condición simultáneamente,
se utilizan operadores lógicos:
87
Sentencia if
El condicional if hace que se ejecute una parte de nuestro código si el valor es
True (verdadero), de lo contrario nuestro programa seguirá otro camino.
La instrucción if tiene en su forma más básica algo parecido a esto:
If condición:
Instrucción 1
Instrucción 2
....
Si la condición se cumple (True) se ejecutan las instrucciones que
vienen en el bloque a continuación y caso contrario ignora el bloque y
continua la ejecución a partir de este.
88
IF extendida
if condicion 1:
expresion
elif condicion 2:
expresion
else:
expresion
January 22, 2018 89
El bucle while
Un bucle while permite repetir la ejecución de un grupo de instrucciones
mientras se cumpla una condición (es decir, mientras la condición tenga el
valor True) .
La sintaxis del bucle while es la siguiente:
while condicion:
cuerpo del bucle
Ejemplo 1
January 22, 2018 90
Ejemplo 2
January 22, 2018 91
CIRCUITOS ELÉCTRICOS BÁSICOS
REPRESENTACIÓN ELECTRÓNICA
DEL DIODO LED
EL PROTOBOARD
Una placa de pruebas (en inglés: protoboard o
breadboard) es un tablero con orificios que se
encuentran conectados eléctricamente entre sí de
manera interna, habitualmente siguiendo
patrones de líneas, en el cual se pueden insertar
componentes electrónicos y cables para el
armado y prototipado de circuitos electrónicos
Las filas de arriba y abajo están cortocircuitadas,
porque suelen ser para alimentaciones (positivo y
negativo), mientras que en la parte central están
cortocircuitadas las columnas y es donde se
implementan los circuitos.
CODIGO DE COLORES RESISTENCIAS
MODOS DE USO DE LOS PUERTOS GPIO
BOARD y BCM
La diferencia entre estas notaciones generalmente lo notamos cuando
estamos controlando los GPIO con Python u otro lenguaje y tenemos
que ingresar en que modo usaremos los gpio en GPIO.BOARD o
GPIO.BCM.
• La opción GPIO.BOARD especifica que se está refiriendo a los pines por
su número.
• La opción GPIO.BCM se refiere a los pines por su número de
"Broadcom SOC channel", estos no son correlativos como en el modo
BOARD
Usando los GPIO con Python
BOARD
B
C
M
January 22, 2018 97
Diagrama de conexión “encendiendo led”
GROUND ó GND
PIN BOARD 12
PIN BCM GPIO 8
January 22, 2018 98
El programa de control
Vamos abrir el IDLE de Python 3 para empezar
nuestro programa:
import RPi.GPIO as gpio // librería que nos permite manejar los GPIO
gpio.setmode(gpio.BOARD) // Modo Board, numeración exterior de los pines
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
January 22, 2018 99
Utilizando el modo BCM
January 22, 2018 100
Blinking LED modo BCM
January 22, 2018 101
• Con una señal digital podemos encender y apagar un LED pero ¿Qué
pasa si queremos variar el brillo de nuestro led (Dimming)?
PWM
• Por eso, cuando tenemos
que usar un sistema digital
que simule una señal
analógica podemos usar
una señal PWM (Pulse
Width Modulation) donde
hacemos exactamente eso:
Abrir y cerrar con rapidez
el grifo electrónico con
suficiente velocidad para
que engañemos a nuestros
sentidos.
PWM
La modulación por ancho de
pulsos o PWM (pulse-width
modulation) de una señal es
una técnica en la que se
modifica el ciclo de trabajo de
una señal periódica para
controlar la cantidad de energía
que se envía, o dicho de otro
modo, modificamos el tiempo
de la señal para simular una
señal analógica.
PWM con Python y GPIO
led = GPIO.PWM([numero de pin BMC/BOARD], [frecuencia])
[numero de pin BMC/BOARD] debemos colocar el pin a usar
[frecuencia]) el valor de frecuencia con el cual vamos a trabajar
led.start([ciclo del led])
[ciclo del led] [0-100], el ciclo de trabajo que vamos a utilizar
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BMC)
GPIO.setup(24, GPIO.OUT)
led = GPIO.PWM(24, 100)
while True:
led.start(10)
time.sleep(1)
led.start(100)
time.sleep(1)
LECTURA DIGITAL
Al pulsar el contacto el circuito se cierra y con nuestra Raspberry podemos
leer el valor que hay en RPI, para reconocer que el botón ha sido activado.
January 22, 2018 108
CIRCUITO PULL UP/PULL DOWN
Cuando conectamos R1 a Vcc, decimos que es un circuito con resistencia Pull
Up, porque cuando está abierto leemos valor alto (De ahí lo de Up).Pero
también podemos invertir los 5V y GND, con lo cual crearíamos un circuito de
Pull Down, ya que leeríamos GND o 0 al estar abierto y HIGH al pulsar.
January 22, 2018 109
Diagrama de conexión del pulsador
January 22, 2018 110
Programa para leer un pulsador
January 22, 2018 111
En Raspberry, a diferencia de Arduino, que solo permitía
activar resistencias internas de pull up, también podemos
activarlas de pull down usando el asombroso comando:
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
¿Cómo hacemos para que además el LED
se encienda al presionar el pulsador?
January 22, 2018 112
January 22, 2018 113
SENSORES
SENSOR PIR
Con bastante frecuencia necesitamos algún
sistema de detectar la presencia de personas o
animales en movimiento en un área dada. Es la
base de cualquier sistema de detección de
intrusos pero también se usan mucho en las
escaleras comunitarias o aseos públicos para
encender la luz en cuanto detecta el movimiento.
Todos los seres vivos desprenden calor y lo mismo
ocurre con los automóviles y cualquier otra
maquinaria, y ese calor se emite en forma
de radiación infrarroja que podemos detectar con
los dispositivos adecuados, como los sensores
PIR.
Funcionamiento PIR
Ejemplo programando un PIR
SENSOR DE DISTANCIA HC-SR04
(Ultrasonic Sensor)
Los sensores de distancia ultrasónicos están diseñados para medir la
distancia entre la fuente y de destino mediante ondas ultrasónicas
Los módulos incluyen transmisores ultrasónicos, el
receptor y el circuito de control
Número de pines:
- VCC: Alimentación 5 V (4.5 V min -5.5 V max.
- TRIG: Trigger entrada (input) del sensor (TTL).
- ECHO: Echo salida (output) del Sensor (TTL).
- GND (tierra).
Ángulo de medición efectivo: < 15°.
Detección de 2 cm a 400 cm
La precisión puede variar entre los 3 mm o 0.3 cm.
Pasar de 5 V a 3,3 V: el divisor de tensión
Un divisor de tensión es un sistema de resistores que sirve para
fijar la tensión a un nivel intermedio entre el nivel de
alimentación del conjunto (por ejemplo, 5 V) y el nivel de tierra.
Vd = VEcho · R2 / (R1 + R2)
3,3V = 5V * R2/ (R1 + R2)
3,3V = 5V * R2/ (R1 + R2)
Funcionamiento del módulo ultrasónico
• Emitir una señal en alto de disparo TRIG, con una duración de al
menos 10μS.
• El sensor comienza a emitir una ráfaga de ocho pulsos a una
frecuencia ultrasónica de 40KHz.
• Si hay un obstáculo en la parte frontal del módulo, se reflejan esas
ondas ultrasónicas
• Si la señal regresa, la salida del módulo ECHO será alta por un período
de tiempo necesario para enviar y recibir señales ultrasónicas. El
ancho de pulso varía de 150μS y 25ms, dependiendo de la distancia
del obstáculo del sensor y que será de alrededor de 38ms si no hay
ningún obstáculo
Montar el circuito
Trigger BCM 18
Echo BMC 23
PROGRAMACIÓN “MIDIENDO DISTANCIA”
Velocidad del sonido
(34300 cm/s)
SENSOR DHT 11
El sensor de temperatura y humedad
DHT11 es un pequeño módulo que
proporciona lecturas digitales de
temperatura y humedad. Es muy fácil de
configurar, y sólo requiere un cable para la
señal de datos. Estos sensores son
populares para su uso en estaciones
meteorológicas remotas, monitores çde
tierra y sistemas de domótica.
Pero sólo para resumir rápidamente... El
DHT11 tiene un termistor NTC montado en
superficie y un sensor de humedad
resistivo. Un IC en la parte trasera del
módulo convierte las mediciones de
resistencia del termistor y del sensor de
humedad en medidas digitales de
temperatura (en ºC) y de humedad
relativa.
CARACTERISTICAS
Pines
• VCC conectada a +3.3V~5V
• DATA se conecta al puerto del RPI
• GND conectado a tierra
Rango de medición: Humedad 20-90% HR, Temperatura
0 ~ 50 ℃
Precisión: Humedad + -5% HR, Temperatura + -2 ℃
Resolución: Humedad 1% HR, Temperatura 1 ℃
Intercambiabilidad: Completamente intercambiable
Estabilidad a largo plazo: <± 1% HR / año
LIBRERIAS DHT11 CON PYTHON
Utilizaremos la biblioteca Adafruit DHT11 Python. Se puede descargar la biblioteca usando Git de la
siguiente manera :
$sudo apt-get install git-core
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:
humedad, temperatura = Adafruit_DHT.read_retry(11, 4)
print “Temp: %.2f Humedad %.2f” %(temperatura, humedad)
TALLER
Complementar el ejercicios anterior, establecer que en cierto valor de
temperatura la alarma se active y cuando regrese al la temperatura
inicial se desactive
Cámara USB en RPI
En lugar de utilizar el módulo de
cámara RPi, puede utilizar una
cámara web USB estándar para
tomar fotografías y vídeo en la Rpi.
Tenga en cuenta que la calidad y la
configurabilidad del módulo de la
cámara es muy superior a una
cámara web USB estándar.
Instalación de controladores para la cámara USB
Primero debemos descargar el paquete de fswebcam:
$ sudo apt-get install fswebcam
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
Este comando mostrará la siguiente información que esta
en la imagen.
Como podemos observar en la imagen no encontramos en
la carpeta /Desktop/fotos, es donde se almacenará las
fotos capturadas
Modificar varios parámetros CAM USB
Adicional podemos modificar varios parámetros:
La Resolución (-r 640x480)
La Cantidad de cuadros para toma de la foto (-F 4) por defecto el valor es 1 ,a
mayor número, el procesamiento será mayor pero a cambio lograremos
reducir el ruido.
Podemos agregar un título y agregar el formato de
dia_mes_año_hora_minutos_segundo para el nombre de las fotografías:
$ fswebcam -i 0 -d /dev/video0 -r 640x480 -S 24 -F 4 -q --title @ljaviles
/home/pi/Desktop/fotos/%d%m%y_%H%M%S.jpg
El programa ejemplo mide la distancia a un objeto
por medio del sensor de ultrasonido, si la distancia de
detección es inferior a 20cm entonces captura un
foto y la almacena en una ubicación.
El puerto que lee el datos del sensor en BCM (echo)
es el GPIO 4, y el pin conectado a la salida trigger es
el GPIO 3
STREAMMING EN RPi
para comenzar la instalación:
$ sudo apt-get install motion
Ahora, para asegurarse de que la cámara se detecta correctamente
$ lsusb
Si no reconoce entonces hay algún problema en su cámara o la cámara no es compatible con 'movimiento'.
Cambiamos algunas configuraciones en el archivo motion.conf
$ sudo nano /etc/motion/motion.conf
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
Salimos y guardamos los cambios.
En terminal digitamos el commando 'sudo nano /etc/default/motion ' y presionamos enter.
• Seteamos ' start_motion_daemon =yes. Guardamos y salimos
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
• La dirección es colocada de acuerdo a la IP asignada a cada RPi
Enviar notificaciones por correo electrónico desde
……………………… una Raspberry Pi 3B
Simple Mail Transfer Protocol (SMTP) o “protocolo para transferencia
simple de correo”, es un protocolo de red utilizado para el intercambio
de mensajes de correo electrónico entre computadoras u otros
dispositivos (PDA, teléfonos móviles, impresoras, etc). Fue definido
inicialmente en agosto de 1982 por el RFC 821 (para la transferencia) y
el RFC 822(para el mensaje).
Esquema de Funcionamiento
Muchos servidores de correo electrónico tienen reglas muy estrictas
para aceptar correos electrónicos:
Si el correo electrónico no proviene de una máquina con una
dirección IP estática, podrían clasificar el correo electrónico como
SPAM .
No queremos que eso suceda con los correos electrónicos
enviados por Raspberry Pi , así que vamos a enviar los correos
electrónicos a un servidor Google , que los enviará a los
destinatarios reales. Para poder lograr esto, debe tener una cuenta
de GMail .
Instalación y configuración de SMTP/ MUTT
1. Asegúrese de que sus repositorios estén actualizados:
$ apt-get update
2. Instalamos las bibliotecas ssmtp y mutt.
$ sudo apt-get install ssmtp
$ sudo apt-get install mutt
3. Creamos una nueva cuenta de Gmail o utilizamos una existente para
utilizar el nombre de usuario / contraseña, ya que necesitará esto para
que su RPi envíe mensajes de correo electrónico.
4. Configure el archivo /etc/ssmtp/ssmtp.conf en su configuración de gmail.
$ sudo nano /etc/ssmtp/ssmtp.conf
Como podemos observar en la línea
colocamos nuestro email y en la siguiente
colocamos la contraseña del mismo:
AuthUser= nuestro _email
AuthPass= password
Establezca los permisos del archivo de
configuración SSMTP:
$ chmod 774 /etc/ssmtp/ssmtp.conf
Los permisos del archivo
/etc/ssmtp/ssmtp.conf determinan quién será
capaz de enviar mensajes de correo
electrónico desde la RPi
Reiniciamos la Rpi y ahora podemos enviar
correos electrónicos desde la RPi.
En Gmail activamos acceso para aplicaciones menos seguras
Abrimos el email de sesión bloqueada y observamos la
sección que indica “permitiendo el acceso a aplicaciones
menos seguras” y habilitamos el acceso
A continuación, puede enviar correos electrónicos desde consola , por tanto, desde un script bash.
1. Ya sea utilizando ssmtp
$ echo "Este es un test" | ssmtp -s “Hola como estas” [email protected]
2. Utilizando mutt
$ echo "Email from your RPi" | mutt -a "/home/pi/Desktop/fotos/im.jpg" -s "captura de foto "$taken --
[email protected]
echo esta parte es el cuerpo del email a enviar
a representa al archivo que se va a adjuntar en el email
s representa al subject del mensaje
Al final se coloca el email receptor de nuestro mensaje
Actividad
• Integrar un sistema de detección que permita la captura de una foto y
esta sea enviada al email de forma automática
SERVIDOR BASE DE DATOS
Con las conexiones de los diferentes sensores a la Raspberry Pi y las lecturas de cada sensores,
tenemos que almacenar esos datos y que el usuario final pueda verlos por medio de una página web,
con el fin de que con una simple conexión a internet y en la cual haya una pasarela a la red que se
encuentre conectada la Raspberry Pi, el usuario pueda observar o descargar los datos.
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:
$sudo apt-get install apache2
• Una vez finalizada la instalación procedemos a verificar que el servidor se
encuentre trabajando por lo que ingresamos al navegador web y
digitamos la dirección IP asignada a nuestra RPI posterior nos mostrara el
servidor Apache funcionando así:
SERVIDOR PHP
Una vez ya tenemos instalado el servidor web Apache, ahora es el momento
de instalar el servidor PHP, para que la páginas web de nuestro servidor
soporten contenido dinámico.
$sudo apt-get install php7.0
Una vez hayamos instalado php y las librerías correspondientes, deberemos
reiniciar la Raspberry Pi.
$sudo reboot
Cuando ya esté reiniciada la Raspberry Pi, deberemos comprobar que el servidor PHP esté
funcionando correctamente, para ello crearemos una pequeña página web la cual nos
indicara que versión de PHP estamos utilizando. Para ello creamos el siguiente fichero
phpinfo.php
$sudo nano /var/www/html/phpinfo.php
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 scripts para estados.py
- GPIO
Programar HTML/PHP
- Permisos del sistema
- Ejecución de .py
January 22, 2018 150
1) Situarse en la carpeta /var/www/html
2) Crear un script encender.py, para activar un pin del
puerto GPIO
Ejecutar para comprobar:
$ sudo python encender.py
January 22, 2018 151
3) Crear un script apagar.py, para desactivar un pin del puerto GPIO
Ejecutar para comprobar:
$ sudo python apagar.py
4. Crear un script led2.php, para desarrollar un entorno gráfico y ejecutar los scripts
link descargar archivo:
https://www.dropbox.com/s/0c2bxn9znihz4yc/led2.txt?dl=0
January 22, 2018 152
January 22, 2018 153
5. Debemos otorgar permisos para poder utilizar el comando exec de PHP, lo
haremos de la siguiente forma:
$ sudo chmod 775 /var/www/
$ sudo usermod -a -G www-data pi
$ sudo visudo
Agregamos una ultima línea:
www-data ALL=(root) NOPASSWD:ALL
6. reiniciamos el servidor:
sudo /etc/init.d/apache2 restart
January 22, 2018 154
FIN
GRACIAS POR SU ATENCIÓN
January 22, 2018 155