Se podría decir que muy frecuentemente aparece una variación del famoso Arduino, pero en esta ocasión,esta nueva versión llamado LightBlue Cortado es bastante rupturista que versiones anteriores ya que pretende ser un pequeño dispositivo permanentemente conectado por Bluetooth alimentado por una pequeña pila de botón y que puede ser reprogramado desde casi cualquier dispositivo sin conectar ni un solo cable.
El prototipo es muy pequeño y su módulo Bluetooth de bajo consumo puede funcionar durante largos periodos de tiempo sin cambiar la pila.
Su diminuta placa dispone de un acelérometrode 3 ejes, un LED RGB y una pequeña área de prototipado para conectarle más cosas y ademas puede funcionar en red con otros módulos para extender aún más su alcance y montar proyectos complejos en red.
LightBlue Cortado ya cuenta con cerca de 1.500 partidarios y ha superado su objetivo de generar $ 20K en pre-pedidos por más de $ 66K y parece que todavía estamos a tiempo para realizar el pre-orden por un precio alrededor de $ 20 .
Sin duda este dispositivo presenta un interesante concepto de desarrollo integrado sin cables que lo liguen a su ordenador utilizando Bluetooth para comunicarse con las cosas que lo rodean.
Especificaciones técnicas
3 ejes Acelerómetro
LED RGB
4 pines PWM , 2 entradas analógicas, 8 GPIO
Periféricos de hardware I2C y SPI
Pila de botón
Duración de la batería superior a un año para las aplicaciones de baja potencia
Conexión en cadena de alcance extendido > 100 pies (30.5 m )
sección protoboard
El forro adhesivo
Este tipo de soluciones con un coste de poco más de 20 dólares , desde luego en el pasado en precio y complejidad hubiera sido bastante mas inabordable, con lo cual esperemos que esta barata solución tenga continuidad en el mercado y se popularice
Flashear siempre es un riesgo en casi todos los dispositivos programables básicamente porque en el 99% de las veces ira bien y como fruto tendremos un sistema actualizado ,pero desgraciadamente puede haber un 1% donde no ira bien y el resultado no sera agradable «bricked» pues por desgracia no siempre se podra arreglar
En el caso de contar con el netduino con 4.1.0 (version anterior) podria estar más que justificado realizar laa actualizacion ,pues el nuevo firmware 4.2.1 incluye las siguientes actualizaciones :
Corrección de errores PWM (periodo / frecuencia ahora ajustada correctamente)
64Kb flash y 50% más de memoria RAM: 42KB (4.2.0.0) vs 28KB (4.1.0.6)
Visual Basic es ahora un lenguaje soportado por. NET MF
Nuevas clases AnalogInput y PWM básicos; clases compatibles con versiones anteriores disponibles a través de add-on asambleas.
Nuevos drivers WinUSB (para remediar problemas BSOD en 4.2 beta)
Recolector de basura ahora recoge plenamente objetos antiguos
Ver netmf.codeplex.com para los detalles completos de todas las correcciones de errores
Para empezar ,para encontrar la versión actual de su firmware Netduino Plus:
Ir al inicio Menú> Programas> Microsoft. NET Micro Framework 4.2> Herramientas
Ejecute MFDeploy.exe. Tenga cuidado al ejecutar MFDeploy.exe y no MFDeploy.exe.config (como las extensiones de archivo están ocultas de manera predeterminada)
Conecte su Netduino Plus a su PC usando un cable USB Micro.
En la sección de dispositivos en la parte superior, seleccione USB en lugar de en serie. Su Netduino Plus debe aparecer en la lista desplegable, si no, seleccionarlo.
Seleccione la opción de menú Target, Capacidades de dispositivo.
En el cuadro de salida, encontrar el valor «SolutionReleaseInfo.solutionVersion». Esta es la versión del firmware.
Si su version es la antigua (4.1,x) puede seguir bajo su responabilidad los siguintes pasos para actualizar el firmware:
TinyBooterDecompressor
Para empezar necesitara descargar e instalar SAM-BA 2.12 CDC para Windows (XP, Vista, W7) de esta página de descarga(Usted tendrá que registrarse para descargar, pero no hay ningún coste). Para obtener los mejores resultados actualizar el controlador de Windows (utilizando el administrador de dispositivos) para los controladores ubicados en (dependiendo de su sistema) Archivos de programa \ Atmel Corporation \ sam-ba_2.12 \ drv ANTES de utilizar esta herramienta. Si esto no funciona para usted, algún éxito ha estado utilizando el SAM-BA 2.9 no CDC disponible aquí .
Restablecer completamente su Netduino conectando 3,3 V hasta la plaza de metal debajo de E / S digital pin 0, mientras que el Netduino está encendido como se muestra en la foto .
Ahora reconectar el Netduino al PC. Se instalará un controlador para un puerto COM emulado. Inicie la herramienta SAM-BA. Si un controlador de un puerto COM emulado no está instalado en una máquina x64 de Windows 7, pruebe esta página wiki .
Seleccione el puerto serie (puerto COM) emulado del Netduino al que se conectara(normalmente sera el com10), seleccione el chip adecuado para su Netduino (la información del chip del procesador «Atmel» que tendrá un identificador como «AT91SAM7X512-ek.»,aunque el valor real dependerá del Netduino particular que usted tenga) y finalmente haga clic en «Conectar».
Ahora tenemos que ejecutar dos scripts. En primer lugar, seleccione «Inicio desde flash (GPNVM2)» y haga clic en «Ejecutar».
Luego tenemos que hacer lo mismo con la opción «Habilitar el acceso de Flash»-script.
Ahora asegúrese de que estamos en la lengüeta de «Flash». Por «Send File Name», seleccione el archivo «TinyBooterDecompressor.bin» y haga clic en «Enviar Archivo». Este archivo se encuentra en el archivo ZIP Netduino Firmware en el último hilo del foro
Entonces nos hará un pregunta sobre sobre regiones bloqueadas. Haga clic en «No»
Después de que podemos cerrar la herramienta SAM-BA tenemos que probar si funciona,para lo cual vuelva a conectar el Netduino y ejecute MFDeploy.exe. Seleccione USB y el Netduino, a continuación, haga clic en Ping.
En primer lugar, ejecutar MFDeploy. Seleccione USB, el Netduino y luego haga clic en «Ping» para verificar que el dispositivo está disponible:
Ahora haga clic en «Browse» y seleccione tanto el archivos ER_FLASH ER_CONFIG y. (Mantenga presionada la tecla «Ctrl» para seleccionar el segundo archivo)
Cuando se seleccionan dos archivos, haga clic en DEPLOY (Implementar) pudiendo tomar unos 4 o 5 minutos máximo …
Una vez acabados el Deploy ( mensaje SIGNATURE PASS) , retire el conector y vuelva a colocar su Netduino mediante el cable microUSB para completar la operación de flash.
Después de parpadear y reiniciar el Netduino, ahora puede comprobar la versión del firmware actual seleccionando la opción de menú «Target-> Capacidades de dispositivo»
Después de flashear un Netduino Plus, tendrá que restablecer la configuración de red .
Como ejecuta el firmware 4.2 es necesario mantener pulsado el botón de la placa Netduino mientras se conecta el USB para poner el dispositivo en modo de arranque.
Ahora, lanzar MFDeploy, que se puede encontrar en el menú Programas del menú Inicio en «Microsoft. NET Micro Framework x», donde x es la versión del marco de su ‘usando. Luego, en el menú Herramientas.
Seleccione USB y su Netduino Plus desde el menú despegable.
Pulse ahora el botón «Ping» para asegurarse de que su Netduino está funcionando correctamente, debería ver algo así como «Haciendo ping … TinyCLR» después de un momento en la mitad inferior de la pantalla.
Desde el menú Destino seleccione Configuración, Red
Esto abrirá la ventana de configuración de red que contiene todos los valores de red de su Netduino Plus. Desde aquí se puede configurar una dirección IP estática o habilitar DHCP, también puede configurar la dirección MAC y los ajustes de DNS para su Netduino,pero sobre todo restituya el valor de la direccion MAC que encontrará en la pegatina de la parte posterior de su placa Netduino
Cambie los ajustes que necesita y pulse Actualizar y configuración Netduino Plus y ‘se actualizará.
En este post vamos a tratar de un original sensor de color controlado con Netduino,Netduino Plus o Netduino Go.
Gracias al sensor de Color de Sparkfun ADJD-S371-q999 y un Netduino en este proyectos se imprimirá el nombre de color HTML (es decir DarkRed) de un objeto que se ve( de hecho esta aplicacion podria ser particularme interesante para las personas daltónicas , pues basandose en este sensor, podrian obtener un rango de mejora)
He aquí un breve video para demostrar el fuincionamiento del sensor :
El ADJD-S371 es un 4 canal de sensor RGB + Claro que utiliza el protocolo I2C 2 hilos para comunicar con el microcontrolador. Es un poco complejo el dispositivo pues no se limita a dar el color correcto cuando usted la pida y necesitaremos usar el algoritmo de calibración de ganancia,aunque para realizar pruebas sencillas puede utilizar el código descrito en este post
El código fue creado originalmente por Nathan Seidle para el microcontrolador PIC y fue portado y modificado para el Arduino por Marcus de Matter Interactive y despues Paul King lo porto en lenguaje C # para el net Framework Micro..
Haga clic para ampliar
El esquema de arriba muestra el sencillo circuito con Netduino,donde hay que a tener en cuenta, que se usa un LED externo solo como fuente de luz por lo que no hay necesidad de conectar el pin LED en el ADJD-S371-Q999. En cuanto a los piuertos podemos utilizar cualquiera de las IO pines digitales: sólo tiene que cambiar un poco de código al configurar los puertos de salida. Por último, el LED RGB puede ser conectado a 3.3V o 5V y es posible que tenga que ajustar el tamaño de resistencias para su RGB LED de todos modos.
A continuación se describe el código en c# de este demo:
C # Código
1
2
3
4
5
6
using System;
utilizando System.IO.Ports;
using System.Threading;
utilizando Microsoft.SPOT;
utilizando Microsoft.SPOT.Hardware;
utilizando SecretLabs.NETMF.Hardware.Netduino;
Las líneas 1 a 6 definen un espacio de nombres, lo cual permite utilizar las clases o tipos sin tener que escribir el espacio de nombres completo donde existen esos tipos.
Por ejemplo, en lugar de escribir: SecretLabs . NETMF . Hardware . Netduino . Pins . ONBOARD_LED
Líneas 7 a 33 son constantes definidas en la documentación y sensores de color. Línea 35 crea un nuevo objeto de dispositivo C I 2 llamado rtc. Utilizamos este objeto para enviar realmente los datos de la Netduino al sensor de color. I 2 C es un protocolo de bus que significa que varios dispositivos pueden compartir los mismos cables. Así el objeto I2CDevice nos obliga a darle una dirección de esclavo para lo cual se ha definido como la constante I2C_Address en la línea 11. El objeto I2CDevice también nos requiere que se especifique un tipo en kilohercios (en este ejemplo se ja usado 100 Khz)
Línea 37 crea una variable de tipo array de bytes que debe tener en cuenta que solamente estamos inicializando el tamaño de la matriz a 1. El sensor de color no necesita realmente una matriz de bytes, pero el metodo I2CDevice.CreateReadTransaction requiere una matriz de bytes como uno de sus parámetros y no tiene un método sobrecargado para usar sólo un byte.
public static void Main ()
{
OutputPort redpin = nueva OutputPort (pines GPIO_PIN_D10, cierto.);
OutputPort greenpin = nueva OutputPort (pines GPIO_PIN_D9, cierto.);
OutputPort BluePin = nueva OutputPort (pines GPIO_PIN_D7, cierto.);int cc = 0;
int rojo = 0;
int verde = 0;
int azul = 0;int clearGain;
int colorGain;int num_samples;
Líneas 38 es el principal punto de entrada para nuestro programa. En las líneas 40 a 42 definen que 3 puertos de I/O estamos utilizando para controlar un LED RGB. Al añadir el SecretLabs.NETMF.Hardware.Netduino.dll a nuestra lista de recursos y declarándola con la instrucción using de la línea 6 que no tenemos que recordar los números de pin microcontroladores reales. SecretLabs ya ha visto todo esto para nosotros y que nos permitirá usar Pins.xxxxx.(de hecho con la función completa de código alias intellisense de Visual Studio automáticamente aparece un menú contextual que le permite seleccionar de una lista de pines disponibles).
[* ACTUALIZACIÓN:. Si utiliza el instalador del SDK SecretLabs puede iniciar una nueva «Aplicación Netduino», que elimina la necesidad de añadir manualmente las dll a su lista de recursos y también elimina la necesidad de añadir manualmente los SecretLabs usando declaraciones]
En la línea 56 creamos un bucle infinito de modo que nuestro programa no se acaba nunca. Sin este nuestro programa sólo se ejecutará una vez y luego terminaria.
Líneas 58 y 64 es donde se puede ser creativo. La hoja de datos de sensores de color y nota de aplicación son un poco borroso en la explicación de la manera adecuada para calibrar y ajustar la ganancia de su sensor. Sin embargo, se debe establecer la ganancia de cada color antes de que usted solicite el color pues de NO ajustar la ganancia solo recibiría resultados bajos.
Líneas 65 a la 78 es donde nos muestra los colores mediante el uso de unos métodos de ayuda que usted va a leer a continuación. La clave a destacar aquí es que cuantas más muestras se toma más estable aparecerán sus números. En este caso se toman muestras de 10 y se suman los resultados juntos y se dividen por 10 para obtener el valor medio.
Líneas 80 a 93 es donde establecemos el color de nuestra RGB LED. El algoritmo usado es muy simple para determinar el color más dominan y encender sólo el pin del LED RGB via experimental
En la línea 95 que llamamos Debug.Print e imprimir los valores de la ventana de resultados de Visual Studios. El valor claro indica una intensidad de luz general que los valores Azul Rojo, Verde, y son la intensidad, como se ve a través de un filtro de luz.
99
100
101
102
public static void performMeasurement ()
{
set_register (0x00, 0x01); / / inicio de detección
}
Ahora empezamos a conseguir profundamente en el protocolo de sensores de color. Para decir el sensor de color para tomar una muestra fijamos el registro 0 × 00 con el valor de 0 × 01. El sensor de color a continuación, toma una muestra y la almacena.
El sensor de color almacena sus valores de color en dos registros de 8 bits. Así. en las líneas 103 a 106, get_readout () toma el primer registro como parámetro y asume el siguiente registro está a sólo 1 más direcciones por encima de ese registro. Así leemos el valor del primer registro y luego leemos el valor del segundo registro y luego cambiamos el valor del segundo registro de 8 bits a la izquierda que nos deja con el pleno entero de 16 bits. Sin embargo, sólo 10 bits se ponen realmente en el entero debido a que los altos registros sólo devuelven los dos bits menos significativos y el bajo registro devuelve 7 Bits.
107
108
109
110
111
112
113
114
115
116
117
public static void set_gain (gainRegister byte, int ganancia)
{
if (ganancia <4,096)
{
byte hi = (byte) (ganancia >> 8);
lo = byte (byte) (ganancia);set_register (gainRegister, lo);
set_register ((byte) (gainRegister + 1), hi);
}
}
Cada color tiene dos de sus propios registros de ganancia. Definimos estos en nuestros constantes en las primeras líneas. Aquí suponemos que ya que sabemos la dirección del registro del registro inferior, por lo que sólo podemos añadir 1 a la dirección para obtener la dirección del registro superior. Luego asignamos los valores de ganancia a través de la ayuda de set_register ().
118
119
120
121
122
123
124
125
126
public static void set_register (byte r, byte v)
{rtc. Ejecutar ( nueva I2CDevice. I2CTransaction []
{
I2CDevice. CreateWriteTransaction ( nuevo byte [] {r, v})}, 5000);
}
set_register es donde sucede la magia. Aquí creamos una nueva matriz de bytes que contiene dos valores. La primera es r para el registro y el segundo es v por valor. Transmitimos esta matriz de bytes a un nuevo objeto I2CDevice.CreateWriteTransaction y luego pasamos ese objeto con el método rtc.Execute. Usted debe recordar que rtc es nuestro objeto I2CDevice que sabe acerca de la dirección del esclavo de nuestro sensor de color. Así, en pocas palabras nuestra función set_register es donde empaquetamos todo y lo enviamos en su camino.
En líneas 127 a 136 estamos enviando una solicitud de nuestros valores de color. Nos pasamos ‘r’, que es el color que queremos leer. Recuerde que esto ocurre dos veces para cada color con el fin de obtener el valor total. Esperamos 5.000 milisegundos o 5 segundos para que el regreso antes de tiempo de espera.
public static int getClearGain ()
{
int gainFound = 0;
int upperBox = 4,096;
int lowerBox = 0;
int media = 0;
int halfValue;mientras que (gainFound == 0)
{
media = ((upperBox – lowerBox) / 2) + lowerBox;
/ / Possbile no más lejos Halfing
if (media == lowerBox)
{
gainFound = 1;
}
más
{
set_gain (REG_INT_CLEAR_LO, medio);
performMeasurement ();
halfValue = get_readout (REG_DATA_CLEAR_LO);si (halfValue> 1000)
{
upperBox = medio;
}
else if (halfValue <1,000)
{
lowerBox = medio;
}
más
{
gainFound = 1;
}
}
}
devolver la mitad;
}
Líneas 137-174 es donde usted puede volver a probar para perfeccionar sus resultados. Usted tendrá que obtener una forma de obtener un valor de ganancia que compensa la luz ambiental y todos los demás factores ambientales que pueden cambiar la sensibilidad.
public static int getColorGain ()
{
int gainFound = 0;
int upperBox = 4,096;
int lowerBox = 0;
int media = 0;
int halfValue;mientras que (gainFound == 0)
{
media = ((upperBox – lowerBox) / 2) + lowerBox;
/ / Possbile no más lejos Halfing
if (media == lowerBox)
{
gainFound = 1;
}
más
{
set_gain (REG_INT_RED_LO, medio);
set_gain (REG_INT_GREEN_LO, medio);
set_gain (REG_INT_BLUE_LO, medio);
performMeasurement ();
halfValue = 0;halfValue = Sistema de Matemáticas Max (halfValue, get_readout (REG_DATA_RED_LO))..;
halfValue = Sistema de Matemáticas Max (halfValue, get_readout (REG_DATA_GREEN_LO))..;
halfValue = Sistema de Matemáticas Max (halfValue, get_readout (REG_DATA_BLUE_LO))..;si (halfValue> 1000)
{
upperBox = medio;
}
else if (halfValue <1,000)
{
lowerBox = medio;
}
más
{
gainFound = 1;
}
}
}
devolver la mitad;
}
}
}
Por último, las líneas 175-220 intenta establecer una ganancia adecuada para cada color. Esto será llamado 3 veces porque cada color tiene una sensibilidad diferente. Usted puede ser creativo aquí y venir con su propio algoritmo que se adapte a su aplicación específica. Si usted tuviera un ambiente controlado, en teoría, esto sería muy simple.
El circuito receptor de ultrasonidos que se presenta en este post , es el encargado de recibir y amplificar la señal enviada por el circuito de transmisión,(explicado en este blog en un post anterior) para ser posteriormente procesada por Netduino por ejemplo para medir tiempos de demora en cruzar una distancia franqueada por dos transmisores y receptores ,medir distancias o simplemente detectar obstáculos.
Para realizar este propósito este circuito consta de cuatro partes:
Un circuito amplificador de dos etapas
Un rectificador e media onda identificada como circuito de detección
Un detector de señal formada por un comparador de la señal ingresada con un nivel de voltaje determinado
Un circuito aislador de señal.
Para el cálculo de la función de transferencia a la salida del circuito amplificador, es
factible dividir el circuito, debido a que se tiene la misma configuración tanto en la
primera como en la segunda etapa,utilizándose ademas el principio del cortocircuito virtual, en el que tenemos que el voltaje al terminal positivo del amplificador, es igual al voltaje del terminal negativo del amplificador.
Con estos criterios la tensión de salida del primer Amplificador Operaconial configurado en modo inversor es :
V2 = (( Vp RC ( RD + RA )) / ( ( RB + RC ) RA )) – ( V1 RD / RA )
La señal de ultrasonido recibida por el sensor receptor es amplificada mil veces, con el amplificador operacional en dos etapas. Esto es cien veces en la primera etapa y diez veces más en la segunda.
Este circuito trabaja con una única fuente de alimentación de + 9 v. Es por esta razón que a la entrada positiva del amplificador, se tiene un partidor de tensión con la finalidad de tener un nuevo nivel de voltaje de referencia, este nuevo nivel de referencia, tiene como objetivo principal, que tanto la parte positiva, como la parte negativa de la onda recibida sean igualmente amplificadas. Cosa que no seria posible si el nivel de referencia seria de 0v por poseer este amplificador una sola fuente de alimentación.
El circuito de detección diseñado tiene como objetivo principal el rectificar la señal ultrasónica recibida mediante una rectificación de media onda, la misma que usa la barrera de diodos Shottky debido a sus buenas características de recuperación inversa.
Este voltaje rectificado será utilizado en el circuito detector de señal.
El amplificador operacional internamente tiene cientos o miles de micro factores, de tal forma que cuando la entrada positiva, se hace un poco mayor que la entrada negativa, la diferencia es cientos o miles de veces amplificada y el voltaje a la salida llega a ser la misma que la tensión suministrada. En el caso contrario, cuando la entrada positiva se hace un poco menor a la entrada negativa, la diferencia es cientos o miles de veces
amplificada y el voltaje a la salida se hace casi cero.
En este circuito, la salida del circuito de detección esta conectada con la entrada positiva
del detector de señal. Mientras que a la entrada negativa se tiene un voltaje constante,siendo este el voltaje de referencia para la comparación de señales.
Sustituyendo los valores propuestos obtenemos :
Vrf = (Rb * Vcc) / (Ra + Rb)
Vrf = (47 x 103 * 9) / (1 x 10 6 + 47 x 10 3 )
Vrf = 0.4 v Voltaje de Referencia
De esta forma, tenemos que cuando la señal ultrasónica rectificada sea mayor a 0.4 v, la
salida del detector de señal tendrá un valor máximo, aproximadamente de 9 v
Por ultimo queda el circuito aislador de señal, el cual es el encargado de aislar el circuito receptor de la señal lógica que será enviada al microprocesador en el instante que exista un retorno de la señal ultrasónica enviada por el circuito transmisor.
Para este cometdio se emplea un optotransistor de manera que evitemos el ingreso de ruidos que podrían alterar el correcto funcionamiento del circuito, la señal lógica enviada hacia el microprocesador es de + 5 Vcc.
A continuación el esquema eléctrico del circuito propuesto:
Debe estar conectado para enviar un comentario.