Cabecera PRINCIPAL

Claves: técnico, redes, networks, microsoft, open source, gnu, programador, software, hardware, desarrolladores

Juan Enrique Gómez Péérez

sábado, 6 de agosto de 2016

Nuestro primer proyecto con Arduino

Bueno ya hemos tenido bastante teoría, vamos con la parte divertida. Vamos a tocar cacharritos.
Nuestro primer proyecto será simplemente un proyecto que enciende y apaga una luz, es algo extremadamente sencillo, pero nos permitirá explicar algunos conceptos importantes como: subir código al arduino, utilizar un puerto de entrada y salida, y conectar un led al sistema.

Objetivo:
El experimento es razonablemente sencillo para comenzar. Se trata de hacer que un led se encienda y apague cada 500 milisegundos o cada medio segundo que es lo mismo.

Materiales necesarios:


  • Placa Arduino UNO
  • Placa de pruebas (también llamada  breadboard o protoboard)
  • Un LED de color 
  • Resistencia de 330ohm
  • Cablecitos de conexión
Aquí os dejo una foto:




Esquema:
Primero vamos a entender el esquema del proyecto que vamos a utilizar.


Lo que vamos a hacer es un pequeño programa que en un bucle infinito encienda el led, espere 500 milisegundos, lo apague, espere otros 500 milisegundos y vuelva al principio.

Para encender y apagar el led utilizaremos uno de los puertos de entrada y salida de la placa arduino. Simplificándolo mucho, este puerto puede cambiar de estado y presentar en este un valor de tensión de -5V hasta +5V y hasta 40mA.
Con esto como podéis ver el esquema es muy sencillo, lo que vamos a hacer es conectar un led al puerto 13 de la placa arduino, que nos dará estos +5V, y la otra pata del led a GND lo que cerrará el circuito y hará que se encienda el led.

TIP: ¿Por que tenemos que poner una resistencia entre la salida digital (pin 13 del arduino) y la patilla del led?

La principal razón es para no "quemar" el led. El led es un diodo y nuestro puerto de arduino nos va a enviar 5V en esta patilla con hasta 40mA lo que puede fundir nuestro led en un segundo. La resistencia lo que va a hacer es dividir la tensión que tenemos en el led haciendo de esta manera que nunca lleguemos a ese máximo teórico del led y no los carguemos. El punto está en calcular cual debería ser la resistencia a utilizar, el consejo es que no utilicemos menos de 330ohm, si usamos una superior lo que veremos es que sigue luciendo pero con menor intensidad.

TIP: Cual es el "positivo" y cual el "negativo" del LED. Recordar esto, la patilla larga de los led es el anodo positivo, y la más corta pues el negativo. Y ya sabéis el positivo a los 5V y el negativo a GND, pero nunca os olvidéis de esa resistencia que va en serie.

Bien vamos a conectar entonces:

  • Utilizaremos un cable (rojo a ser posible) desde el pin 13 de la placa arduino a una fila de la protoboard
  • En la misma fila de la protoboard conectaremos la resistencia de entre 330ohm a 1kohm el valor que queramos
  • En la misma fila del otro extremo de la resistencia conectaremos el ánodo positivo (la pata larga) del led
  • La otra pata del led la conectaremos a otra fila diferente no usada (en mi caso a la columna negativa de la protoboard)
  • En la misma fila del cátodo negativo del led o en la columna de negativo de la protoboard como mi caso, conectaremos un cable hasta el pin GND de Arduino

Bien ya tenemos las conexiones, ahora vamos a preparar nuestro pequeño programa.

Programa:

Abrimos el IDE de nuestro arduino y pegamos el siguiente código:


int pinRojo = 13;                  // El LED rojo lo vamos a controla con el pin 13

void setup()                       // lo ejecutamos solo una vez al iniciar la placa
{
  pinMode(pinRojo, OUTPUT);        // configuramos el pin como Salida (OUTPUT)
}

void loop()                        // ejecutamos en un bucle infinito
{
  digitalWrite(pinRojo, HIGH);     // Encendemos el LED rojo
  delay(500);                      // esperamos 500 ms o medio segundo
  digitalWrite(pinRojo, LOW);       // Apagamos el LED rojo
  delay(500);                      // esperamos medio segundo
}                                  // reeeeeeeeepetimos

