Está en la página 1de 36

Universidad Autónoma del Estado de México

Facultad de Ingeniería

SISTEMAS EMBEBIDOS

“REPORTE PRACTICA 2 MANEJO DE SALIDAS


DIGITALES CON STM32 Y MSP430”

Profesor:
Dr. en C.I.E. Jaime García García
Grupo: CO2

Integrantes del equipo:


Jocelyn Cuevas Velázquez
Cid Emmanuel Esquivel González
Diego Liberato Jury
Toluca, México a 29 de Agosto de 2023
INTRODUCCIÓN

La tecnología embebida se ha convertido en un pilar fundamental en el mundo


actual, donde dispositivos electrónicos de todo tipo están presentes en nuestra vida
cotidiana. Uno de los componentes esenciales en la creación de sistemas
embebidos son los microcontroladores, que actúan como cerebros electrónicos,
controlando y gestionando una variedad de funciones. Entre estos, el MSP430 se
destaca como una opción líder gracias a su arquitectura de ultra bajo consumo, su
eficiencia en la gestión de energía y su flexibilidad en el desarrollo de aplicaciones.

El presente trabajo se centra en la exploración y programación del microcontrolador


MSP430, con el objetivo de manejar salidas y entradas digitales, habilidades
cruciales en el desarrollo de sistemas embebidos. La importancia de esta tarea
radica en su aplicabilidad en una amplia gama de dispositivos, desde
electrodomésticos hasta sistemas de control industrial, donde el control preciso de
señales digitales es esencial.

El MSP430, conocido por su eficiencia energética, ofrece un entorno propicio para


el aprendizaje y desarrollo de sistemas embebidos. A través de la programación en
lenguaje C y el uso de Visual Studio Code como entorno de desarrollo, este trabajo
busca proporcionar una guía práctica y didáctica para el manejo de salidas y
entradas digitales en el MSP430.

La primera parte de este trabajo se enfoca en el STM32, donde se explorará su hoja


de datos, su configuración de pines y se realizará una programación para controlar
LEDs internos siguiendo una secuencia específica. Esto sentará las bases para
comprender los conceptos fundamentales de programación y configuración de
hardware en sistemas embebidos.

La segunda parte se centrará en el MSP430, resaltando sus características de bajo


consumo y su capacidad de programación flexible. A través de ejemplos prácticos,
se abordará el manejo de salidas y entradas digitales, demostrando cómo
interactuar con el entorno exterior y tomar decisiones en base a señales digitales.
Este trabajo tiene como propósito proporcionar a los estudiantes y entusiastas de la
electrónica una introducción práctica y sólida al mundo de los sistemas embebidos,
a través del uso de dos microcontroladores líderes en la industria. La adquisición de
habilidades en el manejo de salidas y entradas digitales sentará las bases para el
desarrollo futuro de proyectos más complejos y la comprensión de sistemas
embebidos en profundidad.
PARTE 1A
DESARROLLO

Se realizará la practica solicitando los siguientes materiales al laboratorio:

• 1 STM32 F207ZG
• 1 Tira de Led
• 8 Cables hembra-macho
• 1 Pinzas de corte
• 1 Pinzas de punta
• 1 Protoboard
• 1 Fuente

TRABAJO PREVIO

1.- Busque información técnica (hoja de datos) del STM32 F207ZG.

https://www.alldatasheet.com/datasheet-
pdf/pdf/1211918/STMICROELECTRONICS/NUCLEO-F207ZG.html

2.- Busque el pinout del STM32 F207ZG


3.- Descargar e instalar los controladores para el STM32 y cube programmer.

Evidencia:

Se instalo el controlador seleccionado:


Instalación finalizada:

4.- Realice un programa para prender los leds internos en el STM32 con la
siguiente secuencia prende un led dos segundos y apaga por un segundo,
después dos leds, encienden por dos segundos y apagan los dos por un
segundo, prenden tres leds por dos segundos y apagan por un segundo,
parpadean 5 veces los tres leds por un retardo de 200 milisegundos, se
apagan los tres leds por un segundo, prenden dos leds, retardo un segundo,
prende un led. El programa se cicla.

Programa realizado:

#include <Arduino.h>
int LED1_PIN = PB0
int LED2_PIN = PB7
int LED3_PIN = PB14

void setup() {
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
}

void loop() {
// Prende un LED por 2 segundos y apaga por 1 segundo
digitalWrite(LED1_PIN, HIGH);
delay(2000);
digitalWrite(LED1_PIN, LOW);
delay(1000);

// Prende dos LEDs por 2 segundos y apaga por 1 segundo


digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
delay(2000);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
delay(1000);
// Prende tres LEDs por 2 segundos y apaga por 1 segundo
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED3_PIN, HIGH);
delay(2000);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(1000);

