fbpixel
Instalar PlatformIO IDE en Visual Studio Code

Instalar PlatformIO IDE en Visual Studio Code

En este tutorial vamos a configurar Visual Studio Code para que pueda ejecutar C

Hardware

  • Ordenador
  • Placa Arduino UNO u otra
  • Cable USB para conectar la placa Arduino al PC

Instalación de Visual Studio Code y PlatformIO IDE

Siga los pasos de instalación para descargar .Net 6.0

A continuación, abra Visual Studio Code.

Busque PlatformIO IDE en la pestaña “Extensiones” de la columna izquierda de Visual Studio Code y haga clic en “Instalar”.

Una vez instalado, cierre y vuelva a iniciar Visual Studio Code para que el software se configure correctamente con PlatformIO IDE. A continuación, aparecerá la página de inicio del IDE.

Empezar su primer proyecto en C con PlatformIO IDE

Para ello, haga clic en “+ Nuevo proyecto” y rellene la ventana que aparece.

Aquí, como ejemplo, he elegido una placa Arduino Uno y el framework también será del tipo Arduino, lo que significa que las funciones setup() y loop() se encontrarán en el archivo principal main. Crear un proyecto puede llevar un poco de tiempo.

En la parte izquierda del espacio de trabajo de nuestro proyecto, verás una serie de subcarpetas. La carpeta “src” contiene los scripts fuente del proyecto, incluyendo el archivo principal “main.cpp”, en el que escribiremos nuestro script para programar nuestra placa Arduino Uno. En este framework pre-construido de Arduino, notarás que en la cabecera del programa la línea de comandos “

Empezar con un programa C en PlatformIO IDE

Para probar tu primer proyecto en C en PlatformIO IDE, cargarás un pequeño programa para hacer parpadear un LED en la placa Arduino Uno y obtener información sobre el estado del LED a través del enlace serie en el terminal de Visual Studio Code.

// Ici dans l'entête du programme, on inclut les librairies et prototypes de fonctions nécessaires
#include <Arduino.h>

// Ici on met nos initialisations
void setup() 
{ 
    Serial.begin(9600); //ouverture pour communiquer via le port série
    pinMode(13, OUTPUT); //On initialise le pin 13 qui est associé à la LED en sortie pour pouvoir l'allumer et l'éteindre
} //Fin de la fonction setup()

// Ici dans la fonction loop on vient placer le script qui se répètera en boucle dans l'Arduino
void loop() 
{
  digitalWrite(13,HIGH); //Place le pin digital 13 à l'état HAUT (5V) -> Led allumée
  Serial.println("Led allumée");//Nous renvoie par la liaison série l'état de la Led Allumé
  delay(500); //Met en pause le programme pendant la valeur de 500 en ms

  digitalWrite(13,LOW); //Place le pin digital 13 à l'état BAS (0V) -> Led éteinte
   Serial.println("Led éteinte");//Nous renvoie par la liaison série l'état de la Led éteinte
  delay(500); //Met en pause le programme pendant la valeur de 500 en ms
} // Fin de la fonction

Una vez que hayas copiado y pegado tu programa, puedes subirlo. Para subir el programa, hay accesos directos que puedes activar haciendo clic sobre ellos en la parte inferior de Studio Visual Code :

  1. compilar el programa ;
  2. compilar, limpiar y descargar el programa en la placa Arduino (el PUERTO USB utilizado se detecta automáticamente);
  3. limpiar el Terminal y la tarjeta microcontroladora conectada (borrar el script grabado en ella);
  4. probar el programa ;
  5. abrir un monitor para el Serial Link y recibir (o enviar) datos de la tarjeta. Cuando este “Monitor Serial” está abierto, es imposible cargar un programa. Por lo tanto, antes de cargar un nuevo programa, es necesario cerrar el monitor haciendo clic una vez en el terminal y, a continuación, pulsando Ctrl + C ;
  6. Abre un Terminal.

Una vez que haya hecho clic en cargar, debería obtener un retorno en un terminal confirmando que la compilación y la carga se han realizado correctamente, con el siguiente aspecto:

A continuación, haga clic en el comando para abrir un Monitor para establecer el enlace serie.

A continuación, puede observar el estado de los LED en directo en el monitor.

Cómo instalar una biblioteca externa en Visual Studio Code para el IDE PlatformIO

