You are on page 1of 10

¿Qué es Arduino?

Arduino es una compañía de hardware libre, la cual


desarrolla placas de desarrollo que integran un
microcontrolador y un entorno de desarrollo (IDE),
diseñado para facilitar el uso de la electrónica en
proyectos multidisciplinarios.
El hardware consiste en una placa de circuito
impreso con un microcontrolador, usualmente Atmel
AVR, y puertos digitales y analógicos de entrada/salida, los cuales pueden
conectarse a placas de expansión (shields) que amplían las características de
funcionamiento de la placa arduino.
Por otro lado, el software consiste en un entorno de desarrollo (IDE) basado en el
entorno de Processing y lenguaje de programación basado en Wiring, así como en
el cargador de arranque (bootloader) que es ejecutado en la placa. El
microcontrolador de la placa se programa a través de un computador, haciendo uso
de comunicación serial mediante un convertidor de niveles RS-232 a TTL serial.
Placas:
 Arduino Galileo15 Placas de Expansión (Shields):
 Arduino Uno
 Arduino GSM Shield
 Arduino Leonardo
 Arduino Ethernet Shield
 Arduino Due
 Arduino WiFi Shield
 Arduino Yún
 Arduino Wireless SD Shield
 Arduino Micro
 Arduino USB Host Shield
 Arduino Esplora
 Arduino Motor Shield
 Arduino Mega ADK
 Arduino Wireless Proto Shield
 Arduino Ethernet
 Arduino Proto Shield
 Arduino Mega 2560
 Arduino Robot
 Arduino Mini
 Arduino Nano
 Arduino Pro Mini
 Arduino Fio
 Arduino Pro

Accesorios:
 TFT LCD Screen
 USB/Serial Light Adapter
 Arduino ISP
Ilustración 1- Arduino
 Mini USB/Serial Adapter
UNO R3
Arduino UNO
Entradas y salidas:
Cada uno de los 14 pines digitales se puede usar como entrada o como salida.
Funcionan a 5V, cada pin puede suministrar hasta 40 mA. La intensidad máxima de
entrada también es de 40 mA. Cada uno de los pines digitales dispone de una
resistencia de pull-up interna de entre 20KΩ y 50 KΩ que está desconectada, salvo
que nosotros indiquemos lo contrario.

Pines especiales de entrada y salida:


 RX y TX: Se usan para transmisiones serie de señales TTL.
 Interrupciones externas: Los pines 2 y 3 están configurados para generar una
interrupción en el atmega. Las interrupciones pueden dispararse cuando se
encuentra un valor bajo en estas entradas y con flancos de subida o bajada de la
entrada.
 PWM: Arduino dispone de 6 salidas destinadas a la generación de señales PWM:
3, 5, 6, 9, 10, y 11, de 8 bit con la función analogWrite().
 SPI: Los pines 10, 11, 12 y 13 pueden utilizarse para llevar a cabo
comunicaciones SPI, que permiten trasladar información full dúplex en un entorno
Maestro/Esclavo.
 I2C: Permite establecer comunicaciones a través de un bus I2C. El bus I2C es un
producto de Phillips para interconexión de sistemas embebidos.
Pines de alimentación
 5V: La alimentación regulada utilizada para alimentar el microcontrolador y otros
componentes de la placa. Esta puede venir de VIN a través de un regulador en
placa o ser proporcionada por USB u otra fuente regulada de 5V.
 3V3: (solo en el Diacemila) Una fuente de 3.3 voltios generada por el chip FTDI
de la placa.
 GND: Pines de tierra.
Lenguaje de programación Arduino
La plataforma Arduino se programa mediante el uso de un lenguaje propio
basado en el lenguaje de programación de alto nivel Processing que es similar a
C++.
Funciones básicas y operadores
Arduino está basado en C y soporta todas las funciones del estándar C y algunas
de C++. A continuación, se muestra un resumen con la estructura y sintaxis del
lenguaje Arduino:
Sintaxis básica
 Delimitadores:;, {}
 Comentarios: //, /* */
 Cabeceras: #define, #include
 Operadores aritméticos: +, -, *, /, %
 Asignación: =
 Operadores de comparación: ==, !=, <, >, <=, >=
 Operadores Booleanos: &&, ||, !
 Operadores de acceso a punteros: *, &
 Operadores de bits: &, |, ^, ~, <<, >>
 Operadores compuestos:
 Incremento y decremento de variables: ++, --
 Asignación y operación: +=, -=, *=, /=, &=, |=
