Skip to main content

Hardware y software

HARDWARE                                                 

Placa Arduino

Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores. 

Entradas y salidas

La placa Arduino Duemilanove o UNO consta de:

  • DIGITALES:
    • 14 entradas/salidas digitales D0-D13 previamente hay que configurarlas o entradas o salidas. Que operan a 5 ó 0 voltios. Cada pin puede proporcionar o recibir como máximo 40 mA.
      • Los pines D0 y D1 son compartidos por el puerto USB por lo tanto no se pueden utilizar si se está comunicando con el ordenador, están marcados como TX/RX (transmisión y recepción puerto serie).
  • ANALOGICAS
    • 6 entradas analógicas A0 al A5 con una resolución de 10 bits que proporcionan un número entero de 0 a 1023. Por defecto miden de 0 voltios (masa) hasta 5 voltios. 
    • 6 salidas pseudo-analógicas, en los pines digitales 3, 5, 6, 8, 10 y 11 son PWM (Pulse Width Modulation) y como hemos visto, pueden proporcionar una salida cuadrada que su valor medio puede estar entre 0 y 5V

La intensidad de corriente que pueden proporcionar como salida son 20mA.

Pines de la placa

Elementos con los que podemos interactuar: (tomando como ejemplo la placa USB). Empezando en el sentido de las agujas del reloj desde el centro de la parte superior:

  • Pin de referencia analógica (naranja).
  • Señal de tierra digital (verde claro).
  • Pines digitales 2-13 (verde).
  • Pines digitales 0-1 / entrada y salida del puerto serie: TX/RX (azul) (estándar de comunicación serie IC2).
  • Botón de reset (negro).
  • Entrada del circuito del programador serie (marrón).
  • Pines de entrada analógica 0-5 (azul oscuro).
  • Pines de alimentación y tierra (naranja y naranja claro).
  • Entrada de la fuente de alimentación externa (9-12V DC)
  • X1 (gris). - Entrada fuente de alimentación externa 
  • SV1: En las placas antiguas existen estos pines para conmutar si la alimentación es por el puerto USB, ahora lo realiza automáticamente un transistor MOSFET
  • Puerto USB (rojo).

Las placas: Arduino Diecimila, Arduino Duemilanove o UNO y Arduino Mega están basados en los microcontroladores Atmega168, Atmega 328 y Atmega1280 respectivamente. Trabajan a 16MHz, una velocidad suficiente para proyectos de robótica. Su capacidad de memoria Flash van desde 16k el Atmega168 hasta 128k Atmega1280, suficientes para que quepan nuestros programas de robótica.

SHIELDS para Arduino

Las llamadas Shields (escudos) para Arduino son tarjetas que se acoplan a la placa Arduino y añaden funciones y potencialidad a la placa Arduino.  Según mi criterio hay dos tipos de Shields: Las educativas y las no educativas

Shields educativas

Hay muchas Shields Educativas, vamos a ver unos pocos ejemplos

  • La shield del curso Arduino con código EDUBASICA, que integra algunos sensores y actuadores, pero lo que destaca es que además tiene la opción de conexión de motores o actuadores que requieran potencia, pues la placa Arduino por sí sola no puede proporcionar la suficiente intensidad para alimentar motores, relés o electroválvulas. El límite de intensidad que proporciona cada una de las salidas digitales es de 40 mA. Para poder activar estos dispositivos tendremos que montar un circuito externo adicional con transistores o circuitos integrados específicos para motores, como es el caso del LM293, que entregan la intensidad suficiente. Para facilitarnos la tarea esta placa integra un LM293 y un transistor de potencia, en total 5 salidas de potencia.

