En esta review veremos como configurar la placa Nucleo 64 STM32F446RET6 con el ide de arduino, probaremos tres sensores para verificar su correcto funcionamiento. Vamos ha usar un un sensor Pir, un sensor de llama, y también un sensor efecto Hall, todo en el mismo código.
Si quieren adquirir esta placa, pueden visitar el siguiente link de la página LCSC https://lcsc.com/product-detail/Development-Kits-Emulators-Simulators_STMicroelectronics_NUCLEO-F446RE_STMicroelectronics-NUCLEO-F446RE_C118386.html
Acerce del STM32F446RE
Línea de base de alto rendimiento, núcleo ARM Cortex-M4 con DSP y FPU, 512 Kbytes Flash, CPU de 180 MHz, acelerador ART, QSPI doble
Los dispositivos STM32F446xC / E se basan en el brazo de alto rendimiento ® núcleo RISC Cortex®-M4 de 32 bits que funciona a una frecuencia de hasta 180 MHz. El núcleo Cortex-M4 cuenta con una unidad de punto flotante (FPU) de precisión única que admite todas las instrucciones de procesamiento de datos de precisión simple y los tipos de datos de ARM®. También implementa un conjunto completo de instrucciones DSP y una unidad de protección de memoria (MPU) que mejora la seguridad de la aplicación.
Los dispositivos STM32F446xC / E incorporan memorias incrustadas de alta velocidad (memoria Flash de hasta 512 Kbyte, hasta 128 Kbyte de SRAM), hasta 4 Kbytes de SRAM de respaldo y una amplia gama de E / S mejoradas y periféricos conectados a dos APB Buses, dos buses AHB y una matriz de bus multi-AHB de 32 bits.
Todos los dispositivos ofrecen tres ADC de 12 bits, dos DAC, un RTC de baja potencia, doce temporizadores de propósito general de 16 bits que incluyen dos temporizadores PWM para control de motores, dos temporizadores de propósito general de 32 bits.
También cuentan con interfaces de comunicación estándar y avanzadas.
Características clave
- Núcleo: CPU ARM® Cortex®-M4 de 32 bits con FPU, acelerador adaptable en tiempo real (ART Accelerator ™) que permite la ejecución del estado de espera 0 desde la memoria Fl ash, frecuencia hasta 180 MHz, MPU, 225 DMIPS / 1.25 DMIPS / MHz (Dhrystone 2.1), e instrucciones DSP
- Recuerdos
- 512 kB de memoria flash
- 128 KB de SRAM
- Controlador de memoria externo flexible con bus de datos de hasta 16 bits: SRAM, PSRAM, SDRAM / LPSDR SDRAM, memorias Flash NOR / NAND
- Interfaz Quad SPI de modo dual
- Interfaz LCD paralela, modos 8080/6800
- Gestión del reloj, reinicio y suministro.
- Suministro de aplicaciones de 1.7 V a 3.6 V y E / S
- POR, PDR, PVD y BOR
- Oscilador de cristal de 4 a 26 MHz
- Control interno de fábrica de 16 MHz (1% de precisión)
- Oscilador de 32 kHz para RTC con calibración
- RC interno de 32 kHz con calibracion
- Baja potencia
- Modos Sleep, Stop y Standby.
- Suministro V BAT para RTC, registros de respaldo de 20 × 32 bits + SRAM de respaldo opcional de 4 KB
- 3 × 12 bits, 2.4 MSPS ADC: hasta 24 canales y 7.2 MSPS en modo de triple entrelazado
- Convertidores D / A 2 × 12 bits
- DMA de propósito general: controlador DMA de 16 secuencias con FIFO y soporte de ráfaga
- Hasta 17 temporizadores: 2x watchdog, 1x SysTick timer y hasta doce temporizadores de 16 bits y dos de 32 bits hasta 180 MHz, cada uno con hasta 4 IC / OC / PWM o contador de impulsos
- Modo de depuración
- Interfaces SWD y JTAG
- Cortex®-M4 Trace Macrocell ™
- Hasta 114 puertos de E / S con capacidad de interrupción
- Hasta 111 I / Os rápidos hasta 90 MHz
- Hasta 112 5 I / Os tolerantes a V
- Hasta 20 interfaces de comunicación.
- SPDIF-Rx
- Hasta 4 × I 2 interfaces C (SMBus / PMBus)
- Hasta 4 USARTs / 2 UARTs (11.25 Mbit / s, interfaz ISO7816, LIN, IrDA, control de módem)
- Hasta 4 SPIs (45 Mbits / s), 3 con I 2 S muxed para una precisión de clase de audio a través de PLL de audio interno o reloj externo
- 2 x SAI (interfaz de audio en serie)
- 2 × CAN (2.0B activo)
- Interfaz SDIO
- Control de electrónica de consumo (CEC) I / F
- Conectividad avanzada
- Dispositivo USB 2.0 de velocidad completa / host / controlador OTG con PHY en el chip
- Dispositivo USB 2.0 de alta velocidad / velocidad completa / host / controlador OTG con DMA dedicado, PHY de velocidad completa en el chip y ULPI
- Riel de alimentación USB dedicado que permite el funcionamiento de PHY en chip en toda la gama de fuentes de alimentación de MCU
- Interfaz de cámara paralela de 8 a 14 bits de hasta 54 Mbytes / s
- Unidad de cálculo CRC
- RTC: precisión subsecundaria, calendario de hardware
- ID única de 96 bits
DIAGRAMA DE CIRCUITO
PinOut
Hoja de datos
Descargar –> stm32f446re
Para agregar nuestras placas STM32 – nucleo al ide de arduino, tenemos que seguir los siguientes pasos.
Vamos a Archivos – Preferencias – y buscamos al cuadro en “gestor de URL adicionales de tarjetas”.
Y pegamos la siguiente url
https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json
Nos dirigimos ha herramientas – placa y abrimos Gestor de tarjetas
Y escribimos STM32 CORE y seleccionamos STM32 Cores by st-microeletronics
Click en instalar
Ahora hay que esperar a que descargue las herramientas, esto va a demorar dependiendo de la velocidad de internet y de tu computadora.
Vamos otra vez a herramientas – placa y buscamos si aparece las placas stm32
En el administrador de dispositivos, al enchufar nuestra placa, veremos que aparece un nuevo puerto com, y una unidad de disco que son los datos que nos servirán más adelante.
Volvemos al ide y seleccionamos la placa Nucleo 64.
En herramientas, nuevamente, vamos a “board part numbre” y elegimos nuestra placa – en mi caso “Nucleo F446RE”
En serial interface dejamos la primera opción
En “USB Interface” que quede en “Ninguno”
En upload method debe quedar en “Mass Store”
En “Puerto” elegimos el puerto com que nos apareció nuevo en el administrador de dispositivos.
Ahora ya podemos cargar algún ejemplo para probar
Código Fuente
Con este código fuente vamos a monitorear tres sensores, un sensor Pir, para detectar movimiento, un sensor de llama, en el caso de que se produzca un incendio, y también un sensor efecto Hall o sensor magnético, para detectar la apertura de una puerta o ventana, y de esta forma hacer sistema de seguridad muy simple.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
//variables int tiempo=0; int val0=0; int SensorPir = 4;// Pin4 para el sensor PIR int valorPir = 0;// variable para almacenar el valor del sensor PIR int valorSensorLlama = 0; // variable para almacenar el valor proveniente del sensor de llama int sensorHall=9;//Pin 9 para el sensor Hall int valorHall=0; int buzzer = 11; // Pin 11 para el buzzer int Led13=13;//Led onboard void setup() { Serial.begin(9600);//Velocidad del puerto serial pinMode(buzzer, OUTPUT);//pin 11 donde va el buzzer como salida pinMode(SensorPir, INPUT);//Pin 4 condigurado como entrada para el sensor pir pinMode(sensorHall, INPUT);//Pin 9 como entrada pinMode(Led13, OUTPUT);//Pin 13 como salida led onboard } void loop() { valorPir = digitalRead(SensorPir); //Leemos el valor que entrega el sensor pir valorSensorLlama = analogRead(A0);//Leemos el valor que entrega el sensor de llama valorHall = digitalRead (sensorHall) ; //Leemos el valor del sensor Hall Serial.print("Pir: "); Serial.println(valorPir); Serial.print("Llama: "); Serial.println(valorSensorLlama); Serial.print("Hall: "); Serial.println(valorHall); //Comprobamos si el sensor pir entrega un valor alto if (valorPir == HIGH) { alarma(25);//Llama a la función "alarma" y le pasa el parametro 25 } //Comparamos el valor entregado porel sensor de llama si es menor a 500 se cumple la condición if (valorSensorLlama < 500){ alarma(50);//Activa el buzzer según el parámetro recivido } if (valorHall == LOW) //Si el sensor Hall detecta un campo magnético { alarma(75);//Activa el buzzer según el parámetro recivido } } void alarma(int tiempo){//Función alarma //Activa el buzzer digitalWrite(buzzer, HIGH); digitalWrite (Led13, HIGH); delay(tiempo);//Activa el buzzer según el parámetro recivido //Desactiva el buzzer digitalWrite(buzzer, LOW); digitalWrite (Led13, LOW); delay(tiempo); //Desactiva el buzzer según el parámetro recivido } |
Otros productos que vamos a revisar de LCSC
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
VIDEO RECOMENDADO