Disponible por tiempo limitado el primer ebook sobre Netduino en español


En los últimos años, electrónica e informática han pasado de ser algo que sólo los ingenieros podían comprender, a estar accesible a todo el público en general sin necesitar demasiados conocimientos técnicos.
Netduino 2 plus   precisamente ha crecido hasta convertirse en una parte de esta revolución, proporcionando en una placa del tamaño de una carta un potente entorno gracias a la depuración de programación basada en eventos, multi-threading, ejecución línea a línea, inserción de puntos de interrupción, etc, permitiendo tanto capturar como controlar dispositivos desde Internet de una manera mucho más sencilla y rápida comparada con otras plataformas basadas de hardware abierto.

A propósito del libro, éste intenta cubrir un vacío que existe en el mundo hispano-hablante respecto a Netduino 2+ intentando ser una referencia tanto a las personas que ya manejen esta plataforma para profundizar en algunos aspectos, como aquellas otras que se inician por primera vez, para que de forma paulatina, vayan empezando a entender los entresijos de la programación en c# y su relación con el mundo hw.

Para facilitar   a todos los lectores de este humilde   blog  profundizar  en los  conocimientos sobre Netduino 2+  a partir de mañana 6 de  Marzo  y durante todo el fin semana ,estará disponible para su descarga gratuita en  Amazon el  libroEL PRIMER LIBRO SOBRE NETDUINO 2 EN ESPAÑOL: Proyectos domóticos paso a paso para todos los niveles”   el cual corresponde a la versión completa del libro  “Netduino 2 en español“.

 

 

A  continuación  se esboza la estructura  de este  libro:

  • La lectura del libro comienza con el hardware de Netduino y su evolución hacia Netduino 2+, este último sobre el que se centrará el resto del libro, explicando con detalle cómo instalar las herramientas necesarias.
  • Una vez el entorno preparado lo primero es probar la comunicación y, tras esto, ya podemos a empezar a escribir nuestro propio primer programa haciendo encender o apagar un led (cap. 2 y3).
  • Cuando controlamos salidas binarias lo siguiente es manejar las entradas binarias, lo cual se ilustra con un ejemplo que usará el pulsador interno (cap. 4).
  • Otro tema interesante puede ser PWM (cap. 5) que puede usarse en infinidad de aplicaciones y que, como ejemplo, usaremos para variar el brillo de un led.
  • En los capítulos siguientes se tratan los diferentes sensores que podemos utilizar en domótica empezando por los sensores de ruido (cap.6) para lo cual necesitaremos el procesamiento de señales analógicas que se trata con un ejemplo. Otro aspecto interesante son los sensores de posición que también se tratan con un ejemplo real (cap. 7).
  • En domótica aparte de las entradas y salidas binarias también se usan sensores de variables físicas como por ejemplo los sensores de temperatura, de luz o de movimiento que se tratan en los cap. 8,9 y 10 (terminando también cada uno con un ejemplo).
  • Una mención especial lo ocupa el cap.11 donde se tratan los sensores de consumo eléctrico tan usuales para monitorizar y optimizar nuestro consumo energético. Como no podría ser menos, también se proponen varios ejemplos de manejo real de éstos.
  • Una vez tratados la mayoría de los sensores, se explica cómo conectar Netduino 2 con un display LCD compatible con el estándar HD44780 para desplegar información en éste que nos interese viéndolo con dos ejemplos reales (cap12).
  • En los siguientes capítulos se describen cómo es posible acceder a todos los sensores y actuadores descritos (y por supuesto todos los que el lector decida) de forma remota, gracias a la conectividad tcp-ip que integra la misma placa Netduino 2 plus. En primer lugar se trata de explicar los entresijos una aplicación que instalaremos en Netduino 2 plus que hace de servidor web, el cual nos va a permitir interactuar de forma remota con éste.
  • Y hablando de control ¿qué mejor que desarrollar una app para permitirnos controlar Netduino 2 a distancia? Pues para ello, se tratara primero de las generalidades de MIT App Inventor (cap14), entorno que nos va a permitir desarrollar una app móvil de una forma muy sencilla desde la nube.
  • Finalizaremos el libro con el desarrollo de una aplicación móvil real que será capaz de interactuar desde Internet con todo el hw descrito en capítulos anteriores , haciendo de colofón del libro ,mostrando de esta forma cómo es posible hacer aplicaciones móviles que interactúen de forma remota con N2 plus de una forma sencilla.

 

Por cierto, si prefiere el formato “tradicional ” para todo el  que este interesad,o  también puede  comprar cómodamente  el libro   en Amazon  en formato papel  por   el  precio 7€ con portada blanda a todo color .