Como podéis ver el programa es bastante sencillo.


  • En primer lugar lo que haremos es definir en una variable el número del pin digital que vamos a utilizar en la placa arduino para encender y apagar el led. En este caso el 13.
  • Después de esto dentro del "void setup" inicializamos los parámetros de la placa que queramos, en nuestro caso vamos a configurar el pin 13 (el que definimos en la variable del paso anterior) como de tipo salida (OUTPUT). Ya veremos más adelante que significa esto.
  • A partir de aquí entramos en un loop infinito en el que se ejecutan los siguientes pasos:
    • Ponemos el pin en alto, o para entendernos con +5V
    • Esperamos 500 ms (esto es la instrucción delay)
    • Ponemos el pin en bajo, o para entendernos en +0V
    • Esperamos otros 500ms o medio segundo
    • Volvemos al paso inicial
Como podéis ver es algo extremadamente sencillo lo que estamos haciendo. Os animo a que hagáis vuestra primera práctica y me contéis que tal os ha ido.

Si os animáis os propongo los siguientes retos, que resolveré en el próximo articulo:

  • Cambiar el proyecto actual del pin 13 al pin 12, ¿os funciona? ¿como lo habéis hecho?
  • Añadir un par de LEDs mas de otro color y hacer que se enciendan y apaguen  del mismo modo

Disfrutar, cualquier duda estoy a vuestra disposición.

Saludos.

martes, 26 de julio de 2016

Materiales principales para Arduino

En nuestros laboratorios utilizaremos placas Arduino como componente principal. Como explicaba en mi primer post esto es debido a su extremada sencillez, que son muy muy económicas, y sobre todo que existe un enorme ecosistema de proyectos y trabajo hecho en Internet que facilitará enormemente nuestro objetivo.

Arduino
Es un proyecto opensource que se inició por parte de unos estudiantes en la universidad de Ivrea, El equipo de desarrollo de la placa está formado por seis estudiantes principales: Massimo Banzi, David Cuartelles, Tom Igoe, Gianluca Martino, David Mellis y Nicolas Zambetti.
El proyecto surge como una queja de Massimo sobre lo dificil que es encontrar placas con micro controladores baratas y sencillas de utilizar. Durante una visita del ingeniero español David Cuartielles a la universidad Italiana, Massimo discutió con David esta situación lo que les llevó a tomar la decisión de realizar ellos mismos un diseño para resolver este problema. Tan solo le llevó dos días a Mellis finaliar el código para la placa, y 3 días más diseñar la placa que llamarían Arduino.

La plataforma Arduino
Arduino se ha convertido en la plataforma más popular en la actualidad en todo el mundo. Ha evolucionado en diferentes versiones, desde la primera versión Arduino UNO (en la que trabajaremos nosotros) hasta sistemas más actuales especializados en proyectos de Internet of Things o incluso Wearables (por ejemplo relojes inteligentes).

Arduino es un proyecto Open Source de hardware que proporciona diferentes interfaces de tipo digital y analógico. El sistema se desarrolla sobre lenguaje C y se proporciona una herramienta de desarrollo (IDE) a través de la que se escribe el código, se compila, sube a la placa y ejecuta.

Versiones Arduino
Para nuestros proyectos y laboratorios utilizaremos principalmente la placa Arduino UNO aunque es posible que en algún caso alguna de las prácticas se realicen sobre el modelo denominado Arduino 101.

