Tabla de contenido:

¡Increíblemente fácil de programar !: 10 pasos
¡Increíblemente fácil de programar !: 10 pasos

Video: ¡Increíblemente fácil de programar !: 10 pasos

Video: ¡Increíblemente fácil de programar !: 10 pasos
Video: Aprender a Programar en Cualquier Lenguaje de Programación Desde Cero con 7 Pasos Fáciles (2023) ☑️ 2024, Noviembre
Anonim
Image
Image
¡Increíblemente fácil de programar!
¡Increíblemente fácil de programar!

Hoy, hablaré sobre el STM32 Core, el L476RG, que es el rostro de Ultra Low Power. Puedes verlo a la izquierda de la imagen. Este dispositivo tiene dos barras de pines hembra, una a cada lado, que no son más que los conectores para el escudo arduino. Esto es genial, ¿no?

En mi opinión, STMicroelectronics hizo esto en su kit de desarrollo porque sabe que los profesionales usan este chip. Esta empresa se inclina cada vez más hacia el arduino. Y esto también es cierto para varios otros kits profesionales de STMicroelectronics.

Finalmente, en lo que respecta al proyecto de hoy, utilizaremos dos sensores DS18b20 además del L476RG. Entonces, haremos un ensamblaje simple usando el L476RG, importaremos una biblioteca en el entorno MBED, crearemos un programa en el entorno MBED y obtendremos datos del L476RG a través de USB / Serial.

Ya he hablado un poco del L476RG en este video: LA FORMA MÁS FÁCIL DE PROGRAMAR UN MICROCONTROLADOR, donde muestro cómo configurar el entorno MBED, que es online.

Algunas personas que siguen mis videos me preguntan si STM32 reemplaza a ESP32. Digo una cosa: no reemplaza y no podría, porque son dos cosas completamente distintas.

Este chip STM32 es un microcontrolador, o mejor dicho; no es un "grupo de cosas" como el ESP32. Entonces, el nombre puede parecer similar, pero son completamente diferentes. El STM32 es un microcontrolador de propósito general, como un PIC, un Atmel, por ejemplo.

Paso 1: Recursos utilizados

Recursos utilizados
Recursos utilizados

1 núcleo L476RG

2 sensores DS18b20 (utilizamos los módulos impermeables comunes en el mercado)

1 resistencia 4k7

Mini protoboard

Jumpers para conexión

Paso 2: Montaje

Montaje
Montaje

Inicialmente realizaremos el montaje utilizando uno de los sensores de temperatura.

Su potencia será de 5V.

Se usará una resistencia de 4k7 para hacer un pull-up en la línea de datos (1-Wire).

Leeremos los datos usando el pin A0.

Paso 3: Nuevo programa en MBED

Nuevo programa en MBED
Nuevo programa en MBED
Nuevo programa en MBED
Nuevo programa en MBED
Nuevo programa en MBED
Nuevo programa en MBED

Una vez que tenga su cuenta configurada en MBED y acceda a ella, crearemos un nuevo programa. Para hacer esto, haga clic derecho en "Mis programas" y seleccione "Nuevo programa …"

Confirme que la "Plataforma" se ajusta a la placa que está utilizando.

Ahora hacemos clic en "Plantilla".

Crearemos un programa basado en el ejemplo, "Mostrar un mensaje en la PC usando UART".

Introduzca el nombre del programa en "Nombre del programa".

Marque la opción "Actualizar este programa y las bibliotecas a la última revisión".

Se creará una nueva carpeta para su programa, incluida la biblioteca MBED predeterminada y el archivo main.cpp.

Puede usarlo para probar si todo está funcionando bien. Para hacer esto, simplemente compílelo y cópielo en la plataforma.

Usando un terminal serial de su elección, puede recibir los siguientes mensajes.

Paso 4: Importación de la biblioteca DS18b20

Importación de la biblioteca DS18b20
Importación de la biblioteca DS18b20

Como hay varias versiones de bibliotecas para Ds18b20, importaremos usando una URL para que su ejemplo use la misma biblioteca.

Paso 5: Nuevo programa en MBED

