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

  • Michael Cain
  • 0
  • 4204
  • 60
Anuncio

Microsoft está apostando por Windows 10, y finalmente se da cuenta del sueño de tener aplicaciones que se ejecutan multiplataforma. En combinación con el soporte oficial para Arduino, tiene una nueva herramienta poderosa a su disposición: la capacidad de crear fácilmente aplicaciones universales de Windows que tienen una conexión de hardware al mundo real.

Te mostramos cómo comenzar, incluso si nunca antes has programado una aplicación de Windows.

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

Debo señalar que no he usado Visual Studio, ni siquiera toqué C #, desde hace aproximadamente 10 años. Llego a esto desde la perspectiva de una nueva instalación de Visual Studio, y habiendo olvidado todo lo que sé.

Si ya tiene bastante experiencia con la programación de aplicaciones de Windows, o incluso está buscando una manera simple de comenzar a programar en Windows sin estas cosas de Arduino, pruebe la guía de Ryan para crear una aplicación simple de Visual Basic Cómo puede hacer su propia aplicación simple con VBA Cómo puede hacer su propia aplicación simple con VBA Para aquellos de ustedes que realmente les encantaría poder escribir su propia aplicación, pero nunca antes han escrito una sola línea de código, los guiaré para hacer su ... Los principiantes de programación absoluta pueden querer consultar 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 presentado y hablado un poco sobre la Programación orientada a objetos antes y de dónde proviene su nombre, I pensamos que es hora de que revisemos los conceptos básicos absolutos de la programación de una manera no específica del lenguaje. Esto ... (y 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, volver valores, bucles y condicionales. Asegúrese de haber leído la parte 1 antes de abordar esto, donde expliqué el ...) artículo primero.

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 proyectos de Arduino pero no sabe por dónde empezar? Estos proyectos para principiantes le enseñarán cómo comenzar. (y tal vez incluso lea nuestra Guía de Arduino Comenzando con Arduino: Una guía para principiantes Comenzando con Arduino: Una Guía para principiantes Arduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexible y fácil de usar. Está destinada a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos), pero esta será probablemente la primera vez que intente crear un software real para interactuar con él.

Descargas

Primero: debe unirse al Programa Windows Insider para obtener la última versión preliminar de Visual Studio 2015, y la última versión de Vista previa de Windows 10. Haz eso ahora, es gratis. Windows 10 es una vista previa del desarrollador y no debe instalarse como su sistema operativo principal. Está lleno de errores 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 entorno de desarrollo propio de Microsoft que usaremos para crear una aplicación de Windows C #.

¿Por qué C #?? Con fuertes similitudes con Java, es un lenguaje de programación relativamente fácil para los principiantes para poner en marcha una aplicación que funciona, pero lo suficientemente potente como para que puedas crear algunas aplicaciones impresionantes (incluso juegos: C # es el lenguaje de secuencias de comandos de Unity de elección - verifica en nuestro eBook gratuito, Guía para principiantes para programar un juego con Unity Programación de un juego con Unity: Guía para principiantes Programación de un juego con Unity: Guía para principiantes En el panorama cambiante del desarrollo de juegos independientes, Unity se ha convertido en algo así estándar: su bajo costo, facilidad de uso y amplio conjunto de características lo hacen ideal para el desarrollo rápido de juegos)..

Si aún no lo ha hecho, descargue el IDE Arduino desde el sitio oficial Arduino.cc e instale el firmata estándar en el tablero Lo encontrarás debajo 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á 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 integrado. También necesitará una resistencia variable (he usado un potenciómetro lineal de 10k) yendo a A0 (con las patas apropiadas en GND y + 5v también, obviamente).

Finalmente, descargue el paquete de cableado remoto de GitHub [ya no está disponible]. Esta es la capa que necesitamos agregar que permitirá que nuestra aplicación de Windows hable con Arduino.

Crear una aplicación

Continúa y abre Visual Studio. Si es la primera vez que lo ejecuta, se le dará la opción de iniciar sesión. Ignore eso si lo desea. Escoger Visual C# como la opción de desarrollo y continuar; De cualquier manera, lleva unos minutos preparar Visual Studio para el primer uso.

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

En este punto, encontré un error acerca de tener que cambiar Windows 10 al modo desarrollador si realmente quería ejecutar la aplicación. Continúe y haga esto, aunque si encuentra que su compilación de Windows 10 falla 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 lugar del Explorador de la solución (eso es lo correcto) y seleccione Añadir -> Proyecto existente.

Navegue hasta donde descargó los archivos de cableado remoto de Github; si se ha descomprimido, debería ser una carpeta llamada desarrollo de cableado remoto. Allí 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 buscando el archivo del proyecto.

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

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, puedes ver qué capas dependen de qué (De serie no depende de nada; Firmata depende de serie; Cableado Remoto depende de ambos). El único cambio que debe hacer aquí es seleccionar su proyecto en el 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 nuevamente, haga clic derecho en el Referencias elemento debajo de su proyecto y seleccione Añadir referencia. Desde la izquierda, navega hasta Windows Universal, luego marque la casilla junto a Microsoft Visual C ++ AppLocal Runtime Package. No cierres el diálogo todavía.

Luego navegue a Proyectos (también en el mismo cuadro de diálogo, de 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, el código completo está disponible en Pastebin. Sin embargo, sugiero leer las notas a continuación, de modo que pueda explicar qué hace realmente el código.

Primero, necesitamos agregar un poco de código que dice que necesitamos un puerto USB para comunicarnos con el Arduino. Encuentra el Package.appxmanifest archivo del explorador de soluciones y haga doble clic para editarlo. Necesitamos pegar algo de código aquí, técnicamente, estaremos “insertar un nodo hijo” porque es un archivo XML, pero simplemente reemplace toda la sección con el código a continuación para que se vea así:

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

       

Ve a la Construir menú -> Reconstruir solución, y asegúrese de no obtener 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 abrirá MainPage.xaml.cs, que contiene la lógica principal detrás de nuestra aplicación.

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

usando Microsoft.Maker.serial; usando Microsoft.Maker.RemoteWiring;

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

En primer lugar, definamos algunas variables que utilizaremos en todo momento. Agregue estas líneas justo antes del public MainPage () declaración de función.

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

A continuación, acceda a la función MainPage (): esto se llama constructor, y es una función que se llama inmediatamente cuando se crea nuestra aplicación, por lo 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).

conexión = nuevo UsbSerial ("VID_2341", "PID_0043");

Tenga en cuenta que las ID de 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 agregue las siguientes líneas justo después de eso.

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

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

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

También necesitará 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.

private void OnConnectionEstablished () // LOGIC AQUÍ

Vuelva 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, abra la pestaña Caja de herramientas que encontrará 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 en el cuadro Propiedades en la parte inferior derecha, asígnele un nombre “OnButton”. Haga clic en el ícono de rayo pequeño: esta es la lista de eventos y acciones que se utiliza para especificar qué sucede cuando se interactúan los elementos del formulario. Tipo “OnButtonClick” en el Hacer clic campo.

Cuando presione Intro, creará automáticamente el código para ese evento de botón en particular y cargará la vista de código estándar. Vuelva al diseñador de formularios por ahora y haga lo mismo para el botón Desactivar, pero esta vez llámelo “OffButton”, y “OffButtonClick”. Mientras esté allí, continúe y nombre el formulario de la ventana principal detrás de él como “Página” - usaremos eso más tarde. Ahora debería tener algo parecido a la captura de pantalla a continuación:

Vuelva al diseñador nuevamente por un momento, y nuevamente para cada uno de los botones, configure el 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 Propiedades (haga clic en la llave si todavía está en la vista de acciones): está debajo de la ventana desplegada Común categoría 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 se supone 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 verdadero.

private void OnConnectionEstablished () // habilita los botones on off var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler (() => OnButton.IsEnabled = 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 actualiza el valor del pin analógico, llame a la función MyAnalogPinUpdateCallback.

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

arduino.digitalWrite (13, PinState.HIGH);

Pegue eso para el evento onButton, y esto para el offButton:

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 (value-lastvalue> 5 || lastvalue-value> 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 = value; 

Tenga en cuenta que estoy almacenando el valor anterior que recibimos del pin en una variable llamada lastValue; Esto nos permite verificar cuánto 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), entonces reaccionamos cambiando el valor de color de fondo RGB del elemento de página.

Dado que solo tenemos un número con el que trabajar, y tenía prisa, puse las cosas un poco aquí con los 3 números necesarios para hacer R, G y B. Probablemente se te ocurra 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 tuvo problemas, no olvide 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? Tal vez un controlador de automatización del 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 un Raspberry Pi y un Arduino, ¿básicamente puedes lograr lo mismo en ...? Házmelo saber en los comentarios.




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.