EDUBASICA-PEQ.png

  • La shield del curso ECHIDNA  que tiene integrados sensores y actuadores como el acelerómetro, sensor de luz, pulsadores, potenciómetro, altavoz...  y destaca el Joystick con la posibilidades de gamificación que se puede hacer con este elemento. También destaca el modo MAKEY que permite convertir los pines analógicos y los digitales D2 D3 en pines sensibles al tacto, con las mismas posibilidades que la placa MAKEY MAKEY (ver curso Makey Makey). Actualmente Echidna ya no fabrica esta Shield sino comercializa la ECHIDNA BLACK que no es una shield sino es autónoma (es decir, NO necesita la placa Arduino, la tiene integrada)
    . 2022-07-23 00_12_07-Editing Page 1.3 Hardware _ Librería CATEDU.png
  • La shield del curso ARDUINOBLOCKS EN EL AULA la TDR-STEAM que tiene muchas posibilidades didácticas por su sensores (temperatura, humedad, luz, potenciometro, pulsador, receptor IR).

tdrsteam.png

  • La Shield k5864195 muy sencilla y barata, si lo que se busca son sensores sencillos (pulsadores, potenciómetro) y actuadores sencillos (altavoz, leds y display 7 segmentos).

VISUALINO.png

Shields no educativas

Es difícil elegir unos ejemplos de toda la variedad comercial que existe y tanta vitalidad de versiones (ver lista), preferimos que en caso de que necesites alguna función extra a tu Arduino, busques en ese momento cual es la mejor Shield que se adapta a tu proyecto. Es importante que sepas que existen Shields para todo, por ejemplo para...

  • Agregar conectividad al Arduino, ya sea por red móvil (3G, 4G), por Wifi, Bluetooth o por cable Ethernet o incluso localización GPS.
  • Agregar potencia a las salidas para conectar por ejemplo motores, como el de Edubásica pero más especializado en esta función y con más salidas.
  • Shields con relés para conectar sensores y actuadores con tensión y así no tienes problemas de quemar el Arduino.
  • Shields con batería que en el caso de corte de alimentación, permiten que el Arduino no se apague.
  • Entrada y salida de imagen con pantalla líquida y cámara

