Categorías: Artículos destacados » Electrónica práctica
Cantidad de vistas: 67360
Comentarios sobre el artículo: 7

Conectando y programando Arduino para principiantes

 

¿Estudiar los microcontroladores parece complicado e incomprensible? Antes de la aparición de Arudino, realmente no era fácil y requería un cierto conjunto de programadores y otros equipos.


¿Qué es un Arduino?

Este es un tipo de constructor electrónico. El objetivo inicial del proyecto es permitir que las personas aprendan fácilmente a programar dispositivos electrónicos, al tiempo que dedican un tiempo mínimo a la parte electrónica.

El montaje de los circuitos más complicados y la conexión de las placas se pueden realizar sin soldador, y con la ayuda de puentes con conexiones desmontables "padre" y "madre". De esta manera, se pueden conectar tanto los archivos adjuntos como las tarjetas de expansión, que en el léxico de los arduinistas simplemente se llaman "Escudos".

¿Qué es arduino?

¿Cuál es la primera placa Arduino para comprar para un novato?

Se considera la placa base y más popular Arduino uno. Esta tarifa se asemeja a una tarjeta de crédito. Bastante grande La mayoría de los escudos que están a la venta son perfectos para ella. Hay enchufes en la placa para conectar dispositivos externos.

Arduino uno

En las tiendas nacionales para 2017, su precio es de unos 4-5 dólares. En los modelos modernos, Atmega328 es su corazón.

Arduino uno

Imagen de la placa Arduino y decodificación de funciones de cada pin, pinout Arduino UNO

El microcontrolador de esta placa es un chip largo en el paquete DIP28, lo que significa que tiene 28 patas.

El siguiente tablero más popular cuesta casi dos veces más barato que el anterior: 2-3 dólares. Este es el tablero Arduino nano. Las placas reales están construidas por el mismo Atmega328, son funcionalmente similares a UNO, las diferencias de tamaño y la decisión de combinar con USB, más sobre esto más adelante. Otra diferencia es que se proporcionan enchufes para conectar dispositivos a la placa, en forma de agujas.

Arduino nano

El número de pines (patas) de esta placa es el mismo, pero puede observar que el microcontrolador está hecho en un paquete TQFP32 más compacto, ADC6 y ADC7 se agregan en el estuche, las otras dos patas "adicionales" duplican el bus de alimentación. Sus dimensiones son bastante compactas, aproximadamente del tamaño de un pulgar de su mano.

Aruino nano pinout 

El tercer tablero más popular es Arduino Pro Mini, no tiene un puerto USB para conectarse a una computadora, le diré cómo comunicarse un poco más tarde.

Comparación de tamaño Arduino Nano vs Pro Mini

Comparación de tamaño Arduino Nano vs Pro Mini

Esta es la placa más pequeña de todas las consideradas, de lo contrario es similar a las dos anteriores, y Atmega328 sigue siendo su corazón. No consideraremos otras tablas, ya que este es un artículo para principiantes, y la comparación de tablas es el tema de un artículo separado.

Arduino Pro Mini pinout, en la parte superior, el diagrama de conexión USB-UART, pin "GRN" - está conectado al circuito de reinicio del microcontrolador, puede llamarse de manera diferente, para lo cual debe averiguarlo más adelante.

Resumen:

Si UNO es conveniente para la creación de prototipos, entonces Nano y Pro Mini son convenientes para las versiones finales de su proyecto, ya que ocupan poco espacio.

Arduino para principiantes

¿Cómo conectar Arduino a una computadora?

Arduino Uno y Nano se conectan a una computadora a través de USB. Al mismo tiempo, no hay soporte de hardware para el puerto USB, aquí se usa una solución de circuito de conversión de nivel, generalmente llamada USB a serie o USB-UART (rs-232). Al mismo tiempo, un cargador de arranque Arduino especial se actualiza en el microcontrolador, lo que permite la actualización en estos buses.

En Arduino Uno, esta ligadura se implementa en un microcontrolador con soporte USB: ATmega16U2 (AT16U2). Resulta que el microcontrolador adicional en la placa es necesario para flashear el microcontrolador principal.

En Arduino Nano, esto es implementado por el chip FT232R, o su CH340 analógico. Este no es un microcontrolador: es un convertidor de nivel, este hecho facilita el montaje del Arduino Nano desde cero con sus propias manos.

