Está en la página 1de 6

Universidad de El Salvador 1

Facultad de Ingeniería y Arquitectura


Escuela de Ingeniería en Sistemas Informáticos
Cátedra de Microprocesadores

Avance de Tecnología Raspberry PI


[Raspberry Pi Technology Advance]

Br. Gabriel Eduardo Cárcamo Martínez


CM18036
Universidad de El Salvador – El Salvador
Resumen
El progreso de la humanidad conlleva un correspondiente avance de la
tecnología en si misma, diversas herramientas como Raspberry Pi han tenido
dichos avances. Estos avances han permitido que Raspberry Pi sea adaptable,
permitiéndole trabajar desde la programación en lenguajes de bajo nivel, como
ensamblador, hasta lenguajes más estructurados como C++ o Python,
generando una amplia gama de opciones y dispositivos electrónicos que se
centran en esta tecnología.

[The progress of humanity entails a corresponding advance in technology itself,


various tools such as Raspberry Pi have had such advances. These advances
have allowed the Raspberry Pi to be adaptable, allowing it to work from
programming in low-level languages, such as assembly, to more structured
languages such as C++ or Python, generating a wide range of options and
electronic devices that focus on this technology.]

interactúa Raspberry Pi con el código fuente y sus


pines GPIO.
I. INTRODUCCIÓN Como punto final, se expone un esquema de
interconexión que demuestra como se realizan las
El presente artículo presenta una descripción conexiones entre la placa Raspberry Pi con otros
detallada y concreta acerca de las capacidades de dispositivos de E/S, ya sean pulsadores, LEDs y
hardware con las que cuenta Raspberry Pi, en su motores DC, por medio de sus pines GPIO.
versión 4.
Como punto inicial, se presentan todas las II. OBJETIVOS
características de Raspberry Pi 4, detallando cada
uno de sus aspectos técnicos, pines y su • Definir los aspectos técnicos de hardware
clasificación, así como los puertos de E/S que la que componen la placa Raspberry Pi 4.
permiten conectarse con otros dispositivos. • Comparar la forma en que se programan
De igual forma, se exponen las diversas los pines GPIO en lenguajes de bajo y alto
formas en las que la placa Raspberry Pi 4 puede nivel.
ser programadas, desde los lenguajes de bajo • Detallar los diversos tipos de pines GPIO
nivel como ensamblador, hasta lenguajes más disponibles en Raspberry Pi 4.
estructurados como C++ y Python. Así mismo, se
demuestran ejemplos que demuestran como
Universidad de El Salvador 2
Facultad de Ingeniería y Arquitectura
Escuela de Ingeniería en Sistemas Informáticos
Cátedra de Microprocesadores

III. RESULTADO DE LA INVESTIGACIÓN • Procesador: Broadcom BCM2711,


quadcore Cortex-AV7 (ARM v8), 64-bit SoC
1.5GHZ
A. Descripción de Hardware Raspberry PI 4, • Memoria: 1GB, 2GB, 4GB o 8GB LPDDR4
puertos y pines • Conectividad: WLAN IEEE
802.11b/g/n/ac, adaptador Bluetooth 5.0,
1) ¿Qué es Raspberry Pi? Gigabit Ethernet
• Puertos USB: 2 puertos USB 3.0, 2
Raspberry Pi es una computadora de bajo puertos USB 2.0
costo y con un tamaño compacto, del porte de una • GPIO: Conjunto de pines GPIO estándar
tarjeta de crédito, puede ser conectada a un 40 pines
monitor de computador o un TV, y usarse con un • Video y sonido: 2 puertos micro-HDMI de
mouse y teclado estándar. hasta resolución de 4K 60fps, 4 puntos de
Es un pequeño computador que corre con un audio estéreo
sistema operativo basado en un núcleo Linux, • Tarjeta SD: Soporte para tarjetas micro
capaz de permitirle a las personas de todas las SD, para la lectura de un S.O Linux y
edades explorar la computación y aprender a almacenamiento de datos
programar lenguajes como Scratch y Python.
Es capaz de hacer la mayoría de las tareas
típicas de un computador de escritorio, desde
navegar en internet, reproducir videos en alta
resolución, manipular documentos de ofimática,
hasta reproducir juegos.

2) Hardware que compone Raspberry Pi