// Parpadea los tres LEDs 5 veces con un retardo de 200 ms


for (int i = 0; i < 5; i++) {
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED3_PIN, HIGH);
delay(200);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(200);
}

// Apaga los tres LEDs por 1 segundo


delay(1000);

// Prende dos LEDs por 1 segundo


digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
delay(1000);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);

// Prende un LED por 1 segundo


digitalWrite(LED1_PIN, HIGH);
delay(1000);
digitalWrite(LED1_PIN, LOW);
}

1.-Verifique que el controlador es correcto

2.- Crear un nuevo proyecto

En VS Code, haga clic en el icono de inicio de PlartfomIO .Haga clic en+ Nuevo
proyecto para iniciar un nuevo proyecto.

Evidencia:
Asigne un nombre a su proyecto (por ejemplo, pr1-STM32) y seleccione la placa
que está utilizando. En este caso Black STM32F407ZG, El framework debe ser
Arduino, para usar el núcleo de Arduino.

Puede elegir la ubicación predeterminada para guardar su proyecto o una ubicación


personalizada.

La ubicación predeterminada es esta ruta Documentos>PlatformIO>Proyectos.


Para esta prueba, puede utilizar la ubicación predeterminada. Finalmente, haga clic
en "Finalizar".

Evidencia:

Para este ejemplo, usaremos la placa STM32F407ZG. Se debe poder acceder al


proyecto pr1-STM32 desde la pestaña Explorador.

3.- Borre de la línea 1 a la 9 y pegue el programa que se muestra en la tabla 2.1


#include <Arduino.h>

int LED= PB14;


// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED, OUTPUT);
}

// the loop function runs over and over again forever


void loop() {
digitalWrite(LED, HIGH);// turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

Evidencia:
Funcionamiento:

4.- Conecte la tarjeta STM32, para probar el programa que se muestra en la tabla
2.2

Tabla 2.2 Encendido de tres leds en STM32

#include <Arduino.h>

int LED1 = PB0;


int LED2 = PB7;
int LED3 = PB14;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}

// the loop function runs over and over again forever


