PUBLICO:Tutoriales básicos para poder utilizar la placa STM32F103C8T6

De Wiki Soa Unlam
Saltar a: navegación, buscar

ANEXO VII

Documentación sobre la placa BluePill (STM32F103C8T6)

Video Tutoriales sobre STM32CUBE

Ejemplos creados con la Blue Pill (STM32F103C8T6)

Uso de Entradas y Salidas Digitales

Se creo un programa que esta subido en el siguiente enlace en de git, donde se prueban las entradas y salidas digitales en la Blue Pill (STM32F103C8T6):
https://gitlab.com/so-unlam/Monitoreo_2doProyecto/tree/develop/Codigos%20de%20Prueba/entrada_salida_digital/boton_led
El código del programa lo que hace es cuando se presione un boton pulsador se encienda automáticamente el led interno de la placa. Para hacer este programa se adaptó el siguiente tutorial para la placa STM32F4.
http://www.intesc.mx/tutorial-gpio
NOTA: Los pasos de que haya que seguir de tutorial son iguales para la blue pill, lo unico que cambia es la configuración de los pines con el STM32CUBE.Ya que hay que adaptarlos según el STM32F103C8T6, el resto es todo igual

Uso de Entradas Analógicas

Se  desarrollo un ejemplo de entrada Analogica con la placa BluePill, STM32F103C8T6. Se creo el mismo ejemplo de distintas formas,
donde se usa 2 sensores Analogicos(un potenciometro  y un sensor de luz), a través de pooling, IRQ y DMA.
*Potenciomentro_analogico_Poll: Hace el sensado por polling *Potenciomentro_analogico_IRQ: Hace el se por IRQ *Potenciomentro_analogico_DMA: Hace el sensado por DMA
Este ejemplo se realizo en base a los siguientes tutoriales de la placa STM32F4: * Tutorial ADC Generico * Tutorial ADC usando Polling * Tutorial ADC usando IRQ * Tutorial ADC usando DMA * Tutorial ADC leer multiples sensores

Realizar un printf y scanf a través de una terminal serial

Se creó un programa donde se pueden enviar y recibir caracters de una terminal serial como Putty.
De esta forma se pueden simular los comandos printf y  scanf en forma remota desde la Blue Pill. 
El programa esta subido en el siguiente link de GIT:
https://gitlab.com/so-unlam/Monitoreo_2doProyecto/tree/develop/Codigos%20de%20Prueba/serial_printf
Para poder realizar este ejemplo se tomaron como base los siguiente links. * https://nerd.mmccoo.com/2017/09/01/6-ways-to-communicate-with-stm32-part-2-uart-and-gdb/ * https://github.com/hammerfet/BrinirController/blob/master/Firmware/serial.c

Pasos a seguir para poder realizar un printf y scanf en un proyecto nuevo

1)Conectar los pines del CP2102 con los de la blue pill de la siguiente manera
CP2102 BLUEPILL
GND G (GND)
RX A9
TX A10

2)Crear un Nuevo Proyecto en STM32CUBE para la placa Blue Pill (STM32F103C6T6)
3)Configurar los pines como se muestra en la siguiente imagen
 •SYS->DEBUG->SERIAL WIRE 
 •USART1->MODE->ASYNCHRONOUS 
Pinout.JPG
4)Ir a la solapa CONFIGURACION  y configurar a USART
Configuracion.JPG
5)En la solapa DMA settings habilitar el modo DMA para el pin TX de la siguiente manera
Dma.png
6)En la solapa NVIC SETTINGS habilitar la opción USART1 GLOBAL INTERRUPT y luego seleccionar  OK
Irq.JPG
7)Luego ir a la configuración del proyecto y habilitar la opción que la inicialización de periféricos se creen en archivos separados y no en el main.
Configuracion proyecto.JPG
8)Luego dar ok y generar el código del proyecto con el STM32CUBE.
9)Abrir el proyecto generado con el Eclipse (SYSTEM WORKBENCH)
10)Copiar los siguientes archivos en tu pryecto:
En el directorio SRC, el contenido del subdirectorio APP.: Directorio App de SRC
Este subdirectorio contiene los siguientes archivos
o serial.cpp :driver Serial desarrollado o Buffer Circular.cpp: buffer circular utilizado en el driver serial o Controller.cpp: Archivo main, desarrollado en C++
En el directorio INC, el contendio del subdirectorio APP: Directorio APP de INC
11)Modificar el archivo main.c, agregando las siguientes líneas dentro de la función main() 
Int main(void) { ……… ………
/* USER CODE BEGIN 2 */ CONTROLLER_init(0); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) {
CONTROLLER_loop(); break; //USER CODE END WHILE //USER CODE BEGIN 3 }
/* USER CODE END 3 */ ………
}
12)Luego modificar el archivo stm32f1xx_it.c, agregando las siguientes líneas dentro de la función USART1_IRQHandler
void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ //HAL_UART_IRQHandler(&huart1); /* USER CODE BEGIN USART1_IRQn 1 */ CONTROLLER_usart_handler(&huart1); /* USER CODE END USART1_IRQn 1 */ }
13)Una vez hecho lo anterior ir al archivo Controller.cpp , desde el método loop se debe crear un objeto de la clase Serial.
Serial mUsart1;
14)Para enviar caracteres a la terminal serial, se debe utilizar el metodo send del objeto serial de la siguiente manera:
mUsart1.send(“Mensaje de Prueba\r\n”); mUsart1.send("%s",comando_bluetooth);
15)Para recibir caracteres que envía la terminal serial, se debe utilizar el metodo rread del objeto serial de la siguiente manera:
byte_t comando_bluetooth [100]={0}; if(mUsart1.read((byte_t*)comando_bluetooth,sizeof(comando_bluetooth))!=0) { ……… ……… }
16) Finalmente abrir una terminal serial, a través de Putty u otro programa, configurándolo a una velocidad de 9600 baudios.
17) Luego compilar y ejecutar el código fuente. Listo, se verá cómo se imprime los mensajes remotamente y se reciben caracteres

Manuales y Tutoriales sobre el Bluethoot 4.0 HM-10

Bluethoot 4.0 y Android

Para hacer las pruebas inciales de comunicación con el Bluethoot 4.0, antes de empezar a programar la app Logger de Android y el STM32 con el HM10, conviene hacer estas pruebas para ver la viabilidad de la comunicaición. Para eso usar 2 celulares como se muestra en la siguiente figura.


Prueba1.jpg

Una vez realizado la conexión con ambos Smarthpone, se puede usar la app instalada en el Smarthpone1 para hacer testeos durante el desarrollo con el STM32 y el HM10. Mientras que por el otro lado, se puede usar la app instalada en el SmartPhone2 para hacer testeos durante el desarrollo la aplicación Logger que estan creando Marcos y Raul en Android.

Finalmente una vez que se haya finalizado la construccion de la app Logger y que funcione correctamente el Bluethoot HM10 en el STM32, se deberá realizar la integración de ambos modulos debiendo quedar de la siguiente manera.

Prueba 2.jpg

Documentación sobre el GPS

Datasheets GPS C3-470A