Anuncios

Luces intermitentes con un Digispark


 Digisparks   es   el resultados de la financiación de un proyecto en Kickstarter en 2012 .El DigiSpark no esta pensado para igualar las capacidades de un Arduino Uno, por ejemplo. Su ventaja está en la portabilidad ,bajo coste(menos de 10$) , reducidisimas dimensiones  y la familiaridad de uso ,pues ocupa el mismo Arduino IDE (aunque no es compatible con todos los sketchs).

Sus principales características son:

  • Soporte para el Arduino IDE 1.0+ (OSX, Windows  y Linux)
  • Alimentación via USB o fuente Externa – 5v or 7-35v (selección automática – 12v o menor es recomendado)
  • Regulador USB incorporado de 500ma 5V
  • 6 Pines de I/O (2 se usan para USB solo si el programa se comunica activamente via USB, de otra manera se pueden usar los 6)
  • 8k de Memoria Flash (cerca de 6k despues del bootloader)
  • I2C y SPI (via USI, Universal Serial Interface)
  • PWM en 3 pins (es posible mas usando Software PWM)
  • ADC en 4 pines
  • LED de alimentación y Test/Status LED (en Pin1)

Digispark posee un microcontrolador Atmel Attiny 85 en una placa muy pequeña(17,5 x16mm) ,  además tiene shields especiales para hacer demostraciones o para extender las funciones básicas.

El kit viene con sus piezas separadas y se deben soldar, lo que no toma mucho tiempo y es fácil de hacer.

El Digispark es una placa muy barata, con desarrollo USB (y producción) mediante plataforma Arduino compatible pequeñito-minúsculo,”. Y como se puede ver aquí, realmente es muy pequeña (confía en mí – Tengo las manos bastante de tamaño medio;-).

The Digispark - it's really tiny