void loop() {
digitalWrite(LED1, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED1, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
digitalWrite(LED2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED2, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
digitalWrite(LED3, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED3, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}

Evidencia:
Figura 2.1 prueba de leds con STM32 F207ZG

5.- Compruebe el funcionamiento del circuito de la figura 2.1. (Obtenga evidencias)


Evidencias:

URL de video:
https://alumnouaemex-
my.sharepoint.com/:v:/g/personal/jcuevasv001_alumno_uaemex_mx/EaU-t-
2LNyhEnvv5lDhbqJgB_ZeztwpQqRIjVoZzfhyIwQ?nav=eyJyZWZlcnJhbEluZm8iOn
sicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBc
HBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZp
ZXciOiJNeUZpbGVzTGlua0RpcmVjdCJ9fQ&e=bVqZqg

6. Implemente el circuito y cargue el programa que realizo en el trabajo previo la


secuencia de luces, obtenga evidencias

Evidencia:
URL de video:
https://alumnouaemex-
my.sharepoint.com/:v:/g/personal/jcuevasv001_alumno_uaemex_mx/EUH92PIIKlJI
qnB_XxNcguUBU4DAXUWfvKMYgBFL7TZXRA?nav=eyJyZWZlcnJhbEluZm8iOns
icmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcH
BQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZ
XciOiJNeUZpbGVzTGlua0RpcmVjdCJ9fQ&e=ctK358
COMENTARIOS

Jocelyn: El STM32 es una familia de microcontroladores de alto rendimiento. Este


microcontrolador permite realizar tareas de control y automatización. Esta práctica
nos permitió conocer el funcionamiento de un STM32 por medio de VisualStudio y
PlatformIO, logramos ejecutar los códigos de forma correcta, asi como visualizar el
funcionamiento básico de sus leds internos desde un programa básico hasta lograr
una secuencia. Asi mismo logramos identificar cada una de sus pines gracias al
trabajo previo de investigación, entendimos que si queríamos conectar algún led
externo o una tira de led teníamos que colocar de forma correcta los cables en el
pin adecuado ya que estas son fundamentales al momento de programar su
funcionamiento.

Diego: La práctica nos dejó una comprensión más profunda de su funcionamiento


gracias a Visual Studio y PlatformIO. Logramos ejecutar los códigos de manera
precisa y experimentamos con las funciones básicas de sus LEDs internos, desde
programas simples hasta la creación de secuencias más complejas. Además,
gracias a nuestra investigación previa, identificamos cada uno de sus pines y
comprendimos la importancia crucial de conectar correctamente cables cuando
deseábamos utilizar LEDs externos o tiras de LEDs.

Cid: A través de la exploración y experimentación con la familia de


microcontroladores STM32 utilizando Visual Studio y PlatformIO, hemos obtenido
una visión enriquecedora de su alto rendimiento y versatilidad en aplicaciones de
control y automatización. Nuestra experiencia nos ha llevado desde la ejecución
exitosa de códigos básicos hasta la creación de secuencias más elaboradas
utilizando los LEDs internos del microcontrolador.

Un aspecto fundamental que hemos apreciado es la necesidad de un enfoque


preciso al trabajar con los pines del STM32. La investigación previa que realizamos
sobre la identificación y funcionalidad de cada pin nos ha permitido comprender la
importancia crítica de la correcta conexión de cables al emplear componentes
externos como LEDs o tiras de iluminación. Este nivel de detalle ha demostrado ser
esencial a la hora de programar el comportamiento deseado y garantizar un
funcionamiento fluido.
REFERENCIAS

• Alldatasheet. (s.f.). Alldatasheet.com. Obtenido de NUCLEO-F207ZG


Datasheet: https://www.alldatasheet.com/datasheet-
pdf/pdf/1211918/STMICROELECTRONICS/NUCLEO-F207ZG.html
• Mouser Electronics. (s.f.). Mouser Electronics. Obtenido de
STMicroelectronics STM32 32-Bit rm Cortex-M MCUs.
PARTE 1B
DESARROLLO

Se realizará la practica solicitando los siguientes materiales al laboratorio:

• 1 MSP430
• 1 Tira de Led
• Cables hembra-macho
• 1 pinzas de corte
• 1 pinzas de punta
• 1 Protoboard
• 1 Fuente

TRABAJO PREVIO

1.- Busque información técnica (hoja de datos) del MSP430.

https://pdf1.alldatasheet.com/datasheet-pdf/view/27250/TI/MSP430.html

2.- Busque el pinout del MSP430


3.- Realice un programa para prender los leds internos en el STM32 con la
siguiente secuencia, que es para activar la tabla de verdad del LM298,
suponiendo que enable siempre está en alto “H”:

Código realizado:

int LED1_PIN = PB0


int LED2_PIN = PB7

int LED2_PIN = PB14

void setup() {
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);

// Suponemos que el pin "enable" del LM298 está siempre en alto


}

void loop() {
// Giro a la derecha (Enable=H, 1ª=L, 2ª=H)
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, HIGH);
delay(1000); // Mantener la secuencia durante 1 segundo
// Giro a la izquierda (Enable=H, 1ª=H, 2ª=L)
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, LOW);
delay(1000);

// Detención (Enable=H, 1ª=L, 2ª=L)


digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
delay(1000);

// Detención (Enable=H, 1ª=H, 2ª=H)


digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
delay(1000);

// Detención (Enable=L)
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
delay(1000);
}

1.- Verifique que el controlador sea correcto, puede ser cualquier otro COM

2.- Crear un nuevo proyecto


En VS Code, haga clic en el icono de inicio de PlartfomIO. Haga clic en+ Nuevo
proyecto para iniciar un nuevo proyecto.
Evidencia:
Asigne un nombre a su proyecto (por ejemplo, pr1MSP) y seleccione la placa que
está utilizando. En este caso “TI Launch MSP-EXP430G2”, El framework debe ser
Arduino, para usar el núcleo de Arduino.

Evidencia:
Puede elegir la ubicación predeterminada para guardar su proyecto o una ubicación
personalizada.

La ubicación predeterminada es esta ruta Documentos>PlatformIO>Proyectos.


Para esta prueba, puede utilizar la ubicación predeterminada. Finalmente, haga clic
en "Finalizar".

Se debe poder acceder al proyecto pr1-MSP desde la pestaña Explorador.

Seleccione la opción src.

Borre de la línea 1 a la 9 y pegue el programa que se muestra en la tabla 2.1

Tabla 2.1
#include <Arduino.h>

#define LED RED_LED


#define LED1 GREEN_LED

// the setup routine runs once when you press reset:


void setup() {
pinMode(LED, OUTPUT);
pinMode(LED1, OUTPUT);
}

void loop() {
digitalWrite(LED, HIGH);// turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(LED, LOW);// turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(LED1, HIGH);// turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(LED1, LOW);// turn the LED off by making the voltage LOW
delay(200); // wait for a second
}

3.- Obtenga evidencias de funcionamiento

Evidencia:
URL de video:
https://alumnouaemex-
my.sharepoint.com/:v:/g/personal/jcuevasv001_alumno_uaemex_mx/EYv-
JDZfAIBPtRp1jGHsavsBP0P_bn-
Ry6jUwxNRYRaJBA?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJ
PbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsI
nJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0
RpcmVjdCJ9fQ&e=Enu1s6

