100% encontró este documento útil (2 votos)
1K vistas155 páginas

Programación Con Raspberry Pi & Python

El documento describe la historia y el desarrollo de la Raspberry Pi. Originalmente creada por el Dr. Eben Upton y sus colegas en 2006 para mejorar la educación en computación, la Raspberry Pi es ahora una placa de computadora de bajo costo que permite a los estudiantes aprender programación de una manera divertida y práctica. El documento luego resume los diferentes modelos de Raspberry Pi lanzados a lo largo de los años y los pasos necesarios para configurar e instalar el sistema operativo Raspbian en la Raspberry Pi 3B.

Cargado por

HusluWapi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (2 votos)
1K vistas155 páginas

Programación Con Raspberry Pi & Python

El documento describe la historia y el desarrollo de la Raspberry Pi. Originalmente creada por el Dr. Eben Upton y sus colegas en 2006 para mejorar la educación en computación, la Raspberry Pi es ahora una placa de computadora de bajo costo que permite a los estudiantes aprender programación de una manera divertida y práctica. El documento luego resume los diferentes modelos de Raspberry Pi lanzados a lo largo de los años y los pasos necesarios para configurar e instalar el sistema operativo Raspbian en la Raspberry Pi 3B.

Cargado por

HusluWapi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 155

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

También podría gustarte