Raspberry Pi es la placa de un ordenador


simple principalmente compuesto por un SoC,
CPU, memoria RAM, puertos de entrada y salida
de audio y vídeo, conectividad de red, ranura SD Fig. 1. Estructura de Hardware de Raspberry Pi 4, exponiendo
para almacenamiento, reloj, una toma para la los principales componentes que la componen.
alimentación, conexiones para periféricos de bajo
nivel.
Actualmente, las versiones más recientes de 3) Puertos GPIO integrados en Raspberry Pi
Raspberry Pi cuentan también con puertos de
entrada y salida USB 2.0 y 3.0, alimentación por GPIO son las siglas de General Purpose
puerto USB-C, puertos micro-HDMI para conectar Input/Output, es decir, Entrada/Salida de
pantallas de resolución 4K. propósito general. Lo pueden tener diferentes
Dichos puertos y mejoras han sido productos electrónicos, como los propios chips o
implementados en la versión más reciente de ciertas placas PCB como es el caso de esta
Raspberry Pi, es decir la versión Raspberry Pi 4, Raspberry Pi.
podemos ver la estructura y organización de estos Como su propio nombre indica, son pines que
componentes en el esquema de la Figura 1. se pueden configurar para realizar distintas
De acuerdo al fabricante en la versión 4 de funciones, de ahí que sean de propósito general y
Raspberry Pi, se cuentan con los siguientes no para un uso específico.
puertos y especificaciones de hardware de sus Será el usuario en tiempo de ejecución el que
componentes: pueda configurar estos pines GPIO para que
hagan lo que se necesita. Para ello se dispone de
diferentes formas, como con ciertos códigos o
scripts desde la consola o con el programa Python,
Universidad de El Salvador 3
Facultad de Ingeniería y Arquitectura
Escuela de Ingeniería en Sistemas Informáticos
Cátedra de Microprocesadores

la cual es considerada una de las formas más Cabe destacar que los pines GPIO son la
sencillas y preferidas por la cantidad de opciones interfaz entre la placa Raspberry Pi con el exterior,
que se tienen a disposición. pero tienen una desventaja a nivel eléctrico. Los
pines GPIO no cuentan con la protección para las
Raspberry Pi no solo dispone de una serie de cantidades de voltaje que pueden soportar, es
puertos e interfaces para conectar varios decir que son “unbuffered” (sin buffer).
dispositivos estándar, sino que agrega estos pines
GPIO para que puedan agregarse otros
B. Esquematización de conexiones a
dispositivos electrónicos, así como proyectos
dispositivos de entrada y salida
creados por el mismo usuario.

Fig. 2. Esquema detallando los pines GPIO, enumerando


cada uno de los 40 pines que lo conforman
Fig. 3 Esquema de conexión de Raspberry Pi 4 a un motor
Los pines GPIO se clasifican en 4 tipos, DC.
dependiendo de la funcionalidad que estos
brindan, tales clasificaciones son: Para poder realizar una conexión a dispositivos
de E/S usando Raspberry Pi 4, se hace uso de los
• Alimentación: se usan para conectar las pines GPIO, los cuales permiten la interacción de
líneas o cableado de alimentación para tus la placa con el entorno exterior.
proyectos electrónicos. Se corresponden a Como se puede ver en la Figura 3, se presenta
pines similares a los que tiene la placa Arduino, una esquematización de la conexión de estos
y que proveen de voltajes de 5v y 3v3 (3.3v dispositivos de E/S, para hacer funcionar un motor
limitados a 50mA de carga). DC, el cual tiene como finalidad transformar la
• DNC: son pines que hay en algunas energía eléctrica a energía mecánica.
versiones y que no tienen función, pero que en
las nuevas placas sí que se les ha dado otro
C. Sintaxis de manejo GPIO
fin. Estos solos los encontrarás en modelos
más primitivos de la Pi. En las nuevas 3 y 4
estarán marcados como GND por lo general. 1) Sintaxis de manejo GPIO desde
• Pines configurables: son los GPIO Ensamblador
normales, y se pueden programar mediante
códigos por medio de lenguajes de alto nivel, Para programar los puertos GPIO de
tales como C++ o Python. Raspberry Pi 4, es necesario definir primero el
• Pines especiales: son algunas mapeo de los pines. Todos los pines GPIO se
conexiones que están destinados a encuentran mapeados en memoria, tomando
conexiones o interfaces especiales como como base la dirección 0x20200000. Para
UART, conexiones serie TXD y RXD, etc. propósitos de explicación, se presenta el caso de
encender un LED conectado al puerto GPIO9.
Universidad de El Salvador 4
Facultad de Ingeniería y Arquitectura
Escuela de Ingeniería en Sistemas Informáticos
Cátedra de Microprocesadores