Estructuras de control
 Condicionales: if, if...else, switch case
 Bucles: for, while, do. while
 Bifurcaciones y saltos: break, continue, return, goto
Variables
En cuanto al tratamiento de las variables también comparte un gran parecido con
el lenguaje C.
Constantes Cualificadores y ámbito de las
variables
 HIGH/LOW: representan los
niveles alto y bajo de las  static, volatile, const.
señales de entrada y salida.
Utilidades
Los niveles altos son aquellos
de 3 voltios o más.  sizeof()
 INPUT/OUTPUT: entrada o Funciones básicas
salida.
E/S digital
 false (falso): Señal que
 pinMode(pin, modo).
representa al cero lógico. A
diferencia de las señales  digitalWrite(pin, valor).
HIGH/LOW, su nombre se
escribe en letra minúscula.  int digitalRead(pin).

 true (verdadero): Señal cuya E/S analógica


definición es más amplia que la  analogReference(tipo)
de false. Cualquier número
entero diferente de cero es  int analogRead(pin)
"verdadero", según el álgebra  analogWrite(pin, valor)
de Boole, como en el caso de -
200, -1 o 1. Si es cero, es E/S avanzada
"falso".  shiftOut(dataPin, clockPin,
Tipos de datos bitOrder, valor)

 void, boolean, char, unsigned  unsigned long pulseIn(pin,


char, byte, int, unsigned int, valor)
word, long, unsigned long, float, Tiempo
double, string, array.
 unsigned long millis()
Conversión entre tipos
 unsigned long micros()
Estas funciones reciben como
argumento una variable de  delay(ms)
cualquier tipo y devuelven una
 delayMicroseconds(microsegu
variable convertida en el tipo
ndos)
deseado.
 char(), byte(), int(), word(),
long(), float()
Matemáticas Interrupciones externas
 min(x, y), max(x, y), abs(x),  attachInterrupt(interrupción,
constrain(x, a, b), map(valor, función, modo)
fromLow, fromHigh, toLow,
 detachInterrupt(interrupción)
toHigh), pow(base, exponente),
sqrt(x) Interrupciones
Trigonometría  interrupts(), noInterrupts()
 sin(rad), cos(rad), tan(rad) Comunicación por puerto serie
Números aleatorios Las funciones de manejo del puerto
serie deben ir precedidas de la
 randomSeed(semilla), long
palabra "Serial" aunque no
random(máx), long
necesitan ninguna declaración en la
random(mín, máx)
cabecera del programa. Por esto se
Bits y Bytes consideran funciones base del
lenguaje. Estas son las funciones
 lowByte(), highByte(),
para transmisión serial:
bitRead(), bitWrite(), bitSet(),
bitClear(), bit()  begin(), available(), read(),
flush(), print(), println(), write()
Modulo Bluetooth
Son módulos muy populares para aplicaciones con microcontroladores PIC y Arduino. Se
trata de dispositivos relativamente económicos y que habitualmente se venden en un
formato que permite insertarlos en un protoboard y cablearlo directamente a cualquier
microcontrolador, incluso sin realizar soldaduras a continuación se presenta su
funcionamiento y como configurarlo:

 Compatible con el protocolo Bluetooth V2.0.


 Voltaje de alimentación: 3.3VDC – 6VDC.
 Voltaje de operación: 3.3VDC.
 Baud rate ajustable: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.
 Tamaño: 1.73 in x 0.63 in x 0.28 in (4.4 cm x 1.6 cm x 0.7 cm)
 Corriente de operación: < 40 mA
 Corriente modo sleep: < 1mA

Utilizando la librería Software Serial, se puede usar cualquier pin digital del arduino como
TX y RX. De no usar esta librería, vamos a tener que usar los pines 0 y 1 para la comunicación.
Esto nos puede traer el inconveniente de tener que desconectar el bluetooth para cargar el
programa y conectarlo de nuevo una vez que compilo. Esto se debe a que los pines de
comunicación 0 y 1 son los que se utiliza el arduino para la conexión USB.
Recordar que la conexión es siempre cruzada, El pin RX del módulo Bluetooth va al pin TX
del arduino y viceversa. El resto de la conexión corresponde a la alimentación y está
indicada en el módulo, vcc y gnd.