Eso es todo. Primero descarga tu biblioteca externa. Una vez que tengas el archivo .zipp, tienes que extraerlo (o copiar y pegar desde la carpeta de la librería descomprimida) en esa carpeta (en este caso, la librería que usaremos como ejemplo es ServoLib, que se usa para facilitar el control de servomotores):

Puede acceder a la carpeta “lib” de su proyecto, diseñada para alojar bibliotecas externas, a través de Visual Studio Code.

Una vez instalada una biblioteca en su proyecto, deberá incluirla en la cabecera del programa, como :

Ahora ya tienes todo lo básico que necesitas para empezar a utilizar el IDE PlatformIO para programar en C.

Uso de una pantalla Nextion con Arduino

Uso de una pantalla Nextion con Arduino

La pantalla Nextion es una de las mejores soluciones para crear una interfaz gráfica para controlar tu proyecto Arduino. La interfaz más conocida para interactuar con un Arduino es la pantalla LCD con unos pocos botones y potenciómetros a costa de E/S y sobrecarga de código Arduino. En este tutorial, veremos cómo configurar una pantalla Nextion y cómo utilizarla con Arduino.

Hardware

  • Arduino (u otra placa con puerto UART)
  • Pantalla Nextion
  • Adaptador USB-TTL 5V
  • 4x cable Dupont con conector JST

Presentación de la tarjeta Nextion

La interfaz básica para controlar un Arduino, y presente en todos los kits, es la pantalla LCD con unos pocos botones y potenciómetros, que existe en forma de LCD Shield. También existen Shields con pantallas táctiles, pero éstas utilizan todas las E/S del Arduino y sobrecargan el código del Arduino. Una solución es utilizar una pantalla Nextion, que contiene su propio programa y se comunica con cualquier microcontrolador a través del puerto serie.

N.B.: Es posible crear una interfaz gráfica en un PC o crear una interfaz web para controlar el proyecto añadiendo un módulo de comunicación inalámbrica.

Instalación y presentación del editor Nextion

Descargar e instalar el editor Nextion

Al abrir un nuevo proyecto o archivo, el software le pide el modelo de pantalla (en nuestro caso NX4832K035_011). Puede cambiar la selección en el menú Dispositivo>Configuración.

A continuación, elige la orientación de la pantalla y la codificación.

Crear una interfaz gráfica

Vamos a utilizar el editor gráfico Nextion para crear nuestra interfaz gráfica. En este ejemplo, vamos a añadir:

  • Una imagen
  • Algunos textos para el título o para mostrar datos
  • Un botón que cambia la interfaz
  • Un botón que envía un comando al puerto serie
  • Un temporizador que refresca la interfaz
  • Una variable que almacena los datos recibidos del puerto serie

Para añadir un objeto, haga clic en el objeto deseado en la ventana Caja de herramientas y el objeto se insertará automáticamente en la ventana Visualización. A continuación, puede configurar el objeto en la ventana Atributos

Puede descargar el archivo GUI para importarlo a Nextion Editor. Con este ejemplo, podrás crear interfaces mucho más complejas.

Añadir una imagen

Para añadir una imagen, impórtela primero en el programa con el botón (+) de la ventana “Imagen”.

A continuación, puede insertar un objeto Imagen en la ventana Visualización y seleccionar la imagen pulsando el atributo pic > examinar….

N.B.: Añadir una imagenaux dimensions désirées

Añadir texto

Antes de añadir un objeto de texto, es necesario generar una fuente. Esto puede hacerse en Herramientas> Generar fuente

Una vez generada la fuente, puede seleccionarla en el atributo font del objeto Texto. A continuación, puede modificar el texto en el atributo txt (tenga en cuenta el número máximo de caracteres txt_maxl).

Vamos a añadir cuatro objetos de texto:

  • La etiqueta del título
  • el estado del LED
  • la etiqueta “Analog Val
  • el valor analógico recibido del microcontrolador

Añadir un botón

Una vez añadido el objeto botón a la interfaz, puede ajustar sus atributos:

  • el texto mostrado
  • el color al pulsar el botón
  • el color cuando se libera

En la ventana Eventos, puede programar lo que hará la pantalla cuando se pulse o suelte el botón. Hay una serie de instrucciones que puede utilizar en estas ventanas. Entre ellas se incluyen

  • Modificar elementos de la interfaz (por ejemplo, t0.txt=”Pulsado”)
  • Enviar identificador de botón por puerto serie
  • Envoyer une autre commande avec prints
  • Botón b0
  • Botón b1