El chip en sí es  compatible con el estándar de Arduino y herramientas: la descarga del controlador viene con la versión 1.0.3 del IDE de Arduino (que se  usa con  proyectos de Arduino -lo cual permite reemplazarlo con esta versión de   subconjunto de Digispark. El Digispark tiene un ATtiny85 microcontrolador (mientras un Arduino Uno R3 tiene un ATmega328P , para la comparación), y, en general claramente tiene menos capacidad que la plena Arduino .

En relación al software lo mejor es bajar el siguiente archivo trae versión personalizada y otros ejecutables. Este es el link, asi evitamos conflictos con instalaciones anteriores.

Primero se instalan los drivers. Se descomprime el archivo que se baja, se va a la carpeta Digispark-> Windows Driver, ejecutar el archivo InstallDriver.exe.

Ahora se va a la carpeta \DigisparkArduino-Win32\Digispark-Arduino-1.0.4 y se ejecuta Arduino.exe ese es nuestro IDE.

Pero para los pequeños proyectos como luces parpadeantes – esta vez sólo con 6 LEDs, pues  tiene menos pines que trabajar – lo hace muy bien:

Digispark blinking LEDs

 

En el arduino IDe se selecciona Tools->Boards->DigiSpark y Tools->Programmer->DigiSpark

En la iamgen ser ver aquí que  se puede usar un cable de extensión USB para evitar conectar el dispositivo directamente al  PC: cuando se desarrolla con el Digispark necesita desenchufar el aparato antes de cada compilación y carga – volver a enchufarlo sólo cuando se trata ha sido hecho – lo cual sin duda puede dañar  el conector si no se usa una extensión  pues  ademas oportar el peso de este.

Este paso adicional hace que sea un poco más incómodo, al principio, pero enseguida se puede  acostumbrar a él. También vale la pena teniendo en cuenta que, dada la naturaleza de la Digispark, es naturalmente menos robusto que un Arduino completo, así que se debe tener cuidado al trabajar con ella: un corto circuito podría dañarlo irremediablemente, por ejemplo.

La programación no es igual que Arduino pues se debe compilar el programa y luego se conecta el Digispark, tienes 5 segundos para conectar, por eso es util o bien adquirir el cable usb extensor  o bien el  accesorio  de programación que trae un interruptor para el USB.

Asimismo  hay disponible  una caja en kit   de acrílico con las piezas  cortadas con láser :

Building the laser-cut cases

Y luego probado uno pequeño como parte de este proyecto:

Inside one of the acrylic cases

El ajuste fue bastante bueno, aunque la cantidad modesta de soldadura inexperto que realiza para unir los conectores macho significaba la ranura para el conector USB obligado al Digispark a estar en un ángulo. Probablemente se podría aplanar la parte inferior mediante la reducción de los pines y la soldadura de un poco más de cuidado, espero.

Fuente   aqui

.NET Micro Framework – Usando display alfanumericos LCDs


.NET Micro Framework incluye capacidades gráficas de alcance con las bibliotecas WPF  para algunas tarjetas de desarrollo de alta gama bastante ( Tahoe II , ChipworkX o FEZ Cobra por nombrar algunos)donde se  incluyen gráficos de lujo pantallas TFT, a menudo con soporte a  entrada táctil  también . Pero esto tiene  significativamente mayores costos, y requiere una CPU rápida. Por lo tanto, podría parecer que si está utilizando un tablero mucho más barato como Netduino o uno de la familia FEZ, que éstos están condenados a depender sólo parpadear LEDs. No tanto pues en la mayoría de los escenarios  un display LCD alfanumérico podría ser una alternativa barata (o si tiene mayor presupuesto  usted también podría considerar el uso de una pantalla OLED que también trabaja con Netduino ).

alt Para un proyecto más amplio de este post  vamos a  utilizar un LCD alfanumérico para mostrar todo tipo de información de estado. Prácticamente todos los LCDs populares son controlados por un chipset HD44780 compatible con  interfaz paralela. Hay gran variedad de estas pantallas disponibles en varias combinaciones de luz de fondo y el color del texto. El tamaño común es 16×2 caracteres (16 columnas en 2 filas). Eche un vistazo a la amplia selección de pantallas LCD disponible en Sparkfun

Cuando usted compra un  LCD observe  bien si  ese alimenta a 5V o 3V3 versión. Estoy seguro de que ambos funcionan bien con Netduino (que utiliza la lógica 3V3), pero asegúrese de conectarlos para corregir pin fuente de alimentación.

Estas pantallas LCD son bastante fáciles de conectar  y programar. Si nos fijamos en la imagen de arriba notar la cabecera 16pin en la parte superior de la pantalla. El chipset HD44780 utiliza la interfaz paralela para la comunicación de datos y soporta los modos de 8 bits y 4 bits. En el primer caso se utilizará al menos 10 pines de salida digitales del microcontrolador, en el más tarde al menos 6. El pasador de R / W (escritura y lectura) de bits se puede conectar permanentemente a tierra. Puede encontrar las instrucciones de cableado en los ejemplos para la biblioteca Arduino cristal líquido – que funcionará de la misma manera en la Netduino. Para evitar la soldadura también se puede tratar de utilizar el Teclado LCD Escudo DFRobot para Arduino , del Sr. Kogoro Kotobuki ( kotobuki ), es el diseño de un escudo LCD similar que parece funcionar muy bien con Netduino .

Sin embargo, si tomamos el enfoque directo, la pantalla LCD utilice al menos seis de los pines digitales disponibles. Si utiliza un microcontrolador que expone un número masivo de puertos IO (como FEZ Rhino o próxima FEZ Panda ) esto podría estar bien, pero en caso de Netduino o tableros similares que tiene sólo un puñado de los pines digitales esto puede ser no apto. En este caso es posible que desee para multiplexar la salida de más de un menor número de líneas. En mi anterior post ya os hablamos sobre el uso de registros de desplazamiento para evitar tal situación y en este caso se puede reducir el número de salidas a sólo tres.

Otra alternativa podría ser la de comprar un LCD Habilitado Serial . Por lo general, incluyen pensión hija tan especial en la parte posterior (de ahí llamado “mochila”) que tiene una MCU responsable de traducir la comunicación UART a la interfaz de la pantalla LCD. Así que si puedes sacrificar uno de los puertos UART en el Netduino esta podría ser una buena opción, pero por lo general cuesta alrededor de $ más que los LCD regulares 10. También podrás comprar la mochila serie solo, por ejemplo el de Sparkfun o el Kit LCD Serial LCD117 de dispositivos modernos .

Para este proyecto  se va a utilizar el mismo registro 74HC595 tal y como Pavel Bansky demostró cómo hacer esto en dispositivos .NET Micro Framework. En su primer post que muestra cómo conectar LCD con 3 cables usando el registro de desplazamiento 4094, y luego en el segundo puesto , añadió soporte para un I 2 C de 8 bits de ampliación de puertos. He modificado y ampliado su biblioteca para incluir funcionalidad disponible en la biblioteca de Arduino LiquidCrystal .

Pavel introdujo una abstracción agradable en su aplicación para separar las funciones de alto nivel LCD de interfaz de transporte subyacente en clases separadas. Así, el constructor de la clase de nivel superior LiquidCrystal, debe proporcionar una instancia de una clase que implementa la interfaz ILiquidCrystalTransferProvider. Esto permite utilizar esta biblioteca con todos los métodos de comunicación descritas anteriormente. En el código fuente ya se encuentra un GpioLiquidCrystalTransferProvider y Shifter74Hc595LiquidCrystalTransferProvider para el registro 74HC595 turno. Más tarde me voy a añadir soporte para el I 2 C de expansión del puerto. Me dieron una bonita mochila LCD de JeeLabs tienda que utiliza el chip MCP23008 pero no sé aún de lo diferente que es de PCF8574P de Pavel. En preparación para este código de manejo de algunas poco comunes ya que se abstrae de la clase BaseShifterLiquidCrystalTransferProvicer.

Aquí se puede ver el cableado he utilizado:

Wiring 16x2 LCD to Netduino via shift register

Observe que porque esta vez voy a usar interfaz SPI los datos en serie está conectado al pin 11 (MOSI) y reloj pin se conecta al pin 13 (SPCK). Pin 10 se conecta a la clavija del pasador, y en el código que se pasa como Slave Select pin al objeto SPIConfiguration. Ya que vamos a utilizar siete salidas desde el registro de desplazamiento la producción restante se conecta a través 2N2222A transistor para controlar la luz de fondo del LCD. Esto nos permite encender la luz de dentro o fuera del código. Finalmente, el potenciómetro de 10K se utiliza para controlar el contraste de la pantalla.

_MG_1274 Foto de la derecha muestra la placa  para el LCD  Tenga en cuenta que debido a que la junta se monta “al revés” las salidas del registro de desplazamiento a LCD se invierten, pero es fácil corregirlo en el código (Shifter74Hc595LiquidCrystalTransferProvider constructor tiene la opción BitOrder opcional).

A continuación puede encontrar una lista de los métodos expuestos por la clase LiquidCrystal:

  • Comience (columnas, líneas) – Utilice este método para inicializar el LCD. Especifica las dimensiones (anchura y altura) de la pantalla.
  • Borrar () – Borra la pantalla LCD y posiciona el cursor en la esquina superior izquierda.
  • Inicio () – Posiciones el cursor en la parte superior izquierda de la pantalla LCD.
  • SetCursorPosition (columna, fila) – Colocar el cursor del LCD; es decir, establecer la ubicación en la que se mostrará el texto escrito posterior a la pantalla LCD.
  • ScrollDisplayLeft () – Desplaza el contenido de la pantalla (texto y cursor) un espacio a la izquierda.
  • ScrollDisplayRight () – Desplaza el contenido de la pantalla (texto y cursor) un espacio a la derecha.
  • Write (texto) – Escribe un texto a la pantalla LCD.
  • Escribe (buffer, offset, count) – Escribe un número especificado de bytes a la pantalla mediante los datos de una memoria intermedia.
  • WriteByte (datos) – Envía un byte de datos a la pantalla.
  • CreateChar (ubicación, charmap)

Y sus propiedades:

  • Luz de fondo – Enciende la luz de fondo del LCD encendido o apagado.
  • BlinkCursor – mostrar u ocultar el cursor de bloque parpadeante en la posición a la que se escribirá el siguiente carácter.
  • ShowCursor – Mostrar u ocultar el cursor del LCD: un guión bajo (línea) en la posición a la que se escribirá el siguiente carácter.
  • Visible – Activa la pantalla LCD encendida o apagada. Esto restaurará el texto (y cursor) que estaba en la pantalla.
  • Codificación – Obtener o establecer la codificación utilizada para asignar la cadena en códigos de bytes que se envían LCD. UTF8 se utiliza por defecto.

 

Y aquí el código de ejemplo de  “hello world” con un lcd:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void Main()
{
    // create the transfer provider
    var lcdProvider = new Shifter74Hc595LiquidCrystalTransferProvider(<span class="skimlinks-unlinked">SPI_Devices.SPI1</span>,
        <span class="skimlinks-unlinked">SecretLabs.NETMF.Hardware.Netduino.Pins.GPIO_PIN_D10</span>);
    // create the LCD interface
    var lcd = new LiquidCrystal(lcdProvider);
    // set up the LCD's number of columns and rows:
    <span class="skimlinks-unlinked">lcd.Begin(16</span>, 2);
    // Print a message to the LCD.
    <span class="skimlinks-unlinked">lcd.Write("hello</span>ld!");
    while (true)
    {
        // set the cursor to column 0, line 1
        lcd.SetCursorPosition(0, 1);
        // print the number of seconds since reset:
        <span class="skimlinks-unlinked">lcd.Write((Utility.GetMachineTime().Ticks</span> / 10000).ToString());
        <span class="skimlinks-unlinked">Thread.Sleep(100</span>);
    }
}

Fuente aqui