miércoles, 30 de noviembre de 2016

Tarea 2 - Compuertas AND, OR y NOT

Se debía crear las compuertas lógicas AND, NOT y OR que se aprendieron en clases usando relays en un protoboard (digital). Es decir que era posible utilizar los varios programas que existen en internet para crear z simular circuitos.
Aquí los resultados de los circuitos con las diferentes compuertas lógicas utilizadas:


AND:


OR:



NOT:



Tarea 1 - Binarios

Cómo se realiza una multiplicación en binario?

La multiplicación en binario es el más "fácil".
Como los factores de la multiplicación sólo pueden ser 0 o 1, el producto sólo puede ser 0 o 1 al igual. Es decir que las tablas de multiplicar del cero y del uno son básicas para aprender:
x
0
1
0
0
0
1
0
1
En un computador la multiplicación se realiza mediante sumas repetidas. Eso crea problemas en la programación porque cada suma de dos 1 origina un arrastre, que se resuelven contando el número de 1 y de arrastres en cada columna. Si el número de 1 es par, la suma es un 0 y si es impar, un 1. Luego, para determinar los arrastres a la posición superior, se cuentan las parejas de 1s.

Aquí un ejemplo: 




Para entender mejor aqui se nos pidió hacer una tarea utilizando este mismo calculo y convertirlo en código Arduino para obtener numeros específicos.

int binario[] = {0, 1, 0, 1};
int unidades[] = {0, 0, 0, 0};
int decimal = 0;
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
// multiplica cada bit por su respectiva potencia en base 2
unidades[3] = binario[3]*1;
unidades[2] = binario[2]*2;
unidades[1] = binario[1]*4;
unidades[0] = binario[0]*8;
//suma los resultados de cada unidad para obtener el decimal
decimal = unidades[3]+unidades[2]+unidades[1]+unidades[0];
}
// the loop routine runs over and over again forever:
void loop() {
Serial.println(decimal);
delay(1000);
}

El código debería funcionar, transformando el 0101 a 5.


Como se puede observer en el el terminal tras correr en código es que aborrecen los 5, es decir que funciono nuestra multiplicación.


La próxima parte de la tarea era escribir un código que transforme un valor hexadecimal (HEX) de un byte a decimal y mostrar el resultado en el monitor serial de Arduino:

Lo difícil de esta tarea era el uso de letras mayúsculas como valores. Para poder trabajar con estos se utilizó el componente "define" de Arduino y se pasaron las letras a sus respectivos valores decimales. Después de se aplicó el mismo procedimiento del ejercicio anterior.


//asigna los valores de las letras en hexadecimal a decimal
#define A 10
#define B 11
#define C 12
#define D 13
#define E 14
#define F 15
//ingresar aqui el valor hexadeximal
int hex[] = {F,7};
int unidades[] = {0, 0};
int decimal = 0;
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
//multiplica cada espacio por su respectiva potencia de 16
unidades[1] = hex[1]*1;
unidades[0] = hex[0]*16;
//suma los resultados de cada unidad para obtener el decimal
decimal = unidades[1]+unidades[0];
}// the loop routine runs over and over again forever:
void loop() {
Serial.println(decimal);
delay(1000);
}

lunes, 28 de noviembre de 2016

Modulos Xbee z cómo conseguir señal

Cómo obtener datos de un sensor:

Hay dos maneras de obtener información del sensor:


  • Sampling solicitado para leer inmediatamente todos los pines de entrada digitales y analógicos habilitados.
  • Sampling automático para transmitir los datos del sensor periódicamente o cada vez que cambia un pin digital.

En ambos casos, la información se envía al otro módulo se llama muestra IO. Contiene las entradas (líneas DIO o canales ADC) con muestreo habilitado y el valor de todas las entradas digitales y analógicas habilitadas.


Sampling solicitado

El comando Force Sample (IS) obliga a leer todos los pines de entrada digital y analógica habilitados. Puede enviarlo localmente o a un dispositivo remoto.

Utilice la consola XCTU o cualquier aplicación de terminal de puerto serie para enviar este comando.
Cuando el módulo envía el comando IS, el dispositivo de recepción lee todos los canales de entrada analógica y analógica habilitados y devuelve su valor. Si el módulo transmite localmente el comando IS, envía los datos de E / S a la interfaz serie. Si el módulo transmite el comando IS a un módulo XBee remoto, envía los datos de IO remotos a través del aire al módulo solicitante.

Sampling automático


Una vez configurado el pin, el módulo remoto debe estar configurado para transmitir automáticamente la información del sensor al módulo XBee principal. El módulo XBee remoto necesita saber:


  1. Dónde transmitir los datos del sensor: defina esta información para el módulo que recibe esta información por los parámetros de la dirección de destino (DH + DL).
  2. Cuándo transmitir los datos del sensor:


    • Periódicamente: El XBee puede enviar la información leída del sensor en un intervalo especificado.
    • Por detección de cambio: Cuando un alfiler o varios pins cambian de estado.

Configure los parámetros IO Tasa de muestreo (IR) y Digital IO Change Detection (IC) para transmitir automáticamente los datos del sensor.

Wireless Mesh Networking

Mesh Networking son una forma eficaz de enrutar los datos.
El rango se amplía al permitir que los datos salten de nodo a nodo y la fiabilidad se incrementa mediante la "auto-curación", la capacidad de crear rutas alternativas cuando falla un nodo o se pierde una conexión.
Un protocolo de red de malla popular es ZigBee, que está específicamente diseñado para aplicaciones de baja velocidad de datos y baja potencia.


ZigBee Nodes

Los coordinadores son los más capaces de los tres tipos de nodos. Hay exactamente un coordinador en cada red y es el dispositivo que establece la red originalmente. Es capaz de almacenar información sobre la red, incluyendo claves de seguridad.

Los routers actúan como nodos intermedios, transmitiendo datos de otros dispositivos.

Los dispositivos receptores pueden ser dispositivos de baja potencia / alimentados por baterías. Tienen suficiente funcionalidad para hablar con sus padres y no pueden retransmitir datos de otros dispositivos.


Sleeping Routers 

Permitir que un nodo duerma reduce el consumo de energía, lo cual es especialmente útil para los nodos que funcionan con pilas. En la actualidad, ZigBee permite que los dispositivos finales durmieran, pero no los enrutadores ni los coordinadores. DigiMesh permite a todos los nodos dormir, lo que aumenta la vida de la batería.
El dormir es permitido por la sincronización del tiempo. Algunos sistemas requieren una pasarela o un coordinador para establecer la sincronización de tiempo. Una ventaja significativa de DigiMesh es que elimina el único punto de fallo asociado con depender de un coordinador o puerta de enlace. En cambio, DigiMesh establece sincronización de tiempo a través de un proceso de nominación y elección, permitiendo que la red funcione de manera autónoma.

Diferencias Adicionales 

Dado que ZigBee es abierto, ofrece el potencial de interoperabilidad con dispositivos fabricados por diferentes proveedores. Esto proporciona la capacidad de tener actualizaciones de firmware en el aire. Además, ZigBee ofrece perfiles establecidos para aplicaciones comunes como gestión de energía y controles de iluminación. Una buena selección de herramientas de apoyo de diagnóstico, como RF sniffer de paquetes, también está disponible.
DigiMesh, como un protocolo propietario, permite un control más estricto del espacio de código y por lo tanto más espacio para el crecimiento de características. DigiMesh está disponible en plataformas con mayor rango y más opciones de velocidad de datos RF. La carga útil del marco es generalmente mayor, lo que puede mejorar el rendimiento para las aplicaciones que envían bloques de datos más grandes. Además, DigiMesh utiliza un método de direccionamiento simplificado, que mejora la configuración de la red y la resolución de problemas.

Explorando ExBee y XCTU

XBees son transceptores inalámbricos populares. Esto se debe a que son flexibles ya que envían y reciben datos a través de sólo un puerto serie, lo que significa que son compatibles con computadoras y microcontroladores (como Arduino).
Y fáciles de configurar y asi se pueden crear malladas con decenas de XBees, o sólo unos cuantos.

El primer paso para comunicarse con su XBee es elegir una tarjeta de interfaz que le permite. XBee Explorers actúa como una puerta de enlace entre su computadora y su XBee. Hay unos pocos para elegir, cada uno ofreciendo sus propias diferencias clave. Aquí hay una breve descripción de cada uno:

XBee Explorer USB

El XBee Explorer USB es el más popular de los exploradores. Está equipado con un conector USB mini-B, por lo que necesitará el cable USB adecuado para conectarlo a su computadora.

Lo que más destaca en esta placa es un convertidor USB-a-Serie FT231X. Eso es lo que traduce los datos entre su computadora y el XBee. También hay un botón de reinicio, y un regulador de voltaje para suministrar el XBee con mucha energía. Además, hay cuatro LED que le ayudarán si alguna vez necesita depurar su XBee: RX, TX, RSSI (indicador de intensidad de señal) y un indicador de alimentación.

Esta placa también rompe cada uno de los pines de E / S del XBee a un par de cabezales compatibles con paneles de pan. Así que si desea hacer uso de la funcionalidad extendida de XBee, puede soldar algunos pines de cabecera en esos, o incluso sólo soldar un poco de cable.

XBee Explorer USB Dongle

El XBee Explorer Dongle es una extensión del Explorador. De hecho, la única diferencia real entre este y su predecesor es el conector USB. El Dongle se puede conectar directamente a su computadora portátil o puerto USB de la computadora.


XBee Explorer serie

Los ordenadores con un puerto serie RS-232 se están volviendo cada vez más difíciles de encontrar, pero si usted tiene una de esas reliquias, el XBee Explorer Serial es una opción viable.



Comenzando con X-CTU

X-CTU es un software libre, proporcionado por Digi (el fabricante de XBee), que utilizamos para configurar y administrar XBees y probar redes XBee.

Antes de continuar, asegúrese de que ha conectado un XBee en su explorador, y tenga el explorador conectado a su computadora. Cuando instaló los controladores para su Explorer debería haber sido asignado un número de puerto.

Seleccione su puerto de comunicación. Si tienes suerte (o simplemente no tienes un montón de cosas conectadas a tu computadora) sólo puede tener una opción aquí. De lo contrario, los usuarios de Windows deberían buscar la entrada que dice "USB Serial Port" y los usuarios de Mac deberían buscar algo como "usbserial-XXXXXXXX", si usas una tarjeta USB XBee. Si está utilizando un Explorador Serial en su lugar, elija la opción "Puerto de Comunicaciones". Si el Explorador Serial no aparece, asegúrese de que el interruptor a bordo esté ajustado a "On"!