En la pestaña Touch Release Event, escribimos el siguiente comando, que es un comando predefinido de la librería Nextion y corresponde a trigger1()

printh 23 02 54 01
  • Botón b2

Para el botón b2, utilizamos el mismo comando pero para trigger2()

printh 23 02 54 02

Añadir un temporizador

El objeto Temporizador puede utilizarse para ejecutar código de forma regular. Especialmente útil para recuperar datos del puerto serie y actualizar la interfaz.

En la pestaña de eventos del temporizador, utilizamos la función covx para convertir el valor de la variable en una cadena y escribirla en el texto t4

covx analog0.val,t4.txt,0,0

Cargar el programa en la pantalla Nextion

Conectar la tarjeta Nextion al conversor USB-TTL

Para cargar la interfaz, pulse Compilar y luego Cargar

Conexión de la pantalla Nextion al microcontrolador Arduino

Para descargar el código Arduino a la placa, los pines RX y TX deben estar desconectados de la pantalla.

Uso de la biblioteca Nextion.h

Hay varias bibliotecas que puede utilizar para gestionar una pantalla Nextion

Utilizamos EasyNextion

En el Editor Nextion, definimos un evento “printh 23 02 54 01” para el botón ON y un evento “printh 23 02 54 02” para el botón Off.

Utilizando la función NextionListen(), estos comandos activarán las funciones trigger1 y trigger2.

#include "EasyNextionLibrary.h"

#define baudrate 9600

EasyNex myNex(Serial);

//Variables
uint16_t analog;
bool ledstate;

const int REFRESH_TIME = 100;
unsigned long refresh_timer = millis();

