Agus Kurniawan Arduino Programming With .NET and Sketch - En.es
Agus Kurniawan Arduino Programming With .NET and Sketch - En.es
Agus Kurniawan Arduino Programming With .NET and Sketch - En.es
programación con
. NET y Croquis
Agus Kurniawan
Programación de Arduino con .NET y Croquis
Agus Kurniawan
Depok Indonesia
Cualquier código fuente u otro material complementario al que hace referencia el autor de este libro está disponible para los lectores en
GitHub a través de la página del producto del libro, que se encuentra en www.apress.com/ 9781484226582 . Para obtener información
más detallada, por favor visite http://www.apress.com/ código fuente .
Mapa de contenidos
introducción xv
Comunicación Arduino E / S 21
Comunicación en serie - UART 22 Cómo funciona el programa 25 Comunicación SPI 26
53
Resumen 68
programa 87 Pruebas 91
ordenador 102 Creación de un proyecto UWP 104 Escribir un programa de Arduino 105
resumen 107
resumen 163
índice 165
Introducción
Arduino es una plataforma de desarrollo de juntas con la que podemos desarrollar una aplicación embebida con varios dispositivos
de sensores y actuadores. Arduino es un hardware basado en código abierto. Hay muchos modelos de Arduino que se pueden
utilizar para desarrollar. Este libro está diseñado para desarrolladores (especialmente para los desarrolladores de .NET) que
quieren construir programas de Arduino para fines generales o específicos.
Arduino es una de las más famosas tarjetas de desarrollo. Puede conectar dispositivos de sensores y actuadores fácilmente
en el tablero. En este capítulo se explorará cómo trabajar con el desarrollo Arduino y prepararse para una máquina de
desarrollo. Para trabajar en este capítulo, debe tener uno de los modelos de placas de Arduino para su implementación.
• Configuración de desarrollo.
• Boceto de programación.
En general, una placa Arduino tiene varios pines I / O, que se utilizan para detectar y accionar con dispositivos externos
digital y analógica. Además, Arduino proporciona UART, SPI, y protocolos I2C. Cada modelo de Arduino tiene características
y formas únicas. Asegúrese de que usted no elige el modelo de la placa equivocada. Una de las muestras de placa Arduino
se puede ver en la figura 1-1 .
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
La ventaja de una placa Arduino es que es fácil de usar. No es necesario para soldar componentes electrónicos. Una
placa Arduino está listo para usar. Que acaba de conectar dispositivos de sensores y actuadores en la placa a través de cables
de puente.
En esta sección, exploramos diferentes de placas Arduino Arduino Arduino LLC y SRL. Cada modelo de Arduino
tiene características únicas. Para optimizar el uso de la placa Arduino, usted debe saber y entender qué tipo de modelo
de Arduino que es. Voy a presentar varios modelos basados en Arduino nivel de complejidad y variedad de uso.
Puede revisar la placa Arduino UNO en este sitio web: https://www.arduino.cc/ es / Principal /
ArduinoBoardUno . También puede revisar la placa Arduino UNO de Arduino SRL en este sitio: http://www.arduino.org/products/board
.
2
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
3
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
La mayoría de las placas Arduino no tienen incorporado un chip de depuración, por lo que si desea depurar nuestro
programa, se debe añadir una herramienta de depuración adicional. Afortunadamente, podemos utilizar la placa Arduino CERO ( https://www.arduino.cc/en
) de Arduino LLC y la placa Arduino M0 PRO ( http://www.arduino.org/products/boards/arduinom0-pro ) de Arduino SRL, que están
soportados para la depuración sin necesidad de herramientas adicionales. Estas placas tienen depurador incrustado de Atmel
(EDBG) que se utilizará para la depuración. Le sugiero que utilizar estos modelos Arduino si tiene alguna preocupación acerca de
la depuración sin necesidad de herramientas adicionales. Una forma de placa Arduino Zero se muestra en la figura 1-4 .
Hay muchas opciones para Arduino escudos para módulos de red para hacer que nuestras placas Arduino conectarse
a Internet. Esto significa que usted debe comprar módulos adicionales para hacer que sus juntas se conectan a Internet.
Afortunadamente, varios modelos de placas Arduino tienen un módulo de red integrado en el tablero. Exploramos algunos
modelos de placas Arduino con capacidad de conexión a Internet.
Arduino UNO WiFi es una placa Arduino UNO con un chip adicional (ESP8266). Este chip puede ser utilizado
para conectar redes WiFi existentes y también puede funcionar como un punto de acceso de nodo (AP). Arduno UNO
WiFi es fabricado por Arduino SRL. Se puede ver la forma de Arduino UNO Wi-Fi en la figura 1-5 . Para obtener más
información acerca de Arduino UNO Wi-Fi, se pueden revisar en este sitio: http://www.arduino.org/products/boards/
arduino-uno-wifi .
4
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Arduino / Genuino MKR1000 es una placa de desarrollo con un escenario listo para la IO que es fabricado
por Arduino LLC. La junta se ejecuta con ATSAMW25 SoC, que consiste en SAMD21 Cortex-M0 +, módulo WiFi
WINC1500, y ECC508 CryptoAuthentication. Está diseñado para la conectividad de la IO, incluyendo el acceso al
servidor de la nube. Más información sobre Arduino / Genuino MKR1000 se puede leer en
5
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
La mayoría de las placas Arduino trabajan con un entorno RTOS. Arduino YUN combina MCU MCU y WiFi, que se
extiende OpenWrt Linux (llamada Linino OS). Este tablero le gusta un mini-ordenador con sistema operativo Linux. Puede
controlar Arduino MCU ATmega32u4 desde Linux. También podemos acceder a la API de Linux desde el programa de
Arduino. La placa Arduino YUN ha incorporado módulos WiFi y Ethernet para resolver sus casos de la IO. Figura 1-7 es una
forma de Arduino YUN. Puede revisar y comprar este tablero en este sitio: http://www.arduino.org/ productos / placas /
Arduino-yun .
Si usted está buscando un Arduino con capacidad de conectividad BLE, se puede considerar el uso de la placa
Arduino / Genuino 101, que se muestra en la figura 1-8 . Esta placa utiliza Intel Curie como MCU, que tiene un módulo
incorporado BLE. Puede controlar este tablero a través de Bluetooth en su teléfono inteligente, como los teléfonos
inteligentes Android y iPhone. Para más información acerca de Arduino / Genuino 101, recomiendo la lectura de este sitio
web:
https://www.arduino.cc/en/Main/ArduinoBoard101 .
6
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Arduino-Compatible
En general, el precio original placa Arduino es caro. Si tiene problemas de precios en su proceso de aprendizaje de Arduino, usted
podría comprar un tablero compatible con Arduino. Como sabemos, Arduino comparte su diseño y esquema en virtud de un
proyecto de código abierto. Esto significa que podemos construir nuestra propia placa Arduino sin usar el nombre “Arduino” para
nuestra junta. tableros Arduinocompatible por lo general son fabricados por compañías de terceros. En esta sección se pasará a
través de diversas juntas compatibles con Arduino en el mercado.
Sparkfun Redboard es una especie de tablero compatible con Arduino que es fabricada por Sparkfun. Esta placa
tiene una forma como la placa Arduino UNO y utiliza ATmega328 como MCU con instalado Optiboot (UNO) del cargador
de arranque. Para el desarrollo, podemos utilizar Arduino IDE para escribir un programa bosquejo y luego actualizar el
programa a la junta. Si usted está interesado en Sparkfun Redboard, puede comprar en https://www.sparkfun.com/
productos / 12757 . Se puede ver en la figura Sparkfun Redboard 1-9 .
7
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Realmente desnudo Junta Huesos (BRD) es una placa compatible con Arduino que está diseñado por dispositivo
moderno. Esta placa no proporciona un módulo de serie por lo que si se quiere desarrollar un programa de boceto, se
necesitaría una herramienta de serie, como cable de FTDI. Junta BRD se muestra en la figura 1-10 . Para más información
sobre este tablero, puede revisar y comprarlo en https://moderndevice.com/product/rbbb-kit/ .
Pluma es una marca de desarrollo Arduino de Adafruit. Adafruit pluma 32u4 Adalogger es uno de los modelos de
placas de pluma. Esta placa proporciona un módulo de MicroSD para almacenar datos. Podemos desarrollar un
programa de Arduino usando Adafruit pluma 32u4 Adalogger. Para más información, puede revisar y comprar este
tablero en https: //www.adafruit. com / productos / 2795 .
En la siguiente sección, vamos a configurar nuestro entorno de desarrollo en un ordenador. Vamos a utilizar la
aplicación oficial para el desarrollo Arduino.
8
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Lo primero que debe preparar es instalar el software de Arduino. Dependiendo de qué tipo de
módulo Arduino, si tiene placas Arduino Arduino desde LLC, se puede descargar el software de Arduino
en https://www.arduino.cc/en/Main/Software .
De lo contrario, las placas Arduino desde SRL pueden descargar software de Arduino desde esta página:
http://www.arduino.org/downloads .
Después de descargar e instalar el software de Arduino, puede ejecutar el programa. Se puede ver la forma
de Arduino Arduino LLC en la figura 1-12 .
9
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Ahora se puede conectar la placa Arduino en el ordenador. Si tiene placas Arduino basado en ATtiny
y ATMega MCU como Arduino UNO, no es necesario instalar un controlador. software de Arduino ha
instalado por usted.
Por ejemplo, adjunto mi Arduino UNO en Windows 10; Obtuve que mi placa Arduino UNO es reconocido como
COM5, que se muestra en la figura 1-13 .
También es necesario Visual Studio para desarrollar una aplicación .NET, que accede a la placa Arduino. Si
usted no tiene una licencia de Visual Studio, puede descargar e instalar Visual Studio Express edición en esta URL: https://www.visualstudio.c
. Para la prueba, uso de Visual Studio 2015 con la actualización 2. Se muestra en la figura 1-14 .
10
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Aprendemos cómo desarrollar una aplicación .NET para controlar nuestras placas Arduino en el siguiente capítulo. Asegúrate
de que tienes la herramienta Visual Studio. En la siguiente sección, tratamos de construir un programa de Arduino sencilla utilizando
el software de Arduino. Utilizamos un built-in LED en una placa Arduino.
aplicación se ejecuta al encender / apagar un LED. La mayoría de las placas Arduino tienen un LED incorporado que se adjunta en el
En esta sección, aprendemos cómo construir una aplicación Arduino para activar / desactivar el LED. Podemos utilizar una
muestra de programa de software de Arduino. Puede encontrar haciendo clic en el menú Archivo ➤
Ejemplos ➤ 01.Basic ➤ Parpadeo. Después de hacer clic, usted debe ver el programa, que se muestra en la figura 1-15 .
11
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
void setup () {
// inicializar pin digital 13 como una salida. pinMode (13,
OUTPUT); }
// la función de bucle se ejecuta una y otra vez para siempre void loop () {
digitalWrite (13, HIGH); // enciende el LED (HIGH es el nivel de tensión) de retardo (1000);
// Espera un segundo
digitalWrite (13, LOW); // apagar el LED, haciendo que el voltaje BAJO
retardo (1000); // Espera un segundo
}
12
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Puede ver el número 13 se sustituye por LED_BUILTIN, que se muestra en el siguiente código:
void setup () {
// inicializar pin digital 13 como una salida. pinMode
(LED_BUILTIN, OUTPUT); }
// la función de bucle se ejecuta una y otra vez para siempre void loop () {
digitalWrite (LED_BUILTIN, HIGH); // enciende el LED (HIGH es el nivel de tensión) de retardo (1000);
// Espera un segundo
digitalWrite (LED_BUILTIN, LOW); // apagar el LED, haciendo que el retardo de baja tensión (1000);
// Espera un segundo
}
Guardar este programa. Para compilar el programa, puede hacer clic en el icono Verificar. Antes de cargar el programa en
una placa Arduino, debe configurar el IDE. Cambia el objetivo placa Arduino haciendo clic en el menú Herramientas ➤ Junta
(Figura 1-16 ). Entonces, también es necesario para establecer un puerto serie de la placa Arduino adjunto haciendo clic en el
menú Herramientas ➤ Puerto.
13
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Después de que se ha configurado, puede compilar y cargar el programa. Haga clic en el icono Cargar. Se puede ver
comprobar y cargar los iconos en la figura 1-17 .
Si tiene éxito, debería ver un built-in LED parpadea. Por ejemplo, Arduino UNO tiene un LED incorporado que
se muestra en la figura 1-18 .
14
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Programación boceto
Para desarrollar una aplicación Arduino, usted debe saber la programación del bosquejo. En general, el programa Bosquejo utiliza C / C
++ sintaxis. Si usted tiene experiencia en C / C ++, debe ser capaz de escribir un programa de Arduino fácilmente.
Lo que usted debe saber es entender un modelo de programación boceto. Un programa de dibujo utiliza dos
funciones para ejecutar un programa de Arduino. El siguiente es un programa de dibujo en general.
preparar() {
// hacer algo }
lazo(){
// hacer algo }
En función de configuración (), el programa de esbozo se ejecutará una vez. Sin embargo, la función de bucle () es una función que
se ejecuta continuamente.
Si usted puede construir sus propias funciones, luego ponerlos en cualquiera de las funciones de configuración () o la función loop ().
Por ejemplo, he creado foo () y las funciones de realizar () y los ejecutaron en mi programa Boceto de la siguiente manera.
realizar () {
También necesitamos saber algunas API en el programa del bosquejo. Le recomiendo que lea estos en el
sitio web oficial. Puede leerlo en https://www.arduino.cc/en/Reference/ Página de Inicio de Arduino LLC. Arduino
SRL ofrece la web de referencia en http: // www. arduino.org/learning/reference .
15
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Ahora usted puede traer su programa Boceto en Visual Studio. Puede escribir programa Boceto en Visual
Studio. Por ejemplo, podemos escribir programa Bosquejo seleccionando Blink Led Ejemplo de Visual C ++ ➤ Visual
Micro.
Después de que se ha seleccionado, podemos ver un programa Boceto parpadeando en el editor de Visual Studio (véase la
figura 1-20 ). Usted debe encontrar xxx.ino archivo donde xxx es un archivo del bosquejo.
dieciséis
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Antes de construir y enviar boceto, se debe configurar un destino placa Arduino. Debería ver una lista de
modelo de la placa Arduino. Se puede ver en la figura 1-21 . Seleccione el modelo de placa Arduino de la lista.
17
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
También es necesario configurar un puerto serie para Arduino. Se puede ver su configuración en un menú que se muestra en la
figura 1-22 . Construir y menús de carga también se pueden encontrar en esa barra de herramientas.
Guarde su dibujo. A continuación, tratar de construir y cargar el programa. El programa se ejecutará en una placa Arduino.
Depurador de Visual Studio también se ejecuta. Se puede ver en la figura 1-23 .
18
Capítulo 1 ■ Introducción a las Juntas y el desarrollo Arduino
Resumen
Hemos explorado diversos modelos de Arduino y trató de construir un programa de Arduino sencilla utilizando el software de
Arduino. También construimos un programa de Arduino utilizando Visual Studio y luego desplegado en una placa Arduino.
Ahora puede practicar el desarrollo de programas de Arduino con el boceto. En el siguiente capítulo, construimos un
programa de interfaz para la comunicación entre una aplicación .NET y la placa Arduino.
19
CAPITULO 2
. NET es una tecnología completa para resolver sus casos de negocio, incluyendo la programación de hardware. En este
capítulo, vamos a aprender a controlar las placas Arduino desde una aplicación .NET. Varios modelos de comunicación
Arduino I / O se introducen, por lo que nuestra aplicación .NET pueden controlar la placa Arduino. El último tema es aprender
protocolo Firmata, uno de los protocolos para la comunicación entre una placa Arduino y un ordenador.
• Comunicación Arduino E / S
Comunicación Arduino E / S
placas Arduino suelen proporcionar pines I / O por lo que atribuimos a nuestros dispositivos sensores o actuadores en el tablero. Cada
placa Arduino tiene un diseño de E / S por lo que debe comprobar que funciona. Por ejemplo, Arduino UNO puede ser descrito para la
disposición de I / O, como se muestra en la figura 2-1 . Esta disposición se ha tomado de la página web PigHixxx, http://www.pighixxx.com/test/portfolio-ite
.
Capitulo 2 ■ La interfaz .NET y Arduino
Para acceder a un recurso externo de Arduino de E / S, hay que tratar con formato de protocolo. En general,
las placas Arduino tienen los tres modelos de comunicación siguientes:
• comunicación serial
• la comunicación SPI
Utilizamos estos modelos de comunicación para comunicarse con una aplicación .NET. Cada comunicación se
explicará en la siguiente sección. Esbozo se utiliza para describir cómo éstos E / S trabajo de comunicación.
¡Vamos a explorar!
La mayoría de las placas Arduino tienen capacidad de comunicación serie a través de pines UART. Por ejemplo, la placa
22
Capitulo 2 ■ La interfaz .NET y Arduino
void loop () {
digitalWrite (LED, HIGH);
Serial.print ( "val =");
Serial.println (val); retardo
(1000);
Voy a explicar cómo funciona este bosquejo después de este paso siguiente. Guardar este programa como
“SerialDemo.”
Compilar y cargar boceto en una placa Arduino. Para ver la salida del programa de E / S serie, podemos usar un monitor de serie.
Esta herramienta está disponible en el software de Arduino. Simplemente haga clic en el menú Herramientas ➤ Serial Monitor. Ver figura 2-2 .
23
Capitulo 2 ■ La interfaz .NET y Arduino
Después de abrir la herramienta Monitor de serie, debería ver un cuadro de diálogo, que se muestra en la figura 2-3 .
Cambiar la velocidad en baudios a 9600 porque nuestro programa utiliza velocidad de transmisión 9600 para comunicarse con Arduino serie.
24
Capitulo 2 ■ La interfaz .NET y Arduino
Usted debe ver “Value = xx.” Xx es un número secuencial que se genera a partir de nuestro programa de Dibujo.
9600. También utilizamos un sistema incorporado en LED en el pin 13. Esto sucede en preparar() función.
Entonces, enviamos el mensaje “value = xx” de salida en serie. xx es un número secuencial a partir de 10 a 50.
Llevamos a cabo en lazo() función. Para escribir datos en serie de salida, que llamamos Serial.print () y Serial.println () funciones.
void loop () {
digitalWrite (LED, HIGH);
Serial.print ( "val =");
Serial.println (val); retardo
(1000);
25
Capitulo 2 ■ La interfaz .NET y Arduino
Se trata de un programa sencillo. Sin embargo, se puede hacer más práctica usando la biblioteca de serie del programa de
bosquejo. Por ejemplo, se envían datos de sensores tales como la temperatura y la humedad al puerto serie.
Comunicación SPI
Desde UART no utiliza un reloj para controlar el transmisor y el receptor, los mensajes pueden tener problemas en la
comunicación. Tenemos un problema en la UART cuando queremos conectar más dispositivos al bus UART. protocolo SPI está
diseñado para trabajar con varios dispositivos de bus serie.
Serial Peripheral Interface (SPI) utiliza maestro y esclavo de reloj para determinar qué dispositivo se comunicará. SPI
por lo general se lleva a cabo en tres pines: SCK para el reloj, MOSI para la salida principal Slave In, y MISO para Master en
Slave Out. SS (Slave Select) señales se utilizan para el maestro para controlar muchos dispositivos esclavos. La placa Arduino
UNO, por ejemplo, tiene pasadores de SPI en 10 (SS), 11 (MOSI), 12 (MISO), y 13 (SCK).
Hay muchas opciones para los dispositivos de sensores y actuadores que utilizan el protocolo SPI. Por
ejemplo, Sparkfun Triple acelerómetro del eje del desbloqueo de Sparkfun ( https: //
www.sparkfun.com/products/11446 ). Esta ruptura utiliza IC ADXL362 para gestionar el sensor acelerómetro. Esto se
puede ver en la figura ruptura 2-4 .
La Figura 2-4. Sparkfun Triple acelerómetro del eje del desbloqueo de Sparkfun
Para probar nuestra Arduino con el protocolo SPI, podemos conectar MOSI y MISO pines utilizando un cable de puente. Nos
conectamos pin digital 11 al pin digital 12, como se muestra en la figura 2-5 .
26
Capitulo 2 ■ La interfaz .NET y Arduino
Ahora empezamos a construir el programa de Arduino. En este caso, enviamos datos a través de SPI y esperar a que los
datos entrantes de SPI. Este programa es un bucle de retorno SPI en la que están conectados de entrada y salida pasadores SPI.
Podemos utilizar la librería SPI ( https://www.arduino.cc/en/ Referencia / SPI ) para acceder al protocolo SPI. En la librería SPI,
podemos utilizar SPI.transfer ()
función para enviar y recibir datos. El programa enviará números aleatorios para SPI. Abrir Arduino IDE y escribir
el siguiente código.
# incluir <SPI.h>
Serial.begin (9600);
// fuente:
// http://forum.arduino.cc/index.php?topic=197633.0 randomDigit byte ()
{
unsigned long t = micros (); byte r = (t% 10)
+ 1; para (byte i = 1; i <= 4; i ++) {t / = 10;
r * = ((% 10 t) + 1);
27
Capitulo 2 ■ La interfaz .NET y Arduino
r% = 11; }
de retorno (r - 1); }
void loop () {
sendData = randomDigit ();
recvData = SPI.transfer (sendData);
Ahora puede compilar y cargar el programa Boceto en Arduino UNO. Abra una herramienta Monitor de serie para ver la
salida del programa. No se olvide de cambiar la velocidad en baudios a 9600. Una muestra del programa puede verse en la
figura 2-6 .
28
Capitulo 2 ■ La interfaz .NET y Arduino
# incluir <SPI.h>
Serial.begin (9600);
En función de bucle (), llevamos a cabo para enviar un número aleatorio a través de SPI. Este número aleatorio se
genera llamando randomDigit () función. Podemos utilizar el SPI.transfer ()
funcionar para enviar y recuperar datos en el bus SPI. Por último, mostramos los datos que se envían y se reciben en el puerto serie para
void loop () {
sendData = randomDigit (); recvData =
SPI.transfer (sendData);
Usted ha aprendido cómo acceder a SPI por aplicación de un marco de bucle invertido SPI. Si desea obtener práctica más
avanzada, le recomiendo que utilice dispositivos sensores o actuadores basados en el protocolo SPI. Por favor, recuerde que
cada dispositivo sensor / actuador tiene comandos específicos más de SPI para interactuar con la placa Arduino. Usted debe
comprobar en sus documentos de hoja de datos.
protocolos I2C tienen dos alambres: SDA y SCL. placas Arduino por lo general tienen un bus I2C. Por ejemplo, la placa
Arduino UNO tiene I2C en los pines A4 (SDA) y A5 (SCL). Por favor, compruebe su modelo de Arduino para ver la asignación de
pines I2C. Podemos acceder I2C utilizando la librería Wire ( https: // www.arduino.cc/en/Reference/Wire ).
29
Capitulo 2 ■ La interfaz .NET y Arduino
Hay muchos dispositivos que utilizan I2C que se une a la placa Arduino. Un dispositivo sensor I2C es Sparkfun
Humedad y del sensor de temperatura del desbloqueo de Sparkfun ( https://www.sparkfun.com/products/13763 ). Esta
ruptura utiliza IC Si7021 para detectar la humedad y la temperatura. Los datos de sensor se pueden acceder usando el
protocolo I2C. Esto se puede ver en la figura ruptura 2-7 .
Figura 2-7. Sparkfun Humedad y del desbloqueo del sensor de temperatura de Sparkfun
Otro módulo es el módulo PCF8591 AD / DA. No es un módulo caro. Lo puede encontrar en http://www.electrodragon.com/prod
. EBay y sitios web chinos también venden este módulo. La ventaja de este módulo es que el módulo
proporciona tres entradas de muestra: termistor, fotocélula, y el potenciómetro. Figura 2-8 es una forma del
módulo PCF8591 AD / DA. En este caso, lo uso para la prueba de I2C en una placa Arduino UNO.
30
Capitulo 2 ■ La interfaz .NET y Arduino
Para una demostración de I2C en una placa Arduino, se utiliza un módulo de PCF8591 AD / DA. Vamos a acceder termistor,
fotocélula, y el potenciómetro a través del protocolo I2C mediante el programa de Dibujo.
Para la implementación de cableado, puede conectar el módulo PCF8591 AD / DA a una placa Arduino UNO de la
siguiente manera:
Podemos utilizar la librería Wire para acceder al bus I2C. El módulo PCF8591 AD / DA se ejecuta en la dirección
(0x90 >> 1) o 0x48. Pasamos esta dirección a la librería Wire. Sobre la base de un documento desde el módulo de
PCF8591 AD / DA, termistor se ejecuta en 0x00 canal, la fotocélula en 0x01, y el potenciómetro en 0x03.
# incluir "Wire.h"
# definir PCF8591 (0x90 >> 1) // dirección de bus I2C
# definir PCF8591_ADC_CH0 0x00 // termistor
# definir PCF8591_ADC_CH1 0x01 // célula fotovoltaica
# definir PCF8591_ADC_CH2 0x02
# definir PCF8591_ADC_CH3 0x03 // potenciómetro bytes ADC1,
ADC2, ADC3;
31
Capitulo 2 ■ La interfaz .NET y Arduino
void setup () {
Wire.begin ();
Serial.begin (9600); }
void loop () {
// leer termistor
Wire.beginTransmission (PCF8591); Wire.write
(PCF8591_ADC_CH0); Wire.endTransmission
(); Wire.requestFrom (PCF8591, 2); ADC1 =
Wire.read (); ADC1 = Wire.read ();
// potenciómetro
Wire.beginTransmission (PCF8591); Wire.write
(PCF8591_ADC_CH3); Wire.endTransmission
(); Wire.requestFrom (PCF8591, 2); ADC3 =
Wire.read (); ADC3 = Wire.read ();
retardo (500); }
Compilar y cargar el programa en la placa Arduino. Se puede ver la salida utilizando la herramienta Monitor de
serie. Un ejemplo del resultado se puede ver en la figura 2-10 .
32
Capitulo 2 ■ La interfaz .NET y Arduino
# incluir "Wire.h"
# definir PCF8591 (0x90 >> 1) // dirección de bus I2C
# definir PCF8591_ADC_CH0 0x00 // termistor
# definir PCF8591_ADC_CH1 0x01 // célula fotovoltaica
# definir PCF8591_ADC_CH2 0x02
# definir PCF8591_ADC_CH3 0x03 // potenciómetro bytes ADC1,
ADC2, ADC3;
Activamos nuestra librería Wire en preparar() llamando a la función Wire.begin () función. También es necesario para
activar la biblioteca de serie con el fin de enviar un resultado de lectura I2C llamando Serial.begin () función.
void setup () {
Para leer los datos desde el módulo del termistor PCF8591 AD / DA, se envía el modo de canal, 0x00, en PCF8591 AD
dirección I2C / DA. Entonces, usted debe leer dos bytes para obtener datos del termistor.
33
Capitulo 2 ■ La interfaz .NET y Arduino
Llevamos a cabo la misma tarea de leer la fotocélula, y el potenciómetro de PCF8591 AD / DA I2C. Usted sólo tiene que
pasar los valores PCF8591_ADC_CH1 y PCF8591_ADC_CH3 al módulo. A continuación, esperar a que entrantes dos bytes desde
PCF8591 AD / DA.
Ahora que hemos aprendido a trabajar con Arduino comunicación de E / S, vamos a seguir para controlar
la placa Arduino desde nuestra aplicación .NET.
• Conectar todos los otros pines LED (pin GND) al pin GND. Esto se puede
34
Capitulo 2 ■ La interfaz .NET y Arduino
Para que nuestro Arduino para entender nuestros comandos desde una aplicación .NET, debemos utilizar un programa
Boceto para recibir comandos desde una aplicación .NET. Escribir el programa en Arduino IDE de la siguiente manera:
void setup () {
pinMode (LED1, OUTPUT);
pinMode (LED2, OUTPUT);
pinMode (LED3, OUTPUT);
Serial.begin (9600); }
35
Capitulo 2 ■ La interfaz .NET y Arduino
void loop () {
si (Serial.available ()> 0) {
Este programa va a escuchar los mensajes entrantes de puerto serie de lazo() función. Si recibimos datos “1”, que
encendemos LED 1. De lo contrario, si obtenemos datos “2” o “3” en el puerto serie de Arduino, encendemos LED 2 o LED
3.
Guardar este programa como “ledcontrol”. Después de eso, puede compilar y cargar el programa Boceto en la
placa Arduino.
El siguiente paso es escribir una aplicación .NET utilizando Visual Studio. Crear un proyecto de aplicación de consola de
Visual Studio. En el archivo Program.cs, escribimos un programa para acceder al puerto serie y enviar el mensaje de “1”, “2” y
“3”. Estas entradas provienen del usuario. Utilizando Console.ReadLine (), podemos obtener datos de entrada de la terminal. A
continuación, enviarlo al puerto de serie. Escribir este programa:
using System;
usando System.Collections.Generic; usando
System.Linq; usando System.Text;
Programa de la clase {
36
Capitulo 2 ■ La interfaz .NET y Arduino
tratar
e.Cancel = true;
corriendo = false; };
serialPort.Open ();
Console.WriteLine ( "Press 1, 2, 3 para encender el LED 1, 2, 3 y presiona
ENTRAR");
Console.WriteLine ( "Presione CTRL + C para salir"); mientras
corre) {
serialPort.Write (datos);
Console.WriteLine ( "Enviado a Arduino: {0}", los datos); }}
serialPort.Close (); }
Console.WriteLine (err); }
Guardar este programa. Ejecutar este programa desde Visual Studio. Por favor cambia su puerto de Arduino antes de ejecutar el
programa. Usted debe obtener un terminal. Trata de llenar “1” para activar el LED 1 o “2” para activar el LED 2. Una muestra de la salida
del programa se puede ver en la figura 2-12 . Si se tienen problemas debido a la seguridad, es probable que pueda ejecutar este programa
a nivel de administrador.
37
Capitulo 2 ■ La interfaz .NET y Arduino
e.Cancel = true;
corriendo = false; };
serialPort.Open ();
Una vez que se reciben los datos, la aplicación pasa a un puerto serie utilizando Puerto serial. Escribir() método.
Ejecutamos el bucle infinito utilizando mientras() sintaxis. Este bucle se detendrá si el usuario presiona las teclas CTRL + C, que
nuestro programa está escuchando a través de una
Console.CancelKeyPress evento.
mientras corre) {
Console.Write ( ">>");
datos de cadena = Console.ReadLine (); if (!
String.IsNullOrEmpty (datos)) {
serialPort.Write (datos);
Console.WriteLine ( "Enviado a Arduino: {0}", los datos); }}
38
Capitulo 2 ■ La interfaz .NET y Arduino
Así es como funciona nuestra aplicación. Es probable que pueda realizar experimentos mediante la aplicación de Windows
Forms. Por favor, recuerde el acceso bloqueado, ya que nuestra aplicación .NET intenta realizar el bloqueo en la espera de la entrada
del usuario.
Con el fin de Arduino para entender nuestros comandos del ordenador, hay que ejecutar el programa Firmata
en las placas Arduino. Puede encontrar este programa en Arduino IDE, haciendo clic en el menú Archivo ➤ Ejemplos ➤
firmata ➤ StandardFirmata.
39
Capitulo 2 ■ La interfaz .NET y Arduino
Después se hace clic, se puede ver el programa Boceto para Firmata en Arduino IDE. Se puede ver en la figura 2-14
. Puede configurar el destino de Arduino y su puerto antes de parpadear a la placa Arduino. Si se hace boceto parpadea,
la placa Arduino está listo para recibir órdenes a través del protocolo Firmata.
Para acceder a Arduino a través del protocolo Firmata, debemos enviar comandos basadas en el protocolo Firmata. Sin
embargo, podemos utilizar varias bibliotecas de cliente FIRMATA, que la gente de la comunidad crearon. Se puede comprobar en https://github.com/firmat
. Debido a que utilizamos .NET para comunicarse con una placa Arduino, utilizamos un cliente Firmata para una plataforma .NET.
40
Capitulo 2 ■ La interfaz .NET y Arduino
Yo uso para el cliente SolidSoils4Arduino Firmata en .NET. Esta biblioteca es compatible con estándar
Firmata 2.4. Descargar esta biblioteca https://github.com/SolidSoils/ Arduino . A continuación, abrirlo con Visual
Studio y compilar el proyecto con su actual
. NET Framework. Una lista de proyectos de SolidSoils4Arduino puede verse en la figura 2-15 .
Después de que se compila, se puede obtener un archivo DLL * en un proyecto Solid.Arduino. Será utilizado en nuestro
proyecto. Este escenario se puede implementar si se separa la aplicación o probablemente cambia la versión .NET con un objetivo
específico. De lo contrario, puede añadir este proyecto en su proyecto de aplicación .NET mediante la adición de una referencia de
proyecto.
En este escenario, construimos una aplicación de consola para reducir una interfaz gráfica de usuario de la complejidad
. NET. Ahora cree un nuevo proyecto en Visual Studio. Seleccione “Aplicación de consola” para el tipo de proyecto. Por
ejemplo, mi nombre del proyecto es “FirmataApp”, que se muestra en la figura 2-16 .
41
Capitulo 2 ■ La interfaz .NET y Arduino
Además, añadimos un proyecto de biblioteca Solid.Arduino en su proyecto. Puedes añadir a través del Administrador de
referencia.
En este escenario, se utiliza el mismo cableado de la sección anterior. Utilizamos tres LEDs y tratar de
controlar estos LEDs de .NET.
Después de crear un proyecto en Visual Studio, puede modificar Program.cs. En primer lugar, creamos una
instancia nuestra SerialConnection y ArduinoSession objeto. Cambiar el puerto Arduino función de la configuración.
Para acceder a la salida digital en Arduino, establecemos el modo digital, utilizando el pin
SetDigitalPinMode () método. Podemos encender / apagar el LED mediante el SetDigitalPin ()
método.
Para una demostración, construimos una aplicación para encender / apagar tres LEDs de forma secuencial. Ahora escriba los
using System;
usando System.Threading;
usando Solid.Arduino;
usando Solid.Arduino.Firmata;
Programa de la clase {
tratar
42
Capitulo 2 ■ La interfaz .NET y Arduino
e.Cancel = true;
corriendo = false; };
mientras corre) {
// llevado 1
Console.WriteLine ( "Activar el LED 1");
firmata.SetDigitalPin (LED1, true);
firmata.SetDigitalPin (LED2, false);
firmata.SetDigitalPin (LED3, false); Thread.Sleep
(1000); // dormir
// llevado 2
Console.WriteLine ( "Activar el LED 2");
firmata.SetDigitalPin (LED1, false);
firmata.SetDigitalPin (LED2, true);
firmata.SetDigitalPin (LED3, false); Thread.Sleep
(1000);
// llevado 3
Console.WriteLine ( "Activar LED 3");
firmata.SetDigitalPin (LED1, false);
firmata.SetDigitalPin (LED2, false);
firmata.SetDigitalPin (LED3, true); Thread.Sleep
(1000); }
// apagar LEDs
firmata.SetDigitalPin (LED1, false);
firmata.SetDigitalPin (LED2, false);
firmata.SetDigitalPin (LED3, false);
Connection.close (); }
43
Capitulo 2 ■ La interfaz .NET y Arduino
Console.WriteLine (err);
}
Console.WriteLine ( "Programa de salida Presione ENTRAR para cerrar.");
Console.ReadLine ();
}}}
Guardar el programa. A continuación, ejecute el programa. Debería ver tres LEDs parpadeantes. En la terminal, también se puede
Figura 2-17. La salida del programa para el control de LEDs de aplicación .NET
Usted puede construir su propia aplicación .NET con un problema específico para el control de la placa Arduino a través del
protocolo Firmata. Puede utilizar la biblioteca SolidSoils4Arduino para controlar la placa Arduino a través del protocolo Firmata. Por
ejemplo, se envía un comando a la placa Arduino para abrir una puerta después de una aplicación .NET recibe una orden de los
mensajes. Por otra parte, se puede construir un Windows Forms y una aplicación de WPF para comunicarse con la placa Arduino.
Resumen
Hemos aprendido varias comunicaciones Arduino de E / S y tratamos de construir programas de croquis para acceder a ellos.
Por otra parte, hemos aprendido cómo controlar Arduino desde una aplicación .NET. Esta aplicación envía un comando
específico a través de la comunicación Arduino Arduino E / S. En la última sección, continuamos a utilizar un protocolo Firmata,
uno de los protocolos de comunicación de Arduino de la aplicación, para controlar nuestra Arduino de la aplicación .NET. En el
siguiente capítulo, vamos a aprender a sentir y actuar sobre la placa Arduino.
44
CAPÍTULO 3
Detección y accionamiento
Al sentir y accionar son actividades comunes en un sistema de control integrado. Estos implican dispositivos externos, como
sensores y actuadores. En este capítulo, aprendemos varios dispositivos de sensores y actuadores en placas Arduino
utilizando un programa de bosquejo y luego se van a utilizar por una aplicación .NET.
Arduino es una placa de desarrollo que está diseñado para ser conectado al sensor y dispositivos de accionamiento a
través de sus pines de E / S o módulo escudo Arduino. Estos dispositivos externos, que están conectados a una placa Arduino,
se puede acceder a través de protocolos de E / S que ya hemos aprendido en el capítulo anterior.
Arduino puede detectar y accionar simultáneamente. Por ejemplo, Arduino detecta la temperatura y la humedad. Si el
resultado de la medición se consigue de un cierto umbral, Arduino puede realizar algo a través de dispositivos de
accionamiento, tales como el encendido de un módulo de relé o un servomotor.
En la siguiente sección, se exploran los dispositivos de sensores y actuadores como ejemplo, por lo que utilizar dichos dispositivos en
nuestra demo.
Los dispositivos sensores generalmente convertir de objetos físicos a forma digital. Hay muchos dispositivos sensores cuyas
características de detección puede integrar con la placa Arduino. Una muestra de una lista dispositivo sensor se encuentra en el sitio
web de Sparkfun, en su tienda de electrónica en línea:
https://www.sparkfun.com/categories/23 .
En general, cada dispositivo de sensor tiene una característica para detectar el objeto físico, por ejemplo,
aceleración, temperatura, y humedad. Sin embargo, algunos dispositivos sensores tienen más de una función de
detección, por ejemplo, el módulo de DHT22 ( https: // www.adafruit.com/products/385 de Adafruit, y https://www.sparkfun.com/
productos / 10167 de Sparkfun). Este módulo sensor puede detectar la temperatura y la humedad en un único módulo.
Este módulo es fácil de utilizar con la placa Arduino. Se puede ver una forma de módulo DHT22 en la figura 3-2 .
46
Capítulo 3 ■ Detección y accionamiento
En la siguiente sección, vamos a construir un programa de Arduino para que pueda entender cómo Arduino sentidos a través
de dispositivos sensores.
47
Capítulo 3 ■ Detección y accionamiento
Se puede ver un diseño DHT22 en la figura 3-4 . Podemos conectar a nuestro Arduino DHT22
tablero. El siguiente es nuestro cableado:
• DHT22 pin GND a GND Arduino Se puede ver la implementación de cableado en la figura 3-5 .
48
Capítulo 3 ■ Detección y accionamiento
El siguiente paso es la construcción de un programa de Dibujo. Para acceder a DHT22, podemos utilizar la biblioteca sensor de
DHT de Adafruit. Se puede instalar desde Arduino IDE. Haga clic en Croquis menú
➤ incluir Biblioteca ➤ Administrar bibliotecas. Después se hace clic, debería ver un cuadro de diálogo que muestra una lista de las
bibliotecas de Arduino. Encontrar e instalar el biblioteca sensor de DHT. Se puede ver en la figura 3-6 . Asegúrese de que su
ordenador está conectado a Internet para instalar una biblioteca adicional.
49
Capítulo 3 ■ Detección y accionamiento
Para la prueba, se escribe un programa para leer la temperatura y la humedad del módulo DHT22. Después de que se
detecta es la impresión de los datos del sensor a un puerto UART. Ahora abre Arduino IDE y configurarlo para su modelo de la
placa Arduino y el puerto. Escribir el siguiente código:
# incluir "DHT.h"
// define DHT22
# Definir DHTTYPE DHT22 //
define pines en DHT22
# definir DHTPIN 8
void setup () {
Serial.begin (9600);
dht.begin (); }
// temperatura o la humedad de lectura se tarda unos 250 milisegundos! lecturas // sensor también
pueden ser de hasta 2 segundos (que es un muy lento sensor) flotador H = dht.readHumidity ();
50
Capítulo 3 ■ Detección y accionamiento
// Comprobar si los hay lecturas fallidas y salida temprana (para volver a intentarlo). si (isnan
(h) || isnan (t)) {
Serial.println ( "No se pudo leer desde el sensor DHT!"); regreso; }
51
Capítulo 3 ■ Detección y accionamiento
# incluir "DHT.h"
// define DHT22
# Definir DHTTYPE DHT22 //
define pines en DHT22
# definir DHTPIN 8
void setup () {
Serial.begin (9600);
dht.begin (); }
En lazo() función del programa Croquis, se lee la temperatura, la humedad, y un índice de calor usando una biblioteca de
DHT. Todas las funciones de DHT ya están disponibles para usted.
// Comprobar si los hay lecturas fallidas y salida temprana (para volver a intentarlo). si (isnan
(h) || isnan (t)) {
Serial.println ( "No se pudo leer desde el sensor DHT!"); regreso; }
Después de leer los datos del sensor de un módulo de DHT, se muestra estos datos en un puerto serie para que podamos ver que los
52
Capítulo 3 ■ Detección y accionamiento
Eso es; Ahora usted puede construir su propia demo con varios dispositivos sensores. En la siguiente sección, vamos a
explorar las instalaciones de actuación e interactuar con ellos desde la placa Arduino.
Arduino puede accionar para llevar a cabo algo como parpadear LEDs, generando sonidos, y los motores en movimiento.
Esta tarea normalmente tiene el objetivo de informar y de dar notificación a los usuarios o sistemas para que puedan tener
una respuesta.
Uno de los dispositivos de accionamiento es un LED RGB. Se puede mostrar un color determinado mediante la
combinación de los tres colores: rojo, verde y azul. El LED RGB podría tener dos formas: ánodo común ( https://www.sparkfun.com/products
) y el cátodo común ( https://www.sparkfun.com/products/9264 ). Se puede ver un ejemplo de formulario de un RGB LED en la
figura 3-8 .
Otro dispositivo actuador es servo. Hay muchos modelos de servo que pueden ser utilizados en nuestras placas
Arduino. Se puede encontrar un dispositivo servo fácilmente en su tienda local o en línea, por ejemplo, Sparkfun ( https://www.sparkfun.com
). Figura 3-9
muestra un motor servo de Sparkfun que puede ser aplicado en placas Arduino.
53
Capítulo 3 ■ Detección y accionamiento
En general, RGB disposición de las clavijas de LED se puede describir, como se muestra en la figura 3-10 , como sigue:
• Pin 2 es VCC o GND. Depende del modo RGB: RGB ánodo común o cátodo
común RGB.
54
Capítulo 3 ■ Detección y accionamiento
Un LED RGB puede funcionar si atribuimos a este dispositivo PMW (modulación por ancho de pulso) pasadores. En
general, los pines PWM en una placa Arduino se identifica mediante un signo (~) en los pines digitales. Puede comprobar estos
pines en la hoja de datos de Arduino; por ejemplo, Arduino UNO ( https: // www.arduino.cc/en/Main/ArduinoBoardUno ) tiene
pasadores PWM en 3, 5, 6, 9, 10, y 11. Para la prueba, utilizo una placa Arduino UNO. Utilizo pasadores PWM en 9, 10 y 11. Un
LED RGB está unido a Arduino con el siguiente cableado:
• El pin 1 (pin azul) está conectado al Arduino pin digital 11. Esto se puede ver
55
Capítulo 3 ■ Detección y accionamiento
Seguimos a escribir un programa Boceto. Vamos a construir un programa para mostrar varios colores en un LED RGB.
La idea del programa para mostrar varios colores es la combinación de valores de rojo, verde y azul a un LED RGB. Usted
puede hacer su propio experimento para mostrar un color específico. En este programa, se construyen varios colores como el
rojo, verde, azul, amarillo, púrpura, y Aqua. Ahora se puede abrir un IDE de Arduino y escribir el siguiente código:
void setup () {
56
Capítulo 3 ■ Detección y accionamiento
void loop () {
Como se puede ver en el código anterior, hemos creado un color específico llamando al setColor ()
función, que establece los valores de color en parámetros de color rojo, verde y azul. Usamos el
analogWrite () función para escribir un valor de PWM de Arduino.
Guardar este programa como “RGBLED”. A continuación, compilar y cargar el programa en la placa Arduino. Debe
ver el LED RGB que muestra varios colores. También puede ver la salida del programa usando un monitor de serie, como
se muestra en la figura 3-12 .
57
Capítulo 3 ■ Detección y accionamiento
datos de sensores de Arduino se realiza mediante la creación de un programa de bosquejo y luego publicar a la comunicación en
serie, SPI, o el protocolo I2C. Sin embargo, también se puede poner en práctica un protocolo Firmata para comunicarse con una placa
Arduino.
El nuevo enfoque que quiero compartir acerca de detección es el uso de JSON como formato de mensajes entre
Arduino y un ordenador. La idea es que un ordenador envía los datos al Arduino a través de un protocolo específico, por
ejemplo, UART. Entonces, Arduino enviará una respuesta en JSON, también. Este enfoque es fácil de implementar.
También es útil si desea comunicarse con un servidor externo como servidor REST.
Afortunadamente, podemos utilizar una biblioteca ArduinoJson ( https://github.com/bblanchon/ ArduinoJson ) para generar y
analizar un mensaje JSON. Puede descargarlo e instalarlo manualmente. De lo contrario, también puede instalarlo a través de
Administrador de bibliotecas, que se muestra en la figura 3-13 .
58
Capítulo 3 ■ Detección y accionamiento
Después de instalar ArduinoJson, podemos construir un programa Boceto. Para un caso escenario, utilizo un módulo DHT22
para detectar la temperatura y la humedad. Nuestro programa Boceto detectará y luego enviar datos a un puerto serie en formato
JSON.
En la sección anterior, que ya aprendimos cómo acceder a DHT22 usando Boceto. En este programa, vamos a utilizar
de nuevo. Después de obtener los datos DHT22, envolvemos los datos en formato JSON utilizando una JSONObject objeto.
# incluir "DHT.h"
# incluir <ArduinoJson.h>
// define DHT22
# Definir DHTTYPE DHT22 //
define pines en DHT22
# definir DHTPIN 8
void setup () {
Serial.begin (9600);
dht.begin (); }
59
Capítulo 3 ■ Detección y accionamiento
// temperatura o la humedad de lectura se tarda unos 250 milisegundos! lecturas // sensor también pueden
ser de hasta 2 segundos 'viejo' (es un muy lento sensor) flotador h = dht.readHumidity ();
// Comprobar si los hay lecturas fallidas y salida temprana (para volver a intentarlo). si (isnan
(h) || isnan (t)) {
Serial.println ( "No se pudo leer desde el sensor DHT!"); regreso; }
En lazo() función, leemos los datos del sensor a través de DHT22. Obtenemos la humedad marido y la temperatura t. A continuación,
se pasa estos valores en los datos JSON. Después de eso, pasamos datos JSON en un puerto serie para nuestro programa, tales como
Guardar este programa como “DHTJson”. Compilar y cargar este programa en la placa Arduino.
El siguiente paso es la construcción de una aplicación .NET. En este escenario, yo uso Json.NET ( http: // www.newtonsoft.com/json ) JSON
para analizar los datos que provienen de Arduino. Se puede instalar a través de la consola de Administrador de paquetes escribiendo el
siguiente comando:
60
Capítulo 3 ■ Detección y accionamiento
Utilizando Visual Studio, construimos una aplicación .NET. Construimos un programa para leer los datos de un puerto serie. Crear
un nuevo proyecto de aplicación de consola con el llamado “DotnetDHT”. Después de que se ha creado, a través de la instalación
Json.NET consola Administrador de paquetes. Asegúrese de que su ordenador está conectado a Internet.
Ahora crea un objeto del sensor mediante la adición de una clase llamada “sensor”. Luego, escribe los siguientes
códigos:
using System;
Sensor de clase {
Un objeto del sensor se utiliza para mantener los datos del sensor de Arduino. Nos analizar los datos JSON y lo ponemos en un
objeto del sensor. Nosotros podemos usar JsonConvert.DeserializeObject <Sensor> () para analizar una cadena a un objeto. Ahora se puede
modificar el archivo Program.cs para leer los mensajes entrantes de comunicación en serie y luego analizarlos. Los siguientes son los
using System;
usando System.Collections.Generic; usando
System.Linq; usando System.Text;
usando Newtonsoft.Json;
espacio de nombres DotnetDHT
61
Capítulo 3 ■ Detección y accionamiento
{
Programa de la clase {
tratar
e.Cancel = true;
corriendo = false; };
serialPort.Open ();
mientras corre) {
serialPort.Close (); }
Console.WriteLine (err); }
62
Capítulo 3 ■ Detección y accionamiento
Guardar el programa. Por favor, cambie el puerto serie para la placa Arduino. Este programa utiliza COM5 desde que
se detectó mi Arduino como COM5 en Windows. Se debe cambiar por su puerto serie Arduino. Por favor, lea el capítulo 1 para
comprobar un puerto serie de una placa Arduino.
Ahora se puede compilar y ejecutar el programa de Visual Studio directamente. Debería ver los mensajes
entrantes de Arduino. Estos mensajes se analizan y muestran en la Terminal para los valores de temperatura y
humedad.
Se puede ver la muestra de la salida del programa en la figura 3-15 .
Figura 3-15. La salida del programa para la lectura de los datos del sensor de Arduino
63
Capítulo 3 ■ Detección y accionamiento
Dado que nuestro programa se ejecuta de forma continua, tenemos que romper nuestro programa presionando CTRL + C.
utilizamos CancelKeyPress eliminar de Consola objeto. Si el usuario presiona CTRL + C, cambiamos corriendo valor en falso por lo
que nuestro programa de bucle se romperá.
e.Cancel = true;
corriendo = false; };
A continuación, el programa abre un puerto serie y lee los datos de entrada de un puerto serie utilizando ReadLine () método. A
continuación, mostramos nuestros datos del sensor al terminal. Puesto que los datos del sensor es formato JSON, debemos analizar
los datos JSON usando JsonConvert. DeserializeObject <> (). Obtendremos Sensor datos como resultado de que el analizador JSON.
Por último, cerramos nuestra conexión de puerto serie llamando Cerca() método.
serialPort.Open ();
mientras corre) {
Console.WriteLine (datos);
si (data.Contains ( "Humedad") && data.Contains ( "Temperatura")) {
serialPort.Close ();
Este es el último de nuestros programas .NET para detectar de Arduino. Usted puede hacer más práctica utilizando otro
dispositivo sensor. A continuación, un programa .NET leerá los datos del sensor.
64
Capítulo 3 ■ Detección y accionamiento
algunos dispositivos sensores. En este apartado, construimos una aplicación .NET para accionar a través de las instalaciones de
actuación.
Para las pruebas, utilizo un RGB LED como un dispositivo accionador. Ya hemos aprendido a trabajar con LED RGB
usando Boceto. Ahora vamos a trabajar con este actuador utilizando .NET. Cambiamos el color de LEDs RGB de nuestra
aplicación .NET. La comunicación entre Arduino y un ordenador utiliza el protocolo Firmata por lo que debe instalar un
estándar Firmata Boceto en la placa Arduino.
Abra Visual Studio y crear una aplicación de Windows Forms llamado “RGBControlApp”. Construimos un formulario de interfaz de
Después de crear el proyecto, hay que añadir una biblioteca SolidSoils4Arduino ( https: //
github.com/SolidSoils/Arduino ) en nuestro proyecto. Es un cliente Firmata para .NET. Hemos aprendido que en el
capítulo anterior.
En nuestro formulario de Windows (Form1.cs), añadimos una biblioteca SolidSoils4Arduino escribiendo estos códigos:
sesenta y cinco
Capítulo 3 ■ Detección y accionamiento
Declaramos varias variables y establecer los valores de inicialización de una Barra de seguimiento objeto sobre un constructor de Formar.
InitializeComponent ();
Mientras que los usuarios cambien los valores de color en Barra de seguimiento objetos, que deben atrapar a este evento. Podemos
utilizar una ValueChanged evento. Usted debe cogerlo para todos Barra de seguimiento objetos. A continuación, se lee un valor de color de Barra
UpdateColorPanel () función actualiza el color del panel cambiando BackColor de las propiedades del panel.
66
Capítulo 3 ■ Detección y accionamiento
Cuando los usuarios hacen clic en el botón de ejecución, el programa se conectará a la placa Arduino y cambiar el
color del LED RGB. Por favor, cambie el puerto de Arduino. En este caso, mi Arduino se detectó como COM5. Se debe
cambiar para su puerto serie Arduino.
tratar
Connection.close (); }
MessageBox.Show (err.Message); }
Se puede ver el programa anterior. Cuando los usuarios hacen clic en el botón Ejecutar, el programa enviará valores de
rojo, verde y azul a través de Arduino Firmata llamando a un SetDigitalPin ()
método. Antes de llamar a este método, puede declarar las patas como las PwmOutput llamando a un SetDigitalPinMode
() método.
Guardar el programa. Ahora se puede ejecutar el programa. Después de correr, puede cambiar los valores de rojo, verde y azul,
cambiando Barra de seguimiento. Después de que se ha seleccionado, haga clic en el botón Ejecutar. Entonces, usted debe ver que el
LED RGB se iluminaba con el color elegido. Usted puede ver mi formulario de solicitud en la figura 3-17 .
67
Capítulo 3 ■ Detección y accionamiento
Resumen
Hemos aprendido a acceder a los dispositivos de sensores y actuadores en Arduino usando un programa de dibujo. Utilizamos un RGB
LED y un módulo de DHT22 como una muestra de accionador y sensor. Por otra parte, hemos construido un programa .NET para
acceder a los dispositivos de sensores y actuadores en Arduino. En el siguiente capítulo, vamos a aprender a trabajar de Windows
Arduino remoto (MEF) para una plataforma de aplicaciones de Windows universal (UWP). Esta plataforma se puede ejecutar en
Frambuesa Pi, tableta de Windows, y escritorio de Windows.
68
CAPÍTULO 4
Microsoft está trabajando en el desarrollo de la IO intensiva. La principal tecnología de Microsoft, .NET Microsoft, está siendo
empujado con el fin de llevar a cabo con las plataformas actuales de la IO como Arduino y Raspberry Pi. Microsoft lanzó la biblioteca
Arduino remoto de Windows para permitir a la plataforma de Microsoft de Windows (llamado Plataforma Windows universal, o UWP)
para trabajar en una plataforma Arduino. La tecnología uwp hace que nuestro programa funciona en cualquier plataforma Windows, tal
como un ordenador, tableta, teléfono inteligente, y los tableros de la IO.
Ventanas Arduino es una biblioteca remota de Microsoft en el que un marco basado en .NET aplicación de
Windows puede controlar a través de una placa Arduino USB y la comunicación Bluetooth. Lo que quiero decir en
este caso por “.NET framework” es marco .NET de la plataforma de Windows universal. Microsoft ha introducido
una plataforma universal de Windows (UWP) en Windows 8 o posterior.
A través de la plataforma de Windows universal (UWP), podemos desarrollar una aplicación .NET que se ejecuta en
cualquier plataforma Windows, como escritorio, teléfonos inteligentes, tabletas y las juntas de la IO. Técnicamente, algunas API
.NET se cortan generalizar arquitectura de la aplicación. Para más información sobre plataforma Windows universal, le sugiero
que lea este sitio web:
https://msdn.microsoft.com/en-us/windows/uwp/get-started/whats-a-uwp .
Figura 4-1 muestra cómo interactúa uwp entre los dispositivos.
Capítulo 4 ■ Arduino remoto de Windows
Ventanas Arduino remoto está diseñado para la plataforma de Windows universal, por lo que si usted tiene tabletas de
Windows, como Microsoft Surface, podemos controlar nuestro Arduino para recuperar la información del sensor o para accionar
algunos objetos físicos que rodean una placa Arduino.
La tecnología UWP utiliza un marco .NET de la base del programa. Significa marco UWP es un subconjunto del
marco .NET. Gráfica Unidad de interfaz de usuario (GUI) en UWP utiliza la tecnología de XAML. Usted debe estar
familiarizado XAML en Windows Presentation Foundation (WPF), por lo que no es necesario invertir más en el aprendizaje
de uwp si tiene experiencia en WPF.
Lo que usted debe entender es que Windows Arduino remoto funciona en la parte superior de la plataforma de
Windows universal. Para desarrollar esta aplicación, debe instalar Windows 8 o posterior. Actualmente, recomiendo el uso de
Windows 10 para el desarrollo.
Desarrollar plataforma Windows universal (UWP), podemos utilizar Visual Studio 2015 o más tarde. Se ha instalado
plantillas de proyecto UWP. Se puede ver en la figura 4-2 .
70
Capítulo 4 ■ Arduino remoto de Windows
La Figura 4-2. Las plantillas de proyecto para la plataforma Windows universal (UWP)
¡Empecemos!
Alambrado
Para llevar a cabo nuestra demo, hay que conectar nuestros componentes. Nuestros tres LEDs están asociadas a Arduino con el
siguiente esquema:
Es posible usar una resistencia de cada LED para proteger el LED. Por último, se puede ver mi cableado en la figura 4-3 .
71
Capítulo 4 ■ Arduino remoto de Windows
Programa de Arduino
Para que nuestra aplicación para comunicarse con la placa Arduino, tenemos que configurar nuestras tablas.
Ventanas Arduino remoto requiere un programa Firmata Boceto instalado en la placa Arduino.
Para instalar Firmata Boceto, puede abrir Arduino IDE. A continuación, haga clic en el menú Archivo ➤
Ejemplos ➤ firmata ➤ StandardFirmata. Debería ver el programa Firmata Croquis en Arduino IDE. Después de eso, se debe
cambiar la velocidad en baudios a 57600. Se puede ver en la figura 4-4 .
72
Capítulo 4 ■ Arduino remoto de Windows
Ahora puede compilar y cargar el programa Firmata Boceto en la placa Arduino. Si se hace, su
tablero está listo para recibir comandos desde una aplicación .NET.
73
Capítulo 4 ■ Arduino remoto de Windows
Después de crear un proyecto, se le pedirá para una versión de destino. Seleccione la versión más reciente en versión de destino.
Se puede ver en la figura 4-6 .
Si tiene éxito, debe consultar a su proyecto con XAML interfaz gráfica de usuario. Se puede ver la lista de archivos de proyecto en la
figura 4-7 .
74
Capítulo 4 ■ Arduino remoto de Windows
Para permitir que nuestra aplicación de Windows universal (UWP) para comunicarse con Arduino, hay que añadir ventanas de la biblioteca
Arduino remoto. Puede hacer clic en el menú de Visual Studio 2015: Herramientas ➤ NuGet Administrador de paquetes ➤ Consola del gestor
de paquetes. A continuación, debería ver la consola de Administrador de paquetes en Visual Studio. Asegúrese de seleccionar nuestro
Esta tarea requiere la comunicación por Internet. Se puede ver la salida del programa en la figura 4-8 .
75
Capítulo 4 ■ Arduino remoto de Windows
La Figura 4-8. Instalar Arduino remoto de Windows a través de la consola Administrador de paquetes
Después de que éste se agrega, debería ver esta biblioteca en el esquema de proyecto, que se muestra en la figura 4-9 .
76
Capítulo 4 ■ Arduino remoto de Windows
Capacidades <>
<Capacidad Name = "internetClient" />
</ Capacidades>
Ahora deberíamos tener una capacidad de comunicación en serie. Se pueden añadir los siguientes scripts en negrilla:
Capacidades <>
<Capacidad Name = "internetClient" />
dispositivo>
</ DeviceCapability>
</ Capacidades>
Textblock, y un componente de botón. Diseñamos nuestra interfaz gráfica de usuario en el archivo MainPage.xaml, que se muestra en la
figura 4-10 .
77
Capítulo 4 ■ Arduino remoto de Windows
<Página
x: Class = "BlinkingLed.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x =
"http://schemas.microsoft.com/winfx/2006/xaml" xmlns: Local = "usando: BlinkingLed "
</
Se puede ver en XAML botón cuales evento Click se pasa por TurnOffLeds método. Esto se llevará a
cabo en MainPage.xaml.cs.
Dentro MainPage.xaml.cs, debemos modificar nuestros códigos de trabajar con nuestro escenario. En primer lugar, añadimos
78
Capítulo 4 ■ Arduino remoto de Windows
MainPage pública () {
InitWRA (); }
arduino.Dispose (); }
En este código, mi Arduino USB es reconocido como VID_2341 y PID_0043 parámetros para usbserial objeto.
Para obtener estos datos, se debe abrir la propiedad de Arduino USB que es detectada por el ordenador. Abra
Administrador de dispositivos y ampliar su Arduino USB. Se puede ver en la figura 4-11 .
79
Capítulo 4 ■ Arduino remoto de Windows
Figura 4-11. Arduino Uno es detectado como COM5 en la herramienta Administrador de dispositivos
Abrir la propiedad de Arduino USB, de modo que obtenga un cuadro de diálogo. Haga clic en la pestaña Detalles. A continuación,
seleccione ID de hardware en la propiedad. Debería ver los valores de VID y PID para su USB Arduino. Se los puede ver en mi Arduino
USB, que se muestra en la figura 4-12 . Estos valores deben ser insertados en nuestro programa.
80
Capítulo 4 ■ Arduino remoto de Windows
Ahora volvemos a los códigos de MainPage.xaml.cs. En nuestro método, InitWRA (), ponemos en práctica nuestra Connection_ConnectionEs
evento. También aplicamos nuestro evento marcado y sin marcar en el componente Casilla de verificación mediante la
implementación HandleCheck ()
y HandleUnchecked () métodos. Finalmente, se aplica TurnOffLeds () el evento Click de un botón. La siguiente
es la implementación.
txtStatus.Text = "conectado"; }
81
Capítulo 4 ■ Arduino remoto de Windows
chkLed1.IsChecked = false;
chkLed2.IsChecked = false;
chkLed3.IsChecked = false; }
Guardar todos los cambios. Nuestro programa está listo para la prueba.
Pruebas
Se puede compilar nuestro programa. Antes de ejecutar el programa, debe implementar el programa a un entorno UWP.
Haga clic derecho en el proyecto y luego seleccione Implementar en un menú contextual. Se muestra en la figura 4-13 .
82
Capítulo 4 ■ Arduino remoto de Windows
Ahora se puede ejecutar el programa haciendo clic en una flecha verde con el blanco de la máquina local. Después se hace clic,
Para la prueba, se puede activar el LED 1, 2 LED o LED 3 haciendo clic en la casilla de verificación.
83
Capítulo 4 ■ Arduino remoto de Windows
Si marcó la casilla de verificación en LED 1 y 2, debería ver la iluminación LED LED 1 y 2. Para desactivar todos
los LED, puede hacer clic en el Apagar todos los LED botón.
Ahora hemos visto cómo acceder a E / S digital en Arduino Arduino a través de Windows remoto. En la siguiente
sección, continuamos acceder a módulos de E / S en Arduino.
84
Capítulo 4 ■ Arduino remoto de Windows
85
Capítulo 4 ■ Arduino remoto de Windows
Alambrado
• GND / VCC pin de RGB LED está conectado a GND / VCC Arduino.
• pin azul de LED RGB está conectado al pin digital 11 Arduino. Esto se puede ver en
86
Capítulo 4 ■ Arduino remoto de Windows
Puede crear un proyecto uwp desde Visual Studio. Usted ha aprendido que en la sección anterior. Nombre del proyecto “RGBDemo”. A
continuación, agregue la biblioteca de Arduino remoto de Windows a través de la consola Administrador de paquetes. Después de que se
ha creado, se debe añadir la capacidad del dispositivo adicional sobre Package.appxmanifest. La secuencia de comandos en negrita es
Capacidades <>
<Capacidad Name = "internetClient" />
<DeviceCapability Name = "serialcommunication"> <Device Id =
"any">
<Función Tipo = "Nombre: SERIALPORT" /> </
dispositivo>
</ DeviceCapability>
</ Capacidades>
Programa de Arduino
Para trabajar con un programa UWP, se debería instalar un programa Firmata Skecth en Arduino como en la sección.
Seleccionar StandardFirmata. Se llevará a cabo esta tarea de construir un proyecto uwp en este capítulo. Después
StandardFirmata se carga en Arduino IDE, parpadeará el programa en la placa Arduino.
■ Nota todos los programas de Arduino relacionados con un proyecto de aplicación UWP deben ser instalados y desplegados
87
Capítulo 4 ■ Arduino remoto de Windows
Ponemos un lienzo para mostrar el color actual, tres controles deslizantes y un botón para solicitar el cambio de color. Se
puede ver los códigos completos para XAML de la siguiente manera:
<Página
x: Class = "RGBDemo.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x =
"http://schemas.microsoft.com/winfx/2006/xaml" xmlns: Local = "usando: RGBDemo "
88
Capítulo 4 ■ Arduino remoto de Windows
</
Dentro de los controles deslizantes, cogemos ValueChanged evento llamando ChangeRedColor (), ChangeGreenColor
(), y ChangeBlueColor () métodos. También cogemos Haga clic en el botón evento llamando al método changeColor (). Vamos a
ponerlas en práctica en el código MainPage.xaml.cs.
Ahora debemos modificar MainPage.xaml.cs. En primer lugar, añadimos las bibliotecas necesarias escribiendo estas
bibliotecas:
En el constructor, inicializamos nuestra biblioteca MEF. Hemos establecido todos los pines que se utilizan para LEDs
RGB en modo PWM. Cambio de valores “PID_0043” para su Arduino USB, lo que hemos aprendido en la sección anterior
“VID_2341” y.
MainPage pública () {
this.InitializeComponent ();
rojo = 0;
verde = 0;
azul = 0;
89
Capítulo 4 ■ Arduino remoto de Windows
arduino.Dispose (); }
}
Connection_ConnectionEstablished private void () {
System.Diagnostics.Debug.WriteLine ( "conectado");
En el archivo MainPage.xaml, fijamos nuestros eventos para ValueChanged y Hacer clic evento para el botón. Podemos
90
Capítulo 4 ■ Arduino remoto de Windows
Puede ver los otros códigos que nos planteamos LED RGB de tres entradas de color. Si se hace, guardar todos los archivos.
Pruebas
Ahora puede compilar y ejecutar el programa. Si se produce un error durante la ejecución del programa, debe implementar
el programa y luego ejecutarlo. Se puede ver el programa, como se muestra en la figura 4-20 .
91
Capítulo 4 ■ Arduino remoto de Windows
Cambiar el color actual deslizando tres colores: rojo, verde y azul-en los controles deslizantes. Si se hace, haga clic en el
botón Cambiar para aplicar el color seleccionado para LED RGB. Se puede ver la muestra de salida del LED RGB en la figura 4-21
.
Figura 4-21. RGB LED de iluminación basado en la selección de los colores rojo, verde y azul
En esta sección, aprendemos cómo acceder a I2C desde una aplicación .NET a través de la biblioteca de Arduino remoto
de Windows. Para la prueba, utilizo un módulo PCF8591 AD / DA que consta de termistor, fotorresistencia, y el potenciómetro.
Dado que este módulo utiliza IC PCF8591, este módulo se puede acceder en I2C. Puede encontrar este módulo fácilmente en
una tienda en línea, por ejemplo, eBay y Aliexpress.
92
Capítulo 4 ■ Arduino remoto de Windows
• módulo PCF8591 SCL está conectado a Arduino SCL (pin A5). Una muestra de mi cableado de
93
Capítulo 4 ■ Arduino remoto de Windows
Utilizando Visual Studio 2015, puede crear un nuevo proyecto con una plantilla en blanco Aplicación (Universal Windows). Después de
eso, instale la biblioteca Arduino remoto de Windows. A continuación, también debe configurar el archivo Package.appxmanifest a la
capacidad adicional para acceder a USB. Puede escribir estos códigos en negrilla de la siguiente manera:
Capacidades <>
<Capacidad Name = "internetClient" />
<DeviceCapability Name = "serialcommunication"> <Device Id =
"any">
<Función Tipo = "Nombre: SERIALPORT" /> </ dispositivo>
</ DeviceCapability>
</ Capacidades>
94
Capítulo 4 ■ Arduino remoto de Windows
El primer paso para construir un programa UWP es construir la interfaz de usuario de la aplicación. Acabamos de poner Textblock para
mostrar información sobre los valores del termistor, fotovoltaicos y el potenciómetro. Se puede ver la interfaz de usuario de la aplicación de la
figura 4-24 .
El siguiente es un script de XmaI para nuestra interfaz de usuario de la aplicación en el archivo MainPage.xaml:
95
Capítulo 4 ■ Arduino remoto de Windows
</ Cuadrícula>
El siguiente paso es modificar nuestros códigos en MainPage.xaml.cs. En primer lugar, añadimos las bibliotecas necesarias que
se utilizan en la aplicación.
usando System.Text;
usando Windows.ApplicationModel.Core; usando
Microsoft.Maker.Serial; usando
Microsoft.Maker.RemoteWiring;
A continuación, se agregan variables para el procesamiento de Arduino y el módulo PCF8591 AD / DA. También definimos la
variable, llamada i2cReading, como la recogida de cola, que se utiliza para almacenar la lectura de datos desde el módulo. En el proceso
de lectura, se implementa un método asíncrono, por lo que utilizar un temporizador a través de DispatcherTimer objeto para leer los
datos del sensor en un tiempo continuo.
privada PCF8591 byte = const (0x90 >> 1); // Dispositivo dirección de byte private const
PCF8591_ADC_CH0 = 0x40; // termistor privada bytes const PCF8591_ADC_CH1 = 0x41;
// fotovoltaica celda privada bytes const PCF8591_ADC_CH2 = 0x42;
En el constructor, inicializamos nuestra biblioteca MEF. Hemos establecido todos los pines que se utilizan para la aplicación
I2C. Cambio de valores “PID_0043” para su Arduino USB, lo que hemos aprendido “VID_2341” y.
MainPage pública () {
InitWRA (); }
96
Capítulo 4 ■ Arduino remoto de Windows
connection.end ();
arduino.Dispose (); }
Una vez que la aplicación está conectada a USB, activamos nuestra hora de comienzo para leer datos de un módulo
PCF8591 AD / DA. datos I2C está viniendo I2cReplyEvent evento después de que denominamos Readadc () método.
index = 0;
97
Capítulo 4 ■ Arduino remoto de Windows
si (isReading)
regreso;
isReading = true;
interruptor (índice) {
caso 0:
i2cReading.Enqueue (index);
System.Diagnostics.Debug.WriteLine ( "PCF8591_ADC_CH0"); Readadc
(PCF8591_ADC_CH0); descanso; caso 1:
i2cReading.Enqueue (index);
System.Diagnostics.Debug.WriteLine ( "PCF8591_ADC_CH1"); Readadc
(PCF8591_ADC_CH1); descanso; caso 2:
i2cReading.Enqueue (index);
System.Diagnostics.Debug.WriteLine ( "PCF8591_ADC_CH2"); Readadc
(PCF8591_ADC_CH2); descanso;
}
índice ++;
si (índice> 2)
index = 0;
El último paso es definir Readadc () métodos. En este método, hacemos posible que el modo I2C y enviar datos al bus I2C para
recuperar datos desde el módulo. Cada resultado de la lectura se almacena en el objeto de cola. Para actualizar los datos en la interfaz
de usuario, definimos Actualizar datos() método. Ponemos en práctica el método asíncrono porque trabajamos en modo asíncrono por lo
que debemos realizar para cruzar entre las roscas.
arduino.I2c.enable ();
arduino.I2c.I2cReplyEvent + = I2c_I2cReplyEvent;
arduino.I2c.beginTransmission (PCF8591);
arduino.I2c.write (config); arduino.I2c.endTransmission
();
98
Capítulo 4 ■ Arduino remoto de Windows
interruptor (índice) {
caso 0:
txtThermistor.Text = Convert.ToString (valor); descanso; caso
1:
Pruebas
Ahora puede compilar el programa. En primer lugar, implementar el programa y luego ejecutarlo. Debería ver la información de
termistor, fotovoltaicos y el potenciómetro. Se puede ver en la figura 4-25 .
99
Capítulo 4 ■ Arduino remoto de Windows
Para una demostración, utilizo una serie de Bluetooth barato: HC-06. Este módulo está disponible en las tiendas en línea
como eBay, Aliexpress, y Banggood. Se puede ver en la figura 4-27 . módulo Bluetooth HC-06 tiene cuatro pines: Tx, Rx, VCC,
GND y.
100
Capítulo 4 ■ Arduino remoto de Windows
En el lado del ordenador, es necesario un dispositivo Bluetooth que sea compatible con el módulo Bluetooth de
Arduino. Varios ordenadores por lo general han incorporado Bluetooth 4.0, por lo que puede usar eso. Para las pruebas,
yo uso un módulo externo USB Bluetooth 4.0. Puede comprobarlo en https://www.adafruit.com/product/1327 . Sólo tiene
que conectarlo a su ordenador. Entonces, el equipo debe reconocerlo.
En esta sección, vamos a utilizar el mismo grupo demográfico como la primera demostración en este capítulo: iluminación LED
mediante la aplicación UWP. Esta demo utilizará un módulo Bluetooth para la comunicación entre una placa Arduino y un ordenador.
Para las pruebas, yo uso HC-06 de Bluetooth para Arduino y Bluetooth 4.0 USB (RSE) para mi equipo. Vamos a
controlar LEDs para ser encendido / apagado. la comunicación Bluetooth entre Arduino y el ordenador se realiza
mediante Windows Arduino remoto.
• LED 1, LED 2, y el LED 3 están conectados a Arduino pin digital 12, 11 y 10.
101
Capítulo 4 ■ Arduino remoto de Windows
El siguiente paso consiste en emparejar Arduino Bluetooth Bluetooth a la computadora para que puedan comunicarse
entre sí. Después de que la placa Arduino está activada, el módulo Arduino Bluetooth (HC-06) emitirá señales de
Bluetooth. En el lado del ordenador, hay que encender el dispositivo Bluetooth, también.
En Windows 10, podemos ver un cuadro de diálogo Administrar dispositivo Bluetooth en Ajustes. Debería ver nuestra
Arduino Bluetooth en este panel. Usted puede ver mi HC-06 de Bluetooth, que se reconoce en mi escritorio de Windows 10
en la figura 4-29 .
102
Capítulo 4 ■ Arduino remoto de Windows
Puede emparejar HC-06 de Bluetooth con Bluetooth ordenador. La clave por defecto para el emparejamiento de HC-06 es 1234.
Después de que se empareja, debería ver Arduino Bluetooth en el Administrador de dispositivos. Por ejemplo, mi HC-06 se reconoce como
103
Capítulo 4 ■ Arduino remoto de Windows
Utilizando Visual Studio 2015, puede crear un nuevo proyecto con una plantilla en blanco Aplicación (Universal Windows). Por
ejemplo, el nombre del proyecto es “BlinkingLedBL”. Después de eso, instale la biblioteca Arduino remoto de Windows. A
continuación, también debe configurar el paquete. appxmanifest archivo de capacidad adicional para acceder a Bluetooth USB.
Puede escribir estos códigos en negrilla de la siguiente manera:
Capacidades <>
<Capacidad Name = "internetClient" />
<DeviceCapability Name = "bluetooth.rfcomm"> <Device Id =
"any">
<Función Tipo = "Nombre: SERIALPORT" /> </ dispositivo>
</ DeviceCapability>
</ Capacidades>
104
Capítulo 4 ■ Arduino remoto de Windows
En InitWRA () método, se modifica para instanciar el objeto BluetoothSerial pasando un nombre de dispositivo Bluetooth
emparejado. Debe cambiar la velocidad en baudios también. En este caso, el dispositivo Bluetooth utiliza la tasa de baudios 9600.
connection.ConnectionEstablished + = Connection_ConnectionEstablished;
connection.ConnectionFailed + = Connection_ConnectionFailed; connection.ConnectionLost + =
Connection_ConnectionLost;
connection.begin (9,600, 0);
Se puede ver que el objeto BluetoothSerial necesita un nombre de serie Bluetooth. Por ejemplo, mi módulo HC-06 se
reconoce con el nombre “Dev B”. ¿Cómo conseguir este nombre? En primer lugar, abrir la propiedad de la Bluetooth
emparejado en el equipo. Una muestra de un Bluetooth emparejado se muestra en la figura 4-31 .
105
Capítulo 4 ■ Arduino remoto de Windows
Hacer clic puertos COM propiedad. Debería ver un Bluetooth emparejado. Muestra COM entrante y saliente.
Se puede observar en la figura 4-32 . Se puede ver “Dev B” para COM de salida, que se utiliza en nuestra aplicación.
106
Capítulo 4 ■ Arduino remoto de Windows
Pruebas
Ahora puede probar el programa después de que se compila y se despliega. Puede activar el LED con la comprobación
de la caja. Debe ver la iluminación LED.
Resumen
En este capítulo, hemos aprendido cómo construir programas de Windows remoto Arduino (MEF) en la plataforma de Windows
universal. Empezamos desde el control digital y analógica de E / S hasta que el acceso a Arduino a través del bus I2C. También
aprendimos cómo configurar MEF a través de Bluetooth, por lo que podemos controlar Arduino de una pila de Bluetooth basados en
programas UWP. En el siguiente capítulo, vamos a explorar cómo nuestra Arduino interactúa con un servidor de la nube.
107
CAPÍTULO 5
En general, Internet de las Cosas (IOT) juntas han limitado almacenamiento para almacenar los datos de los sensores. No podemos
guardar los datos de los sensores en el almacenamiento local. En este capítulo, se aprende cómo publicar nuestros datos del sensor
por lo que los datos pueden ser consumidos por otro sistema. Proponemos servidor web, servidor personalizado, y el servidor de la
nube para almacenar sus datos y la que publicamos, a partir de la forma de conectar la placa Arduino a una red de Internet y haciendo
datos de sensores y publicación. Varias técnicas para comunicarse con los servidores se introducen con varios protocolos de
comunicación. También vamos a aprender a interactuar entre una aplicación .NET y Arduino para comunicarse a través de una red.
En este capítulo, no entrar en detalles sobre la IO. Usted puede leer acerca de un concepto y la arquitectura de la IO y la
forma de construirlos. Lo que aprendemos en este capítulo es explorar cómo una placa Arduino se conecta a otro sistema a
través de una red.
pilas de red, tales como redes alámbricas e inalámbricas pueden ser utilizadas por las placas Arduino. Si una placa
Arduino no tiene capacidades de red, puede conectar la placa Arduino a una computadora o un mini-ordenador, como
Raspberry Pi, siendo una puerta de enlace. Este equipo se utiliza para enviar y recibir datos desde otro sistema.
En la siguiente sección, vamos a aprender cómo Arduino se conecta a una red de Internet y luego enviar datos a
un sistema de red.
110
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Un protector de Ethernet es fácil de usar. Que acaba de conectar este escudo en una placa Arduino. También se
puede encontrar este escudo en el sitio web oficial o comprar un escudo de Ethernet del fabricante chino con precios
bajos. Tengo un escudo Arduino Ethernet que se adjunta en la placa Arduino UNO. Se puede ver en la figura 5-3 .
111
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Para la prueba, se utiliza un bosquejo muestra de Arduino: WebServer. Se puede encontrar desde Arduino IDE en el menú
Archivo ➤ Ejemplos ➤ Ethernet ➤ Servidor web. Después de que se ha seleccionado, usted debe debe obtener el siguiente esquema:
# incluir <SPI.h>
# incluir <Ethernet.h>
void setup () {
// Abrir las comunicaciones serie y esperar a que el puerto de abrir:
Serial.begin (9600); while (! Serial) {
; // espera para el puerto serie para conectar. Necesario para el puerto USB nativo solamente}
void loop () {
// detectar clientes entrantes
cliente EthernetClient = server.available (); si (cliente) {
// Si ha llegado hasta el final de la línea (recibido una nueva línea // caracteres) y la línea está
en blanco, la petición HTTP ha terminado, // por lo que puede enviar una respuesta
112
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
si (c == '\ n') {
// vas a empezar una nueva línea
currentLineIsBlank = true; } Else if (c! = '\
R') {
// que ha llegado a un personaje en la línea actual
currentLineIsBlank = false; }}}
Guardar este programa. Intente compilar y cargar el programa Boceto de una placa Arduino. Asegúrese de que
su escudo de Ethernet está conectado a un cable de red.
Por defecto, el programa se ejecuta como cliente DHCP para recuperar una dirección IP. Su red debe tener un
servidor DHCP en la red. Se puede utilizar un router que está conectado a una red.
Después de ejecutar el programa, Serial Monitor abierta para ver la dirección IP de su Arduino. Usted puede ver
mi dirección IP de mi Arduino UNO, como se muestra en la figura 5-4 .
113
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Después de conocer la dirección IP de la placa Arduino, puede abrir un navegador y vaya a la dirección IP de
Arduino. Si tiene éxito, debería ver información acerca de entrada analógica en A0 ... A5. Se puede ver la salida de la
muestra en la figura 5-5 .
Como he explicado, por defecto, placa Arduino no tiene un módulo Wi-Fi. Hay que añadir un Escudo WiFi (por
ejemplo, Arduino Yun Shield), que se muestra en la figura 5-6 . También podríamos utilizar Arduino MKR1000 para
conectar la red Wi-Fi existente. Arduino MKR1000 tiene un módulo WiFi incorporado. Puede revisar este tablero en
este sitio: https: // www.arduino.cc/en/Main/ArduinoMKR1000 .
114
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
También puede utilizar las placas Arduino como Arduino Arduino Yun y MKR1000, que están listos para la conexión
Wi-Fi. Puede utilizar Arduino Yun del blindaje por una placa Arduino ( https://www.arduino.cc/en/Main/ArduinoYunShield ), como
se muestra en la figura 5-6 . Para las pruebas, yo uso Arduino MKR1000 para mostrar cómo una placa Arduino se conecta a la
tienda picante WiFi existente.
Con el fin de Arduino MKR1000 para trabajar con el software de Arduino, hay que instalar
Juntas Samd Arduino. Puede abrir el Administrador de Juntas y buscar “Juntas Samd Arduino”. Si se detecta,
puede instalarlo. Se puede ver en la figura 5-7 . Asegúrese de que su ordenador ya está conectado a una red
de Internet.
115
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Una vez instalado, se puede conectar Arduino MKR1000 a su ordenador. Usted puede ver mi Arduino MKR100
conectado a mi equipo, como se muestra en la figura 5-8 .
Después de Arduino MKR1000 está conectado a un ordenador con sistema operativo Windows, se puede ver el tablero será
reconocido como COMx. Mi placa Arduino MKR1000 se detecta como COM7, que se muestra en la figura 5-9 .
116
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
El siguiente paso es empezar a construir un programa. Con el fin de acceder a una red Wi-Fi, necesitamos una biblioteca de conexión
Wi-Fi para la placa Arduino MKR1000. Podemos utilizar la biblioteca WiFi101. Puede instalar la biblioteca WiFi101 desde el Administrador de
Biblioteca. Encontrar e instalar la biblioteca WiFi101. Esto se puede ver en la figura biblioteca 5-10 .
117
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Construimos un programa Boceto para hacer que la placa Arduino MKR1000 conectarse a una red Wi-Fi existente. Por
ejemplo, nos conectamos a un punto de acceso WiFi con seguridad WPA. Para la prueba, se puede utilizar una muestra del
programa de Arduino Software, ConnectWithWPA.
Después de cargar el programa Boceto para ConnectWithWPA, puede modificar los valores de SSID y pasar por el
WiFi SSID y la clave WiFi. Se puede ver el siguiente programa Boceto:
# incluir <SPI.h>
# incluir <WiFi101.h>
void setup () {
// Inicializar serie y esperar a que el puerto de abrir: Serial.begin
(9600); while (! Serial) {
; // espera para el puerto serie para conectar. Necesario para el puerto USB nativo solamente}
118
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
void loop () {
// comprobar la conexión de red una vez cada 10 segundos: de retardo (10
000); printCurrentNet (); }
printWifiData vacío () {
// imprimir la dirección IP de su escudo WiFi: Dirección
IP ip = WiFi.localIP (); Serial.print ( "Dirección IP:");
Serial.println (ip); Serial.println (ip);
119
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
printCurrentNet vacío () {
// imprimir el SSID de la red a la que está conectado a: Serial.print (
"SSID:"); Serial.println (WiFi.SSID ());
// imprimir la dirección MAC del router que está conectado a: BSSID byte [6];
WiFi.BSSID (BSSID); Serial.print ( "BSSID:"); Serial.print (BSSID [5], HEX);
Serial.print ( ":");
Guardar el programa. Ahora puede compilar y cargar el programa a Arduino MKR1000. Abra la herramienta
Monitor de serie para ver la dirección IP de Arduino MKR1000. Usted puede ver mi muestra de salida bordo en la figura 5-11
.
120
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Si tiene problemas en Arduino MKR1000, es posible actualizar el módulo Wi-Fi en Arduino MKR1000.
Puede seguir estas instrucciones para actualizar el firmware de Arduino MKR1000: https://www.arduino.cc/en/Tutorial/Firmware
.
En la sección anterior, hemos aprendido cómo hacer que nuestras placas Arduino conectarse a una red existente a través
de Ethernet y un módulo Wi-Fi. Ahora tratamos de construir una aplicación .NET para acceder a las placas Arduino sobre el
aire.
Nuestro escenario es construir una aplicación .NET (aplicación UWP) para controlar LED a través de WiFi. Utilizamos Arduino
MKR1000 como una placa de desarrollo. Para construir nuestro laboratorio, necesitamos los siguientes dispositivos:
• Arduino MKR1000
• tres LED
• Computadora con Windows instalado y Visual Studio 2015 o con posterioridad Vamos a encender / apagar los LEDs a
través de Wi-Fi desde una aplicación UWP. Aplicamos HTTP GET para encender / apagar los LEDs. Se puede ver nuestra asignación de
dirección URL HTTP GET para la demostración en la tabla 5-1 . Ponemos en práctica este mapeo URL para nuestra demostración.
121
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Tabla 5-1. Peticiones HTTP GET para encender / apagar los LED
URL Nota
Para llevar a cabo nuestro programa, vamos a construir un programa de dibujo y una aplicación UWP. Necesitamos un
programa de dibujo con el fin de interactuar con una aplicación externa, como una aplicación UWP. El programa de esbozo
escuchará los comandos de entrada (HTTP GET) para ser ejecutado. Por otra parte, una aplicación UWP es una aplicación
cliente que envía comandos a Arduino para realizar algo.
Alambrado
• Todos los pines GND LED están conectados al pin GND en el tablero. Si va a preocuparse por sus LEDs, se
puede poner una resistencia en cada LED para evitar un alto voltaje. Se puede ver el cableado en la figura 5-12 .
122
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Se puede ver mi implementación de cableado, como se muestra en la figura 5-13 . Tres LEDs son
unido a una placa Arduino MKR1000.
123
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Construimos un programa Boceto para recibir comandos para activar / desactivar el LED basado en la asignación de URL,
que se describe en la tabla 5-1 . Puede escribir los guiones de software de Arduino:
# incluir <WiFi101.h>
void setup () {
Serial.begin (9600); de
retardo (10);
124
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Serial.println ( "");
Serial.println ( "WiFi conectado");
// Iniciar la server.begin
servidor ();
Serial.println ( "Servidor comenzó");
void loop () {
// Comprobar si un cliente se ha conectado WiFiClient
cliente = server.available (); si (cliente!) {return; }
125
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
else {
Serial.println ( "petición no válida"); client.stop ();
regreso; }
client.flush ();
// Preparar la respuesta
String s = "HTTP / 1.1 200 OK \ r \ nContent-Type: text / html \ r \ n \ r \ n \ r \ n <html> \ r \ n <HTML!
DOCTYPE>";
126
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
si (ledreq == 1) {s + =
"LED1 es";
s + = (val1)? "ENCENDIDO APAGADO";
} Else if (ledreq == 2) {s + = "LED2 es";
Debe cambiar el SSID y ssid_key de SSID y la clave SSID. Guardar estos scripts como “IoTDemo”. Intente compilar y
cargar un programa en Croquis para Arduino MKR1000. Si se hace, se puede abrir una herramienta Monitor de serie para ver
la dirección IP de Arduino MKR1000. Usted puede ver mi dirección IP de la junta en la figura 5-14 .
Figura 5-14. La herramienta de seguimiento de serie muestra la dirección IP para Arduino MKR1000
127
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Ahora puede probar mediante la apertura de un navegador. Navegar a http: // <servidor> / GPIO1 / 1 para encender el LED
de 1. Debe cambiar <servidor> a la dirección IP de Arduino MKR1000.
Si tiene éxito, debería ver una respuesta de Arduino MKR1000. Para una muestra, se puede ver una respuesta
de mi Arduino, que se muestra en la figura 5-15 .
Se puede ver su iluminación LED para el LED 1 en la figura 5-16 mientras que usted está enviando un comando para activar
el LED 1.
128
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Si abre herramienta Monitor de serie de Arduino, debería ver las solicitudes de Arduino MKR1000. Se puede
ver que es una salida del programa, que se muestra en la figura 5-17 .
En esta sección, desarrollamos una aplicación UWP. Este programa funcionará como una “aplicación cliente”, que envía comandos
a Arduino para encender / apagar los LED. Nuestro programa de dibujo en Arduino funciona como un servidor web que recibe
comandos HTTP GET.
Crear un proyecto UWP con el nombre del proyecto “WiFiLed”. Luego construir la siguiente interfaz de usuario. Se puede ver nuestra
129
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Nosotros ponemos Caja de texto y Interruptor de palanca en un lienzo de la interfaz de usuario. Puede escribir las siguientes
<Página
x: Class = "WiFiLed.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x =
"http://schemas.microsoft.com/winfx/2006/xaml" xmlns: Local = "usando: WiFiLed "
130
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
</
Ahora trabajamos en MainPage.xaml.cs. En primer lugar, añadimos nuestro espacio de nombres requisito para nuestro programa.
usando Windows.Web.Http;
Si ve guiones XAML, se pasa a un método en un evento de activar y desactivar. Construimos tres métodos: ToggleLed1,
ToggleLed2, y ToggleLed3. Estos métodos son escuchar el estado del LED. Si están alternados, encendemos el LED.
La siguiente es la aplicación de estos métodos:
si (toggleLed1.IsOn) {
SendCommand (url);
UpdateStatus (1, estado); }
131
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
si (toggleLed2.IsOn) {
SendCommand (url);
UpdateStatus (2, estado); }
si (toggleLed3.IsOn) {
SendCommand (url);
UpdateStatus (3, Estado); }
Como se puede ver, que llamamos cada método Biestado SendCommand () para enviar datos a Arduino y MKR1000 Estado de
si (== estado 1)
txtStatus.Text = string.Format ( "LED {0} es ON", LED); más
tratar
132
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
}
catch (Exception ex) {
System.Diagnostics.Debug.WriteLine (ex.Message); }
Guarde todos los programas. También puede añadir capacidades adicionales en una solicitud de UWP. Añadir una internetClient característica
en nuestra aplicación.
Pruebas
Guardar el proyecto UWP. A continuación, tratar de compilar y ejecutar el programa. Por favor, rellene la dirección IP de Arduino MKR1000.
Ahora se puede activar el LED de encendido / apagado haciendo clic en los controles de activar y desactivar.
133
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
134
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
El siguiente paso es configurar los ajustes de Wi-Fi para Arduino. Lo configuramos en wifiConfig.h. Debido a que
utilizamos Arduino MKR1000, debe descomentar para WIFI_101. Debe cambiar SSID y la clave SSID. El puerto
predeterminado para el servidor es 3030. Puede cambiarlo si lo desea.
Si al terminar de configurar los ajustes Wi-Fi, puede compilar y cargar un programa Boceto en Arduino
MKR1000. Ahora su tablero está listo para recibir comandos desde una aplicación UWP.
Ahora se puede crear una aplicación uwp llamado “WiFiWRA” utilizando Visual Studio. Instalar MEF a través Nuget. Lea cómo
implementarlo en el capítulo 3 . Construimos una interfaz de usuario para una aplicación UWP, que se muestra en la figura 5-22 .
135
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Construimos la misma interfaz de usuario como en la sección anterior, pero se añade un botón para conectar Arduino a
<Página
x: Class = "WiFiWRA.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x =
"http://schemas.microsoft.com/winfx/2006/xaml" xmlns: Local = "usando: WiFiWRA "
136
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
</
En MainPage.xaml.cs, añadimos códigos para capturar un evento hecho clic en el botón y alternar los controles. En primer lugar, se
Añadimos varias variables para los tres LEDs. Escribir estos códigos:
137
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Cuando se hace clic en el botón “Conectar”, tratamos de conectar a Arduino MKR1000 a través de WiFi. Después de que esté
conectado, establecemos el modo de patillas para tres LEDs. La siguiente es nuestra implementación del código:
InitWRA (); }
arduino.DeviceConnectionLost + = Arduino_DeviceConnectionLost;
connection.ConnectionEstablished + = Connection_ConnectionEstablished;
connection.ConnectionFailed + = Connection_ConnectionFailed;
txtServerState.Text = "conectado";
System.Diagnostics.Debug.WriteLine ( "conectado");
En eventos conmutado, llevamos a cabo para encender / apagar los LED llamando Ejecutar() y
Estado de actualización() métodos.
138
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
currentState = 0;
si (toggleLed1.IsOn)
currentState = 1; currentLed
= 1;
Ejecutar();
UpdateStatus (1, currentState); }
currentState = 0;
si (toggleLed2.IsOn)
currentState = 1; currentLed
= 2;
Ejecutar();
UpdateStatus (2, currentState); }
si (toggleLed3.IsOn)
currentState = 1; currentLed
= 3;
Ejecutar();
UpdateStatus (3, currentState); }
Ejecutar() y Estado de actualización() métodos se utilizan para ejecutar su vez sobre los indicadores LED de encendido / apagado y
si (== estado 1)
txtStatus.Text = string.Format ( "LED {0} es ON", LED); más
139
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
si (== currentState 1)
arduino.digitalWrite (currentLed, PinState.HIGH); más
Guardar el programa. También debe agregar capacidades en una aplicación uwp para acceder a
Internet.
Capacidades <>
<Capacidad Name = "internetClient" /> <Capacidad Name =
"internetClientServer" /> <Capacidad name =
"privateNetworkClientServer" /> </ Capacidades>
Pruebas
Ahora se puede ejecutar el programa. Rellene la dirección IP del Arduino MKR1000. A continuación, haga clic en el botón Conectar. Si está
conectado, se puede encender / apagar los LEDs haciendo clic en los controles toggled (figura 5-23 ).
Figura 5-23. Ejecución de la aplicación para el control de LED sobre WRA WiFi
140
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
En esta sección, exploramos uno de los módulos de RF famosos, XBee IEEE 802.15.4. Este módulo se utiliza
generalmente para un área de red de sensores inalámbricos (WSN). La placa Arduino detecta su entorno físico y luego
envía los datos del sensor a una puerta de enlace. Se puede ver XBee 802.15.4 del IEEE en la figura 5-24 . Usted puede
leer acerca de este módulo en este sitio: https: // www.digi.com/products/xbee-rf-solutions/modules/xbee-802-15-4 .
Para adjuntar un módulo XBee, necesita un escudo XBee a Arduino. Por ejemplo, se puede utilizar un
escudo Arduino SD inalámbrica ( https://www.arduino.cc/en/Main/ ArduinoWirelessShield ). Esto se puede ver en
la figura escudo 5-25 .
141
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
En este apartado, construimos una aplicación XBee en Arduino y un ordenador. La aplicación Arduino XBee enviará un
número aleatorio a un ordenador a través de un módulo XBee. Para la prueba, construimos nuestra demo con los siguientes
elementos:
• Arduino
Como otra opción, puede utilizar el kit inalámbrico XBee de Sparkfun. Puede comprobar este producto en este
sitio: https://www.sparkfun.com/products/13197 . Esto se puede ver en la figura kit 5-26 .
142
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Ahora tratamos de construir la comunicación de RF usando XBee 802.15.4 IEEE módulos de Arduino. Ponemos en práctica
una sencilla aplicación para enviar un número aleatorio. Necesitamos dos módulos XBee para demostración. Un módulo funcionará
como remitente. De lo contrario, funciona como un receptor. En la subsección siguiente, vamos a implementar nuestra demo.
143
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Antes de conectar un módulo XBee en un escudo XBee, debemos configurar todos los módulos XBee.
Podemos utilizar una aplicación XCTU de Digi International. Puede descargarlo en https://www.digi.com/products/xbee-rf-solutions
.
Descargar e instalar este programa.
Ejecutar el programa XCTU. Coloque su módulo XBee en XBee USB para que el ordenador detecta los módulos. A
continuación, agregue un módulo XBee en XCTU. Se puede ver en la figura 5-28 . Debe establecer características XBee, que se
muestra en la tabla 5-2 . Si ha terminado, se ahorra haciendo clic en el Escribir incono para escribir estos valores en el firmware
XBee.
144
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
XBee 1 ID = 3001 MI
= 1 DL = 2
MM = 1 AP =
XBee 2 ID = 3001 MI
= 2 DL = 1
MM = 1 AP =
Básicamente, después de que configuramos nuestros módulos XBee 802.15.4 del IEEE en la sección anterior, los módulos se
pueden comunicar con otros en el modo transparente. Esto significa que cuando un módulo XBee difunde un mensaje en el
UART, otros módulos XBee recibirán este mensaje del UART. A partir de este escenario, construimos un programa Boceto para
enviar un número aleatorio a partir de Arduino a un ordenador a través de XBee IEEE 802.15.4. Se puede escribir el siguiente
programa Boceto:
largo randNumber;
void setup () {
Serial.begin (9600); randomSeed
(analogRead (0)); }
void loop () {
randNumber = aleatorio (20, 80);
Serial.println (randNumber); retardo
(2000); }
Guardar este programa como “XBeeArduino”. Compilar y cargar el programa a la placa Arduino.
Ahora puede adjuntar XBee 1 en un escudo XBee y luego poner el escudo en una placa Arduino. Además, XBee 2
está unido en XBee USB y luego enchufado en un ordenador. Usando la herramienta de monitor de serie, navegue esta
herramienta para el puerto serie al que está unido XBee USB. Debería ver un número entrante en la herramienta Monitor
de serie. Se puede ver en la figura 5-29 . Este valor proviene de Arduino.
145
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
En este apartado, construimos un programa UWP. Este programa funcionará como el receptor XBee el que escucha los
mensajes entrantes desde un puerto serie del ordenador. Cuando se le concede el módulo XBee y ruptura del USB con el
fin de conectar a un ordenador mediante un cable USB. Usamos SerialDevice objeto para comunicarse con el puerto serie.
Ahora podemos crear un nuevo proyecto para una plantilla UWP, llamado “XBeeApp”. A continuación, construir una interfaz de usuario,
que se muestra en la figura 5-30 . Añadimos Cuadro de lista y Botón. XBee de datos se visualiza en texto.
146
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
La implementación de la interfaz de usuario XAML puede ser escrita en los siguientes guiones:
<Página
x: Class = "XBeeApp.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x =
"http://schemas.microsoft.com/winfx/2006/xaml" xmlns: Local = "usando: XBeeApp "
</
En MainPage.xaml.cs, añadimos códigos. En primer lugar, se añade el espacio de nombres se requiere de la siguiente
manera:
147
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
MainPage pública () {
this.InitializeComponent ();
listUART = new ObservableCollection <DeviceInformation> (); GetListOfXBee ();
}
tratar
listXBee.ItemsSource = listUART;
listXBee.SelectedIndex = -1;
btnConnect.IsEnabled = true;
btnDisconnect.IsEnabled = false; }
System.Diagnostics.Debug.WriteLine (ex.Message); }}
148
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Ponemos en contacto a XBee USB haciendo clic en el botón Conectar. Si desea desconectar de XBee USB, haga clic
en el botón Desconectar. Ponemos en práctica estos códigos:
si (selection.Count <= 0) {
tratar
serialPort.Handshake = SerialHandshake.None;
btnConnect.IsEnabled = false;
btnDisconnect.IsEnabled = true; txtState.Text
= "conectado"; ReadDataXBee (); }
System.Diagnostics.Debug.WriteLine (ex.Message);
btnConnect.IsEnabled = true; }
CloseXBee ();
txtState.Text = "no conectado"; }
149
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Dentro hecho clic en evento Conectar y Desconectar botones que llamamos CloseXBee () y
ReadDataXbee () métodos. Ponemos en práctica estos códigos de la siguiente manera:
tratar
CancelReadTask (); }
catch (Exception) {}
if (! SERIALPORT = null) {
serialPort.Dispose (); }
SerialPort = null;
btnConnect.IsEnabled = true;
btnDisconnect.IsEnabled = false; }
tratar
if (! SERIALPORT = null) {
CloseXBee ();
System.Diagnostics.Debug.WriteLine (ex.Message); }
finalmente {
dataReaderObject.DetachStream ();
dataReaderObject = null;
150
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
}}}
si (ReadCancellationTokenSource! = null) {
if (! ReadCancellationTokenSource.IsCancellationRequested) {
Pruebas
Ahora se puede ejecutar este programa. Debería ver una lista de los puertos serie conectados en el equipo. Por favor, seleccione un
puerto serie para XBee. Después de que se ha seleccionado, debería ver los datos de entrada de texto acerca de una serie que se
envía desde Arduino XBee través de IEEE 802.15.4. Una muestra de la salida del programa se puede ver en la figura 5-31 .
151
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Usted puede encontrar fácilmente los módulos Lora o escudos. En esta sección, exploramos productos Lora del Dragino.
Dragino Lora Shield es un transmisor-receptor de largo alcance en un factor de forma de escudo Arduino y basado en una
biblioteca de código abierto. Se puede ver una lista de productos Dragino Lora en este sitio: http://www.dragino.com/products/lora.html
. Se puede ver una muestra de escudo Dragino LoRa para Arduino en la figura 5-32 .
152
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Para las pruebas en esta sección, utilizo Arduino Mega 2560 y Arduino Leonardo. Yo uso dos escudos Dragino Lora.
Usted puede ver mi aplicación en la figura 5-33 . Para desarrollar una aplicación LoRa en Arduino, podemos utilizar la
biblioteca de Radiohead Packet Radio. Puede comprobarlo en este sitio: http://www.airspayce.com/mikem/arduino/RadioHead/
.
153
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
En primer lugar, descargar y extraer biblioteca Radiohead Radio por Paquetes ( http: // www.
airspayce.com/mikem/arduino/RadioHead/ ) para la placa Arduino. Usted debe ZIP el archivo. Puede extraer esta biblioteca
utilizando el software de Arduino. Haga clic en Croquis menú ➤ incluir Biblioteca
➤ Agregar biblioteca .ZIP. A continuación, vaya al archivo de biblioteca postal para Radiohead Packet Radio.
Si se hace, la biblioteca de Radiohead se debe mostrar en la biblioteca de Arduino. Se puede ver en la figura 5-34 . Ahora
reinicia el software de Arduino con el fin de recargar todas las bibliotecas de Arduino.
Ahora puede comenzar a escribir un programa de dibujo. Para la prueba, se utiliza una muestra del programa de Radiohead. Las
# incluir <SPI.h>
# incluir <RH_RF95.h>
void setup () {
Serial.begin (9600);
mientras que (de serie!); // Espera a puerto serie que esté disponible if (! Rf95.init
())
Serial.println ( "init no"); }
154
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
void loop () {
si (rf95.waitAvailableTimeout (3000)) {
retardo (400); }
Puede cambiar el valor de datos variables, por ejemplo, “Hola mundo desde Mega256” para Arduino Mega 2560 y
“Hola mundo de Leonardo!” Para Arduino Leonardo. Guarde todos los programas.
Ahora puede compilar y cargar un programa de dibujo para todas las placas Arduino. Debe ejecutar un
programa para un ordenador. Puede ejecutar dos programas de Lora con biblioteca de Radiohead en un equipo.
Para las pruebas, tengo mi Arduino Mega 2560 en Windows y Arduino Leonardo en Mac.
Después de cargar un programa de dibujo, se puede abrir el Monitor de serie. Debería ver los mensajes. Se
puede ver la salida del programa en las Figuras 5-35 y 5-36 .
155
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
¿Que sigue? Después nos podemos comunicar entre Arduino través de una red Lora, desarrollamos una aplicación uwp
para transferir datos a través de una red LoRa través de Arduino. También puede desarrollar cualquier aplicación mediante la
aplicación de una red LoRa.
temperatura y la humedad en un lugar determinado. Podemos resolver este caso mediante la implementación de un sistema basado en la
localización.
156
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Oneof solución es la aplicación de un módulo GPS en nuestra junta. Hay muchos módulos GPS que
trabajan con placas Arduino. El chip GPS es famosa U-Blox ( https://www.u-blox.com/ ). Se puede ver una
forma módulo GPS en la figura 5-37 .
Puede encontrar módulos GPS en una tienda en línea, tales como Aliexpress, eBay, Sparkfun y Adafruit. Un
módulo GPS se puede ver en la figura 5-37 . Este módulo se puede utilizar para Arduino y Raspberry Pi.
Este módulo GPS tiene cinco pines VCC, GND, TX, RX, y PPS. Para las pruebas, agrego este módulo en la placa Arduino UNO de
la siguiente manera:
157
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Para desarrollar una aplicación GPS para Arduino, podemos utilizar la biblioteca TinyGPS ( https: //
github.com/mikalhart/TinyGPS ). Puede descargar esta biblioteca y luego instalarlo a través del software de Arduino. Si ha
terminado, debería ver TinyGPS en la ruta de la biblioteca de Arduino, que se muestra en la figura 5-39 . Reinicie el Arduino con
el fin de recargar todas las rutas de bibliotecas.
158
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
Ahora vamos a crear una aplicación de GPS en el software de Arduino. Este programa leerá los datos del GPS en UART para
recuperar la posición actual. Después de que ha recibido, los datos GPS serán analizados y el resultado se muestra en la UART.
Escribir el siguiente esquema:
# incluir <SoftwareSerial.h>
# incluir <TinyGPS.h>
TinyGPS gps_mod;
void setup () {
Serial.begin (9600); pinMode
(13, OUTPUT); gps.begin
(9600);
Serial.println ( "GPS En .."); }
void loop () {
bool newData = false; caracteres
de largo sin signo;
frases cortas sin firmar, fracasaron;
159
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
linea de quiebre();
digitalWrite (13, LOW); }}
BREAK_LINE vacío ()
{Serial.println ( ""); }
Compilar y cargar el programa de esbozo en Arduino. Abra la herramienta Monitor de serie para ver los datos del GPS. Se
puede ver la salida de la muestra en la figura 5-40 .
160
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
¡Vamos a explorar!
Nube Arduino
nube de Arduino es un servidor de la nube de Arduino LLC. Se puede acceder a la nube en Arduino
https://cloud.arduino.cc/ . Usted necesita registro para permitir el acceso a este código. Se puede ver en la figura 5-41 .
Actualmente, Arduino nube es compatible con Arduino MKR1000, Wi-Fi 101 escudo, y Arduino Yun. Es
necesario registrar su placa Arduino a esta nube. Después de que se ha registrado, debe obtener un ID y una
contraseña para su tablero.
Después se ha registrado en su tablero, se debe añadir una propiedad de atrapar sus datos. Por ejemplo, añado dos
propiedades: humedad y temperatura (véase la figura 5-41 ). Arduino proporciona una muestra Boceto para el envío de datos. El
siguiente es un programa de dibujo modificado para enviar la humedad y la temperatura para Arduino nube. Yo uso una placa
Arduino MKR1000. Se puede utilizar o Arduino con un escudo 101 WiFi.
161
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
# incluir <WiFi101.h>
# incluir <ArduinoCloud.h>
WiFiSSLClient SSLClient;
void setup () {
Serial.begin (9600);
Serial.println ( "conectado");
randomSeed (analogRead (0)); }
void loop ()
{KCloud.poll ();
162
Capítulo 5 ■ La construcción de su propia IOT usando Arduino y .net
retardo (2000);
Cambiar los valores de SSID, pasar, nombre de usuario, thingName, thingId y thingPsw. Si le hacen, compilar y
cargar el programa Boceto en Arduino. Debería ver los datos de humedad relativa y temperatura y en la nube
Arduino.
Puede combinar este programa con una aplicación uwp para recuperar datos de la nube de Arduino y
mostrarlo en una aplicación.
Resumen
En este capítulo, hemos aprendido cómo nuestra placa Arduino se conecta a Internet a través de una conexión por cable y Wi-Fi. Hemos
construido un sencillo programa de la IO para encender / apagar los LED que están fijados en una placa Arduino a partir de un programa
de UWP. Continuamos nuestro viaje para aprender cómo extender un programa MEF a través de WiFi por lo que nuestro programa UWP
se puede comunicar con Arduino a través de WiFi.
Por otra parte, hemos explorado la comunicación RF para Arduino. Aplicamos módulos XBee y Lora de
comunicarse con otros sistemas. También participan un módulo GPS para detectar la localización actual en una placa
Arduino.
En la última sección, conectamos nuestra placa Arduino a un servidor de la nube. Utilizamos Arduino Cloud como
muestra. El envío de datos a la nube de Arduino se realizó utilizando un programa de dibujo.
Para actualizar su habilidad para el desarrollo de Arduino, se puede tratar de utilizar varios sensores y dispositivos de
accionamiento en sus proyectos. Conectarlos a un sistema externo utilizando métodos de conectividad que hemos aprendido. Ahora
usted puede construir sus propios proyectos de automatización y la IO.
163
Índice
??????????????????
UN ??????????????????
re
instalaciones de actuación de 45 módulo de DHT22, 46-51 biblioteca DHT
. RED sensor, 49-50 DotnetDHT, escudo 61
COM5, 67 Dragino Lora, 152-153
RGBControlApp, 65 RGB LED,
53-57, 65 SolidSoils4Arduino, 65, 67
Servo, 53-54
??????????????????
mi
Adafruit pluma 32u4 Adalogger, 8 depurador Ethernet Shield
incrustado de Atmel con PoE, 111 y UNO,
(EDBG), 4 111 WebServer, 112-113
??????????????????
segundo
BLE, 6 de
??????????????????
F
Bluetooth modelos de placas de pluma, 8 de
MEF sobre, 100 protocolo Firmata
programa de Arduino, escritura, 105 de añadir programa de esbozo, 39
emparejamiento Bluetooth Arduino y el SolidArduino, 41 SolidSoils4Arduino,
ordenador, 102-103 pruebas, 107 42-44 programa de dibujo estándar, 40
. RED
??????????????????
yo
cableado demo, 122 HTTP GET asignación de
IDE, 9 dirección URL, 122 LED 1 iluminación, 128 LEDs
InitWRA método (), 105 programa Croquis, 124-127 respuesta en el
Inter-Integrated Circuit (I2C) navegador, 128 herramienta Serial monitor, 127,
PCF8591 AD / DA módulo, 30-33 Sparkfun de mapeo 129 URL, 121-122, 124 de cableado para
humedad y temperatura los LED, 123-124 Serial La herramienta de
Sensor Breakout, 30 seguimiento, 120 WiFi101 biblioteca, 117-118
alambres, 29
WRA a través de, 92
pruebas, 99 proyecto
UWP, 94 cableado,
93-94
programa de escritura de UWP, 95-99 de ??????????????????
norte
Internet, 4-7 . RED
Wi-Fi, cable accionamiento de aplicaciones, 65, 67-68
114-121, 110-114 programa de aplicación, 73-74 LEDs, 34
Internet de los objetos (IO), 4-7, 109-110 que la
comunicación de E / S programa, Visual Studio 35-36,
modelos de comunicación, 22 de 36-37 cableado, 34 aplicaciones de
comunicación I2C, 29-33 de detección, 58-61, 63-64 programa de
comunicación en serie, escritura, 77-82 pilas de red, 110
22, 24-29
UNO, 21-22
??????????????????
J, K ??????????????????
O
JSON, 58-59 hardware basado en código abierto, 1
OpenWrt Linux, 6
??????????????????
L
LED parpadeante ??????????????????
P, Q
código, 12-13 PCF8591 AD / DA módulo, 30-33, 92-93,
programa, 14 configuración 96-97
IDE, 13 de destino y el puerto, 13 Pulse Width Modulation (PMW), 55, 85
UNO, 14 Linux OS, 6 LLC, 1, 5
compilar
??????????????????
R
biblioteca Radiohead Packet Radio, 154-155 readadc ()
red Lora, 152-156 métodos, 98 Realmente Bare Bones Junta (BRD), la
comunicación 8 RF
??????????????????
METRO
definido, 141 Wireless SD Shield, 142
Master en Slave Out (MISO), 26-27 Maestro XBee IEEE 802.15.4 módulo,
Fuera Slave In (MOSI), 26-27 Mega 2560, 3,
155-156 MKR1000, 117 141-143
RGBControlApp, 65, 68 RGB
COMx, 116 LED
ConnectWithWPA, 118-120 administrador displays, 54 formularios,
de dispositivos, 117 Activar el software, 115 Esquemas de 53 pin, 54-55
166
■ ÍNDICE
PMW, 55
??????????????????
T
programa de esbozo, 56-58
cableado, 55-56 dispositivo de U-Blox, 157 Universal
Asynchronous Receiver
Transmisor (UART). Ver Plataforma de
??????????????????
S comunicación serial universal de Windows
Juntas Samd, 115 (UWP), 69
dispositivos sensores, 45 . NET, el programa 69
módulo de DHT22, 46-47
biblioteca sensor de DHT, 49-50 pines control de E / S analógicas, bus I2C 87-91,
biblioteca, 27, 29
Miso y MISO pins, 27 pins, 26 LEDs, 137-139 MKR1000, 132-133
de prueba, 133 método Biestado,
programa de esbozo, 28 131-132 UI, 130-131 WiFiWRA,
Servo, 53-54 SolidArduino, 41 135-137
??????????????????
W
??????????????????
T biblioteca WiFi101, la red
biblioteca TinyGPS, 158 método TurnOffLeds, 78 117 WiFi
de dos hilos Interface (TWI). Ver Enterrar- MKR1000, 114-121
Juntas Samd, 115 YUN
Circuito integrado (I2C) Escudo, 115
167
■ ÍNDICE
168