<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cronicas de un geek &#187; Destacados</title>
	<atom:link href="/destacados/feed/" rel="self" type="application/rss+xml" />
	<link>https://cronicasgeek.com</link>
	<description>Programación y tecnología</description>
	<lastBuildDate>Sun, 31 May 2015 23:33:31 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>Proyectos con el módulo esp8266</title>
		<link>https://cronicasgeek.com/proyectos-con-el-modulo-esp8266/</link>
		<comments>https://cronicasgeek.com/proyectos-con-el-modulo-esp8266/#comments</comments>
		<pubDate>Sun, 31 May 2015 23:25:03 +0000</pubDate>
		<dc:creator><![CDATA[Kelvi S. Padilla]]></dc:creator>
				<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Electronica Digital]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[electronica]]></category>
		<category><![CDATA[esp8266]]></category>
		<category><![CDATA[lua]]></category>

		<guid isPermaLink="false">https://cronicasgeek.com/?p=123</guid>
		<description><![CDATA[<p>Actualmente existen los módulos ESP que puedes conseguir en ebay por un precio desde 4 dolares de los cuales se encuentran los modelos ESP01 al ESP09 </p>
<p>La entrada <a rel="nofollow" href="/proyectos-con-el-modulo-esp8266/">Proyectos con el módulo esp8266</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2015/05/esp82662.png"><img class="aligncenter size-full wp-image-130" src="/wp-content/uploads/2015/05/esp82662.png" alt="esp8266" width="810" height="460" /></a></p>
<p>Actualmente existen los módulos ESP que puedes conseguir en ebay por un precio desde 4 dolares de los cuales se encuentran los modelos ESP01 al ESP09 el mas popular es el ESP01 del que existe mucha documentación en Internet y también porque su precio es muy bajo, común mente es llamado esp8266 por el modelo de procesador que posee, la función principal de este modulo es realizar una conexión a Internet por medio de tecnología wifi, para realizar las configuraciones se utilizan comando AT que es muy fácil de utilizar y en un par de minutos se puede programar siempre que se tenga la documentación correcta, siendo así una gran opción para el Internet de las cosas.</p>
<p>El modulo con sus configuraciones de fabrica nos da la posibilidad de realizar una conexión TCP/IP así como enviar variables de tipo get y post con el protocolo HTTP según sea el caso y hasta podemos realizar un pequeño servidor web y leer las variables de tipo get y así realizar un program mas complejo, pero nuestras opciones son muy limitadas, a simple vista parece un modulo simple de bajo costo y una alternativa a Arduino shield wifi  y Arduino shield ethernet, pero nada mas lejos de la realidad lo increíble de este modulo es que el chip 8266 que trate integrado tiene una potencia de 32 bits, según el modelo que tengamos puede tener una memoria de 512k hasta 4mb de memoria flash, aparte de que soporta el protocolo wifi 802.11 b/g/n, como puedes notar es incluso mas poderoso que un Arduino ATMEGA 2560, hasta hace poco se libero el SDK del chip lo que trajo consigo una comunidad de programadores que han realizado una grandiosa documentación y herramientas de software para programarlo.</p>
<h2>Métodos de programación</h2>
<p>Como mencione anteriormente el modulo de fabrica se programa utilizando comandos AT pero desde que se libero el sdk se ha creado soporte para otro tipo de lenguajes, así como también la utilización de Ides para ser programado, actualmente se puede programar de 4 cuatro formas, algunos lenguajes son mas potentes que otros, los cuales son:</p>
<ol>
<li>Comandos AT.</li>
<li>Scripts lua.</li>
<li>Arduino ide.</li>
<li>lenguaje c++.</li>
</ol>
<p>La primera opción de hecho no es un lenguaje de programación mas bien es un protocolo de configuración y no se necesita realizar ninguna modificación al firmware del modulo, simplemente se conecta y esta listo, no entrare en detalle en esta opción ya que existen mucha documentación en español que realmente explica de manera detalla como realizar diferentes configuraciones, en el caso de querer utilizar un lenguaje especifico tienes que bajar las herramientas necesarias para compilar y cargar el programa y en algunos casos solo necesitas bajar un firmwire e instalarlo una sola vez como es el caso de <a href="http://es.wikipedia.org/wiki/Lua" target="_blank">Lua</a>.</p>
<h3>Scripts Lua.</h3>
<p>Lua es un lenguaje de script potente y ligeros escrito en c, la versión que soporta el modulo esp8266 es la 5.1 de la cual puedes consultar su sintaxis en esta pagina <a href="http://www.lua.org/manual/5.1/es/manual.html">lua.org</a>, existe una versión mas reciente pero el firmware aun no lo soporta, para poder utilizar este lenguaje se necesita instalar un firmware <a href="http://www.nodemcu.com/index_en.html">nodemcu</a>, solo se instala una vez y luego con un cargador que parece un ide se realiza la programación, en su pagina de github explica paso a paso como realizar el flasheo, en los próximos artículos tratare de explicar paso a paso como realizar este proceso y con algunos ejemplos.</p>
<p>Este lenguaje permite realizar programas mucho mas potentes con una sintaxis muy simple aunque su nombre nodemcu haga pensar en nodejs y javascript se parece mas a python, cabe mencionar que es un lenguaje interpretado que es menos eficiente y también es de un solo hilo, lo que dificulta un poco su utilización, pero en caso de requerir mas eficiencia se puede optar por programar en c que prácticamente es lo mas cercano a lenguaje ensamblador.</p>
<h3>Arduino ide</h3>
<p>El ide de Arduino es personalizable y al ser open source se puede recurrir a su código fuente en cualquier momento y modificarse ya que su licencia lo permite, en la comunidad de esp8266 crearon una versión con las herramientas para programar este modulo como si fuera un Arduino, de hecho se utiliza la sintaxis de processing para programarlo que es el lenguaje que utiliza Arduino. Muchas de las librerías de Arduino son soportadas, aunque pueden existir errores pero la mayoría se pueden solucionar buscando en google.</p>
<p>Al utilizar la sintaxis de Arduino, es muy fácil de programar y se puede implementar mucho del código que existe en Internet, ademas de que la comunidad de Arduino es muy grande lo que lo hace muy practico, pero aun existen ciertos errores en librerías mas especificas como el caso de mqtt para el Internet de las cosas, en mi caso la conexión al servidor se perdía después de cierto tiempo y ya no se volvía a conectar de ninguna forma, entre otros errores, lo bueno es que la comunidad sigue depurando muchos de esos errores y lo mas probable es que el futuro pueda funcionar sin problema, por lo que no deja de ser una buena opción para desarrollar en este modulo.</p>
<h3>Lenguaje c++</h3>
<p>El lenguaje c es el favorito por excelencia para microcontroladores es lo mas cercano a programar en ensamblador y lo genial es que soporta c++ que es la forma de programar orientado a objetos en c, esta es la forma mas difícil de programar el modulo ya que se deben instalar muchas herramientas para compilar los archivos, ademas de que se debe leer la documentación del sdk y su curva de aprendizaje es mas alta, pero el beneficio es que se pueden utilizar muchas de las librerías de c++ y así crear programas muy potentes, y al ser compilado se puede explotar toda la capacidad del chip.</p>
<p>En la pagina de la comunidad <a href="http://www.esp8266.com/">esp8266.com</a> se puede encontrar los pasos para instalar las herramientas de compilación y también explican como cargar los archivos binarios, el proceso es para usuarios mas avanzados, la mayoría de la documentación es para linux, por lo que debemos conocer este sistema operativo, existe muy poca documentación al respeto, pero si sabes c++ esto no seria un problema, ya que solo debes estudiar las librerías del sdk, aunque existen mas desventajas al principio esta siempre sera la mejor forma de programar ya que se puede aprovechar todas la ventajas de c++ y el poder de procesamiento de la placa.</p>
<p>Como puedes notar este modulo es muy poderoso por su capacidad de programación y personalización, por lo que es una opción de bajo costo para proyectos de iot que es de lo que quiero escribir en los próximos artículos, mi intensión es poder utilizar el protocolo <a href="http://mqtt.org/" target="_blank">mqtt</a> para poder conectar diferentes dispositivos con un consumo mínimo de ancho de banda.</p>
<p>La entrada <a rel="nofollow" href="/proyectos-con-el-modulo-esp8266/">Proyectos con el módulo esp8266</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://cronicasgeek.com/proyectos-con-el-modulo-esp8266/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial arduino &#8211; conceptos básicos</title>
		<link>https://cronicasgeek.com/tutorial-arduino-conceptos-basicos/</link>
		<comments>https://cronicasgeek.com/tutorial-arduino-conceptos-basicos/#comments</comments>
		<pubDate>Tue, 19 Aug 2014 21:45:06 +0000</pubDate>
		<dc:creator><![CDATA[Kelvi S. Padilla]]></dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Electronica Digital]]></category>
		<category><![CDATA[atmega 2560]]></category>
		<category><![CDATA[electronica]]></category>
		<category><![CDATA[microcontrolador]]></category>

		<guid isPermaLink="false">https://cronicasgeek.com/?p=62</guid>
		<description><![CDATA[<p>Antes de iniciar a programar Arduino debemos de entender su estructura física así como también sus características y lo que diferencia de uno modelo a otro, como sabemos por el artículo de introducción, la placa Arduino se compone de un microcontrolador y los componentes necesarios para hacerlo funcionar todo embebido en un placa lista para...</p>
<p>La entrada <a rel="nofollow" href="/tutorial-arduino-conceptos-basicos/">Tutorial arduino &#8211; conceptos básicos</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Antes de iniciar a programar Arduino debemos de entender su estructura física así como también sus características y lo que diferencia de uno modelo a otro, como sabemos por el <a href="http://wp.me/p4QMgp-U">artículo de introducción</a>, la placa Arduino se compone de un microcontrolador y los componentes necesarios para hacerlo funcionar todo embebido en un placa lista para usar. El microcontrolador es el componente principal de la placa es a lo que debe la mayoría de sus características, entonces comenzaremos con comprender como funciona el microcontrolador y luego veremos que es necesario para comenzar a programar esta Arduino.</p>
<p><span id="more-62"></span></p>
<div id="attachment_64" style="width: 610px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2014/08/Arduino_Uno_-_R3.jpg"><img class="size-full wp-image-64" src="/wp-content/uploads/2014/08/Arduino_Uno_-_R3.jpg" alt="Imagen de arduino uno" width="600" height="600" /></a><p class="wp-caption-text">Imagen de arduino uno</p></div>
<h2><i>El microcontrolador</i></h2>
<p>Un microcontrolador es un circuito integrado programable compuesto por una unidad central de procesamiento, memoria y periféricos de entrada/salida, son capaces de ejecutar instrucciones grabadas en su interior, la mayoría de ellos utiliza la arquitectura Harvard lo que permite el almacenamiento del programa separado de la memoria de almacenamiento local, se necesita una frecuencia de reloj para realizar operaciones, como puede ser un oscilador RC compuesto por una resistencia y un capacitor como también un cristal de cuarzo con una mayor precisión.</p>
<p>La arquitectura que compone un microcontrolador puede variar de uno a otro pero de manera general lo compone un CPU (una unidad central de procesamiento) que se encarga de realizar la lógica necesaria, la memoria ram conocido también como memoria volátil que almacena valores en tiempo de ejecución y la memoria rom que puede ser EEPROM o Flash EEPROM que puede almacenar información de manera permanente incluso si es desconectado el microcontrolador de la fuente de alimentación, la diferencia entre memoria EEPROM Y Flash EEPROM es la velocidad de almacenado.</p>
<h2><i>CPU</i></h2>
<p>Es el núcleo del microcontrolador y es el que se encarga de realizar la instrucciones lógicas grabas en memoria, es llamado el procesador o microprocesador, es posible conseguir el componente separado como puede ser por ejemplo el microprocesador z80, pero se debe completar con la memoria ram y rom por separado lo que un microcontrolador incluye en un solo chip esto es uno de los motivos por lo que se han vuelto populares, la cpu entre sus componentes principales podemos mencionar la unidad lógica aritmética ALU (en inglés) que se encarga de las operaciones matemáticas con bits, y el contador de programa que lleva la secuencia y permite los saltos de programa utilizando la memoria de pila que permite regresar a la posición deseada sin perder el control del programa, es necesario un circuito oscilador conocido como reloj que es el que permite llevar la secuencia del programa, un oscilador más rápido permite una mayor velocidad de procesamiento.</p>
<h2><i>Memoria ram</i></h2>
<p>Es conocida como memoria volátil ya que mientras se ejecute el programa la información se mantendrá si es desconectada la fuente de alimentación toda la información se pierde, también es conocida como memoria de acceso aleatorio porque puede ser grabada sin ningún orden especifico, es utilizada para guardar información en tiempo de ejecución, al no almacenar datos de manera permanente es mucho mas rápida que la memoria rom, la forma de medición es en bytes las computadoras actuales permiten gigas de información pero a nivel de un microcontrolador se utilizan bytes o kilobytes, siempre se recomiendan técnicas de programación para optimizar ram como por ejemplo punteros en lenguaje c ya que es un recurso valioso para el microcontrolador.</p>
<h2><i>Memoria interna y EEPROM</i></h2>
<p>La memoria interna del microcontrolador es de tipo no volátil, es así porque no se borra al ser desconectada de la fuente de alimentación, en esta se almacena el programa que debe ser ejecutado por el cpu, también se almacena información entre bytes o kilobytes dependiendo del modelo de microcontrolador, aparte se encuentra la memoria rom conocida como memoria EEPROM aunque en realidad tanto la memoria interna como la memoria EEPROM utilizan la misma tecnología que es llamada EEPROM, al almacenar la información de manera permanente es mucho más lenta que la memoria ram en ocasiones se debe realizar una pausa para asegurarnos que la información se almacenó correctamente, por lo general la memoria EEPROM tiene un espacio menos espacio llegando a ser en bytes, pero es posible expandir la con memorias externas de gran tamaño.</p>
<h2><i>Pines de entrada y salida</i></h2>
<p>Un microcontrolador puede disponer de varios pines dependiendo de la familia y la serie del mismo, estos pines pueden ser digitales o análogos y en algunos caso poseer características únicas como enviar un pulso con modulación PWM (en inglés), detectar eventos conocido interrupciones así como también puede ser utilizados para realizar una comunicación por puerto serial, todas estas configuraciones las debemos realizar por medio de programación, cuando un pin es utilizado como digital, este puede ser entrada o salida siendo 5 voltios un 1 y tierra un 0, si un pin es utilizado como análogo, este solo puede ser utilizado como entrada porque su fin en medir señales de voltaje, convirtiéndose en un convertidor análogo a digital, en el mayoría de microcontroladores un pin puede ser utilizado de cualquier forma ya sea entrada o salida digital, convertidor análogo, o alguna característica especial si es el caso, dejando la configuración al programador.</p>
<h2><i>Características de arduino</i></h2>
<p>Teniendo más claro el concepto de un microcontrolador podes ver como funciona Arduino y sus principales ventajas, básicamente Arduino es un microcontrolador soldado a una placa con todos los componente necesarios para funcionar, así como también una conexión usb para ser programado y conectores de cada pin para se utilizados de manera más fácil.</p>
<p>Por ejemplo podemos comparar <i>Arduino Uno</i> con <i>Arduino Atmega 2560</i>, para ver lo que hace especial uno de otro, primero veamos las características principales de arduino uno:</p>
<ul>
<li>Memoria interna: 32kb.</li>
<li>Ram: 2kb.</li>
<li>EEPROM: 1kb.</li>
<li>Pines: 14.</li>
<li>Entradas análogas: 6.</li>
</ul>
<p>Ahora veamos las características de <em>Arduino atmega 2560</em>:</p>
<ul>
<li>Memoria interna: 256kb.</li>
<li>Ram: 8kb.</li>
<li>EEPROM: 4kb.</li>
<li>Pines: 54.</li>
<li>Entradas análogas: 15.</li>
</ul>
<p>Como podrás notar hay una clara diferencia, en memoria interna, ram y EEPROM también en el número de pines. Es así porque <i>Arduino Atmega 2560</i> es una actualización de Arduino uno, y es válido pensar que <i>Arduino Atmega 2560</i> es mejor opción, pero en algunos casos nuestro proyecto puede ser muy simple por lo que un <i>Arduino uno</i> seria una mejor opción ya que no necesitamos tantos recursos para hacerlo, también cabe mencionar que cada Arduino funciona con un reloj de 16mhz lo cual no esta mal pero si comparamos el microcontrolador con otro este es un detalle a considerar porque es la velocidad de procesamiento.</p>
<p>De esta manera podemos estar seguro que arduino usar, según nuestras necesidades o presupuesto, y así estar listos para comenzar a programar. Lo que veremos en el siguiente artículo.</p>
<p>La entrada <a rel="nofollow" href="/tutorial-arduino-conceptos-basicos/">Tutorial arduino &#8211; conceptos básicos</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://cronicasgeek.com/tutorial-arduino-conceptos-basicos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial de arduino &#8211; Introducción</title>
		<link>https://cronicasgeek.com/tutorial-de-arduino-introduccion/</link>
		<comments>https://cronicasgeek.com/tutorial-de-arduino-introduccion/#comments</comments>
		<pubDate>Mon, 11 Aug 2014 17:02:30 +0000</pubDate>
		<dc:creator><![CDATA[Kelvi S. Padilla]]></dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Electronica Digital]]></category>
		<category><![CDATA[atmega 2560]]></category>
		<category><![CDATA[electronica]]></category>
		<category><![CDATA[microcontrolador]]></category>

		<guid isPermaLink="false">https://cronicasgeek.com/?p=56</guid>
		<description><![CDATA[<p>En la actualidad existen muchos componente y placas electrónicas casi para cualquier desarrollo electrónico lo que nos ahorra tiempo en la fabricación y diseño del circuito, entre los más populares se encuentra Arduino que es un procesador Atmel listo para ser programado vía usb con todos los componente necesarios para funcionar soldados en una placa...</p>
<p>La entrada <a rel="nofollow" href="/tutorial-de-arduino-introduccion/">Tutorial de arduino &#8211; Introducción</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>En la actualidad existen muchos componente y placas electrónicas casi para cualquier desarrollo electrónico lo que nos ahorra tiempo en la fabricación y diseño del circuito, entre los más populares se encuentra Arduino que es un procesador<a href="http://es.wikipedia.org/wiki/Atmel"> Atmel</a> listo para ser programado vía usb con todos los componente necesarios para funcionar soldados en una placa un poco mas grande que una tarjeta de crédito, también incluye un entorno de desarrollo con un lenguaje que parecido a c++, que esta mas orientado al aprendizaje rápido, pero que no deja se ser potente para proyectos interesantes.<span id="more-56"></span></p>
<p>Arduino es un proyecto de software libre lo que nos permite disponer del código fuente del software como también del circuito para hacer el hardware, construir tu propio Arduino no es muy difícil de hecho en Internet puedes encontrar construcciones que no parecen hechas en casa, todo depende del tiempo que quieras invertir.</p>
<p>Si consideramos la gran cantidad de circuitos que podemos encontrar en internet que utilizan arduino, no debemos ignorar que puede llegar a sernos útil. En la mayoría de los casos donde no hay poco tiempo para hacer una placa de manera profesional es donde podemos aprovechar esta placa.</p>
<p><a href="/wp-content/uploads/2014/08/Arduino-uno.jpg"><img class="aligncenter size-full wp-image-57" src="/wp-content/uploads/2014/08/Arduino-uno.jpg" alt="Arduino uno" width="450" height="296" /></a></p>
<p>En esta guía comenzaremos por lo más básico hasta dominar en gran medida la placa de Arduino, en mi caso utilizare Arduino MEGA 2560, en cada ejemplo utilizare proyectos diferentes para que se pueda consultar de manera separada, con esto espero crear una guía útil para los usuarios de Internet.</p>
<h2><i>¿por qué no debo solo aprender Arduino?</i></h2>
<p>Si bien es una maravilla ya que es software libre y porque conseguimos una placa con un procesador potente a bajo costo, si a todo esto le agregamos que existe muchos módulos para hacer casi cualquier cosa, no es de extrañar que sea popular, pero no debemos de olvidar que no es el único circuito que existe. Primero debemos recordar que su componente principal es un microcontrolador, que pertenece a la familia <a href="http://en.wikipedia.org/wiki/Atmel_AVR">Atmel AVR</a>, lo único que cambia entre cada versión de Arduino es la potencia del microcontrolador entre algunas otras cosas, entonces si tratamos de utilizar un microcontrolador Atmel fuera de arduino, nos daremos cuenta que es muy diferente la cosa, y si investigamos bien no es la única familia de microcontroladores que existe, hay una gran línea de aprendizaje que arduino acorta al proporcionarnos herramientas de fácil uso.</p>
<p>Es recomendable probar varios microcontroladores o microprocesadores porque así dispondremos de variedad a la hora de realizar un proyecto y también porque se aprende mucho en el proceso. Por ese motivo Arduino como una opción mas no esta mal y si eres nuevo en el mundo de los microcontroladores Arduinos como medio de aprendizaje es recomendable, siempre que sigas conociendo los microcontroladores como tal.</p>
<h2><i>Requerimientos:</i></h2>
<p>Aunque Arduino es muy fácil de utilizar y aprender no quiere decir que no necesitemos un conocimiento previo antes de usarlo, por lo general es necesario conocer lo siguiente:</p>
<ul>
<li>Electrónica análoga.</li>
<li>Electrónica digital.</li>
<li>Programación básica.</li>
</ul>
<p>No es necesario que domines a la perfección cada tema, pero necesitas saber como utilizar transistores, diodos, resistencias, reguladores de voltaje, así como también integrados de funciones específicas como compuertas, contadores, convertidores análogos a digital entre otras cosas, esto hará que sea mucho más fácil utilizarlo hasta el punto de volverse fácil y quieras seguir aprendiendo de manera más avanzada.</p>
<p>También es necesario tener conceptos básicos de programación, al ser electrónica digital y utilizar microcontroladores la única manera de utilizarlos es por medio de un lenguaje de programación, Arduino utiliza un lenguaje propio de alto nivel parecido a c++, si estas aprendiendo a programar te recomiendo que empieces con C, si lo comprendes te será fácil aprender muchos de los lenguajes utilizados hoy en día.</p>
<h2><i> ¿Que Arduino debo utilizar?</i></h2>
<p>Si has visto la pagina oficial de Arduino notaras la gran cantidad de placas disponibles, cada Arduino posee características que los vuelve únicos, pero si eres nuevo te recomiendo que compres uno de los siguientes modelos:</p>
<ul>
<li>Arduino uno.</li>
<li>Arduino Leonardo.</li>
<li>Arduino Mega 2560.</li>
</ul>
<p>No obligatorio que escojas uno de la lista, pero son los más populares y de los que encontrarás mucha documentación y ejemplos en Internet, y también porque poseen todo lo necesario para aprender bien.</p>
<p>La diferencia de entre uno y otro, es la cantidad de memoria flash interna, memoria ram y eeprom asi como también que cada uno posee mas pines y periféricos especiales, siendo el Arduino uno el de menor número, seguido de Arduino Leonardo, y el de mayor Prestaciones el Arduino MEGA 2560, en esta guía utilizare el último porque es el más potente a mi criterio, pero cualquiera de los 3 es válido, si aun tienes dudas puedes leer el siguiente tema que aborda los conceptos básicos y luego de esto verifica las características de cada uno el pagina <a href="http://arduino.cc/en/Main/Products">oficial</a>, así sabrás cual es el mejor para ti.</p>
<p>La entrada <a rel="nofollow" href="/tutorial-de-arduino-introduccion/">Tutorial de arduino &#8211; Introducción</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://cronicasgeek.com/tutorial-de-arduino-introduccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Como escoger un Framework css correctamente?</title>
		<link>https://cronicasgeek.com/como-escoger-un-framework-css-correctamente/</link>
		<comments>https://cronicasgeek.com/como-escoger-un-framework-css-correctamente/#comments</comments>
		<pubDate>Wed, 06 Aug 2014 17:14:30 +0000</pubDate>
		<dc:creator><![CDATA[Kelvi S. Padilla]]></dc:creator>
				<category><![CDATA[Css]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[foundation]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">https://cronicasgeek.com/?p=47</guid>
		<description><![CDATA[<p>En el creciente mundo de Internet se ha vuelto muy común encontrar framework css en gran cantidad, pero también es cierto que se requiere de cierto conocimiento para poder utilizar uno y al existir variedad comienzan a surgir preguntas como: ¿Cuál es el que debe utilizarse?, ¿Con cuál debo empezar?, ¿Por qué debo utilizarlo?. Estas...</p>
<p>La entrada <a rel="nofollow" href="/como-escoger-un-framework-css-correctamente/">¿Como escoger un Framework css correctamente?</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>En el creciente mundo de Internet se ha vuelto muy común encontrar framework css en gran cantidad, pero también es cierto que se requiere de cierto conocimiento para poder utilizar uno y al existir variedad comienzan a surgir preguntas como: ¿Cuál es el que debe utilizarse?, ¿Con cuál debo empezar?, ¿Por qué debo utilizarlo?. Estas son algunas preguntas que nos hacemos al escoger un framework y las preguntas crecen más si es la primera vez que debemos utilizarlos.</p>
<p><span id="more-47"></span></p>
<p>Esta guía la realizo a base de experiencias propias en el desarrollo y en lo que considero ventajas en tiempos de entrega y situaciones donde la calidad es necesaria sin disponer de tiempo.</p>
<h2><i>¿Por qué utilizar un framework css?</i></h2>
<p>Esta sería la primera pregunta que debemos hacernos, en realidad con css puro podemos hacer cosas realmente increíbles, si bien css por si solo es fácil de utilizar en la práctica se puede volver realmente costo en términos de tiempo. Tomando por ejemplo hacer un menú superior con submenús o un menú lateral que sea desplegable, si comenzamos por lo más básico necesitamos primero definir la estructura en HTML, luego necesitamos realizar un bosquejo ó de preferencia el diseño de cómo debe verse una vez terminado, luego comenzar a maquetar hasta tener el css y HTML funcionando sin problemas, por último en algunos casos debemos realizar la animación con javascript o jquery que es mucho más fácil, una vez terminado todo, ya habremos tomado 1hr o mas de tiempo en lo que es solo una sección del sitio, aunque debo decir que existen personas muy hábiles que realizan esta tarea en menos de una hora y con detalles. Pero supongamos que no es nuestro caso,aquí es donde entran los frameworks la mayoria estan hechos para ahorrarnos tiempo y disponer de una librería de clases fáciles de utilizar, tomando el ejemplo anterior esta tarea nos tomaría 5 minutos en lo que buscamos la documentación y agregamos el código, casi siempre cuando son sitios para el cliente final, trabajamos con un diseño ya hecho, ya sea en illustrator o en photoshop aún así disponer como base un framework es recomendable en mi caso me permite solo agregar estilos donde se requiera y seguir la estructura sin problemas, esto nos ahorra tiempo y agrega una mejor calidad al sitio entre otra cosas.</p>
<h2><i>¿Qué necesito saber para utilizar uno?</i></h2>
<p>Antes de preguntar ¿cuál debo utilizar?, debemos de considerar que necesitamos saber para poder utilizar uno, principalmente debemos de conocer de preferencia css a un nivel intermedio y por supuesto HTML correctamente, recuerdo bien cuando trate de utilizar bootstrap (framework liberado por twitter) sin dominar css, me fue mal porque no sabía como colocar correctamente un div a la par de otro, al no saber cómo funcionaban los grid en bootstrap se complico aun mas. Es recomendable que al menos domines términos como flotar contenedores, posiciones absolutas, relativas y z-index que seria colocar una capa sobre otra capa según su prioridad.</p>
<p>El segundo concepto que también es bueno comprender es el de la distribución en pantalla, un diseño fluido por lo general utiliza un contenedor central con un tamaño máximo de 960px que puede contener varios div en su interior, por ejemplo 12 contenedores que se les llamaría 12 columnas con un ancho de 80px cada uno, se utiliza 960px porque puede ser dividido dentro varios múltiplos de 2, lo más común es dividirlo dentro de 12 columnas y 16 columnas, de esta manera se puede tener un sidebar que utilice 3 columnas y el contenido que ocupe 9 columnas sin perder la fluidez en pantalla, en la imagen de abajo puedes ver como realizar una distribución de las columnas con foundation css.</p>
<p><a href="/wp-content/uploads/2014/08/1.png"><img class="aligncenter wp-image-48 " src="/wp-content/uploads/2014/08/1.png" alt="1" width="802" height="347" /></a></p>
<p>&nbsp;</p>
<h2><i>¿Cual debo utilizar?</i></h2>
<p>Considerando todo lo anterior aun así es difícil decidir cual utilizar, por lo que debemos de considerar otros aspectos basándonos en lo que nuestro proyecto necesita, los criterios más comunes son:</p>
<ul>
<li>Apariencia o estilo del framework.</li>
<li>Que sea fácil de configurar.</li>
<li>Si posee funciones javascript (opcional).</li>
<li>Que posea documentación o ejemplos.</li>
<li>Responsive (opcional).</li>
</ul>
<p>Si analizamos bien los puntos anteriores primero debemos ver si el estilo que posee el framework se adapta a nuestro proyecto, por lo general se tiene un diseño con el cual trabajar, pero la apariencia es lo que al final el cliente va a apreciar por eso considero que es adecuado analizar bien cuál utilizar, la configuración en la mayoría de frameworks es fácil de hacer pero no esta de mas verificar bien, por ejemplo si se debe agregar muchas etiquetas HTML para hacer funcionar el componente o en algunos caso puede que también utilice javascript para generar las etiquetas, en la práctica debemos de modificar la estructura <b>HTML</b> por lo que esto lo considero también necesario porque podemos perder tiempo en encontrar donde hacer la modificación.</p>
<p>Javascript es tan necesario en la actualidad que nos permite realizar animaciones increíbles y utilizando jquery lo hace relativamente fácil, la mayoría de framework también disponen de una serie de componentes que utilizan javascript lo que los hace aún más potentes, y si necesitamos animaciones ¿porque no utilizarlas?.</p>
<p>También es necesario saber cómo funciona el framework, por eso es necesario tener la documentación a la mano, esto lo considero importante porque podemos llegar a pasar horas buscando como utilizar un componente o tratando de resolver un problema porque no sabemos como configurar correctamente el componente.</p>
<p>Por último, sabemos muy bien que los teléfonos inteligentes están por todas partes y no podemos ignorar que gran parte de los usuarios los utilizan para navegar, y que el framework sea responsive facilita enormemente el trabajo, casi siempre adaptar un sitio para que sea responsive es tedioso, pero tener un framework responsive es de gran ayuda.</p>
<h2><i>Frameworks recomendados</i></h2>
<p>Existe una gran cantidad de framework en internet, que es difícil probarlos todos a profundidad por eso dejaré una lista de los que yo considero útiles en la práctica.</p>
<ul>
<li><a href="http://foundation.zurb.com/">Foundation zurb</a></li>
<li><a href="http://getbootstrap.com">Bootstrap css</a></li>
<li><a href="http://gumbyframework.com/">Gumby framework</a></li>
<li><a href="http://www.99lime.com/">HTML kickstart</a></li>
<li><a href="http://metroui.org.ua/">Metro ui CSS</a></li>
</ul>
<p>Espero que esta guía te sea de utilidad, si conoces alguno que quieras recomendar no dudes en comentar.</p>
<p>La entrada <a rel="nofollow" href="/como-escoger-un-framework-css-correctamente/">¿Como escoger un Framework css correctamente?</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://cronicasgeek.com/como-escoger-un-framework-css-correctamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo crear un api RESTful con slim php &#8211; introducción</title>
		<link>https://cronicasgeek.com/como-crear-un-api-rest-con-slim-php-introduccion/</link>
		<comments>https://cronicasgeek.com/como-crear-un-api-rest-con-slim-php-introduccion/#comments</comments>
		<pubDate>Thu, 24 Jul 2014 04:28:53 +0000</pubDate>
		<dc:creator><![CDATA[Kelvi S. Padilla]]></dc:creator>
				<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[restful]]></category>
		<category><![CDATA[slim]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">https://cronicasgeek.com/?p=37</guid>
		<description><![CDATA[<p>Últimamente se ha vuelto popular consumir servicios web a través de RESTful, según Wikipedia el término se refiere a “una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web” pero comúnmente se utiliza para interfaces web a través de xml, json y http.  las ventajas de utilizar un servicio RESTful es que...</p>
<p>La entrada <a rel="nofollow" href="/como-crear-un-api-rest-con-slim-php-introduccion/">Cómo crear un api RESTful con slim php &#8211; introducción</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Últimamente se ha vuelto popular consumir servicios web a través de <a href="http://en.wikipedia.org/wiki/Representational_state_transfer">RESTful</a>, según Wikipedia el término se refiere a “<i>una técnica de arquitectura software para sistemas </i><a href="http://es.wikipedia.org/wiki/Hipermedia"><i>hipermedia</i></a><i> distribuidos como la </i><a href="http://es.wikipedia.org/wiki/World_Wide_Web"><i>World Wide Web</i></a>” pero comúnmente se utiliza para interfaces web a través de xml, json y http. <span id="more-37"></span></p>
<p>las ventajas de utilizar un servicio RESTful es que podemos utilizar un formato ligero de objetos Javascript llamado <a href="http://en.wikipedia.org/wiki/JSON">JSON</a>, el cual nos permite tener diferentes aplicaciones en distintos lenguajes que pueden interactuar entre sí, gracias a la flexibilidad del protocolo, y con el aumento de aplicaciones móviles es común que las bases de datos y en algunos casos la capacidad de procesamiento la realiza un servidor en la nube y no el teléfono, un ejemplo podría ser el de crear una aplicación en Android para un blog en WordPress, si queremos mostrar una lista de nuestros últimos artículos de manera personalizada, lo ideal sería recoger los datos del servidor y mostrarlos en una lista o en secciones, incluso el plugin jetpack permite el acceso de tu blog a través de su api json sin crearla nosotros lo que lo hace aún mas fácil, mas adelante haré un tutorial de como hacerlo pero por ahora supongamos que no tenemos la api y tenemos que hacerla de forma manual.</p>
<p>Se puede crear un api RESTful en varios lenguajes, en Ruby, PHP o Java por ejemplo, lo que nos da más opciones para escoger, en este caso por flexibilidad y facilidad de uso utilizaremos php y el micro framework <a href="http://slimframework.com"><b>slim</b></a> el cual nos agiliza el tiempo de desarrollo y entre sus ventajas podemos mencionar:</p>
<ol>
<li>Manejo de métodos HTTP estándar y personalizados</li>
<li>Configuración sencilla</li>
<li>Manejo de rutas</li>
<li>Manejo de plantillas para vistas</li>
<li>Es software libre.</li>
</ol>
<h2><i>Métodos HTTP utilizados en RESTful</i></h2>
<p><a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a> es un protocolo de transferencias usado en Internet, la mayoría de navegadores sólo utilizan los métodos GET y POST para realizar transferencias dejando de lado los otros métodos (para ver todos lo métodos y su explicación da click <a href="http://trevinca.ei.uvigo.es/~txapi/espanol/proyecto/superior/memoria/node46.html">aqui</a> ). CRUD es el acrónimo utilizado para referirse a las funciones de Crear, Obtener, Actualizar y Borrar (<b>C</b>reate, <b>R</b>ead, <b>U</b>pdate, <b>D</b>elete en inglés), es lo que básicamente haremos con <b>slim</b> utilizando los métodos http para hacerlo, la función de cada método es la siguiente:</p>
<ul>
<li>GET: utilizado para obtener información (visibles en la url en el navegador).</li>
<li>POST: utilizado para insertar información.</li>
<li>PUT: utilizado para para actualizar datos.</li>
<li>DELETE: utilizado para eliminar datos.</li>
</ul>
<p>Existen otros métodos en el protocolo http que no usaremos aquí y cabe mencionar que esta es la utilización conocida como RESTful.</p>
<h2><i>Instalación de slim</i></h2>
<p>Primero debes descargar el código, existen dos formas y la más recomendada es por medio de <a href="https://getcomposer.org/">composer</a> lo único que necesitas para hacerlo es agregar en el archivo composer.json.</p><pre class="crayon-plain-tag">{
"require": {
"slim/slim": "2.*"
}
}</pre><p>y ejecutamos <i>php composer.phar install </i>desde la consola (también agregare a la lista un tutorial de composer), y la segunda opción es de manera manual que simplemente bajas la última versión del código que puedes descargar <a href="https://github.com/codeguy/Slim/zipball/master">aquí</a>, una vez descargado el código, dentro de la carpeta creas un archivo llamado index.php en el caso de haber hecho la descarga a través de composer agrega el siguiente código:</p><pre class="crayon-plain-tag">require 'vendor/autoload.php';</pre><p>si lo descargaste manual solo necesitas incluir la carpeta slim y en el archivo index.php agregamos el siguiente código:</p><pre class="crayon-plain-tag">require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();</pre><p>Para iniciar la clase utilizamos lo siguiente:</p><pre class="crayon-plain-tag">$app = new \Slim\Slim();</pre><p>y de esta manera ya tenemos todo listo para comenzar a agregar nuestras funciones, como prueba de que todo esta funcionando podemos agregar el siguiente ejemplo:</p><pre class="crayon-plain-tag">require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
// GET route
$app-&gt;get(
    '/',
    function () {
        $template = &lt;&lt;&lt;EOT
&lt;!DOCTYPE html&gt;
    &lt;html&gt;
        &lt;head&gt;
            &lt;meta charset="utf-8"/&gt;
            &lt;title&gt;Test de funcionamiento&lt;/title&gt;
        &lt;/head&gt;
        &lt;body&gt;
            &lt;h1&gt;Slim funciona perfectamente&lt;/h1&gt;
        &lt;/body&gt;
    &lt;/html&gt;
EOT;
        echo $template;
    }
);
$app-&gt;run();</pre><p>Si vemos en pantalla el mensaje “<i>Slim funciona perfectamente”</i> es porque todo esta funcionado bien. Para no hacer mas largo el tutorial dejaré hasta aquí este primer artículo, en la próxima entrada hablaré sobre las rutas y conexión a mysql, lo cual nos será de utilidad en muchas formas, si te gusto el articulo no olvides en comentar.</p>
<p>La entrada <a rel="nofollow" href="/como-crear-un-api-rest-con-slim-php-introduccion/">Cómo crear un api RESTful con slim php &#8211; introducción</a> aparece primero en <a rel="nofollow" href="/">Cronicas de un geek</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://cronicasgeek.com/como-crear-un-api-rest-con-slim-php-introduccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