Arduino UNO: es la placa inicial del proyecto y es razonablemente simple. Se basa en el procesador de Atmel ATMEGA328P. Este procesador nos permite disponer de 14 pines de entrada y salida que nos permitirán conectarnos con el mundo exterior, de estos 14, 6 de ellos proporcionan una salida de tipo PWM (ya veremos para que sirve y como se configura.
Las características principales son:

MicrocontroladorATmega328P
Voltaje5V
Voltaje entrada (recomendado)7-12V
Voltaje entrada (límite)6-20V
Pins I/O digitales14 (6 de ellos con salida PWM)
Pins digitales PWM I/O 6
Pins entrada analógicos6
Tensión DC por Pin I/O 20 mA
Tensión DC por Pin 3.3V50 mA
Memoria Flash32 KB (ATmega328P)
0.5 KB usados por el bootloader
SRAM2 KB (ATmega328P)
EEPROM1 KB (ATmega328P)
Velocidad de Reloj16 MHz


Arduino 101: Esta nueva revisión de la placa se basa en un microprocesador mucho más moderno en este caso de Intel. El procesador dispone de dos cores y se denomina Intel Curie. Es una placa mucho más moderna, basada en tecnología Intel de 32-bits y que mantiene en gran medida la compatibilidad con los sistemas originales, en la mayoría de los casos solo tendremos que actualizar nuestro IDE para re-compilar nuestro software. Esta placa la utilizaremos en situaciones muy limitadas y concretas, aunque en los laboratorios intentaremos siempre comentar la especificidad en esta placa.
Las características principales son:

MicrocontroladorIntel Curie
Voltaje3.3V (5V tolera I/O)
Voltaje entrada (recomendado)7-12V
Voltaje entrada (límite)7-20V
Pins I/O digitales14 (4 proporcionan salida PWM)
Pins digitales PWM I/O 4
Pins entrada analógicos6
Tensión DC por Pin I/O 20 mA
Memoria Flash196 kB
SRAM24 kB
Velocidad de Reloj32MHz
Otras característicasBluetooth LE, 6-axis accelerometer/gyro
Diferencias
Como podéis ver las principales diferencias las encontramos en el procesador y la tecnología que usa cada uno de ellos. Es relevante hacer notar que el UNO funciona con una tensión de 5V y el modelo 101 usa 3,3V. Esto será muy relevante a la hora de elegir nuestros sensores, si os fijáis un dato importante que se da es el voltaje de funcionamiento de entrada, esto hará que cuando elijamos nuestros periféricos tengamos que tener cuidado o acabaremos quemándolos.
La segunda gran diferencia la encontramos en la velocidad de reloj, si os fijáis el 101 corre al doble que UNO (32Mhz frente a 16Mhz), así que nos dará un mayor rendimiento que el primero y nos permitirá ir a aplicaciones que requieran mayor capacidad de procesamiento.
Por último a destacar es la capacidad de memoria SRAM y Flash, una para ejecutar nuestro código y otra para almacenarlo. UNO es muy inferior (p.ej. 2K de SRAM frente a más de 10 veces el 101 con 24Kb).

domingo, 24 de julio de 2016

Cambiamos el rumbo - Arduino, Raspberrypi...

¿Porqué? 
Después de algún tiempo ausente (o mucho tiempo ausente), mi vida ha cambiado bastante en los último años. Desgraciadamente mi pasión por la informática, se ha convertido en algo residual debido a mi trabajo, en el que ahora en vez de ejecutar los proyectos como técnico, los ejecuto pero como gestor, como suelo decir soy un técnico venido a menos :-).
Esto hace que mis capacidades técnicas que antaño disfrutaba, ahora sean mucho más limitadas, y en realidad pueda aportar muy poquito sobre todo cuando de situaciones complejas se refiere. Es por esto que he decidido darle un giro al blog y orientarlo a uno de mis hobbies que siempre han estado ahí, pero sobre los que nunca he escrito.

¿De donde proviene todo?
Este hobby empezó hace unos 20 años, de la mano de los micro-controladores de Microchip. Como digo hace 20 años había bastantes cosas para divertirse, tarjetas telefónicas (bueno esto en realidad no eran microcontroladores), tarjetas de proveedores de TV (esto si lo eran), etc. Esto me hizo dar mis primeros pasos con los PIC16F84 y toda su familia, o los atmel (AVR) un poquito despues que ya eran procesadores incluso más potentes que los de mi amado CPC464 (recordar aquél Zilog a 2Mhz :-)). Tras aquella época maravillosa de micros, eeproms,etc. la verdad es que quedó todo en un limbo que se vino a reactivar hace unos años con las apariciones de los Arduino, Raspberry, etc. y su punto culminante fue cuando tuve que hacer mi trabajo de fin de grado hace unos años en el que tube que "darlo todo" con una placa LPC1769 que lleva un procesador de la familia Cortex-M3.
La verdad es que me divertí muchísimo ya que es un mundo de procesadores que te permiten hacer cosas en real time, algo que nunca había hecho yo, y además me permitió utilizar protocolos como I2C, jugar con puertos ADC, o configurar la escritura sobre dispositivos con protocolos (a mi modo de ver) ya avanzados como 1-Wire.
Esto siempre me ha hecho pensar que bien explicados estos dispositivos pueden ser una ayuda en las escuelas de nuestro país enorme. Son dispositivos súper baratos, sencillos incluso de construir, los cuales con una protoboard y un par de comandos tienen para el alumno una recompensa inmediata, y que además al ser muy muy sencillos permite realizar pequeñas modificaciones dándole al alumno un placer mental instantáneo al conseguir e manera sencilla su objetivo.
Creo que el cambio de rumbo ya se va dibujando, ahora detallémoslo.