Y encima se pueden apilar !! consiguiendo aumentar la capacidad de tu Arduino tanto como necesites (sin pasarte, pues pues alimentación del Arduino es limitada al menos que la Shield tenga su propia alimentación.

via GIPHY

Alimentación eléctrica de Arduino

Uno de los aspectos claves para el buen funcionamiento de proyectos con Arduino, es que incluyan elementos que consuman una intensidad superior a 200 mA como motores, relés, electroválvulas, etc... entonces todo falla, debido a que no has alimentado correctamente la placa.

Tenemos dos posibilidades para alimentar Arduino:

A .- Mediante el cable USB conectado al ordenador:

  • Cada pin proporciona 40 mA.
  • El límite proporcionado por el USB es de 500 mA en total.

B .- Utilizando una fuente de alimentación externa conectada al jack de Arduino (fuente de voltaje, adaptador de corriente, batería o portapilas) :

  • El voltaje recomendado de la fuente externa está entre 7 y 12 V.
  • La intensidad máxima que puede entregar Arduino a los actuadores que queramos controlar (servos, motores, relés,...) es de 1A, aunque una exposición prolongada a esta corriente puede estropear la placa. Lo recomendable son 800 mA.
  • El pin serigrafiado con Vin proporciona directamente el voltaje de la fuente conectada al jack de Arduino (menos la caída de tensión del diodo de protección), desde ese pin podemos sacar un cable y alimentar a los actuadores que necesitemos. Por ejemplo, si alimentamos con una pila externa de 9 V conectada al jack, en el pin Vin tendremos aproximadamente 9 V (hay que restar la caída de tensión del diodo de protección que serán de medio voltio). Además en los pines 5V y 3.3V dispondremos también de dichos voltajes aunque la fuente externa sea de 9V.

Si conectamos demasiada carga, la placa Arduino suele tener un comportamiento anómalo pudiéndose resetear el micro.

C.- No recomendable: Conectando el positivo (+Vcc) de la fuente externa a Vin y el negativo a GND:

Podemos alimentar Arduino externamente si necesidad de conector Jack a través de Vin y GND el problema es que nos saltamos un diodo de protección que evita  que se queme el circuito por un exceso de corriente.

CONCLUSIÓN:

  • Si necesitamos hacer funcionar actuadores de bajo consumo (luces, zumbadores, etc...) podremos trabajar directamente con el USB conectado al ordenador o conectado a un PowerBank.
  • Si necesitamos mover cargas, excitar bobinas u otros elementos de mayor consumo lo recomendable es alimentar externamente Arduino desde el Jack con un rango de 9 a 12 V.

SOFTWARE                                                 

El microcontrolador en la placa Arduino se programa mediante dos tipos de programación:

LENGUAJE POR CÓDIGO

Recomendable a partir de secundaria. Es un lenguaje basado en Wiring y permite la programación del Arduino en un entorno de desarrollo (basado en Processing). El programa se llama ARDUINO IDE y se puede descargar desde la página oficial de Arduino: https://www.arduino.cc/en/software. teniendo la posibilidad de utilizarlo online o descarga offline para todo tipo de sistema operativo:

arduinoide.png

En los cursos de CATEDU se ha utilizado el lenguaje por código empezando desde cero en:

LENGUAJE GRÁFICO POR BLOQUES

Recomendado para primaria. Tenemos muchas posibilidades de lenguajes gráficos. Destacamos dos:

  • ARDUINOBLOCKS se trabaja online, muy visual y muy amigable. Está adaptado tanto para trabajar tanto Arduino como muchas placas controladoras y en el aula. Podemos verlo en los siguientes cursos:
  • MBLOCK  Basado en Scratch. Aunque es un programa especializado en el robot comercial mBot, (basado en Arduino), el mismo programa esta adaptado para programar Arduino. Tiene la ventaja del modo de funcionamiento "conectado" que puede interactuar nuestra placa con el ordenador, pudiendo por ejemplo apretando una tecla de ordenador encender un led en el Arduino o si hay luz en el sensor LDR conectado en el Arduino que suene una canción en el ordenador.

VENTAJAS E INCONVENIENTES LENGUAJE GRÁFICO POR BLOQUES vs CÓDIGO

El lenguaje gráfico es un lenguaje sencillo de utilizar, nos evita tener en cuenta muchas librerías y cálculos, por ejemplo, la instrucción leer valor distancia el sensor ultrasonidos, gráficamente es :

leer-us.jpg

mientras que en código es

double distancia;

double fnc_ultrasonic_distance(int _t, int _e){
	unsigned long dur=0;
	digitalWrite(_t, LOW);
	delayMicroseconds(5);
	digitalWrite(_t, HIGH);
	delayMicroseconds(10);
	digitalWrite(_t, LOW);
	dur = pulseIn(_e, HIGH, 18000);
	if(dur==0)return 999.0;
	return (dur/57);
}

void setup()
{
  	pinMode(6, OUTPUT);
	pinMode(5, INPUT);

}


void loop()
{

  	distancia = fnc_ultrasonic_distance(6,5);

}

Como se puede ver en código, tiene que calcular la distancia haciendo cálculos del tiempo de rebote del eco

Por otra parte, el lenguaje código tiene todo el potencial es decir, no todo está en los lenguajes gráficos.

Un lenguaje por bloques SI se puede convertir en lenguaje código, pero al revés no.

SIMULACIÓN                                    

Hay aplicaciones que permiten simular el Arduino, y por ejemplo en el Curso Arduino con código  en la práctica Comunicación entre dos Arduinos se ha utilizado por si no tienes dos placas

Pueden ser aplicaciones online como https://www.tinkercad.com pero nuestra experiencia es que es algo lento, pero tiene la ventaja de ser online y muy muy visual cercano a la realidad.

Si quieres trabajar con más velocidad puedes descargar alguna aplicaciones locales, como UnoArduSim además es una aplicación portable fácil de instalar y con los elementos de leds, motores servos ya preparados, ideal para ejemplos sencillos y para examinar señales, pero no es tan versátil como el anterior, por eso te mostramos vídeos de ejemplo para que tú decidas.

En este vídeo se puede ver el mismo ejemplo del led parpadeando: