Cómo crear una aplicación de Windows 10 Arduino (para principiantes absolutos)

Cómo crear una aplicación de Windows 10 Arduino (para principiantes absolutos) / Bricolaje

Microsoft va por todo para Windows 10, finalmente se está dando cuenta del sueño de tener aplicaciones que se ejecuten en varias plataformas. Combinado con el soporte oficial para Arduino, tiene una nueva y poderosa herramienta a su disposición: la capacidad de crear fácilmente aplicaciones universales de Windows que tienen una conexión de hardware al mundo real..

A continuación le indicamos cómo comenzar, incluso si nunca ha programado una aplicación de Windows antes..

Antes de seguir leyendo, vea la demostración de lo que vamos a hacer..

Debo tener en cuenta que no he usado Visual Studio, ni siquiera he tocado C #, desde hace unos 10 años. Llegaré a esto desde la perspectiva de una nueva instalación de Visual Studio, y habiendo olvidado todo lo que sé.

Si ya tienes mucha experiencia con la programación de aplicaciones de Windows, o incluso estás buscando una forma sencilla de comenzar a programar en Windows sin estas herramientas de Arduino, prueba la guía de Ryan para crear una aplicación simple de Visual Basic. Cómo puedes hacer tu propia aplicación simple con VBA ¿Cómo puede hacer su propia aplicación simple con VBA? Para aquellos de ustedes a quienes realmente les encantaría poder escribir su propia aplicación, pero nunca han escrito una sola línea de código antes, le mostraré cómo hacerlo. … Lee mas . Los principiantes en programación absoluta pueden querer revisar mi Programación 101 Los fundamentos de la programación de computadoras 101 - Variables y tipos de datos Los fundamentos de la programación de computadoras 101 - Variables y tipos de datos Habiendo introducido y hablado un poco sobre la programación orientada a objetos antes y de dónde viene su nombre, yo pensamos que es hora de que pasemos por los fundamentos absolutos de la programación de una manera no específica para el lenguaje. Esto ... Leer más (y la parte 2 Los fundamentos absolutos de la programación para principiantes (Parte 2) Los fundamentos absolutos de la programación para principiantes (Parte 2) En la parte 2 de nuestra guía absoluta de programación para principiantes, cubriré los fundamentos de las funciones , devuelva valores, bucles y condicionales. Asegúrese de haber leído la parte 1 antes de abordar esto, donde expliqué el… Leer más) primero el artículo.

Debe estar familiarizado con algunos proyectos de Arduino para principiantes 15 Grandes proyectos de Arduino para principiantes 15 Grandes proyectos de Arduino para principiantes ¿Está interesado en Arduino pero no sabe por dónde empezar? ¡Aquí están algunos de nuestros mejores proyectos de Arduino para que comiencen los principiantes! Más información (y tal vez incluso lea nuestra Guía de Arduino Introducción a Arduino: Guía de principiantes Introducción a Arduino: Guía de principiantes Arduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexibles y fáciles de usar. Está diseñada para artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Lea más), pero esta será probablemente la primera vez que intente crear un poco de software de computadora para interactuar con él..

Descargas

Primero: debe unirse al Programa de Windows Insider para obtener la última edición de vista previa de Visual Studio 2015, y la última versión de Vista previa de Windows 10. Hazlo ahora, es gratis. Windows 10 es una vista previa para desarrolladores, y no debe instalarse como su sistema operativo principal. Es buggy como el infierno.

  • Únase al programa Windows Insider y descargue Windows 10 Technical Preview
  • Obtenga la vista previa de Visual Studio 2015 Community Edition [Ya no está disponible].

Estudio visual es el propio entorno de desarrollo de Microsoft que usaremos para crear una aplicación de Windows C #.

Por que c #? Con grandes similitudes con Java, es un lenguaje de programación relativamente fácil para que los principiantes tengan una aplicación operativa en funcionamiento, pero lo suficientemente potente como para que pueda crear algunas aplicaciones sorprendentes (incluso juegos: C # es el lenguaje de secuencias de comandos de Unity elegido. Verifique nuestro eBook gratuito, Guía para principiantes para programar un juego con Unity Programación Un juego con Unity: Guía para principiantes Programación para Un juego con Unity: Guía para principiantes En el panorama en evolución del desarrollo de juegos indie, Unity ha surgido como algo de facto estándar: su bajo costo, su facilidad de uso y su amplio conjunto de características lo hacen ideal para el desarrollo rápido de juegos. Leer más).

Si aún no lo has hecho, descarga el Arduino IDE desde el sitio oficial Arduino.cc, e instale el firmata estandar en el tablero Lo encontrarás debajo de Ejemplos -> Firmata -> Firmata Estándar. Esto solo lo convierte en un “tonto” Dispositivo serie, que hará lo que nuestra aplicación le indique: no habrá ninguna lógica de aplicación en la placa, solo una interfaz entre nuestra aplicación y cualquier sensor o dispositivo de salida conectado al Arduino..

En términos de cableado, puede pegar un LED directamente al pin 13 y GND como se muestra a continuación, o usar el LED incorporado. También necesitarás una resistencia variable (he usado un potenciómetro lineal de 10k) que va a A0 (con las patas apropiadas en GND y también + 5v, obviamente).

Finalmente, descargue el paquete de cableado remoto desde GitHub [Ya no está disponible]. Esta es la capa que debemos agregar que permitirá que nuestra aplicación de Windows se comunique con Arduino.

Crear una aplicación

Adelante, abre Visual Studio. Si esta es la primera vez que lo ejecutas, se te dará la opción de iniciar sesión. Ignora eso si lo deseas. Escoger Visual C# como la opción de desarrollo y continuar; De todos modos, se tarda unos minutos en preparar Visual Studio para el primer uso..

Crea un nuevo proyecto, utilizando la plantilla. Visual C# -> Aplicación en blanco (Windows Universal). Llamé al mío “Prueba de arduino”, pero no importa.

En este punto, me encontré con un error acerca de tener que cambiar Windows 10 al modo de desarrollador si realmente quería ejecutar la aplicación. Siga adelante y haga esto, aunque si encuentra que su compilación de Windows 10 se bloquea en esa configuración, es un error conocido y deberá usar el editor de políticas de grupo para habilitar el modo de desarrollador.

A continuación, haga clic derecho en cualquier parte de la Explorador de la solución (eso es lo que está a la derecha) y seleccione Añadir -> Proyecto existente.

Vaya al lugar donde descargó los archivos de cableado remoto desde Github: si se ha descomprimido, debería ser una carpeta llamada desarrollo de cableado remoto. Por dentro encontrarás Microsoft.Maker.win10; y dentro de eso encontrarás otras 3 carpetas. A su vez, agregue cada uno navegando dentro de esas tres carpetas y encontrando el archivo del proyecto.

Si recibe algún error sobre “Archivo XAML 8.2 no encontrado”, tienes la versión incorrecta de Visual Studio o aún no tienes las herramientas de desarrollador instaladas. Vuelva al inicio de este artículo y asegúrese de haber descargado e instalado los dos archivos de Visual Studio vinculados..

Estos 3 proyectos que acaba de agregar son solo capas diferentes de la interfaz Arduino. Desde el explorador de soluciones, si hace clic derecho y selecciona Dependencias -> Construir dependencias, Usted puede ver qué capas dependen de cuál (De serie no depende de nada; Firmata depende de Serial; Cableado remoto depende de ambos). El único cambio que debe hacer aquí es seleccionar su proyecto del menú desplegable y marcar cada casilla para indicar que su proyecto depende de todos estos otros proyectos..

Un último paso: desde el explorador de soluciones, haga clic derecho en el Referencias elemento bajo su proyecto, y seleccione Añadir referencia. Desde la izquierda, navega hasta Windows Universal, luego marque la casilla junto a Paquete de tiempo de ejecución de Microsoft Visual C ++ AppLocal. No cierres el diálogo todavía..

Siguiente navegue a Proyectos (también en el mismo cuadro de diálogo, en la lista de la izquierda), y marque la casilla junto a cada uno de los tres Microsoft.Maker proyectos.

Eso fue más difícil de lo que debería ser, pero solo necesitas hacerlo una vez; Ahora podemos divertirnos un poco con la programación. Prometo que no es tan aterrador..

Programación

Si tiene problemas para seguir adelante, el código completo está disponible en Pastebin. Sin embargo, le recomiendo que lea las notas a continuación, así puedo explicar lo que realmente hace el código.

Primero, necesitamos agregar un poco de código que diga que necesitamos un puerto USB para comunicarnos con el Arduino. Encuentra el Package.appxmanifest desde el explorador de soluciones y haga doble clic para editarlo. Necesitamos pegar algo de código aquí. Técnicamente, seremos “insertando un nodo hijo” Porque es un archivo XML, pero simplemente reemplaza todo sección con el código de abajo para que se vea así:

El código exacto variará si está usando Bluetooth o si está apuntando a Win8.1 en lugar de a 10, pero lo siguiente es para una conexión de Windows 10, USB.

       

Ve a la Construir menú -> Solución de reconstrucción, y asegúrate de que no recibas ningún error.

Desde el explorador de soluciones, expanda el MainPage.xaml nodo. Al hacer doble clic en eso, se cargará el diseñador de formularios al que volveremos más adelante, pero por ahora se abre. MainPage.xaml.cs, que contiene la lógica principal detrás de nuestra aplicación.

Agrega dos líneas en la primera sección, para indicar que estaremos “utilizando” los bits Arduino.

utilizando Microsoft.Maker.serial; utilizando Microsoft.Maker.RemoteWiring;

También agregué una línea para decir que estaremos usando Diagnostico del sistema; lo que nos permite utilizar el Debug.WriteLine () Función para enviar mensajes de depuración al IDE..

En primer lugar, vamos a definir algunas variables que usaremos a lo largo. Añade estas líneas justo antes de Página principal pública () declaración de función.

Conexión UsbSerial; Dispositivo remoto arduino; UInt16 lastvalue;

A continuación, salte a la función MainPage (), esto se llama el constructor, y es una función que se llama inmediatamente cuando se crea nuestra aplicación, así que la usamos para configurar todo.

Primero, agregue una línea para establecer la conexión serial USB a un dispositivo USB específico (el Arduino).

connection = new UsbSerial ("VID_2341", "PID_0043");

Tenga en cuenta que las identificaciones USB de un Arduino Uno estándar ya están codificadas en el bloque, pero puede verificar esto desde Administrador de dispositivos -> Puertos (COM y LPT) -> Arduino Uno -> Detalles pestaña -> Identificadores de hardware.

Luego agrega las siguientes líneas justo después de eso.

arduino = nuevo RemoteDevice (conexión); connection.ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig.SERIAL_8N1);

Algunas cosas están sucediendo aquí. Primero, estamos creando un objeto RemoteDevice. Recuerda, esa es la capa que nos da un montón de comandos de Arduino y le damos el nombre de variable. “arduino”. La siguiente línea se adjunta al evento ConnectionEstablished, para decir “Una vez que se haya establecido con éxito la conexión USB, ejecute la función llamada OnConnectionEstablish ()”.

El final simplemente le dice a la conexión que comience ya, a una velocidad de 57600, utilizando el patrón de bits 8N1.

También deberá crear esa función OnConnectionEstablished () ahora, así que muévase fuera de la función MainPage () y simplemente haga una función en blanco de la siguiente manera.

Vacío privado OnConnectionEstablished () // LOGIC AQUÍ

Salte al diseñador de formularios que mencioné anteriormente (si ha olvidado cómo: haga doble clic en MainPage.xaml del explorador de soluciones). Crea dos botones. Para hacer esto, abre la pestaña Caja de herramientas que encontrarás anclada verticalmente en el lado izquierdo de la pantalla. Arrastre dos botones a la página, luego etiquete uno En y uno Apagado.

Seleccione el primer botón, luego del cuadro de Propiedades en la parte inferior derecha, llámelo “OnButton”. Haga clic en el pequeño icono de rayo: esta es la lista de eventos y acciones que se utiliza para especificar qué sucede cuando interactúan con los elementos del formulario. Tipo “OnButtonClick” en el Hacer clic campo.

Cuando presiona Intro, creará automáticamente el código para ese evento de botón en particular y cargará la vista de código estándar. Vuelve al diseñador de formularios por ahora y haz lo mismo con el botón de apagado, pero esta vez llámalo “OffButton”, y “OffButtonClick”. Mientras esté allí, continúe y nombre la forma de la ventana principal detrás de ella como “Página” - Vamos a utilizar eso más tarde. Ahora debería tener algo parecido a la captura de pantalla siguiente:

Cambie de nuevo al diseñador por un momento, y nuevamente para cada uno de los botones, establezca está habilitado propiedad a Falso. Puede hacerlo escribiendo la propiedad directamente en la vista de código XAML, o puede encontrar esa casilla de verificación en el cuadro de Propiedades (haga clic en la llave si todavía está en la vista de acciones) - está debajo de Común categoria de propiedades.

Esto no es esencial, pero es una buena práctica deshabilitar los botones hasta que estemos seguros de que Arduino está enchufado y conectado.

Para volver a habilitarlos, agregue lo siguiente a la función OnConnectionEstablished (). No se preocupe demasiado por el significado exacto del código por ahora, es solo la forma en que debe manejar las actualizaciones de formularios en las aplicaciones modernas de Windows para garantizar un buen rendimiento. Una vez que nos hemos conectado al Arduino, configuramos el Está habilitado propiedad de los botones a true.

private void OnConnectionEstablished () // habilitar los botones de apagado var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, nuevo Windows.UI.Core.DispatchedHandler (() => OnButton.Isebled = true; OffButton.IsEnabled = true;)); arduino.pinMode (14, PinMode.ANALOG); arduino.AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debug.WriteLine (arduino.analogRead (14)); 

También verá una declaración pinMode () más familiar, para decir que tenemos una entrada analógica en el pin 14 (hay 13 pines digitales, por lo que A0 comienza a contar desde 14). Luego tenemos otra declaración de evento: cuando se actualice el valor de pin analógico, llame a la función MyAnalogPinUpdateCallback.

Finalmente, necesitamos editar los eventos de clic de botón y decidir qué sucede cuando cambia la entrada analógica. Vamos a empezar con los botones. Podemos interactuar con el Arduino utilizando nombres de funciones similares al código de Arduino normal, de la siguiente manera:

arduino.digitalWrite (13, PinState.HIGH);

Pega eso para el evento onButton, y esto para el botón off:

arduino.digitalWrite (13, PinState.LOW);

Sencillo. La entrada analógica del Arduino es un poco más complicada, pero esto es lo que se me ocurrió.

public void MyAnalogPinUpdateCallback (pin de byte, valor UInt16) if (valor-valor-último> 5 || valor-último-valor> 5) 
Debug.WriteLine ("Pin A" + pin + "ahora es" + valor); var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, nuevo Windows.UI.Core.DispatchedHandler (() => byte num = Convert.ToByte (value / 4); Page.Background = new SolidColorBrush ( Windows.UI.Color.FromArgb (255, num, num, Convert.ToByte (255 -num)));));  lastvalue = valor; 

Tenga en cuenta que estoy almacenando el valor anterior que recibimos del pin en una variable llamada lastValue; esto nos permite verificar cuánto se cambia el valor y solo reaccionar si la diferencia es significativa (un tipo de suavizado de señal). Si cambia en cualquier dirección más de 5 (0-1024 es el rango completo de valores), reaccionamos cambiando el valor de color de fondo RGB del elemento Página.

Ya que solo tenemos un número con el que trabajar, y tenía prisa, mezclé un poco las cosas con los 3 números necesarios para hacer R, G y B. Probablemente puedas encontrar algo mucho más bonito..

Terminado

Eso es todo: ejecute el código, y debería ver algo similar a la captura de pantalla anterior. Los botones encenderán y apagarán el LED, y la resistencia variable cambiará el fondo. Si tuviste problemas, no olvides que el código completo está aquí..

Ahora que puedes escribir tus propias aplicaciones de Windows 10 que interactúan con Arduino, ¿qué harás? Quizás un controlador de automatización para el hogar Guía de automatización del hogar con Raspberry Pi y Arduino Guía de automatización del hogar con Raspberry Pi y Arduino El mercado de la automatización del hogar está inundado de costosos sistemas de consumo, incompatibles entre sí y costosos de instalar. Si tienes una Raspberry Pi y un Arduino, básicamente puedes lograr lo mismo en ... ¿Leer más? Házmelo saber en los comentarios.

Explorar más sobre: ​​Arduino, Programación.