Al estar mapeados los pines GPIO en Desafortunadamente, C++ no cuenta con un


memoria, estos pueden dividirse en grupos conjunto de librerías, propias del lenguaje, que
dependiendo de la función que cumplirán y las permitan acceder directamente a los pines GPIO,
operaciones que se realicen (R/W, W). Como se para ello se recomienda tratar la tarjeta Raspberry
puede visualizar en la Tabla 1, se presenta el Pi como un equivalente en Arduino.
mapeo de los pines GPIO que se programaran
como GPFSEL0.

Dirección Nombre Descripción Tipo


20200000 GPFSEL0 Selec. función 0 R/W
20200004 GPFSEL1 Selec. función 1 R/W
20200008 GPFSEL2 Selec. función 2 R/W
2020000C GPFSEL3 Selec. función 3 R/W
20200010 GPFSEL4 Selec. función 4 R/W
20200014 GPFSEL5 Selec. función 5 R/W
2020001C GPSET0 Pin nivel alto 0 W
20200020 GPSET1 Pin nivel alto 1 W
20200028 GPCLR0 Pin nivel bajo 0 W
2020002C GPCLR1 Pin nivel bajo 1 W
Tabla 1. Mapeo en memoria de puertos GPIO, dividiéndolos
en tipo y función.

Cada conjunto GPFSEL se compone de 10