Por lo general, los controladores se instalan automáticamente cuando se conecta la placa Arduino. Sin embargo, cuando compré una copia china del Arduino Nano, el dispositivo fue reconocido, pero no funcionó, una pegatina redonda con datos de la fecha de lanzamiento estaba pegada en el convertidor, no sé si se hizo a propósito, pero después de despegarla vi la marca CH340.

Antes de esto, no me encontré con esto y pensé que todos los convertidores USB-UART se ensamblaron en FT232, tuve que descargar los controladores, son muy fáciles de encontrar a pedido del "controlador Arduino ch340". Después de una instalación simple, ¡funcionó!

A través del mismo puerto USB, el microcontrolador también se puede alimentar, es decir Si lo conecta al adaptador desde un teléfono móvil, su sistema funcionará.


¿Qué debo hacer si mi placa no tiene USB?

El Arduino Pro Mini es más pequeño. Esto se logró al quitar el conector USB para el firmware y el mismo convertidor USB-UART. Por lo tanto, debe comprarse por separado. El convertidor más simple en el CH340 (el más barato), CPL2102 y FT232R, para la venta cuesta desde $ 1.

Al comprar, preste atención al voltaje para el que está diseñado este adaptador. Pro mini está disponible en las versiones 3.3 y 5 V, a menudo se encuentra un puente en los convertidores para cambiar la tensión de alimentación.

Arduino Pro Mini

Al flashear el Pro Mini, justo antes de que comience, debe hacer clic en RESET, sin embargo, en los convertidores con DTR no necesita hacer esto, el diagrama de conexión en la figura a continuación.

Diagrama de conexión para firmware

A ellos se unen terminales especiales "Mama-Mama" (hembra-hembra).

Conexión Arduino

En realidad, todas las conexiones se pueden hacer usando tales terminales (Dupont), ambos están en ambos lados con enchufes, y con enchufes, y en un lado del enchufe, y en el otro enchufe.

Enchufe

¿Cómo escribir programas para Arduino?

Para trabajar con bocetos (el nombre del firmware está en el idioma del arduino), existe un entorno integrado especial para desarrollar el IDE de Arduino, puede descargarlo de forma gratuita desde el sitio web oficial o desde cualquier recurso temático, por lo general no hay problemas para instalarlo.

Programa para Arduino

Así es como se ve la interfaz del programa. Puede escribir programas en el lenguaje simplificado C AVR especialmente desarrollado para arduino, de hecho, es un conjunto de bibliotecas llamadas Wiring, así como en C AVR puro. Usarlo facilita el código y acelera su trabajo.

En la parte superior de la ventana hay un menú familiar donde puede abrir el archivo, la configuración, seleccionar el tablero con el que trabaja (Uno, Nano y muchos, muchos otros) y también abrir proyectos con ejemplos de código ya hechos. A continuación se muestra un conjunto de botones para trabajar con firmware, las teclas que verá en la figura a continuación.

Interfaz de programa

En la parte inferior de la ventana hay un área para mostrar información sobre el proyecto, el estado del código, el firmware y la presencia de errores.


Conceptos básicos de programación Arduino IDE

Al comienzo del código, debe declarar variables y conectar bibliotecas adicionales, si existen, esto se hace de la siguiente manera:

#include biblioteka.h; // conecta la biblioteca con el nombre "Biblioteka.h"

#define peremennaya 1234; // Declara una variable con un valor de 1234

El comando Definir permite al compilador elegir el tipo de variable, pero puede configurarlo manualmente, por ejemplo, un entero int o un flotante de coma flotante.

int led = 13; // creó la variable "led" y le asignó el valor "13"

El programa puede determinar el estado del pin como 1 o 0. 1 es una unidad lógica, si el pin 13 es 1, entonces el voltaje en su rama física será igual al voltaje de suministro del microcontrolador (para arduino UNO y Nano - 5 V)

La señal digital se graba utilizando el comando digitalWrite (pin, valor), por ejemplo:

digitalWrite (led, alto); // escribe la unidad en el registro del pin 13 (lo anunciamos arriba). Unidades

Como puede comprender, el acceso a los puertos se realiza mediante la numeración en la placa, cifra correspondiente. Aquí hay un ejemplo similar al código anterior:

digitalWrite (13, alto); // establece el pin 13 en uno

A menudo, la función de retraso de tiempo solicitada se llama mediante el comando delay (), cuyo valor se establece en milisegundos, microsegundos se logran utilizando