Ilustración 2 Conexión Bluetooth - Arduino


Podemos cambiar las configuraciones de velocidad de transmisión de datos, la
contraseña del módulo, etc. mediante un protocolo llamado comandos AT. Para
poder hacerlo es necesario que el HC-06 NO este emparejado ni siendo usado
por ningún dispositivo. El siguiente programa sirve para configurar cada uno de
los ítems disponibles, a medida que se va desarrollando se va explicando. Todo lo
que está en color ROJO es lo que hay que hay que modificar si así lo queremos.

/*Cambio de configuración del módulo bluetooth mediante comandos AT


Para ello el modulo no debe estar vinculado con ningún dispositivo
Bluetooth, en mi caso el led debe estar en modo intermitente, si esta
Vinculado aparece encendido de forma permanente*/
int contador=1;
void setup()
{
//Led 13 para indicar final de operacion de configuración AT
pinMode(13,OUTPUT);
//Velocidad del modulo bluetooth, 9600 por defecto
Serial.begin(9600);
//Apagamos el led 13
digitalWrite(13,LOW);
}
void loop()
{
//Es para realizar los cambios una sola vez
while (contador==1)
{
//Indicacion de tiempo de espera iniciado
digitalWrite(13,HIGH);
/*Tiempo de espera de 15 segundos (prudencial, se puede cambiar, depende de lo que
tardes
En volver a conectarlos) para reconectar cables RX y TX del modulo bluetooth
A la placa Arduino ya que para programar esta deben estar desconectados*/
delay(15000);
//Indicacion de tiempo de espera finalizado
digitalWrite(13,LOW);
//Iniciamos comunicacion con modulo bluetooth mediante comandos AT
Serial.print("AT");
//Espera de 1 segundo según datasheet entre envio de comandos AT
delay(1000);
//Cambio de nombre donde se envia AT+NAME y seguido el nombre que deseemos
Serial.print("AT+NAMEpatagoniatec");
//Espera de 1 segundo según datasheet entre envio de comandos AT
delay(1000);
/*Cambio de la velocidad del modulo en baudios
Se envia AT+BAUD y seguido el numero correspondiente:

1 --> 1200 baudios


2 --> 2400 baudios
3 --> 4800 baudios
4 --> 9600 baudios (por defecto)
5 --> 19200 baudios
6 --> 38400 baudios
7 --> 57600 baudios
8 --> 115200 baudios

*/
Serial.print("AT+BAUD4");
//Espera de 1 segundo según datasheet entre envio de comandos AT
delay(1000);
//Configuracion Password, se envia AT+PIN y seguido password que queremos
Serial.print("AT+PIN1234");
//Espera de 1 segundo según datasheet entre envio de comandos AT
delay(1000);
//Mostramos tanto por puerto serial y por led la finalizacion de la
//configuración AT del modulo bluetooth
Serial.print("OK Cambios Realizados correctamente");
digitalWrite(13,HIGH);
//Al tener contador=2 ya no se vuelve a repetir el while, a no ser que
//se produzca un reset, por tanto comenzaria un nuevo cambio de configuración
contador=2;
}
}

Una vez conectado y configurado el modulo, lo unico que nos falta es una
programa para android que envié datos vía bluetooth y un sketch para
arduino que nos muestre en la pc los datos que recibimos vía bluetooth o
al revés, que envié lo que nosotros le escribimos en el puerto serie.
Ejemplo sencillo de programación en Arduino
El primer paso antes de comprobar que la instalación es correcta y empezar a trabajar con
Arduino, es usar ejemplos prácticos que vienen disponibles con el dispositivo. Se recomienda
abrir el ejemplo “led_blink” el cual crea una intermitencia por segundo en un led conectado en
el pin 13.

El código necesario es el siguiente:

# define LED_PIN 13
Void setup () {
// Activado del contacto 13 para salida digital
pinMode (LED_PIN, OUTPUT);
}
// Bucle infinito
void loop () {
// Encendido del diodo LED enviando una señal alta
digitalWrite (LED_PIN, HIGH);
// Tiempo de espera de 1 segundo (1000 ms)
delay (1000);
// Apagado del diodo LED enviando una señal baja.
digitalWrite (LED_PIN, LOW);
// Tiempo de espera de 1 segundo
delay (1000);
}

3 Interfaz del Software de Arduino (Versión 1.6.7)

You might also like