void setup() {
  myNex.begin(baudrate);

  pinMode(A0, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  myNex.NextionListen();

  if ((millis() - refresh_timer) > REFRESH_TIME) {
    analog = analogRead(A0);
    myNex.writeNum("analog0.val", analog);

    refresh_timer = millis();
  }
}

//`printh 23 02 54 XX` , where `XX` the id for the triggerXX() in HEX.
void trigger1() {
  digitalWrite(LED_BUILTIN, HIGH);
  myNex.writeStr("t2.txt", "LED ON");
}

void trigger2() {
  digitalWrite(LED_BUILTIN, LOW);
  myNex.writeStr("t2.txt", "LED OFF");
}

Resultados

Bonificación: Simulador de editor Nextion

Nextion ofrece un simulador para probar las interacciones entre la pantalla, el microcontrolador y la interfaz gráfica. Se puede acceder a este simulador haciendo clic en “Depurar”.

Fuentes

Programación de Arduino con Visual Studio Code

Programación de Arduino con Visual Studio Code

Vamos a ver cómo programar una placa Arduino utilizando Visual Studio Code, que es una buena alternativa al IDE de Arduino. Generalmente empezamos a programar en Arduino utilizando el IDE oficial, pero puede ser interesante cambiar de editor de código para tener acceso a un mayor número de funciones. En este artículo, presentamos el uso de Visual Studio Code. Existen otros editores, como Eclipse, Netbeans, Atom.io, etc.

Presentación de Visual Studio Code

Visual Studio Code es un editor de código ligero y extensible desarrollado por Microsoft. VsCode ofrece muchas de las mismas características que el IDE de Arduino:

  • Finalización automática
  • Resaltar la sintaxis
  • Funciones de depuración
  • Programación en varios lenguajes (C++, C
  • Gestión de proyectos
  • Gestión de repositorios Git
  • Y así sucesivamente.

Es de código abierto y está disponible en las plataformas Windows, Linux y MacOS.

Instalación de Visual Studio Code

Vaya a la página de descargas de Visual Studio Code y descargue la versión para su sistema operativo.

Ejecute el instalador y siga el procedimiento

Para comunicarse con Arduino, es necesario instalar la extensión adecuada.

Haga clic en el icono “Administrar” (rueda dentada) de la parte inferior izquierda y seleccione Extensiones (o Ctrl+Mayús+X)

A continuación, busca Arduino y selecciona “Arduino for Visual Studio Code”.

Reiniciar VsCode

Configuración de VsCode para Arduino

Haga clic en el icono Gestionar y seleccione “Comando de paleta” (o Ctrl+Mayús+P)

Busca Arduino, y entonces tendrás acceso a varios comandos relacionados con Arduino.

Seleccione Arduino Board Config y luego seleccione el tipo de placa

En la parte inferior derecha, haz clic en Seleccionar puerto serie y, a continuación, selecciona el puerto serie correspondiente al Arduino (aquí, COM5).

En la parte inferior derecha, haga clic en Seleccionar programador y seleccione “AVRPISP mkII”.

Compilar el código y cargarlo

En la paleta de comandos (Ctrl+Mayús+P), busque Arduino: Ejemplos y elija Parpadeo u otro ejemplo.

A continuación, puede cargar el código haciendo clic en “Cargar” en la esquina superior derecha.

La consola indica si el código se está cargando y puedes comprobar que el código está cargado en la placa Arduino mirando el estado del LED.

Modificando un poco el código, podemos enviar texto al monitor serie.

int led = 13;

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(115200);
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  Serial.println("Led is High");
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  Serial.println("Led is Low");

  delay(1000);               // wait for a second

}

Descarga el código modificado en la placa Arduino.

Para abrir el monitor serie, pulse el icono Monitor serie situado justo a la derecha del tipo de tarjeta, en la esquina inferior derecha.

A continuación, puede seleccionar la velocidad en baudios deseada en la barra de configuración de la placa Arduino situada en la parte inferior derecha (115200).

Envío de comandos al monitor serie

Al igual que con el IDE de Arduino, puedes enviar comandos a través del puerto serie.

En la paleta de comandos de Arduino, busque “Sedn text to Serial Port”. Aparece una barra de entrada.

Puede crear un atajo de teclado para abrir este comando más fácilmente. Pulse la rueda dentada situada a la derecha del comando

 

Fuentes

https://code.visualstudio.com/
https://www.aranacorp.com/fr/programmez-avec-arduino/
https://code.visualstudio.com/Download

Uso de un controlador de motor paso a paso DRV8825

Uso de un controlador de motor paso a paso DRV8825

En este tutorial veremos cómo accionar un motor paso a paso bipolar utilizando un driver DRV8825. Este tutorial es compatible con los drivers de motores paso a paso comúnmente utilizados en proyectos de fresado digital o impresoras 3D (DRV8825, SilentStepStick, etc.).

Hardware

  • Arduino UNO
  • Controlador paso a paso DRV8825 (o A4988 o SilentStepStick)
  • Cable USB A macho a USB B macho

Principio de funcionamiento

Los controladores de motor paso a paso permiten controlar los motores de forma eficaz utilizando sólo dos señales de control, STEP y DIR. El número de impulsos enviados al driver corresponde al número de pasos dados, la frecuencia de impulsos corresponde a la velocidad del motor y la señal dir corresponde al sentido de giro del motor. El módulo DRV8825 se encarga de enviar la secuencia a las dos bobinas del motor en función de las órdenes recibidas como entrada.

Especificaciones técnicas DRV8825

M0M1M2Microstep resolution
LowLowLowFull step
HighLowLow1/2 step
LowHighLow1/4 step
HighHighLow1/8 step
LowLowHigh1/16 step
HighLowHigh1/32 step
LowHighHigh1/32 step
HighHighHigh1/32 step

Diagrama

Antes de conectar el motor al controlador, ajuste correctamente el limitador de corriente. Para ello, es necesario:

  • alimentar el Arduino y el Shield con la tensión del motor.
  • A continuación, coloque un voltímetro entre el potenciómetro y GND.
  • Gire el potenciómetro con un destornillador hasta obtener el valor que sigue la regla siguiente.
MaxCurrent=Vref x 2 

Por ejemplo:

Si el valor de corriente es de 1A, el valor mostrado en el multímetro debe ser igual a 0,5V.

MaxCurrent=1.0A –> Vref = 0.5V

La resolución de los pasos del controlador puede modificarse para una mayor precisión. Esta configuración se define poniendo los pines M0, M1 y M2 en ALTO o BAJO según la siguiente tabla lógica.

M0M1M2Microstep resolution
LowLowLowFull step
HighLowLow1/2 step
LowHighLow1/4 step
HighHighLow1/8 step
LowLowHigh1/16 step
HighLowHigh1/32 step
LowHighHigh1/32 step
HighHighHigh1/32 step

Código por el controlador DRV8825

Para accionar el driver del motor paso a paso, todo lo que tenemos que hacer es enviar un estado HIGH o LOW al pin DIR y un pulso al pin STEP.

const int stepPin = 2;
const int dirPin = 3;


const int stepsPerRev=200;
int pulseWidthMicros = 100;  // microseconds
int millisBtwnSteps = 1000;

void setup() {
  Serial.begin(9600);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
 
  Serial.println(F("A4988 Initialized"));
}

void loop() {
  Serial.println(F("Running clockwise"));
  digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for (int i = 0; i < stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000); // One second delay

  Serial.println(F("Running counter-clockwise"));
  digitalWrite(dirPin, LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for (int i = 0; i < 2*stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000);
}

Para más funciones, puede utilizar la biblioteca AccelStepper.h

Aplicaciones

  • Control de un motor paso a paso
  • Control de varios motores con un CNC Shield

Fuentes

Utilización de un controlador de motor paso a paso A4988

Utilización de un controlador de motor paso a paso A4988

En este tutorial, veremos cómo accionar un motor paso a paso bipolar utilizando un driver A4988. Este tutorial es compatible con los drivers de motores paso a paso comúnmente utilizados en proyectos de fresado digital o impresoras 3D (DRV8825, SilentStepStick, etc.).

Hardware

  • Arduino UNO
  • Controlador paso a paso A4988
  • Cable USB A macho a USB B macho

Principio de funcionamiento

Los controladores de motor paso a paso permiten controlar eficazmente los motores utilizando sólo dos señales de control, STEP y DIR. El número de impulsos enviados al driver corresponde al número de pasos dados, la frecuencia de impulsos corresponde a la velocidad del motor y la señal dir corresponde al sentido de giro del motor. El módulo A4988 se encarga de enviar la secuencia a las dos bobinas del motor en función de las órdenes recibidas como entrada.

Especificaciones técnicas A4988

Minimum operating voltage8 V
Maximum operating voltage35 V
Continuous current per phase1.2 A
Maximum current per phase2 A
Minimum logic voltage3 V
Maximum logic voltage5.5 V
Microstep resolutionfull, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection?No
Dimensions15.5 × 20.5 mm (0.6″ × 0.8″)

Diagrama

Antes de conectar el motor al controlador, ajuste correctamente el limitador de corriente. Para ello, es necesario:

  • alimentar el Arduino y el Shield con la tensión del motor.
  • A continuación, coloque un voltímetro entre el potenciómetro y GND.
  • Gire el potenciómetro con un destornillador hasta obtener el valor que sigue la regla siguiente.
MaxCurrent=Vref x 2.5 

Por ejemplo:

Si el valor de corriente es de 1A, el valor mostrado en el multímetro debe ser igual a 0,4V.

MaxCurrent=1.0A –> Vref = 0.4V

La resolución de los pasos del controlador puede modificarse para una mayor precisión. Esta configuración se define poniendo los pines M0, M1 y M2 en ALTO o BAJO según la siguiente tabla lógica.

MS1MS2MS3Résolution Microstepping
LowLowLowPas complet (full step)
HighLowLow1/2 pas
LowHighLow1/4 de pas
HighHighLow1/8 ième de pas
HighHighHigh1/16 ième de pas

Código

Para accionar el driver del motor paso a paso, todo lo que tenemos que hacer es enviar un estado HIGH o LOW al pin DIR y un pulso al pin STEP.

const int stepPin = 2;
const int dirPin = 3;


const int stepsPerRev=200;
int pulseWidthMicros = 100;  // microseconds
int millisBtwnSteps = 1000;

void setup() {
  Serial.begin(9600);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
 
  Serial.println(F("A4988 Initialized"));
}

void loop() {
  Serial.println(F("Running clockwise"));
  digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for (int i = 0; i < stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000); // One second delay

  Serial.println(F("Running counter-clockwise"));
  digitalWrite(dirPin, LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for (int i = 0; i < 2*stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000);
}

Para más funciones, puede utilizar la biblioteca AccelStepper.h

Aplicaciones

  • Control de un motor paso a paso
  • Control de varios motores con un CNC Shield

Fuentes

https://www.arduinolibraries.info/libraries/accel-stepper