¿Cual es mi objetivo? 
Como buen fan de todas estas cosas, mi objetivo será proporcionar de manera sencilla y mediante pequeños y fáciles laboratorios la capacidad a cualquiera de iniciarse en este mundillo. Me encantaría que estas pequeñas fichas que vamos a ir desarrollando se pudieran utilizar en centros educativos sin restricción alguna.
Los trabajos iniciales no van a ser originales míos, creo que ha mucho trabajo ya hecho en el mundo anglo sajón pero que por alguna limitación de idioma no está disponible. Mi labor en estos casos será proporcionar una ficha de laboratorio y un vídeo de la práctica idéntica, o con pequeñas modificaciones y mejoras. Por supuesto siempre con la referencia al dueño original de la ficha.

¿Y como seguimos?
Pues en los próximos días iré publicando diferentes artículos de introducción basados sobre todo en Arduino. Creo que Arduino es muy muy accesible tanto económicamente, donde tenemos placas por menos de 5$US, como a la hora de desarrollar su interface es extremadamente sencillo.

Espero veros por aquí, y cualquier pregunta, duda o curiosidad estoy a vuestra entera disposición.

Saludos y ¡un gran verano lleno de proyectos!

domingo, 1 de septiembre de 2013

Certificación en Windows Server 2012

Como suele ocurrirme en todas las vacaciones, retomo algunos del los temas que tenía por ahi aparcados. Este año ha coincidido con la renovación de mi certificación de como formador oficial de Microsoft (MCT o Microsoft Certified Trainer). 

Esto me ha llevado a darme cuenta que mis obligaciones laborales han hecho que descuide mi formación técnica, y sobre todo mis certificaciones, las cuales la última data del año 2009 concretamente en Julio.

Así como un primer paso realista me he decidido a actualizar mis certificaciones como MCITP Enterprise Administrator 2008 a las nuevas y alucinantes versiones de Windows Server 2012.

Tras indagar un pelín he descubierto que la formación que Microsoft ofrece a las personas interesadas en certificarse ha mejorado un mundo la verdad, tenemos montones de webcasts, formaciones online, tests, y los siempre imprescindibles libros de MS Press con la calidad que acostumbran.

Para que os hagáis una idea, aquí os expongo los materiales que estoy utilizando yo para intentar actualizar mi certificación como MCITP a lo que ahora se denomina MCSA Windows Server 2012 (Microsoft Certified Solutions Associate), no confundir con el antiguo MCSA aunque se parece bastante.

Objetivo:
El objetivo es conseguir la certficación MCSA Windows Server 2012, la cual se puede conseguir por dos vías.
  • Si no tienes certificación previa: Aprobando los examenes 70-410, 70-411, 70-412
  • Si ya tienes una certificación previa: Aprobando el examen 70-417

Como conseguirlo:
El primer lugar al que recurrir, es a la Microsoft Virtual Academy, que la tienes aquí:

http://www.microsoftvirtualacademy.com

Mi recomendación es que cuando te asocies digas que tu país es USA ya que sino el número de cursos que aparecen son muy reducidos, o si aparecen son muy tarde. Eso si, esto requerirá que tengas un nivel de inglés mínimo para entender los cursos on-line. Te adelanto que es muy sencillo de seguir el ingles ya que se preocupan de pronunciar y vocalizar muy bien.

Para el caso que nos ocupa, te recomiendo este curso:


Serie que cubre todos los aspectos de los tres examenes necesarios. Aunque tengas las certificaciones previas, si estás algo oxidado, como es mi caso, te recomiendo que hagas todos los cursos. Al menos conseguiras la satisfacción de los puntos que te da la MVA :-).

Adicionalmente para cualquier certificación es importante practicar, practicar, practicar. En mi caso tengo en casa dos equipos pequeñitos (dos proliant ml110 con un dual core) con hyper-v montado sobre el que realizo mis propios laboratorios. Esto me permite probar los comandos de PowerShell, configuraciones, cambios, etc. El estar virtualizados me da la posibilidad de romper cosas y recuperarlas a su estado original en pocos minutos. Algún día subiré el esquema de mi mini laboratorio.

Por último, y para mi siempre imprescindibles, los libros de MS Press, en mi caso voy a recomendar el que corresponde al examen 70-417, que podéis encontrar en vuestras librerías habituales, yo lo encontré en amazon y disponible en versión kindle por un precio muy razonable de 17€, recomendado.


Algunos consejos:
Hay un vídeo muy muy chulo elaborado por el equipo de MCT del blog Born to Learn (imprescindible para la gente que nos apasiona el mundo MS), en el cual te proponen el reto de conseguir la certificación en 90 días, y durante 57 minutos te explican los puntos claves para conseguir esta certificación. Recomiendo altamente que le echéis un ojo, merece la pena invertir esa hora.


Espero que si este post os ha servido de algo paséis por aquí a decirlo. Cualquier duda estoy a vuestra disposición.