La Plataforma Arduino
La Plataforma Arduino
La plataforma Arduino
Estudiante:
Profesor:
Jhoelber Blanco
Aldo Márquez
Carrera: 44 Ing.
Electrónica
ÍNDICE
INTRODUCCIÓN…………………………………………………………………..p.3
Origen…......…………………………………………………..…………………….p.4
El porqué de la plataforma Arduino……………………… ………………………..p.5
Tipos de plataforma……………………………………………………………........p.6
Arduino Uno…………………...……………………………………………p.6
Arduino Mega 2560…………………………………....................................p.9
Arduino Ethernet……….……………………………....................................p.9
Arduino Nano…………...………………………...………..........................p.10
Arduino Due……………………………………………………………......p.11
Demás placas
Arduino……………………………………………………...p.12
Aplicaciones……………………………..…………………………………...........
p.13
Lenguaje de Programación……….
…………………………………………….......p.14
CONCLUSIÓN……………………………………………………..…………...…p.19
REFERENCIAS BIBLIOGRÁFICAS.…………….………………………………
p.20
INTRODUCCIÓN
Hace unos años, experimentar con circuitos electrónicos no era sencillo, muchos
componentes y placas tenían un costo muy elevado para emplearlas en las prácticas, y
la mayoría no eran de hardware libre, lo cual dificultaba la presentación de proyectos
por problemas de licencia. Entorno a esto, muchos proyectos de desarrollo salieron a
la luz, con la finalidad de hacer más accesible el aprendizaje en el área de la
electrónica.
Arduino es uno de esos proyectos de hardware libre, que permiten al usuario conocer
y aprender más acerca del desarrollo en la electrónica, todo esto gracias a lo sencilla,
versátil y económica que es.
Este contenido está fundamentado en investigaciones previas entorno a la plataforma
Arduino, tomando como referencia la información de producciones escritas y de
páginas webs.
El objetivo de esta investigación será la documentación histórica y la profundización
de algunos apartados de hardware y software, todo esto referente a la plataforma
Arduino.
Origen
Según Óscar Torrente Artero (2013), los inicios de la plataforma Arduino surgen de
la siguiente manera: “Arduino nació en el año 2005 en el Instituto de Diseño
Interactivo de Ivrea (Italia),…por la necesidad de contar con un dispositivo para
utilizar en las aulas que fuera de bajo coste, que funcionase bajo cualquier sistema
operativo y que contase con documentación adaptada a gente que quisiera empezar de
cero. La idea original fue, pues, fabricar la placa para uso interno de la escuela.”
(p.66).
“No obstante, el Instituto se vio obligado a cerrar sus puertas precisamente en 2005.
Ante la perspectiva de perder en el olvido todo el desarrollo del proyecto Arduino que
se había ido llevando a cabo durante aquel tiempo, se decidió liberarlo y abrirlo a “la
comunidad” para que todo el mundo tuviera la posibilidad de participar en la
evolución del proyecto, proponer mejoras y sugerencias y mantenerlo “vivo”.” (p.66).
“El principal responsable de la idea y diseño de Arduino, y la cabeza visible del
proyecto es el llamado “Arduino Team”, formado por Massimo Banzi (profesor en
aquella época del Instituto Ivrea), David Cuartielles (profesor de la Escuela de Artes
y Comunicación de la Universidad de Mälmo, Suecia), David Mellis (por aquel
entonces estudiante en Ivrea y actualmente miembro del grupo de investigación High-
Low Tech del MIT Media Lab), Tom Igoe (profesor de la Escuela de Arte Tisch de
Nueva York), y Gianluca Martino…”(p.66).
Como podemos ver, la plataforma Arduino nace ante la necesidad de implementar
mejores plataformas para introducir a los estudiantes en el mundo de electrónica y
programación, debido a las limitantes que había en ese entonces en la enseñanza
dentro del área de la electrónica.
En ese mismo año después de que el instituto cerrara, se decide liberar el proyecto al
público para que la comunidad siguiera contribuyendo con este proyecto y así el
proyecto no quedara abandonado
Es importante hacer hincapié en que la plataforma Arduino es “hardware libre”, pero
solo el diseño de la placa junto con sus componentes, ya que el logotipo y nombre
“Arduino” son marca registrada, por lo tanto, tiene la protección contra derechos del
autor en el ámbito legal.
El porqué de la plataforma Arduino
Como se ha señalado anteriormente, la plataforma de Arduino se realizó con fines
educativos, de manera que una persona que se está adentrando en el mundo de la
electrónica y programación vaya aprendiendo con la práctica y no solo se quede con
lo teórico. Si bien Arduino no es el único medio de aprendizaje, si facilita mucho la
enseñanza debido a lo sencilla y económica que es en comparación con otros
sistemas.
Además, a día de hoy la empresa oficial encargada de su producción cuenta con
muchos modelos que se adaptan a diversas necesidades, sin dejar de lado que la
comunidad de esta aporta mucho en cuanto a mejoras y transmisión conocimiento de
la plataforma.
Para entender mejor de qué trata Arduino, Joan Ribas Lequerica (2016) la describe de
la siguiente forma: “Podemos decir que Arduino es una familia de tarjetas
electrónicas que, acompañadas de un software, nos permiten realizar prototipos
electrónicos o si queremos explicarlo de una manera más sencilla, podríamos ver a la
placa Arduino como un pequeño ordenador al que se le puede dar órdenes
(programar) para que interactúe con el mundo real, bien ofreciendo salidas o
reaccionando a una serie de entradas.” (p.17)
“Tanto las entradas que puede entender la tarjeta como las salidas que ofrece, son de
naturaleza eléctrica…” (p.17).
De acuerdo con esto podríamos decir que, esta plataforma es muy versátil ya que
permite la conexión de múltiples periféricos (modulo, sensores y mecanismos) para
cumplir con la función en la que fue programada, lo cual viene muy bien para los
estudiantes que están empezando y no tienen mucho conocimiento o experiencia
respecto al tema.
El autor citado anteriormente deja muy en claro a qué tipo de usuario se encuentra
dirigido generalmente este producto, el mismo señala lo siguiente: “El hardware
ofrecido por Arduino, junto con su entorno de programación, está pensado para ser
utilizado por personas sin preparación específica de programación ni electrónica…
bueno un poco si se necesita, sobre todo si se quieren hacer montajes complejos, pero
veremos que no es necesario tener grandes conocimientos para realizar prototipos
realmente interesantes y útiles…” (p.18).
Tipos de plataforma
Arduino es una placa electrónica de hardware libre que utiliza un microcontrolador
Atmel AVR (en su mayoría) reprogramable con una serie de pines que permiten
establecer conexiones entre el controlador y los diferentes sensores, algo así como el
procesador en un PC, solo que con menos capacidad de computación pero con una
gran robustez a la hora de tomar datos de las diferentes entradas y de producir los
efectos requeridos en las diferentes salidas.
Aparte de las placas, también existen los “Shields”, que consisten circuito impreso
que tiene como función ampliar las capacidades y complementar la funcionalidad de
la placa Arduino base.
Existen muchos modelos que se han desarrollado por parte de la compañía oficial, así
como de compañías no oficiales, esto con el objetivo de que el usuario pueda obtener
la placa que más le convenga para el trabajo vaya a realizar (una con más potencia,
una con más apartados o una más simple). A continuación, se señalaran las
características de los modelos realizados por Arduino LLC (compañía oficial),
específicamente los modelos: Arduino Uno, Arduino Mega 2560, Arduino Ethernet,
Arduino Nano y Arduino Due.
Arduino Uno
Características:
El encapsulado de microcontrolador en la placa viene de dos formas: unas
placas lo llevan montado en formato DIP (Dual In-line Package), mientras
que otras placas lo traen en formato SMD.
Posee microcontrolador ATmega328P de 8bits marca Atmel (compatible
con I 2C/TWI y SPI).
La arquitectura de microcontrolador es AVR.
El microcontrolador cuenta con 28 pines E/S.
Pines E/S del microcontrolador en formato DIP
1. Pulsador RESET.
2. Puertos de entrada y salida.
3. LED pin 13.
4. Reloj oscilador.
5. LED de encendido.
6. Microcontrolador (el de la imagen está en formato DIP).
7. Entradas Analógicas.
8. Zócalo de tensión.
9. Puerto de corriente continua.
10. Regulador de tensión.
11. Chip de interface USB.
12. Puerto USB.
Arduino Mega 2560
Características más destacables con respecto del Arduino Uno son las siguientes:
El encapsulado del microprocesador viene montado en formato SMD.
Posee microcontrolador ATmega2560 marca Atmel de 8bits.
La arquitectura de microcontrolador es AVR.
Cuenta con 54 pines E/S digitales (14 compatibles con PWM).
Cuenta con 16 pines analógicos.
La memoria flash del microcontrolador tiene con una capacidad de
256KB.
La memoria SRAM del microcontrolador tiene con una capacidad de
8KB.
La memoria EEPROM del microcontrolador tiene con una capacidad de
4KB.
Arduino Ethernet
Características más destacables con respecto del Arduino Uno son las siguientes:
La placa Ethernet incorpora un zócalo de tipo RJ-45 para poder conectarse
mediante el cable adecuado (cable de par trenzado de categoría 5 o 6) a
una red de tipo Ethernet.
La placa contiene otro microcontrolador dedicado al puerto Ethernet, este
es un W5100 marca Wiznet compatible con los protocolos de conexión
TCP, UDP, ICMP, Ipv4, ARP, IGMPv2, PPPoE.
El microcontrolador W5100 tiene una velocidad de transmisión de datos
de 10Mbits/s a 100Mbits/s, a su vez, permite hasta 4 conexiones
simultáneas.
A diferencia de Arduino Uno, el LED incorporado en la placa está
conectado al pin digital 9 y no al 13.
Solo 4 pines digitales son compatibles con PWM.
Dispone de una entrada para tarjetas microSD.
No cuenta con entrada USB, por lo tanto, no cuenta con el
microcontrolador ATmega16U2.
Algunas versiones permiten la alimentación de voltaje mediante conexión
Ethernet mediante PoE.
En resumen, este modelo es muy similar al Arduino Uno, solo que permite
conexiones de red LAN a costa de perder la entrada USB por defecto.
Arduino Nano
Características más destacables con respecto del Arduino Uno son las siguientes:
Sus dimensiones son muy reducidas (0,73 pulgadas de anchura por 1,70 de
longitud), lo que la convierte en una placa ideal para formar circuitos más
complejos con otras breadboards.
El encapsulado del microcontrolador ATmega328P está en formato SMD.
A diferencia del Arduino uno, este no trae el microcontrolador
ATmega16U2, sino que cuenta con un FTDI FT232RL para el puerto
USB.
No incorpora la clavija Jack 2,1mm para la alimentación, por lo tanto, se
deberá usar el pin “Vin” o “5v” para realizar alimentar la placa.
Arduino Nano
Arduino Due
Características:
Cuenta con un microprocesador SAM3X8E marca Atmel de arquitectura
ARM Cortex-M3 de 32bits.
La velocidad del reloj del microcontrolador es de 84Mhz.
La memoria flash del microcontrolador tiene con una capacidad de
512KB.
La memoria SRAM del microcontrolador tiene con una capacidad de
96KB.
Dispone de 54 pines hembra E/S digitales (12 pines compatibles con
PWM).
Dispone de 12 entradas analógicas.
Dispone de 2 DAC (conversores digitales-analógicos).
Cuenta con 1 puerto USB tipo mini-B.
Cuenta con 1 puerto USB tipo mini-A.
Cuenta con una clavija Jack 2,1 mm para la alimentación.
Incorpora un botón RESET.
Incorpora un botón ERASE.
Cuenta con los pines habituales para funciones específicas como: “Vin”,
“GND”, “5v” y “3,3v”.
El voltaje de trabajo de la placa es de 3,3v.
El límite de voltaje para la conexión de fuentes externas es el mismo que
el de la placa Arduino Uno (6v-20v, 7v-12v recomendados).
Al igual que el Arduino Uno, esta placa cuenta con el microcontrolador
ATmega16U2 para la gestión de la conexión USB tipo mini-B.
Arduino Due
Aplicaciones
Debido a las características de la plataforma Arduino, esta se adapta muy bien para
todo tipo de proyectos de electrónica, tanto así, que con conocimiento e imaginación
se pueden lograr muchas cosas. Algunas áreas donde se aplica el uso de la plataforma
Arduino son:
Diseño y publicidad: las placas Arduino se pueden integrar como el “cerebro”
de impresoras 3D y maquinas CNC, entre otros.
Robótica: de las más recurrentes para la realización de proyectos con la placa
Arduino, con ayuda de todo tipo de sensores, servomotores y demás
elementos se pueden realizar todo tipo de robots y drones.
Domótica: otra área recurrente para la utilización de Arduino. Junto con la
placa Arduino e imaginación se pueden realizar sistemas domésticos de gran
utilidad.
Redes e IoT: otra utilidad de Arduino es la gestión inteligente de
interconexión de redes. Quizás se requiera un poco más de esfuerzo para la
realización de proyectos en esta área debido a que muchas placas carecen de
puertos de conexión de redes y a veces surge la necesidad de la integración de
shields u otros componentes extras.
Industria: útil en la automatización de procesos de producción mediante la
programación sistemas electromecánicos.
Agricultura: la placa Arduino es muy utilizada para la creación de sistemas de
monitorización y sistemas de riego “inteligentes” para los cultivos.
Educación: el área que da origen a la creación de la plataforma Arduino.
Ciencia: como es lógico la creación de sistemas inteligentes se acopla muy
bien a distintas ramas de la ciencia.
Lenguaje de programación
Según Ricardo Concepción de la página web “rjconcepcion” (2020), estipula que: “El
equipo que desarrolló la tarjeta Arduino creo un lenguaje propio para programar estas
tarjetas. Este lenguaje está basado en un lenguaje llamado Wiring.”
A su vez, el mismo autor señala que: “Wiring está escrito en los lenguajes de
programación C y C++. De allí que la sintaxis sea parecida a la usada en estos
lenguajes.”
Con esto quiere decir que el lenguaje que maneja Arduino no es directamente C y C+
+, pero si se basa en este. Por lo tanto, la sintaxis de “Wiring” se maneja de manera
muy similar a los lenguajes mencionados.
De este mismo modo para poder “plasmar” las instrucciones que se realicen al
microcontrolador de manera sencilla, Wiring cuenta con un IDE.
En la página web del autor citado anteriormente, se explica lo siguiente: “…wiring
cuenta con un IDE basado en Processing donde se puede realizar la programación de
los microcontroladores.”
“Processing es un lenguaje de programación y entorno de desarrollo basado en Java,
se usa mayormente para la producción de proyectos multimedia de diseño digital.”
Esto quiere decir que, mediante la IDE de Wiring (basado en el lenguaje Java)
podemos empezar a programar instrucciones para el microcontrolador de la placa
Arduino.
Para entender mejor este concepto, es necesario saber que es un IDE. De acuerdo con
Oscar Torrente Artero (2013), este señala lo siguiente: “Las siglas IDE vienen de
Integrated Development Environment, lo que traducido a nuestro idioma significa
Entorno de Desarrollo Integrado. Esto es simplemente una forma de llamar al
conjunto de herramientas software que permite a los programadores poder desarrollar
(es decir, básicamente escribir y probar) sus propios programas con
comodidad.”(p.129).
En resumen, para poder programar dentro de la plataforma Arduino debemos tener
conocimientos o aprender sobre los lenguajes C y C++, ya que la sintaxis a seguir
cuando escribamos la líneas del código en el IDE, estará basada en los lenguajes
anteriormente mencionados. Con respecto a Java, este no se pone en práctica para
establecer las instrucciones al microcontrolador debido a que se emplea en el diseño
del programa (IDE) donde programamos, valga la redundancia.
Para conocer más sobre los fundamentos para programar en Arduino, se ha tabulado
la sintaxis (funciones, variables y estructura) aportada por la web oficial de Arduino
(Arduino.cc):
Funciones
digitalRead()
Digital I/O digitalWrite()
pinMode()
analogRead()
Analog I/O analogReference()
analogWrite()
Zero, Due & analogReadResolution()
MKR Family analogWriteResolution()
noTone()
pulseIn()
Advanced I/O pulseInLong()
shiftIn()
shiftOut()
tone()
delay()
Time delayMicroseconds()
micros()
millis()
abs()
constrain()
map()
Math max()
min()
pow()
sq()
sqrt()
cos()
Trigonometry sin()
tan()
isAlpha()
isAlphaNumeric()
isAscii()
isControl()
isDigit()
isGraph()
Characters isHexadecimalDigit()
isLowerCase()
isPrintable()
isPunct()
isSpace()
isUpperCase()
isWhitespace()
random()
Random randomSeed()
Numbers
bit()
bitClear()
bitRead()
Bits and Bytes bitSet()
bitWrite()
highByte()
lowByte()
External attachInterrupt()
Interrupts detachInterrupt()
Interrupts interrupts()
noInterrupts()
Communication Serial
Stream
USB Keyboard
Mouse
Variables
HIGH | LOW
INPUT | OUTPUT | INPUT_PULLUP
Constants LED_BUILTIN
true | false
Floating Point Constants
Integer Constants
array
bool
boolean
byte
char
double
float
int
Data Types long
short
size_t
string
String()
unsigned char
unsigned int
unsigned long
void
word
const
Variable Scope & scope
Qualifiers static
volatile
(unsigned int)
(unsigned long)
byte()
Conversion char()
float()
int()
long()
word()
Utilities PROGMEM
sizeof()
Estructura (C++)
Sketch loop()
setup()
break
continue
do...while
else
Control Structure for
goto
if
return
switch...case
while
#define (define)
#include (include)
Further Syntax /* */ (block comment)
// (single line comment)
; (semicolon)
{} (curly braces)
% (remainder)
* (multiplication)
Arithmetic + (addition)
Operators - (subtraction)
/ (division)
= (assignment operator)
!= (not equal to)
< (less than)
Comparison <= (less than or equal to)
Operators == (equal to)
> (greater than)
>= (greater than or equal to)
! (logical not)
Boolean && (logical and)
Operators || (logical or)
Pointer Access & (reference operator)
Operators * (dereference operator)
& (bitwise and)
<< (bitshift left)
Bitwise Operators >> (bitshift right)
^ (bitwise xor)
| (bitwise or)
~ (bitwise not)
%= (compound remainder)
&= (compound bitwise and)
*= (compound multiplication)
++ (increment)
Compound += (compound addition)
Operators -- (decrement)
-= (compound subtraction)
/= (compound division)
^= (compound bitwise xor)
|= (compound bitwise or)
CONCLUSIÓN
La plataforma Arduino supuso un cambio en cuanto al manejo y aprendizaje en área
de la electrónica y programación, tanto así, que se fue todo un éxito, convirtiéndose
en una de las plataformas Open Source más populares.
De acuerdo a lo investigado, uno de los puntos fuertes de esta plataforma es la
política de Hardware libre y software libre, impulsando a toda una comunidad de
desarrolladores a compartir el conocimiento y a la realización de una infinidad de
proyectos de suma utilidad, lo cual desde mi punto de vista, es algo positivo.
En mi opinión, Arduino es un proyecto maravilloso lleno de posibilidades. Si bien,
esta plataforma queda un poco corta para trabajos que exijan gran complejidad y
procesamiento, se acopla muy bien como complemento para la recolección y
transmisión de datos debido a lo versátil que son los microcontroladores.
Por último pienso que, los institutos que se dediquen a la enseñanza de la electrónica
(y disciplinas relacionadas con esta) y cuenten con los recursos necesarios, deberían
incorporar este tipo de plataformas como métodos de enseñanza para que así los
estudiantes se vayan familiarizando en el desarrollo y diseño de sistemas electrónicos.
Referencias Bibliográficas
ÓSCAR TORRENTE ARTERO, “Arduino, Curso práctico de formación,
Primera Edición (2013).
MASSIMO BANZI, “Introducción a Arduino”, Primera Edición (2008).
JOAN RIBAS LEQUERICA, “ARDUINO PARA JÓVENES… Y NO TAN
JÓVENES” (2016).
Página web Wikipedia (2020):
https://es.wikipedia.org/wiki/Arduino#Tipos_y_especificaciones
Página web Arduino Official, “ARDUINO UNO REV3”:
https://store.arduino.cc/usa/arduino-uno-rev3
Página web Proyecto Arduino “Arduino Mega 2560”:
https://proyectoarduino.com/arduino-mega-2560/
Página web Arduino Official Store, “ARDUINO ETHERNET REV3
WITHOUT POE”: https://store.arduino.cc/usa/arduino-ethernet-rev3-without-
poe
Página web Arduino Official, “ARDUINO MEGA 2560 REV3”:
https://store.arduino.cc/usa/mega-2560-r3
Página web Arduino Official, “ARDUINO NANO”:
https://store.arduino.cc/usa/arduino-nano
Página web Arduino Official, “ARDUINO DUE”:
https://store.arduino.cc/usa/due
RICARDO CONCEPCIÓN, página web rjconception, “¿Qué lenguaje de
programación usa Arduino?”: https://www.rjconcepcion.com/podcast/que-
lenguaje-de-programacion-usa-arduino/
Página web Arduino Official, “Language Reference”:
https://www.arduino.cc/reference/en/
Página web YouTube, “ARDUINO: THE DOCUMENTARY” :
https://www.youtube.com/watch?v=1u3l_QLE9PU