delayMicroseconds () Retardo (1000); // el microcontrolador esperará 1000 ms (1 segundo)

La configuración del puerto para entrada y salida se establece en la función void setup {}, con el comando:

configuración nula () {

pinMode (NOMERPORTA, SALIDA / ENTRADA); // argumentos - nombre de la variable o número de puerto, entrada o salida para elegir

}

Bucle vacío {}


Comprender el primer programa de parpadeo

Como una especie de "Hola, mundo" para microcontroladores, hay un programa de parpadeo de LED, analicemos su código:

Al principio, con el comando pinMode, le dijimos al microcontrolador que asignara un puerto con un LED a la salida.Ya notó que el código no declara la variable "LED_BUILTIN", el hecho es que en Uno, Nano y otras placas de fábrica, el LED incorporado está conectado al pin 13 y está soldado a la placa. Puede ser utilizado por usted para indicar en sus proyectos o para la verificación más simple de sus programas de flasheo.

A continuación, configuramos la salida a la que el LED está soldado a la unidad (5 V), la siguiente línea hace que el MK espere 1 segundo, y luego establece el pin LED_BUILTIN en cero, espera un segundo y el programa se repite en un círculo, por lo que cuando LED_BUILTIN es 1 - el LED ( y cualquier otra carga conectada al puerto) se enciende, cuando a 0 se apaga.

¿Funciona todo y todo está claro? ¡Entonces sigue adelante!



Leemos el valor del puerto analógico y usamos los datos leídos

El microcontrolador AVR Atmega328 tiene un convertidor analógico a digital de 10 bits incorporado. El ADC de 10 bits le permite leer el valor de voltaje de 0 a 5 voltios, en incrementos de 1/1024 de toda la amplitud de la señal (5 V).

Para aclararlo, considere la situación, suponga que el valor de voltaje en la entrada analógica es 2.5 V, luego el microcontrolador leerá el valor del pin "512" si el voltaje es 0 - "0", y si 5 V - (1023). 1023 - porque el recuento va de 0, es decir 0, 1, 2, 3, etc. hasta 1023: un total de 1024 valores.

Así es como se ve en el código, usando el boceto estándar "analogInput" como ejemplo

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

configuración nula () {

pinMode (ledPin, OUTPUT);

}

bucle vacío () {

sensorValue = analogRead (sensorPin);

digitalWrite (ledPin, HIGH);

retraso (sensorValue);

digitalWrite (ledPin, LOW);

retraso (sensorValue);

}

El esquema de conexión del potenciómetro a Arduino, por analogía, la salida central se puede conectar a cualquier entrada analógica

El esquema de conexión del potenciómetro a Arduino, por analogía, la salida central se puede conectar a cualquier entrada analógica.

Declarar variables:

  • Ledpin: asigne independientemente un pin con un LED incorporado a la salida y asigne un nombre individual;

  • sensorPin - entrada analógica, configurada según la marca en la placa: A0, A1, A2, etc.

  • sensorValue: una variable para almacenar un valor de lectura entero y seguir trabajando con él.

El código funciona así: sensorValue guarda el valor analógico leído con sensorPin (comando analogRead). - Aquí termina el trabajo con la señal analógica, luego todo es como en el ejemplo anterior.

Escribimos la unidad en ledPin, el LED se enciende y espera un tiempo igual al valor de sensorValue, es decir de 0 a 1023 milisegundos. Apague el LED y espere nuevamente durante este período de tiempo, después del cual se repite el código.

Por lo tanto, mediante la posición del potenciómetro establecemos la frecuencia de parpadeo del LED.


Función de mapa para Arudino

No todas las funciones para actuadores (no sé ninguna) admiten "1023" como argumento, por ejemplo, el servo está limitado por el ángulo de rotación, es decir, por media revolución (180 grados) (media revolución) del servomotor, el argumento máximo de la función es "180"

Ahora sobre la sintaxis: map (el valor que estamos traduciendo es la entrada mínima, la entrada máxima, la salida mínima, la salida máxima).

En código, se ve así:

(mapa (analogRead (pot), 0, 1023, 0, 180));

Leemos el valor del potenciómetro (analogRead (pot)) de 0 a 1023, y en la salida obtenemos números de 0 a 180

Valores del mapa de valores:

  • 0=0;

  • 1023=180;

En la práctica, aplicamos esto al trabajo del mismo código de servo, eche un vistazo al código con el IDE de Arduino, si lee detenidamente las secciones anteriores, entonces no requiere explicación.

Y el diagrama de conexión.

Diagrama de cableado

Conclusiones Arduino es una herramienta muy conveniente para aprender a trabajar con microcontroladores. Y si usa AVR C puro, o como a veces se le llama "Pure C", reducirá significativamente el peso del código y se ajustará más en la memoria del microcontrolador, como resultado, obtendrá una excelente placa de depuración fabricada en fábrica con firmware USB.

Arduino para principiantes

Opinión del autor:

Me gusta arduino Es una pena que muchos programadores experimentados de microcontroladores lo critiquen sin razón, porque está demasiado simplificado. En principio, solo se simplifica el lenguaje, pero nadie lo obliga a usarlo, además puede flashear el microcontrolador a través del conector ICSP y completar el código que desee sin ningún gestor de arranque que no necesite.

Para aquellos que quieren jugar con la electrónica, como constructor avanzado, es perfecto, pero para programadores experimentados, ¡una placa que no requiere ensamblaje también será útil!

Para obtener más información sobre Arduino y las características de su uso en varios esquemas, consulte el libro electrónico:Arduino para tontos. Guía práctica ilustrada.

Ver también en i.electricianexp.com:

  • Métodos de lectura y control de Arduino para puertos de E / S
  • Qué placa Arduino elegir
  • Tipos y disposición de microcontroladores AVR
  • Control remoto por microcontrolador: control remoto IR, Arduino, ESP8266, 433 ...
  • Conexión de sensores analógicos a Arduino, lectura de sensores

  •  
     
    Comentarios:

    # 1 escribió: Electroimán | [cita]

     
     

    ¿Qué literatura sobre el estudio del código de programación me recomiendan?

     
    Comentarios:

    # 2 escribió: Andrey | [cita]

     
     

    ElectroimánUlli Sommer. Programación de la placa de microcontroladores Arduino / Freeduino, por Jeremy Bloom. Nosotros estudiamos Arduino. Herramientas y técnicas para la magia técnica, John Boxell. Nosotros estudiamos Arduino. 65 proyectos de bricolaje. Libros sobre Arduino sobre el ozono: i.electricianexp.com/arduino_books.php

     
    Comentarios:

    # 3 escribió: Vencedor | [cita]

     
     

    Material muy interesante y emocionante, gracias!

     
    Comentarios:

    # 4 escribió: Ural | [cita]

     
     

    Gracias por la información, la función "mapa" fue muy útil, me preguntaba cómo moverse, apenas comenzando a aprender juguetes en Arduino.

     
    Comentarios:

    # 5 escribió: Dima | [cita]

     
     

    Algo que no encuentro para los escudos arduino para compartir en mil-std-1553b, aunque para buses de compilación, montones, una interfaz muy popular. Empuje donde pueda buscar-comprar.

    p.s. no se muestra la fecha del artículo, ¿tal vez tiene 10 años y ya no debería escribir comentarios?

     
    Comentarios:

    # 6 escribió: Eremino | [cita]

     
     

    Cómo hacer un repetidor de señal de entrada en Arduino para 4 o cualquier número de salidas.

    Del mismo modo hacer con 4 canales de entrada a 16 canales de salida. En este caso, debe cambiar la entrada a 4 salidas simultáneamente en cada canal de entrada.

     
    Comentarios:

    # 7 escribió: Oleg | [cita]

     
     

    Chicos, dime, ¿dónde aprendiste a programar? Revisé mucha información y nadie escribió con claridad. Aquí, toda la información no es para un principiante, realmente mucha no es clara, subestimación. Se han escrito muchas palabras sobre las que ni una palabra, por ejemplo, escribe el autor, al principio debe declarar la biblioteca e ingresar #include biblioteka.h; // pero sobre esta palabra no escribió nada #incluye por qué es posible entender todo esto. Ya me falta paciencia, nadie puede explicar de la manera normal, y explicar lo que sucedería aquí es necesario escribir esto. Bueno, por supuesto, es cero, pero trato de leer, no veo nada incomprensible, mucho superfluo que no explica. Y puedo decir que no soy un tonto tonto, puedo reparar casi cualquier dispositivo electrónico, es decir, soy amigo de mi cabeza, pero no entiendo esto porque están escritos por aquellos que saben, pero se olvidaron de los matices.