Subido por Henry Garcia

Arduino

Anuncio
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
CAPÍTULO III
ARDUINO
1
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
3.1 ¿Qué es Arduino?
Una placa hardware libre que incorpora un microcontrolador reprogramable y añade
ciertos pines que permiten conectar ciertos sensores, actuadores y módulos de una forma
simple.
Placa hardware se refiere a una PCB. Las PCBs son placas echas de un material no
conductor sobre las cuales por medio de pistas de
material conductor se conectan, a través de los
caminos, los componentes electrónicos soldados a
ella. La placa Arduino no es más que una PCB que
implementa un diseño de circuitería.
Aunque existen varios modelos de Arduino los
microcontroladores de estas placas pertenecen a la
misma “familia”, dado esto su funcionamiento es
similar. todos los microcontroladores de estas placas
son de tipo AVR.
Ilustración 1 Arduino
Figura 3.1 Arduino
Fuente: https://dronprofesional.com/wpcontent/uploads/2018/04/arduino-cursos450.jpg
3.2 Origen
“El proyecto se inició en la ciudad de Ivrea, talia, en
2005, con la intención de interactuar en proyectos
escolares de forma que estos se pudieran obtener con
menor presupuesto que otros sistemas de prototipado disponibles en aquella época. Su
éxito fue reconocido con el recibimiento de una mención honrosa en la categoría
Comunidades Digitales en 2006, por la Prix Ars Electronics, además de las más de
50.000 placas vendidas hasta octubre de 2008. Actualmente, su hardware se realiza a
través de un microcontrolador Atmel AVR, siendo este que no es un requisito formal y
pudiendo ser extendido si la herramienta alternativa soporta el lenguaje Arduino y son
aceptadas por su proyecto. Considerando esta característica, muchos proyectos
paralelos se inspiran en copias modificadas con placas de expansiones, y acaban
recibiendo sus propios nombres. A pesar de que el sistema puede ser montado por el
propio usuario, los soportes técnicos tienen un servicio de venta del producto pre-
2
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
montado, a través de ellos mismo y también por distribuidores oficiales con puntos de
venta en todo el mundo.” (Garrido, 2015)
3.3 características del microcontrolador
Existen varios tipos de placas Arduino, cada
una
con
características
específicas.
No
obstante, existe un modelo “estándar” de placa.
En cuanto al encapsulado del microcontrolador
la única diferencia entre el encapsulado del
microcontrolador es que ambas tienen el mismo
modelo, pero la placa tiene diferente tipo de
montado siendo estos el formato DIP (“Dual Inline Package”) y la placa SMD lo lleva en
formato SMD (“Surface Mount Device”).
Ilustración 2 ATmega
Figura 3.2 ATmega
Fuente: https://http2.mlstatic.com/atmega328atmega328p-au-avr-atmega-328-smd-arduinonubbeo-D_NQ_NP_888601MLA20370664702_082015-F.webp
Una diferencia importante entre el formato SMD
y el DIP es que el primero está soldado a la
superficie de la placa, mientras que el segundo
está conectado a la placa mediante una serie
de pines metálicos que se pueden separar
fácilmente y que permiten la substitución del microcontrolador por otro si fuera necesario.
3.4 modelo de microcontrolador
El microcontrolador que lleva la placa es el modelo ATmega328P de la marca Atmel. La
“P” del final significa que este chip incorpora la tecnología “Picopower” la cual permite un
consumo eléctrico sensiblemente menor comparándolo con el modelo equivalente sin
“Picopower”, el Atmega328. De todas formas, aunque el ATmega328P pueda trabajar a
un voltaje menor y consumir menos corriente que el Atmega328 ambos modelos son
funcionalmente idénticos. El ATmega328P tiene una arquitectura de tipo AVR,
arquitectura desarrollada por Atmel y en cierta medida “competencia” de otras
arquitecturas como por ejemplo la PIC del fabricante Microchip. El ATmega328P
pertenece a la subfamilia de microcontroladores “megaAVR”.
3
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
3.5 memorias del microcontrolador
Memoria Flash: memoria persistente donde se almacena permanentemente el programa
que ejecuta el microcontrolador. En el caso del ATmega328P tiene una capacidad de
32KB.
Memoria SRAM: memoria volátil donde se alojan los datos que en ese instante el
programa necesita crear o manipular para su correcto funcionamiento. Estos datos suelen
tener un contenido variable a lo largo del tiempo de ejecución del programa y cada uno
es de un tipo concreto. Independientemente del tipo de dato, su valor siempre será
eliminado cuando se deje de alimentar eléctricamente al microcontrolador. Esta memoria
tiene una capacidad de 2KB.
Memoria EEPROM: memoria persistente donde se almacenan datos que se desea que
permanezcan grabados una vez apagado el microcontrolador para poderlos usar
posteriormente en siguientes reinicios. En el caso del ATmega328P esta memoria tiene
una capacidad de 1 KB.
3.6 Arduino IDE
El IDE de Arduino es un software con un lenguaje bastante simple. Fue diseñado para
ser una interfaz amigable para personas que no tienen conocimiento en el desarrollo de
software y por lo tanto es una plataforma de desarrollo bastante intuitiva. Fue desarrollado
en Java y tiene características simples destacando el uso de ciertas palabras clave y una
Ilustración 3 Arduino IDE
Figura 3.3 Arduino IDE
Fuente: propia
4
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
base con diversos códigos de programación de ciertos dispositivos básicos listos para
servir como un ejemplo además de una base de datos en la cual se encuentran librerías
para su uso.
Además del espacio en el que se escribirá el código, hay 7 botones en la parte Superior
de este: Verify, Stop, New, Open, Save, Upload y Serial Monitor. Estos sirven para
verificar si el programa tiene errores, detener la ejecución del código actual, crear un
nuevo documento, abrir un documento ya existente, enviar los datos al Arduino y el último
es un monitor para los datos serie que se mandan a través del puerto en el que el Arduino
esté conectado. En la parte inferior, existe también una consola que informa al usuario
de los errores o la ejecución del programa.
3.7 Lenguaje de programación
El lenguaje de programación utilizado por Arduino es C y C ++. Prácticamente todos los
comandos utilizados en C y C ++ se pueden utilizar para configurar el comportamiento
del circuito, lo que facilita su uso, incluso si no se tiene conocimiento sobre programación
y lenguajes, ya que este software es muy sencillo e intuitivo.
Este software compila código escrito en lenguaje C/C++ a código binario AVR.
Ya que el lenguaje Arduino no es un lenguaje como tal, sino que es simplemente un
conjunto de instrucciones C y C++ que están siendo camufladas, diseñadas para
simplificar el desarrollo de programas en esta plataforma. Esto significa que cuando
estamos escribiendo nuestro programa en lenguaje Arduino, en realidad estamos
programando en lenguaje C/C++ simplificado.
3.8 C Y C++
C es un lenguaje de programación creado por
Dennis Ritchie entre 1969 y 1972 en los
Laboratorios Bell. C es apreciado por la eficiencia
del código que produce y es el lenguaje de
Ilustración 4 Lenguaje C
programación más popular para crear software
Figura 3.4 Lenguaje C
de sistemas, aunque también se utiliza para crear
Fuente:
https://es.wikipedia.org/wiki/C_(lenguaje_de
_programaci%C3%B3n)#/media/File:The_C
_Programming_Language_logo.svg
aplicaciones. Se trata de un lenguaje de tipos de
datos estáticos, de medio nivel, ya que dispone de
5
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
las estructuras típicas de los lenguajes de alto nivel, pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel. Tiene un núcleo
del lenguaje simple, con funciones matemáticas y de manejo de archivos, proporcionadas
por bibliotecas. Es un lenguaje muy flexible que permite programar con múltiples estilos
además de tener Acceso a memoria de bajo nivel mediante el uso de punteros. Un
conjunto reducido de palabras clave. Lenguaje muy eficiente puesto que es posible
utilizar sus características de bajo nivel para realizar implementaciones óptimas. A pesar
de su bajo nivel es el lenguaje más usado en existencia, habiendo compiladores para
casi todos los sistemas conocidos.
C++ es un lenguaje de programación, creado a mediados de 1980
por Bjarne Strousstrup, como extensión del lenguaje C. Este
lenguaje abarca tres paradigmas de la Programación Estructurada,
Programación Genérica, Programación Orientada a Objetos, C++ es
un lenguaje versátil, potente y general. La intención de su creación
fue extender al lenguaje de programación C a la manipulación de
objetos. En ese sentido el C++ es un lenguaje híbrido.
Ilustración 5 C++
Figura 3.5 C++
Fuente:
https://es.wikipedia.org/wi
ki/Archivo:ISO_C%2B%2
B_Logo.svg
Posteriormente se añadieron facilidades de programación genérica
y programación orientada a objetos. Una particularidad del C++ es
la posibilidad de redefinir los operadores, y de poder crear nuevos
tipos que se comporten como tipos fundamentales.
El nombre "C++" fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue
utilizado por primera vez fuera de un laboratorio científico.
3.9 Placas Arduino
Arduino Mega 2560
Placa basada en el microcontrolador ATmega2560. Tiene 54 pines de entrada/salidas
digitales 16 entradas analógicas y 4 receptores/transmisores serie TTL-UART. Consta de
una memoria Flash de 256 Kilobytes (de los cuales 8 están reservados para el
bootloader), una memoria SRAM de 8 KB y una EEPROM de 4 KB. Su voltaje de trabajo
es igual al del modelo UNO: 5 V.
Arduino Mega ADK
6
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
Placa muy similar a la Mega 2560. La diferencia principal está en que la Mega
ADK es capaz de funcionar como un dispositivo de tipo “host USB”. En una comunicación
USB entre diferentes dispositivos siempre existe uno que actúa como “maestro” y el otro
–u otros– que actúan como “esclavos”. El “host” es el único que puede iniciar y controlar
la transferencia de datos entre el resto de dispositivos conectados, mientras que los
“periféricos” tan solo pueden responder a las peticiones hechas por el “host” y poca cosa
más. Los dispositivos “host” disponen de un conector USB de tipo A, y los dispositivos
“periféricos” disponen de un conector USB de tipo B, mini-B o micro-B. Un “host” típico
es un computador, al cual se le pueden conectar varios “periféricos”, como lápices de
memoria, cámaras de fotos o video, teléfonos móviles de última generación, etc. La placa
Arduino ADK puede funcionar como periférico USB igual que el resto de placas Arduino
pero también como host USB.
Arduino Ethernet
Al igual que el modelo UNO, la placa Ethernet está basada en el microcontrolador
ATmega328P, y también tiene el mismo número de pines de entrada/salida digitales y de
entradas analógicas. El resto de características también es muy similar al modelo UNO.
La mayor diferencia que existe con la placa UNO es que la placa Ethernet incorpora un
zócalo de tipo RJ-45 para poder conectarse mediante el cable adecuado a una red de
tipo Ethernet.
Arduino Fio
Esta placa contiene un ATmega328P funcionando a 3,3 V y a 8
MHz. Tiene 14 agujeros que pueden utilizarse como pines de
entrada/salida digital también tiene 8 agujeros preparados para
utilizarse como entradas analógicas y un botón de reinicio, todo
ello dentro de un tamaño muy reducido.
Ilustración 6 ARDUINO 1
Figura 3.6 ARDUINO1
Fuente: https://cdntienda.bricogeek.com/2827
-thickbox_default/arduinouno.jpg
Arduino Pro
Esta placa viene en dos “versiones”: ambas contienen un
microcontrolador Atmega328P SMD, pero una funciona con 3,3
V y a 8 MHz y la otra funciona con 5 V y a 16 MHz. Dispone de
14 agujeros pensados para funcionar como pines de
7
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
entrada/salida digital, 6 agujeros para entradas analógicas, agujeros para montar un
conector de alimentación de 2,1 mm, un zócalo JST para una batería LiPo externa, un
interruptor de corriente, un botón de reinicio, un conector ICSP y los pines necesarios
para conectar un adaptador o cable USB-Serial y así poder programarla además de
alimentarla directamente vía USB.
Arduino Lilypad
La placa Arduino LilyPad está diseñada para ser
cosida a material textil.
Permite
además
conectarle
mediante
hilos
conductores fuentes de alimentación, sensores y
actuadores de forma que se puedan “llevar encima”,
haciendo posible la
creación de vestidos y ropa “inteligente”. Además, se
puede
Ilustración 7 Lyly pad
Figura 3.7 Lyly pad
Fuente:
https://cdn.sparkfun.com//assets/parts/1/
0/6/5/0/13342-01.jpg
lavar.
Esta
placa
incorpora
el
microcontrolador ATmega328V una versión de bajo
consumo del Atmega328P, el cual se programa
acoplando a la placa un adaptador o cable
USBSerie.
Arduino Nano
La característica más destacable de esta placa es que a pesar de su tamaño, sigue
ofreciendo el mismo número de salidas y entradas digitales y analógicas que la Arduino
UNO y la misma funcionalidad que esta. La consecuencia más evidente de su reducido
tamaño es que carece del conector de alimentación de 2,1 mm e incorpora un conector
USB mini-B en vez del conector USB tipo B. Otra diferencia es que, aunque la placa
Arduino Nano se sigue basando en el microcontrolador ATmega328P, el conversor USBSerie que lleva incorporado es el chip FTDI FT232RL y no el ATmega16U2.
Arduino Mini
Esta placa es muy parecida a la placa Arduino Nano: está basada igualmente
en el microcontrolador ATmega328P SMD funcionando a 16MHz, tiene 14 pines de
8
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
entrada/salidas digitales y 8 entradas analógicas. Y al igual que la placa Arduino Nano,
la Arduino Mini está especialmente pensada para conectarla a una breadboard mediante
los pines que sobresalen de su parte posterior, pudiendo formar parte así de un circuito
complejo de una manera relativamente fija. La diferencia más importante con la placa
Arduino Nano está en que la Arduino Mini no incorpora ningún chip conversor USB-Serie.
Debido a ello, para su programación se necesita utilizar un adaptador USB-Serial externo.
En concreto, se recomienda el uso de uno específico y oficial: el llamado “Mini USB”,
basado en el chip FTDI FT232RL.
Arduino Pro Mini
Esta placa tiene el mismo tamaño que una placa Arduino Mini, y una disposición
compatible de pines. Viene en dos “versiones”: ambas contienen un microcontrolador
ATmega168 pero una funciona con 3,3 V y a 8 MHz y la otra funciona con 5 V y a 16
MHz. También incorpora un botón de reinicio y los pines necesarios para conectar un
adaptador o cable USB-Serie y así poder programarla además de alimentarla
directamente vía USB. También se puede alimentar eléctricamente mediante una fuente
externa conectada al pin “Vcc”. Esta placa está pensada para instalarse de forma
semipermanente en objetos o exhibiciones. Por eso no viene con los pines montados,
sino que hay colocar en los agujeros los pines-hembra de plástico “a mano”. De esta
manera, se permite el uso de diferentes tipos de configuraciones según las necesidades.
Arduino Leonardo
La gran novedad de esta placa es que el
microcontrolador
ATmega32U4,
que
el
cual
incorpora
tiene
es
el
todas
las
funcionalidades que ofrece el Atmega328P pero
incorpora además 0,5 kilobytes más de memoria
Ilustración 8 Arduino leonardo
SRAM y sobre todo, soporta comunicaciones USB
Figura 3.8 Arduino leonardo
directamente. Otras diferencias con la placa UNO
Fuente:
https://cdn.sparkfun.com//assets/parts/1/0/6/
5/0/13342-01.jpg
es que la placa Leonardo incorpora un pin-hembra
digital más que la UNO para ser usado como
salida PWM y 6 entradas analógicas extra más, las cuales están situadas físicamente en
los pines hembras digitales marcados con un puntito en el exterior de la placa.
9
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
Arduino Micro
Esta placa ofrece las mismas funcionalidades que la Arduino Leonardo tiene el mismo
microcontrolador ATmega32U4 a 16MHz, los mismos 32KB de memoria Flash y 2,5 KB
de memoria SRAM, el mismo bootloader, el mismo voltaje de trabajo 5 V, ideal para ser
ubicado sobre una breadboard sin ocupar apenas espacio. Al igual que el modelo
Leonardo, se puede programar a través de una conexión USB, pudiendo funcionar
además como teclado o ratón simulado.
Arduino Due
Esta
placa
pertenece
a
una
familia
totalmente distinta de la del resto de
placas Arduino. Incluye el microcontrolador
SAM3X8E, el cual, aunque fabricado
también por Atmel, es de una arquitectura
Ilustración 9 Arduino due
Figura 3.9 Arduino DUE
interna muy diferente a la AVR y, además,
sus registros son cuatro veces más grandes
de lo habitual en las otras placas de 32 bits.
Fuente: https://images-na.ssl-imagesamazon.com/images/I/51Fgzvx5l6L._SX425_.jpg
Su velocidad de reloj está también muy por
encima del resto de placas Arduino, 84 MHz.
Además, el microcontrolador SAM3X8E dispone
de
muchas más memorias
concretamente, 96 KB de SRAM y 512 KB de memoria Flash y también de un circuito
especializado llamado controlador “DMA” que permite a la CPU acceder a la memoria de
una manera mucho más rápida.
101
Esta placa tiene los pines y aspecto de un Arduino UNO pero con un procesador de 32
bits, Curie de Intel de 31 MHz y doble core, que corre a 3.3V. Pero además de cumplir
con la norma Arduino tambien incorpora varias cosas de lo mas interesantes, incluidas
en el procesador entre los que se cuentan conexión Bluetooth LE 4.0 integrada. Otra de
las características de esta placa y procesador es que incorpora un giróscopo
10
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
acelerómetro de 6 grados de libertad que permite hacer proyectos muy interesantes y
nuevas posibilidades.
3.10 Tabla comparativa de Arduino
Tabla 1 Tabla comparativa de Arduino
nombre
procesador
Voltaje
Veloci Entradas/sal
I/O, PMW
EEPROM
DIGITALES
[kB]
6/0
14/4
-
1/0
3/2
0.5
de
dad
idas
entrada
del
analógicas
CPU
101
Gemma
LilyPad
Intel® Curie
3.3 V/
32MH
7-12V
z
3.3 V /
8
4-16 V
MHz
ATmega168V
2.7-5.5
8MHz
6/0
14/6
0.512
ATmega328P
V/
2.7-5.5
8
4/0
9/4
1
V/
MHz
4/0
9/4
1
16/0
54/15
4
12/0
20/7
1
7/1
8/4
-
ATtiny85
2.7-5.5
V
LilyPad
ATmega328P
SimpleSnap
2.7-5.5
V
LilyPad
ATmega32U4
3.3 V /
8
3.8-5 V
MHz
5 V / 7-
16
12 V
MHz
5 V / 7-
16
12 V
MHz
SAMD21
3.3 V/
48MH
Cortex-M0+
5V
z
USB
Mega 2560
Micro
MKR1000
ATmega2560
ATmega32U4
11
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
Pro
ATmega168
3.3 V /
8
ATmega328P
3.35-12
MHz
V
16
5 V / 5-
MHz
6/0
14/6
0.512
1
12 V
Pro Mini
ATmega328P
3.3 V /
8
3.35-12
MHz
V
16
5 V / 5-
MHz
6/0
14/6
1
6/0
14/6
1
6/1
14/10
-
12/2
54/12
-
-
-
1
6/0
14/4
1
12/0
20/7
1
16/0
54/15
4
8/0
14/6
1
8/0
14/6
0.512
12 V
Uno
Zero
Due
Esplora
Ethernet
Leonardo
Mega ADK
Mini
Nano
Yùn
ATmega328P
5 V / 7-
16
12 V
MHz
3.3 V /
48
7-12 V
MHz
3.3 V /
84
7-12 V
MHz
5 V / 7-
16
12 V
MHz
5 V / 7-
16
12 V
MHz
5 V / 7-
16
12 V
MHz
5 V / 7-
16
12 V
MHz
5 V / 7-
16
9V
MHz
ATmega168
5 V / 7-
16
ATmega328P
9V
MHz
ATmega32U4
5V
16
ATSAMD21G18
ATSAM3X8E
ATmega32U4
ATmega328P
ATmega32U4
ATmega2560
ATmega328P
AR9331 Linux
1
12/0
20/7
1
MHz
400M
Hz
12
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
Arduino
ATmega32u4
5V
Robot
16
6/0
20/6
MHz
1 KB
(ATmega32u4)
512 Kbit (I2C)
MKRZero
SAMD21
3.3 V
Cortex-M0+
48
7 (ADC
MHz
8/10/12
22/12
32bit low power
bit)/1
ARM MCU
(DAC 10 bit)
No
Tabla 3.1 Arduino 1
Fuente: http://www.clipartpal.com/_thumbs/pd/crux_black.png
Tabla 2 Tabla comparativa de Arduino 2
nombre
SRAM [kB]
Flash [kB]
USB
UART
101
24
196
Regular
-
Gemma
0.5
8
Micro
0
LilyPad
1
16
-
-
LilyPad
2
32
-
-
2.5
32
Micro
-
Mega 2560
8
256
Regular
4
Micro
2.5
32
Micro
1
MKR1000
32
256
Micro
1
Pro
1
16
-
1
2
32
Pro Mini
2
32
-
1
Uno
2
32
Regular
1
Zero
32
256
2 Micro
2
Due
96
512
2 Micro
4
Esplora
2.5
32
Micro
-
Ethernet
2
32
Regular
-
Leonardo
2.5
32
Micro
1
SimpleSnap
LilyPad
USB
13
LOCALIZADOR DE COCHES GPS PROGRAMADO CON GSM
Mega ADK
8
256
Regular
4
Mini
2
32
-
-
Nano
1
16
Mini
1
2
32
2.5
32
Micro
1
16MB
64MB
Arduino
2.5 KB
32 KB
1
1
Robot
(ATmega32u4)
(ATmega3
1
1
Yùn
2u4) o con
4 KB
usando el
bootloader
MKRZero
32 KBARM
256 KB
MCU
Tabla 3.2 Arduino 2
Fuente: http://www.clipartpal.com/_thumbs/pd/crux_black.png
14
Descargar