Documente Academic
Documente Profesional
Documente Cultură
O Bluetooth
python
Organizador:
*MEE
ESPOL STUDENT BRANCH
Con el cuepiclo de:
AdateI
$
Dirigido a:
Duración:
• 8 Horas
Expositor:
Introducción a Programación en C.
2(Ç 0
oo
??il?000l
I 2r ODA a
CONOCIENDO EL RASPBERRY PI
L ei u ce
¿Qué es Raspberry PI y para qué sirve? cVt tU ( tx-
Al momento de hablar sobre ordenadores de placa única es necesario dejar en claro que
estos son básicamente un ordenador o computadora en miniatura que cumplen con el
requisito principal de contar con todas las prestaciones básicas de un ordenador de
escritorio, cuyos componentes se encuentren contenidos en una sola placa del tamaño
de la palma de tu mano, es importante recalcar que debido a esta limitante en tamaño,
sus capacidades se verán reducidas en comparación de los ordenadores actuales pero a
pesar de eso se contara con las capacidades de procesamiento y almacenamiento
suficientes para soportar una amplia gama de aplicaciones o desarrollos de software y
electrónica.
Raspberry PI
Este es el más famoso SBC en la actualidad, esto principalmente a que fue una de las
primeras en producirse y distribuirse de forma masiva a un precio relativamente bajo la
misma que presenta características lo suficientemente robustas para incluso reproducir
video Fui¡ HD lOSOp y en sus última versión contar con acceso Wifi 802.11n y Bluetooth
4.1
BROADCOM
A O Bluetooth
HDU SUPERSPEED
Aplicaciones
Los ordenadores de placa única han tenido una amplia acogida sobre todo en el área de
desarrollos basados en software libre debido a que el Raspberry Pl soporta una amplia
gama de distribuciones basadas en Linux con lo cual se cuenta con una plataforma
bastante atractiva para desarrolladores y entusiastas de la tecnología, entre los
proyectos más llamativos tenemos los siguientes:
Raspberry Pl 3
S0C Broadcom BCM2837
4x ARM Cortex-A53, 1.2GHz
CPU
64-bit quad-core ARMv8
Broadcom VideoCore IV y 1080p30 H.264/MPEG-
GPU
4 AVC3
Memoria (SDRAM) 1 GB LPDDR2
USB 2.0 4 puertos
Conector MIPI CSI que permite instalar un
Entradas de Video
módulo de cámara desarrollado por la RPF
HDMI, 3.5mm Audio jack, Interfaz DSI
Salidas de Audio y Video
para panel LCD
Pines 40-pin header
Almacenamiento MicroSD
10/100 Ethernet (RJ-45), Wifi 802.11n y
Conectividad de Red
Bluetooth 4.1
Tamaño 85.60mm x 53.98mm
Peso 45g
Fuente 5 V vía Micro USB o GPIO header
Consumo 800 mA, (4.0 W)
Raspbian, Ubuntu (Mate, Snappy), Windows 10
Sistemas Operativos
lOT, OSMC, Librelec, Pinet, RISC OS, entre otros
Puertos de Comunicación
Uno de los puntos de interés a nivel de hardware son sin lugar a dudas los puertos de
comunicación con los que cuenta Raspberry PI, de manera general podemos observar
en la siguiente figura que tenemos a disposición:
• l Puerto HDMl
• 4xUSB2.0
• DSI Display Connector para Pantalla LCD
• CSI Connector para Cámara
• 40 Pines GPIO (UART, I/O, 12C, SPI, 3V3, 5V, Gnd)
• Conector de audio Jack 3,5 mm
• Puerto Ethernet 10/100
• Wifi 802.11n y Bluetooth 4.1
Sin embargo para las aplicaciones del presente curso nos enfocaremos en las
prestaciones de los 40 pines GPIO, esto debido a que de manera introductoria se busca
orientar al desarrollo de proyectos de electrónica a nivel académico, con lo cual se podrá
contar con las bases en cuanto a funcionamiento y usabilidad al momento de explorar
los límites del Raspberry Pl y nuestro ingenio.
40 Pm
Extended GPIO
10/100
Broadcom LAN Port
BCM2837 64bit
Quad Core CPU
at 1.2GHz,
1GB RAM
3.5mm 4-pole
On Board osite Video
Bluetooth 4.1 ComRudio
and
Wi-Fi Output Jack
0-0
00
GPIO (General Purpose lnput/Output) es, como su propio nombre indica, un sistema de
Entrada/Salida de propósito general, es decir, una serie de conexiones que se pueden
usar como entradas o salidas para usos múltiples.
)—01 0-06
6 0-0
0 o/_0
01 Los GPIO representan la interfaz entre Raspberry Pi y el mundo exterior. Y con ellos
podrás hacer multitud de proyectos, desde hacer parpadear un LED hasta otros mucho
más sofisticados. Pero para eso debes conocer sus características y como se programan.
Írs Todos los pines son de tipo "unbuffered", es decir, no disponen de buffers de protección,
así que deberás tener cuidado con las magnitudes (voltajes, intensidad,...) cuando
!._? 0-01000
___#-0 •' 00-0
o conectes componentes a ellos para no dañar la placa debido a que no todos los pines
tienen la misma función:
if4 • Pines de alimentación: Son puertos de 5v, 3v3
(limitados a 5OmA) y tierra (GND o Ground), que 3V3
10 0 gv
aportan alimentación a estos voltajes para tus
circuitos, estos sirven como una fuente de
0PI02
00 5V
Ground
00 GPIOIS
0
puertos de 5v, 3v3 (limitados a 5OmA) y tierra (GND
GPIO2? Ground
o Ground), que aportan alimentación a estos
voltajes para tus circuitos, estos sirven como una GPIOZ2 GP1023
o.
utilizar otras fuentes (pilas, fuentes de alimentación
GPIOIO Ground
externas, etc).
ID SO
o OPIO7
ID SC
alimentación, aunque también puedes utilizar otras
fuentes (pilas, fuentes de alimentación externas, OPIOS Ground
etc).
OPIOS 0P1012
ISO Raspbian
Primero, hemos aclarado a que nos referimos por ordenador de placa única, pero debido
a que estamos hablando de ordenadores es necesario definir un componente muy
importante, este es el sistema operativo, dependiendo del sistema operativo que
usemos, la manera en que manejemos el Raspberry Pl variara en mayor o menor grado,
esto debido a que en la página oficial de Raspberry tenemos una amplia gama de SO que
pueden ser usados entre ellos incluso una distribución de Windows loT.
DOWNLOADS
e.
O..,
01,Z: »
teUNTU MATE SNePPY*.mUNTU ccee
u.
da
W,\ttOiy$ 10.07 COPS OOMC
re
Para este curso usaremos la distribución conocida como RASPBIAN, la misma que provee
un entorno similar al de un ordenador y que permitirá instalar aplicaciones y programas
de terceros que explicaremos más adelante.
7
Kit Raspberry PI
• Monitor
• RaspBerry Pl 3 con Case Transparente
• Tarjeta SD 8GB
• Fuente 5V DC 2.5A
• Teclado, Mouse y Adaptador HDMI a VGA
• ProtoBoard y Componentes Electrónicos
Montaje de SO Raspbian en SD
• Una Tarjeta SD: Será necesaria una tarjeta de 4GB como mínimo.
• Etcher Burn: Esto en caso de usar Windows, existen aplicaciones similares para
Linux y Mac.
Ajo& eO kV
Instalación Paso a Paso
o
QNeedHp? *
o
SELEC1 IMAGE
9
SELECT DRIVE
el*,
BURN IMAGE
o o o 11
PFÁi 1f
lo resinio &iiftt n
Llegado este punto contaremos con una tarjeta SD con RASPBIAN lista para ser montada
en el Raspberry PI, para esto colocamos la tarjeta SD en la ranura, conectamos la fuente
de alimentación, un teclado USB y esperamos hasta que el sistema operativo termine el
proceso de arranque mostrándonos la siguiente pantalla:
DLOØO
g0??Oo9
6o-o
0e
1—o001
0-0
00
Cabe indicar que este primer arranque será realizado con varías configuraciones por
defecto, sin embargo es necesario realizar algunos cambios básicos de idioma, teclado,
hora y fecha como se indica a continuación:
96 90-0
Od o/_0
Programación
1»
Oficina
Internet
00
Íçi Juegos
HeIp
, Teclado y ratón
Coguacron de Raspbery Di
1 aspoerTyp
Cancelar Acepto-
Can
es desamo Localizaoon
Clave
Moscoame aspberryp
Overscart
DMTmodelC 1024768601z43
DMTlsore85 1280x720 60-It 169
Desacivado \E? 5011U(1
Cancelar Aceptar
D*T mode 35 12800024 6~ 54
Revolaron
DMTmode82 1920x108066Q 169
Donde los 2 primeros números corresponden al mes, los 2 siguientes al día del mes, los
4 siguientes representan la hora y minutos, y los 2 últimos el año.
9* L°
Tum Off Wi-Fi
ACMAN
ae7 1 a u
AlurnnoAsstido
ARR IS-40B2
carlos alvarez
Clato_NOVAWAYSA00051 90521
o? .o :t : :
Ø_OO—O 1
o
9 9s_0, 90-0
10 60-010—O O—
J oo :O o Qv
11
09 o/J/L0-v
L1 0
Lo-oo 6*-o
009
-0 o
-o
-o
j0.0
00
1 2 % 14:45
o_6 009
0.06
g 6 90-0
Añadir/quitar elementos del panel
ç0 0-0
Ehmtnar Wireless & Wired Netviork del panel
_Y 0-01000 Acerca de
0
Programación >
Oficina
nternet )
Juegos )
Accesorios
1
Ó9 Main Menu Editor
09L
0---o —:
1 o 60-0 0-0 0-
12
Configuración de Lenguaje: La configuración del lenguaje la tendremos disponible
en Inicio> Preferencias > Configuración de Raspberry PI > Localización, en esta sección
también podremos editar las configuraciones de Zona horaria y teclado.
. ifcj.ac:r. Raspb
Idioma. es (Spanish)
País: EC (Ecuador)
VNC Viewer transmite el teclado y el mouse al servidor VNC, con esto podremos ver el
escritorio del Raspberry Pi dentro de una ventana en nuestra computadora o dispositivo
móvil. 1 ~- ( t,
vtJC
Para contar con esta herramienta es necesario realizar las siguientes configuraciones:
1) Instalar VNC server en Raspberry PI: este paso no será necesario realizar ya que
la versión de Raspbian usada en este curso ya tiene por defecto instalado un
servidor VNC
2) Habilitar servicio VNC Server: Para esto iremos a Inicio > Preferencias >
Configuración de Raspberry PI > Interfaces y habilitaremos el servicio VNC
Activo Desactivado
Cancelar Aceptar
.8. 4 4
0: :de4:16b2:. scopei
etitr o8:27:eb:17:a5:7a tAqLuin 1OUO (Ethernet)
RX packets 383432 bytes 37123123 (35.4 Mí8)
RX errors O dropped 112 overruns O frame O
TX packets 63672 bytes 74281998 (70.8 MiB)
IX errors O dropped O overruns O carrier O co1l.isi.n. L
píçraspberrypi:- $ •
4) Descargar e Instalar VNC Viewer: Realizar la descarga de la aplicación para
Windows, MacOS, iOS, Linux o Android desde la página
nttps://www.realvnccom/en/connect/download/viewer/ y acceder usando la
IP identificada en el paso anterior, el usuario "Pl" y la contraseña "ntdr96ae"
ii
¿ignin..
_]
1234567890
u 1 o p
k 1 ñ
b o m
123
15
o. 0
00
Íi Recordemos que Raspberry Pl usa como sistema operativo RASPBIAN, el cual es una
Li o-ol 000 distribución de Linux, que a su vez ha sido desarrollado en base a UNIX, debido a esto
-o '1 000
0-0 6 o
RASPBIAN tratara a todos los elementos como si fueran ficheros o documentos de texto
muy parecidos a los típicos .txt que encontramos en Windows, es decir que el disco duro
será visto como un fichero con dirección algo parecida a "/dev/sda" las tarjetas SD serán
vistas como "/dev/mmcblkü" y por supuesto cada uno de los puertos GPIO serán para
el sistema operativo un simple fichero el cual contendrá información que definirá la
manera en la que comportara cada pín de conexión, es decir se podrá indicar dentro de
este fichero si un pin es entrada/salida o si se encuentra encendido o apagado.
r
6ckr'ark u cls
C:rectsiy Tres
, root
bss class deices fimwa,e
Pun
sbn
seUntx
' Jsrv fs kerreI
block
E-) bus
V JcIass
JbackIght
CU bcm2708.yeo
n3 t>dl
1'ti block
I nbs9
t jdrna
y D çpo
y eJ gpiochipO
' deuice
I jsubsystern
' grapscs
9 i tems
Para programar un GPIO es necesario realizar varios pasos como habilitarlo, definir si
será entrada o salida y por ultimo darle un valor de encendido o apagado.
La forma más básica de controlar un GPIO es mediante líneas de comando que podemos
ingresar desde un terminal para lo cual se pueden emplear comandos básicos de consola
para gestionar ficheros, Por ejemplo, si queremos controlar un LED, podríamos entrar
en la consola y escribir lo siguiente: o_tz.o 0oToo
?óo-oFo—o<> k 0
o-
1¡0-09 ó g
16 <>-~ to
LO°
TJ3
echo 17 > /sys/class/gpio/export ( e ,
Con esta línea se consigue crear un fichero con la estructura GPIO de RASPBIAN para
que podamos controlar el pin 17 del Raspberry PI, luego de esto es necesario indicar si
el GPIO será tipo entrada o salida, para esto podemos usar el comando:
9
echo out > rsys/class/gpio/gpiol7/direction (e'í
En este comando podemos ver que se debido al "echo out", el GPIO ha sido definido
como una salida, por ultimo si queremos encender o apagar lo indicamos con valores O
o 1 con los siguientes comandos:
Una vez terminado este pequeño ejercicio es importante borrar los cambios realizados
en la GPIO usada ya que si abrimos otras GPIO podrían crearse conflictos de memoria,
para esto usamos el comando:
Llegado este punto hemos logrado controlar de manera efectiva un GPIO en nuestra
Raspberry PI, sin embargo el principal objetivo de este curso es lograr transmitir las
herramientas básicas para desarrollar proyectos de electrónica, pero ¿Qué es lo más
básico?
Desde el punto de vista de muchos, se podría decir que el proyecto más básico de
electrónica es el muy conocido "Parpadeo de Led" que desarrollaremos en la siguiente
sección.
/«(9 51 l~f 1 o,
P K 1,9
« d de U\(,~ Í VO)
(Pv~K«0 ZY 3
-
Taller 1: Parpadeo de LED en Script BASH.
Este pequeño taller buscara elaborar un programa que de manera automática controle
el encendido y apagado de un Led conectado a un GPIO de nuestra Raspberry PI, para
esto nos basaremos en el siguiente esquemático.
ut
Para este programa crearemos un script para Bash que al ser ejecutado controle el
encendido y apagado el Led conectado al GPIO 17, todo esto sin la necesidad de ingresar
los comandos uno a uno como se realizó en la sección anterior, para esto primero
accederemos al entorno gráfico y crearemos un fichero en blanco con el nombre LED.sh
como podemos ver en las siguientes figuras.
Una vez creado el fichero en blanco procederemos a ingresar el siguiente contenido y lo
guardamos.
lo rieru fLED.sh
1
54
File Edit Search Optiors Help
fr! /b{n/bash
echo 17 > /sys/cbss/gpio/export
echo out > ,'sys/dass/gpio/gpiol7/direction
white true;do
echo 1 > /sys/cl..ass/gpio/gpiol7/vatue
sleep 1.3
echo O > /sys/cl..ass/gpio/gpiol7/vaI.ue
sl.eep 1.3
done
Por último es necesario otorgarle al fichero LED.sh permisos de ejecución ya que se trata
de un programa que controlara el hardware de nuestro Raspberry PI, para esto usamos
el comando ''chmod u+rwx LED.sh".
A lo largo de este curso hemos conocido una pequeña parte del mundo de los
ordenadores de placa unica y logramos desarrollar un programa basico para el control
de un led, sin embargo para el desarrollo de proyectos esto es apenas lo mas basico que
podriamos necesitar, y la realidad es que no hemos logrado explicar todas las
prestaciones del Raspberry PI, entre las que tenemos:
• Visualizacion de multimedia.
• Manejo de puerto UART.
• Puerto PWM para control de Servomotores.
• Puertos SPI e 12C para manejo de perifericos, etc
Pet/
,,
d?•_%4I
Como se explicó en la sección anterior, será necesario instalar la librería PySerial, para
esto ingresaremos a la aplicación Terminal y ejecutaremos el siguiente comando:
En este punto del curso, ya se cuenta con el software y librerías necesarios para
G 00
9
01 0-06
programar las GPIO del Raspberry PI en Lenguaje Python por lo que dedicaremos la
g 6 90-0
presente sección a describir las diferentes funciones y como usarlas, entre las principales
0-0
tenemos las siguientes.
0-00-0
RPi.GPIO 0.6.3:
00
6-0 • GPlOsetmode(GPIOBOARD)
0-0
0-01 0 0 0
-0 ' 00-0 Permite configurar la numeración de los PINES del Raspberry PI en el modo BOARD.
0-0 16 o
o
• GPlOsetmode(GPIO.BCM)
0-00
Permite configurar la numeración de los PINES del Raspberry PI en el modo BCM.
• GPIO.getmode()
Devuelve el modo de PINES configurado, la respuesta puede ser GPIO.BOARD,
GPIO.BCM o None
• GPIO.setup(channel, GPIO.lN) -
-~> 1,si
Configura como una entrada al PIN identificado por "channel" lo cual corresponde
a un numero de PIN dependiendo del modo de numeración configurado
(BCM/BOARD)
O
• GPIO.setup(channel, GPIO.OUT) -
Configura como una entrada al PIN identificado por "channel" lo cual corresponde
a un numero de PIN dependiendo del modo de umeración configurado
(BCM/BOARD) O'
09
o go
°*ZJ
O 0\Q 0-
:
6°-°°—° 0-
22(30
5€jtj & er c\.
• ser = serial.Serial('/dev/ttySO')
Realiza la apertura del puerto serial y lo asigna a la variable 'ser'.
• ser.close()
Cierra el puerto serial, relacionado a la variable 'ser'.
• ser.write(b'hello')
Escribe en el puerto serial la palabra helIo.
• x = ser.read()
Lee un byte desde el puerto serial relacionado a la variable 'ser' y lo almacena en
la variable Y.
• y=ser.read(1O) GlA1:L \'f\
Lee un total de 10 bytes desde el puerto serial y lo almacena en la variable V.
• z = ser.readline() \
Lee de manera continua el puerto serial hasta recibir el carácter de fin de línea
identificado por '\n'
o)
P y ÇoOo0o0o0)
%
ERIAL
/ rT c
INTRODUCqÓN A PROGRAMACIÓN EN LENGUAJE C.
c V\ £d
Librerías de Programación en lenguaje cpara Raspberry PI
Para poder programar en lenguaje C en Raspberry PI, es necesario contar con los
siguientes componentes:
Como primer paso deberemos realizar la descarga del paquete de archivos usando el
terminal y ejecutando la siguiente línea de comando:
ooofe o90
0—.. 0 L0000
0-0X00 1 —ø O
;—
Ió6 0-OI0--O 0--
ITO.09 O
24 0-4
¿
d
Una vez terminada la descarga accedemos al directorio donde se encuentran los
archivos descargados y realizamos un "Build" del paquete descargado usando los
siguientes comandos:
• cd ''/wiringPi
• ./build
pi.-/wirifigPi $ .tbui1.
.ringPi Build script
j-i Library
ninstail]
umpíle) wírinyPi.c
ompile] váirincjSerial.c
ompile] piThread .c
ompile) piHiPri.c
ompile] wirinçjShi.ft .c
ompile] wiringPisPl.c
ompile} wiringPíI2.c
ompile] softPwoi c
ompile] soft Tone c
ompile] mcp23008.c
ompile] mcp23016.c
.gpio-v ¿/
9 io version: 2.44
1
spberry Pi Details:
Type: Pi. 3, Revision: 02, Mernory: 1024MB, Maker: Sony
* Devíce tree is enahied,
'--> Raspberry Pi 3 Model 8 Rey 1.2
Thxs Raspberry Pi supports user-level GPIO access.
i:— $ •
O—.s___o o OI000
2\o—O 0 0
0-
1ø60-OIO—O 0-
25
00
00
0.0
0-01000
-0 ' Q0-
Archivo Editar Pestañas Ayuda
0-0 16 o
o
Raspberry Pi Detaiis
Type: Pi 3, Revision: 02, Memory: IU4M, Maer: Son.
.' Device tree is enabled.
--' Raspberry Pi 3 Model 8 Rey 1.2
This Raspberry Pi suppores user-level OPIO access.
pipi:— S gpio readail
+ - -Pi3 -.----+
8CM wPi i Name Mode y Physical y 1 Mode 1 Name 1 wPi 8em
+ - --------- -----
3.3v 1 2 5v
21 8 SDA.1 IN - 1 3 4 5V
3 9 SCL.1 IN 1 ¡ 5 6 0v
7 OPIO. 7 1W 1 7 8 0 1W TxD 15 1 14
0v 9 H 10 1 1W RxD 16 j 15
17j O OPIO. O 1W 0 1 11 Íj. 12 0 IN OPIO. 1 1 1 18
27 2 OPtO. 2 1W 0 13 j í 14 1 0v
22 3 OPIO. 3 IN 0 15 11 16 0 1W OPIO. 4 1 4 1 23
3.3v 17 II 18 0 1W OPIO. 5 1 5
10 12 MOSI 1W 0 119 j1 20 1 0v
9 13 MISO IN 0 1 21 11 22 1 0 1W OPIO. 6 1 6 1 25
11 14 SCLK IN O23il24l1 1W CEO 110 18
0v 1 25 11 26 1 1 1W CE1 11 7
o 30 SDA.O IN 1 1 27 H 28 1 1 1W SCL.O 1 31 1 1
5 21 GPI0.21 1W 1 1 29 11 30 0v 1 1
6 22 GPIO.22 1W 1 31 32 0 1W GPI0.26 1 26 1 12
13 23 GPIO.23 IN 0 1 33 11 34 1 0v 1
19 24 GPI0.24 1W 0 1 35 11 36 0 IN (PIO.27 27 16
26 25 GPI0.25 1W 0 j 37 if, 38 0 1W GPIO.28 28 1 20
ç. l39H4010 . IN GPI0.29 29 21
4-- - - - -
-------- --- -
1 8CM i 11,ipl Name MAe y Physical 1 y Mode Name wPi 1 6CM
-
-
pl
En este punto del curso, ya se cuenta con el software y librerías necesarios para
programar las GPIO del Raspberry PI en Lenguaje Python por lo que dedicaremos la
presente sección a describir las diferentes funciones y como usarlas, entre las principales
tenemos las siguientes.
Realiza la apertura del puerto serial a una velocidad especificada por la variable
'baud (9600 tipico)
• void serialClose (int fd)
Cierra el puerto serial identificado por la variable 'fd'
• void serialPutchar (mt fd, unsigned char c) jj- C osXLr\ PtS ti t.L
Escribe un carácter en el puerto serial identificado por la variable 'fd'
• void serialPuts (mt fd, char * s)
scribe una cadena de caracteres identificada por la variable * s
mt seria lDataAvail (mt fd) e4,-~ o~ s~~ti
//o,- f-egbM -)~ YM
etorna el número de caracteres disponible en el buffer serial y que se
encuentran disponibles para ser leidos, si no hay información disponible en el
puerto serial, retorna -1.
• mt serialGetchar (mt fd)
Retorna el siguiente carácter diponibleLen el buffer del puerto serial.
• void seria lFlush (mt fd) 5LaI& 4iQ J\QÁ.QT-LLeJ
Descarta toda la información recibida y almenada en el buffer del puerto serial. o2 Z 000 0 0
ç 00
lo 600 10—O 0—
oJ Oo°0
27
09
tp-oo
oyoo
0
g
ITi ?
TALLER 2. CONTROL DE ENTRADAS/SALIDAS
fr T
e
TALLER 2- PROGRAMACIÓN PYTHON
SECCION 1: Para este ejercicio se programara el PIN BOARD 11/ BCM 17,
para encender y apagar de manera indefinida, se requerirán los siguientes
componentes de hardware:
oo
DIAGRAMA 1— PYTHON
Íli ç 1MocjrI fi
1. Importar librerías
2. Declarar modo de PIN (BCM/BOARD)
3. Configurar PIN como Entrada/Salida
4. Declarar variables
S. Crear Lazo de ejecución
6. Programar encendido y apagado periódico de LED
o22.o 09 o
o;5
O-
600 0—O 0-
28j
y
, 1/ ~ ~ 0 r,~ 1 D ~--
PROGRAMA 1- PYTHON
x
)) O1 ±
File Edit View Run Tools Help
uio (0df
blink py'
import RPi.GPIO as GPIO
import time f j t .flQ-&OY)
GPIO.setmode(GPIO.BOARD) -7 4eJ'i
GPIO.setup(11. GPIO.OUT)
gy
c ontO
while(cont40): S€'
PIO.output(11. GPIQ.HIGH)
print ('Led Encendido')
tinie.sleep(1)
GPI0.output(11, GPIO.LOW)
print ('Led Apagado)
time .sleep(1)
cont=cont+1
print ('Fin de Programa)
GPIO .cteonup()
t: M,yIeU,'
• r
AVA
PROGRAMA 2- PYTHON
Çr
+PiH os RER 0
blink.pyx
import RPI.GPIO as GPIO
import time
GPIO .setmode(GPIO .BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(12, GPIO.IN)
cont=G
while(cont40):
GPIO.output( 11, GPIO.HIGH)
print ("Led Encendido')
time .sleep (1)
GPIO.output(11, GPIO.LOW)
print ("Led Apagado')
time .sl.eep(1)
cont=cont+1
if GPIO.input(12):
print( 'Button HJ(jH)
else:
print( 'Button LOW')
Shell
Led Apagado
ButtOn LOW
Fin de Programa
o± o 00 0
o2 \t?0 ? :
Fó 600
jooO
lo—o
o Q\
o—.
30
TW
PROGRAMACIÓN LENGUAJE C
DIAGRAMA 3— LENGUAJE C
o-Zo 009
1: 0.
9 9"-07 0-0
60-010--O 0-
31
• En caso de realizar la compilación mediante el IDE Geany, es
necesario configurar los parámetros de compilación, para esto
iniciamos el IDE Geany y nos dirigimos a la sección
Construir>Establecer comandos de construcción.
o.o o e o go
o2 \f o:
1 U'
O—
lo 60-010--O 0-
JJo-ogÓgoo..
32
PROGRAMA 3- LENGUAJE C
Mensajes
o±Z o
Oo ?o o 90
0_e 9
9 Q•'—o 0-0 0-
106 0-01 0—o 0-
33
o, -
TALLER 3: MANEJO DE PUERTO SERIAL UART Vnw
Antes de trabajar con el puerto Serial del Raspberry P13 es necesario conocerlo lnoco
y los cambios que ha tenido a lo largo .el tiempo, a continuación algunos detalles:
1- JtM&,kjj , ,
1. Raspberry Pl siembre ha contado corYTuertos seri.les identificados en los
registros / Oy el /dev/tty50.t dM
2. El puerto Serial /dev/ttySO en Raspberry P13 viene desactivado por defecto.
puerto Serial /dev/ttySO por defecto muestra la consola del Raspberry P13.
4. El puerto serial /dev/ttyAMAO hasta la versión Raspberry P12, era el único puerto
con pines GPIO disponibles para su uso.
S. A partir de la versión Raspberry P13 se introduce la comunicación mediante
Bluetooth, debido a esto se necesitaba un puerto Serial destinado
específicamente a esta comunicación y se optó por usar el /dev/ttyAMAO lo cual
ocasiono que el puerto /dev/ttySO se convierta en el nuevo puerto serial con
pines GPIO disponibles.
En resumen el uso que les podremos dar a los puertos seriales queda de la siguiente
forma:
Camara:
4
—sactivado
Los cambios realizados requieren que el Raspberry Pi
SH: reinicie, para que tengan efecto. esactivado
esactivado
Desea reiniciar ahora?
3P1: esactívado
Sí
2C: esactivado
Cancelar Aceptar
¿5 to 5; ep
J ri
1't
)upe"( UIYJ&
Luego de habilitar el puerto Serial es necesario desactivar el Logging del puerto Consola,
esto lo hacemos ejecutando el siguiente comando:
l ~,t ' ', )
Arch
GNU nana 2.7.4 Fichero /boot/cmdline txt
•
icotg.Ipm enable=O console=serialO, 115200 console=ttyl root=PARTUUiDf9c4eb4e
,ancei.ar
35
TALLER 3- PROGRAMACIÓN PYTHON
Debido a que cada grupo de trabajo cuenta con un Kit Raspberry P13 y la comunicación
serial se realiza entre un dispositivo emisor y uno receptor, para este ejercicio
interconectaremos las líneas TX y RX del mismo puerto Serial para poder comprobar su
funcionamiento, los pines que debemos interconectar son BOARD/8 y /BOARD10.
0...
!MMO
TESTseriaLpyX
iaport time
iutport serial..
while (1):
read=ser. readline()
print (read)
if (read= (b'exit\n')):
break
Shell
» Ld / ptpfl ¿LL
» RunTEST si? r.iai. .rv
b'mensaje con salto de linea \n'
b'exit\n'
Fin de Programa
»
0 90
1ø6 0-OIO—O
O-o
o-
36
09 o/J/Lo-\
Por ultimo necesitaremos diseñar y ejecutar un programa en Python que permita
realizar envió de información mediante el puerto Serial.
+MM O
,
TSTserjy 1 <untitled*X
import time
import serial
Shell
»
»
b'mensaje con salto de linea \n'
b'exit\n'
Fin de Programa
Sin embargo existe una consideración que se debe tener en cuenta, el software ¡DE
Thony nos permitirá ejecutar solo una instancia a la vez por lo que este segundo
programa será ejecutado directamente sobre la línea de comandos de Python, para esto
accedemos a Inicio> Programación > Python 3 (IDLE).
Ln: 11 Col: 4
37
TALLER
TALLER 3- PROGRAMACIÓN LENGUAJE C
Para este último ejercicio combinaremos el uso de puertos GPIO con el puerto serial y
no utilizaremos un segundo programa para realizar el envió de la información.
mrr -
u. &It
Viri vill =
0ut: