Translate, Traductor

jueves, 20 de octubre de 2016

Hola Mundo con el PIC 16F88 en Lenguaje C

En la entrada anterior (Hola Mundo con el PIC 16F88) vimos como hacer prender y apagar un LED en lenguaje Ensamblador, ahora indicare como hacer lo mismo pero en lenguaje C.

El Lenguaje C es un lenguaje de alto nivel con el que también se pueden programar microcontroladores, para este caso usaremos el compilador XC8 que podemos descargar de la pagina de Microchip y que se integra con el MPLAB X.

El circuito es el mismo, ya que lo único que cambia es el lenguaje.



El código lo pueden descargar aqui del Repositorio en GitHub

Y el vídeo:


Cual es la ventaja de usar el lenguaje C  a cambio del Ensamblador:

 -  Las operaciones lógicas y matemáticas son mas fáciles de hacer.
 -  El código es mas fácil de entender.
 -  La utilización del C es mayor.
 -  El ensamblador es único para cada arquitectura, por ejemplo, el de Microchip es diferente que el de Freescale.

y muchas otras.


Veamos el código:

1  Indicamos la velocidad del oscilador e incluimos la librería xc.h:



2  Definimos los fusibles de configuracion:


3  Configuramos puertos y oscilador:



4  Programa principal:



Muy parecido?


Se uso el MPLAB X 3.35 y el Pickit 3


miércoles, 19 de octubre de 2016

Hola Mundo con el PIC 16F88

Este es un ejemplo de uso del PIC 16F88, donde usamos una configuración básica para hacer prender y apagar un LED con un intervalo de 1 segundo.


Fritzing


Hacemos uso de información en entradas anteriores donde explicaba sobre los Bits de configuración y una plantilla básica.

El ejemplo se compilo con la versión 3.5 del MPLAB X IDE y se uso un programador PICKIT 3

El código fuente completo lo puedes encontrar en GitHub y el vídeo de como funciona en Youtube.

Clik aqui para el Repositorio en GitHub




Revisemos el programa:

1  Importamos la librería del Microcontrolador:




2  Escribimos los Bits de configuración del micro, esto lo hice con la herramienta del MPLAB que nos facilita la generación de la configuración:



Esta es una vista de la Herramienta de configuración de Bits que esta en la parte inferior de la ventana del MPLA IDE:



3  Asignamos memoria de usuario a las variables, esto lo hacemos a partir de la posición 0x20 que es donde empiezan los GPR (Registro de Propósito General, lo podes consultar en el manual)



4  Iniciamos la configuración de los puertos:



5  Y comenzamos a escribir el programa:


Te invito a Que descargues el código fuente y lo analices: Clik aqui para el Repositorio en GitHub


martes, 11 de octubre de 2016

Arduino Uno Wifi (Developer Edition)

Es una tarjeta Arduino Uno con un módulo Wi-Fi integrado, la tarjeta tiene el ATmega328p con un módulo Wi-Fi ESP8266.



ATmega328p:

ESP8266:


Tiene 14 salidas/entradas Digitales (6 pueden ser usadas como salidas de PWM), 6 entradas análogas, un oscilador de cuarzo de 16Mhz, soporta conexión USB, conector para Entrada de voltaje DC, Conector ICSP y un botón para RESET.

Se puede alimentar por USB, con un adaptador AC/DC o con una batería en los pines 5V y GND.

El módulo Wi-Fi  ESP8266 está integrado en la tarjeta y tiene una pila TCP/IP que permite conectarse a una red Wi-Fi. (También puede trabajar como access point). El Arduino Uno Wi-Fi soporta programación por OTA (Over The Air) tanto para programar el Arduino como para el firmware Wi-Fi.



La version Developer Edition trae un soporte acrilico:



Fuente de información:

Arduino IDE 1.7.11


Tarjetas que soporta esta versión del IDE:

Screen Shot 2016-10-11 at 18.13.45.png

Presentación del producto:

Guía de inicio con la tarjeta:

jueves, 6 de octubre de 2016

Pataconf, Octubre 6 de 2016, dia de charlas!


Pataconf es una iniciativa de Colombia-dev.org para promover diferentes comunidades de desarrollo de software en Colombia. La idea era ofrecer charlas para todas las audiencias, principiantes, intermedias y avanzadas.

En la imagen muestro las charlas que se ofrecieron para la edición realizada el 6 de octubre de 2016:



Security: Shared Key Generation - Elliptic Curve Diffie Hellman - @halzate93
  • Cifrado caesar
    "En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas de cifrado más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, la A sería sustituida por la D (situada 3 lugares a la derecha de la A), la B sería reemplazada por la E, etc. Este método debe su nombre a Julio César, que lo usaba para comunicarse con sus generales." (Wikipedia)

  • Encriptación de curva Eliptica
    "La Criptografía de Curva Elíptica (del inglés: Elliptic curve cryptography, ECC) es una variante de la criptografía asimétrica o de clave pública basada en las matemáticas de las curvas elípticas. Sus autores argumentan que la CCE puede ser más rápida y usar claves más cortas que los métodos antiguos — como RSA — al tiempo que proporcionan un nivel de seguridad equivalente. La utilización de curvas elípticas en criptografía fue propuesta de forma independiente por Neal Koblitz y Victor Miller en 1985."(Wikipedia)

enlaces de interés:

¿Que es la criptografia de curva eliptica?

Ejemplo de uso en el BITCOIN


Diseño de sistemas mediante contratos en Elixir - @epsanchezma

"El diseño por contrato es una metodología para el diseño e implementación de aplicaciones y componentes popularizada por el lenguaje de programación Eiffel. Consiste en considerar los elementos de diseño como participantes de una relación similar al contrato de negocios. Así, se pueden diseñar los componentes asumiendo que se cumplirán ciertas condiciones de entrada (pre-condiciones), mientras que se deberán garantizar ciertas condiciones de salida (post-condiciones), así como la invariante de clase (propiedades que se mantienen invariantes a pesar del procesamiento realizado por el componente)." (Wikipedia)

DBC (Design By Contract)
Lógica de Hoare
DBC vs TestingEiffel
Elixir


Según articulo de la revista de la Universidad Autónoma de Mexico(http://www.revista.unam.mx):

"... El diseño por contratos puede ser visto como la aplicación a la construcción de software de los contratos que rigen los asuntos de las personas. Cuando dos personas establecen un contrato se desprenden, de éste, las obligaciones y beneficios de cada una. Este tipo de contratos en software especifican, en forma no ambigua, las relaciones entre las rutinas y los llamadores de las mismas..." leer mas


0_o Profe, ¿y eso para qué sirve? - @earayo

Se hablo de la forma como se aplican temas que vimos en la universidad en el mundo real. La aplicación del álgebra lineal para la solución de problemas, como ejemplo se explico como se trabaja con vectores y matrices en el algoritmo del Page Rank de Google.

Se hizo el ejemplo(ver en Github) con Clojure (clojure.com, clojure.org) una muestra aproximada de como se implementa el Page Rank.

https://clojuredocs.org/


Dilo en Kotlin - @danielgomezrico

Presentando el lenguaje de programación Kotlin  que corre sobre la máquina virtual de Java (JVM).

Para probarlo https://kotlinlang.org/
Tutorial Koans  https://kotlinlang.org/docs/tutorials/koans.html


Gestión de energía usando hardware Open-Source - @jotathebest

IoT: El intenet de las Cosas

Big Data

Hardware Abierto
Arduino
Raspberry PI
NodeMCU basados en el ESP8266

Herramientas como Ubidots



Así implementamos una Android app que podrá ser usada por millones de personas - @cdmunoz

Puntos a tener en cuenta al inicio de un proyecto en Android:
  • Patrones de Diseño
  • Escalabilidad
  • Repositorios de Datos
  • Reactive Programming
  • Activities only or Fragments
  • Backend an API integration
  • Cual SDK usar
  • En cuales dispositivos sera desplegado
  • Material design
Initial Stack
  • Dagger for dependency injection
  • RxJava
  • Butterknife
  • Standar Android API
    • Vectores drawables
    • Activities and Fragments
    • Standard Gradle
The Evolution
  • Asynchronous images loading an chaching
  • HTTP connections
  • Mapping between API level and View Model
  • Pimped Gradle
  • Verbose Code
  • UI optimizations
  • Animations
  • Continuous Integrations
  • Custom UI components
  • Feature flag
To
  • Retrofit
  • Picasso
  • Mapstruct
  • RxBindings
  • Retrolambda
  • gradle flavors
  • Multidexing
  • Calabash
  • Transition everywhere
  • Recyclerviews over Listview
  • Jenkins and Concourse
Desarrollar con buenas practicas
  • SCRUM
    • preplanning
    • planning
    • Daily meetings
    • Retrospective
  • Technical analysis
  • huddles
  • Code reviews
  • Learning sessions and android labs
  • Instagram Style (Hacer que funcione, no importa como e ir mejorandolo)

 Mesos is the answer  - @scastillo

Pagina Oficial:

"...Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively..."  http://mesos.apache.org/


Otros enlaces:

"... is an open-source cluster manager that was developed at the University of California, Berkeley. It "provides efficient resource isolation and sharing across distributed applications, or frameworks"..." (Wikipedia)

"...Mesos nos ofrece una capa de abstracción entre los servidores y los recursos, es un concepto un poco diferente, pero a mi parecer cuando lo entiendes me parece excepcioal. Por otro lado Mesos te proporciona una gestión de cluster y como una una gestión de los recursos del cluster..." (http://maauso.com/apache-mesos/)

lunes, 3 de octubre de 2016

Modulos Bluetooth HC-06 para proyectos electronicos, DIY

¿Que es Bluetooth?

Según Wikipedia:  "Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal (WPAN) que posibilita la transmisión de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM de los 2.4 GHz."

A pasear por la Wikipedia para que te hagas una idea:  https://es.wikipedia.org/wiki/Bluetooth

Modulos Bluetooth HC-06



Son pequeños modulos que permiten la fácil comunicación entre dispositivos bajo la especificación Bluetooth, son de precio bajo, permitiendo asi ser implementados en proyectos electrónicos del tipo DIY, como por ejemplo el control de un robot con un smartphone o encender y apagar una lampara desde una tablet.
Ademas de su bajo precio tiene la ventaja de su facilidad de uso, ya que lo podemos controlar por medio de comunicación serial desde un microcontrolador, una placa Arduino o cualquier otro dispositivo que soporte RS-232.
Tiene 4 pines (GND, +V o VCC, RX, TX)



La conexion es sencilla, GND y VCC a la fuente y RX al tx del controlador y TX al rx del controlador.
Vemos en la imagen el ejemplo de conexion a la placa Arduino Uno.




Tambien lo puedes ver en La bitácora del capitán