4.- Conecte la tarjeta MSP430, para probar el programa que se muestra en la tabla
2.2:

Tabla 2.2 Encendido de tres leds en MSP430

#include <Arduino.h>

const int buttonPin = PUSH2; // the number of the pushbutton pin


const int ledPin = GREEN_LED; // the number of the LED pin

// variables will change:


int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT_PULLUP);
}

void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

Figura 2.1 prueba de leds internos con MSP430

5.- Compruebe el funcionamiento del circuito de la figura 2.1. (Obtenga evidencias)


Evidencia:
URL de video:
https://alumnouaemex-
my.sharepoint.com/:v:/g/personal/jcuevasv001_alumno_uaemex_mx/EfXlg9u-
h8NMtHIub1j_RLEBpDOuwNLrcCbtvq9EZM8cOA?nav=eyJyZWZlcnJhbEluZm8iO
nsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxB
cHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZ
pZXciOiJNeUZpbGVzTGlua0RpcmVjdCJ9fQ&e=8nfKnc

6. Implemente el circuito y cargue el programa que realizo en el trabajo previo, la


tabla de verdad para LM298, obtenga evidencias

Evidencias:
URL de video:

https://alumnouaemex-
my.sharepoint.com/:v:/g/personal/jcuevasv001_alumno_uaemex_mx/EURAyhhM9
xpAoh7UOCd3kYcBiiM4a9htWbs8j6vAEueAVQ?nav=eyJyZWZlcnJhbEluZm8iOnsi
cmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcH
BQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZ
XciOiJNeUZpbGVzTGlua0RpcmVjdCJ9fQ&e=M7xbPp
COMENTARIOS

Jocelyn: Esta práctica fue muy interesante, ya que al igual que la primera parte
logramos conocer el funcionamiento de un microcontrolador, en este caso el
MSP430, logramos entender el funcionamiento de este microcontrolador ejecutando
los códigos proporcionados por medio de VisualStudio y PlatformIO, verificando
entradas y salidas digitales, su estructura se basa en distintos pines los cuales son
fundamentales conocer, ya que en estos podemos conectar componentes externos
que necesitemos en algún otro proyecto. Esta práctica logramos ejecutarla con éxito
al igual que la primera parte.

Diego: Esta práctica resultó muy intrigante, ya que tuvimos la oportunidad de


explorar el funcionamiento de otro microcontrolador, en este caso, el MSP430.
Comprendimos en profundidad cómo opera este microcontrolador al ejecutar los
códigos proporcionados a través de Visual Studio. Durante la práctica, pudimos
verificar y manipular las entradas y salidas digitales, lo que nos permitió comprender
mejor su estructura, basada en diversos pines. Estos pines son de gran importancia,
ya que nos permiten conectar componentes externos que podríamos necesitar en
futuros proyectos. La práctica se completó con éxito, al igual que la primera parte,
lo que nos brindó una sólida comprensión de estos microcontroladores.

Cid: A través de esta experiencia, hemos profundizado en nuestra comprensión de


los microcontroladores, centrándonos esta vez en el MSP430. Al igual que en la
primera parte, hemos empleado Visual Studio y PlatformIO para explorar su
funcionamiento y ejecutar los códigos correspondientes. Esta práctica nos ha
permitido no solo adentrarnos en las operaciones del MSP430, sino también en su
estructura y configuración de pines. La familiaridad con los distintos pines de este
microcontrolador se ha revelado como un aspecto crucial. Hemos reconocido la
importancia de estos pines al conectar componentes externos, lo que añade una
dimensión adicional a su utilidad en futuros proyectos. La capacidad de verificar y
manipular las entradas y salidas digitales nos ha brindado una perspectiva más
sólida sobre cómo interactúa este microcontrolador con su entorno.
Esta práctica, al igual que la anterior, ha culminado en un éxito satisfactorio. Al haber
trabajado con dos microcontroladores diferentes y haber abordado sus
peculiaridades y funciones específicas, hemos fortalecido nuestra comprensión
general de esta tecnología. Estamos entusiasmados por aplicar estos
conocimientos en futuros desafíos y proyectos, ampliando aún más nuestro dominio
de los microcontroladores y su potencial aplicativo.
REFERENCIAS

• Alldatasheet.com. (s.f.). Alldatasheet.com. Obtenido de MSP430 Datasheet


(PDF) - Texas Instruments: https://pdf1.alldatasheet.com/datasheet-
pdf/view/27250/TI/MSP430.html
• UNAM. (s.f.). Facultad de Ingeniería, UNAM, Departamento de Electrónica.
Obtenido de Introducción al microcontrolador MSP430 :
http://kali.azc.uam.mx/erm/Media/1123021/introduccion_al_msp430.pdf

También podría gustarte