pines GPIO, a modo de demostración se realizará
el encendido de un LED en la posición GPIO9. A
nivel de mapeo, este será el pin GPFSEL9, el cual
Tabla 2. Asignación de números a cada pin GPIO realizada
será considerada como salida. por la librería WiringPi
Los pines GPSET y GPCLR son los que Para ello se cuenta con la librería WiringPI, la
determinarán el cambio del estado del GPIO9, el cual se instala directamente en el sistema de la
GPSET9 emitirá la señal de encendido (1), y el tarjeta de Raspberry, de esa forma ya se cuenta
GPCLR9 emitirá la señal de apagado (0). con la librería wiringpi.h en C++.
A continuación, se muestra el código en La librería de WiringPi accede a cada uno de
lenguaje ensamblador para poder realizar el los pines GPIO por medio de una numeración
encendido y apagado del LED. específica, la cual se puede ver en la Tabla 2, por
medio de dicha numeración se pueden programar
.set GPBASE, 0x20200000
.set GPFSEL0, 0x00 los pines en C++.
.set GPSET0, 0x1c A modo de ejemplificación, se presenta el caso
.text
ldr r0, = GPBASE de encender un LED por medio de Raspberry Pi y
mov r1,#0b00001000000000000000000000000000 programado desde C++. Dicho LED se encuentra
str r1, [r0, #GPFSEL0] @ Configura GPIO 9 conectado en el pin GPIO40.
mov r1,#0b00000000000000000000001000000000
str r1, [r0, #GPSET0] @ Enciende GPIO 9
infi: #include <iostream>
b infi #include <wiringPi.h>
using namespace std;
2) Sintaxis de manejo GPIO desde C++ int ledPin = 29;

void setup(){
A diferencia del manejo de los pines GPIO en pinMode(ledPin,OUTPUT);
el lenguaje ensamblador, se puede realizar una cout<<"Hello World" << endl;
}
programación de los mismos desde lenguajes de
programación de alto nivel, tales como C o C++. void loop(){
Universidad de El Salvador 5
Facultad de Ingeniería y Arquitectura
Escuela de Ingeniería en Sistemas Informáticos
Cátedra de Microprocesadores

digitalWrite(ledPin,HIGH); IV. CONCLUSIONES


delay(100);
digitalWrite(ledPin,LOW);
delay(100);
Por medio de la investigación presentada en el
cout<<"Blink the LED" << endl; presente artículo, podemos definir las diversas
} utilidades y facilidades que ofrece Raspberry Pi 4,
int main(void)//(int argc, char **argv) principalmente debido a sus capacidades de
{ hardware que, a comparación de sus anteriores
if(wiringPiSetup()<0){
cout<<"setup wiring pi pasadas, cuentan con un poder computacional de
failed"<<endl; alto nivel.
return 1; Por otro lado, se ha podido demostrar como
}
setup(); Raspberry puede adaptarse a ser programada en
while(1){ diversos lenguajes de programación, y la forma en
loop();
} que cada uno de estos lenguajes cuentan con las
suites necesarias para poder programarla.
return 0; Así mismo, se ha podido esquematizar la
}
manera en que Raspberry puede conectarse al
3) Sintaxis de manejo GPIO desde Python exterior por medio de sus pines GPIO, que
permiten que Raspberry interactúe con otros
En el caso del lenguaje de programación componentes, ampliando las facultades de la
Python, actualmente se cuentan con librerías que misma, y las funcionalidades que puede ofrecer.
permiten interactuar directamente con los pines
GPIO de las placas Raspberry Pi.
Entre este conjunto de librerías se puede V. BIBLIOGRAFÍA
mencionar la librería GPIO, así como su
componente RPi.GPIO, las cuales ya se • Raspberry Pi. (2021, January). Raspberry Pi 4
encuentran embebidas dentro de Python. Computer, Product brief. Raspberry Pi.
A modo de ejemplo y como demostración de Retrieved April 3, 2022, from
código, se presenta el siguiente código escrito en https://datasheets.raspberrypi.com/rpi4/raspb
Python para encender y apagar un LED por medio erry-pi-4-product-brief.pdf
de un pulsador. • Ltd, R. P. (2021, January). Raspberry Pi 4
El pulsador, o interruptor, será declarado como Model B specifications –. Raspberry Pi.
un tipo de entrada y por medio de condiciones, se Retrieved April 3, 2022, from
encenderá el LED colocado en el pin GPIO7. https://www.raspberrypi.com/products/raspber
ry-pi-4-model-b/specifications/
import RPi.GPIO as GPIO • I. (2020, April 17). GPIO: todo sobre las
import time
conexiones de la Raspberry Pi 4 y 3. Hardware
GPIO.setmode(GPIO.BOARD) libre. Retrieved April 3, 2022, from
GPIO.setup(3, GPIO.IN) https://www.hwlibre.com/gpio-raspberry-
GPIO.setup(7, GPIO.OUT)
while True: pi/?msclkid=5725c1b4a54611eca7d2b605f01
if GPIO.input(3): ac84b
GPIO.output(7, False) • P. (2021, July 13). ¿Que es Raspberry Pi?
else: Raspberry Pi. Retrieved April 4, 2022, from
GPIO.output(7, True)
https://raspberrypi.cl/que-es-raspberry/
Con el código anterior, podemos demostrar la • Universidad de Málaga. (2019). Prácticas de
forma en que los pines GPIO pueden ser Ensamblador basadas en Raspberry Pi. 89–
programados desde el lenguaje Python, facilitando 95.
la programación de los mismos, a diferencia de los https://riuma.uma.es/xmlui/bitstream/handle/1
lenguajes de ensamblador y C++. 0630/10214/LibroDePracticas.pdf?sequence=
1
Universidad de El Salvador 6
Facultad de Ingeniería y Arquitectura
Escuela de Ingeniería en Sistemas Informáticos
Cátedra de Microprocesadores

• Vásques Leandro, G. (2019). Uso de pines


GPIO en Python. Universidad Nacional de la
Plata.
http://cdr.ing.unlp.edu.ar/files/presentaciones/
013_Pines%20GPIO%20en%20Python.pdf
• X. (2020b, October 27). Programe su
Raspberry Pi con C/C++. AranaCorp.
Retrieved April 6, 2022, from
https://www.aranacorp.com/es/programe-su-
raspberry-pi-con-c-c/
• García, S. (2021, July 29). Cómo conectar un
Motor DC a Raspberry Pi. 330ohms. Retrieved
April 6, 2022, from
https://blog.330ohms.com/2020/06/26/como-
conectar-un-motor-dc-a-raspberry-pi/

También podría gustarte