Nuevo programa en MBED
Nuevo programa en MBED
Nuevo programa en MBED
Nuevo programa en MBED

En el campo "URL de origen", complete: https://os.mbed.com/users/Sissors/code/DS1820/ y haga clic en importar.

Su biblioteca DS1820 debería aparecer en la carpeta de su programa.

Paso 6: código fuente

Incluye

Empezamos por incluir las bibliotecas necesarias.

#incluir "mbed.h" // inclusión de la biblioteca padrão do MBED # incluir "DS1820.h" // inclusión de la biblioteca del sensor DS1820

Definimos constantes que representarán los pines utilizados.

Tenga en cuenta que el DS18b20 es un sensor con comunicación de 1 HILO. Por este motivo utilizamos la librería que se encargará de todo el protocolo de comunicación con los dispositivos. Esto incluye la identificación de cada dispositivo hasta los comandos de lectura.

#define PINO_DE_DADOS A0 // define o pino para leitura dos dados # define MAX_SENSORES 16 // define o número máximo para o vetor de sensores

Creamos un vector que apuntará a cada uno de los 16 posibles dispositivos conectados a la línea de datos.

Sensor DS1820 * [MAX_SENSORES]; // cria um vetor com 16 posiciones para os sensores

Comenzamos el método main (), donde, usando el método "unassignedProbe ()" contenido en la biblioteca DS1820, buscamos todos los dispositivos disponibles en la línea de comunicación.

Rellenamos el vector sensor con las instancias que representarán cada uno de los sensores disponibles.

Hacemos esto hasta encontrar el último o hasta llegar al máximo de 16 sensores.

int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia una búsqueda por sensores sensor [encontrados] = nuevo DS1820 (PINO_DE_DADOS); // cria uma instancia para el sensor encontrado ++; if (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; }

Enviamos la cantidad de sensores encontrados en la línea.

printf ("Dispositivos encontrados (s):% d / r / n / n", encontrados);

Comenzamos un ciclo infinito, solicitando que todos los sensores disponibles calculen sus respectivas temperaturas, y luego iteramos a través del vector del sensor enviando las lecturas obtenidas.

printf ("Dispositivos encontrados (s):% d / r / n / n", encontrados); while (1) {sensor [0] -> convertTemperature (verdadero, DS1820:: all_devices); // solicita una lectura de temperatura para todos los dispositivos encontrados for (int i = 0; itemperature ()); //… e retorna una temperatura printf ("\ r / n"); esperar (1); }

Paso 7: datos recibidos

Datos recividos
Datos recividos

Usando un solo sensor, obtenemos la siguiente salida serial.

Paso 8: Incluir más sensores

Incluyendo más sensores
Incluyendo más sensores
Incluyendo más sensores
Incluyendo más sensores

Para probar el código, introducimos otro sensor en la línea de comunicación, simplemente conectándolo en paralelo con el primer sensor.

Recuerde apagar el conjunto antes de conectar nuevos sensores.

Al reiniciar el ensamblado, obtuvimos el siguiente resultado, sin ningún cambio en el código fuente.

Paso 9: Ver fuente

#include "mbed.h" // inclusión de la biblioteca padrão do MBED # incluye "DS1820.h" // inclusión de la biblioteca del sensor DS1820 #define PINO_DE_DADOS A0 // define o pino para leitura dos dados #define MAX_SENSORES 16 // define o número máximo para o vetor de sensores DS1820 * sensor [MAX_SENSORES]; // cria um vetor com 16 posiciones para los sensores int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia una búsqueda por sensores sensor [encontrados] = nuevo DS1820 (PINO_DE_DADOS); // cria uma instancia para el sensor encontrado ++; if (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; } printf ("Dispositivos encontrados (s):% d / r / n / n", encontrados); while (1) {sensor [0] -> convertTemperature (verdadero, DS1820:: all_devices); // solicita una lectura de temperatura para todos los dispositivos encontrados for (int i = 0; itemperature ()); //… e retorna una temperatura printf ("\ r / n"); esperar (1); }}

Paso 10: archivos

PDF

Otros

Recomendado: