Novedoso instrumento «todo en uno «


Para aquellos que quieran o necesiten un laboratorio y tengan un presupuesto ajustado  este nuevo  proyecto financiado por crowsorcing ,Red Pitaya promete ser  la solución.

Se trata de un hardware con todo lo necesario para que uses un PC, una tableta o un smartphone como equipo de investigación común de un laboratorio  profesional ya que con algunos cables para conectarlo y unos clicks podrás comenzar a usar un osciloscopio, un analizador de espectro, un analizador de frecuencia de respuesta, entre otros que vendrá incluidos por US$499 , que comparando con equipos normales los creadores  opinan serian mas de US$1000

 

pitaya

 

EL HARDWARE RED PITAYA

ANALÓGICO
Los canales de entrada de RF : 2
Ancho de banda : 50 MHz ( DC acoplados , 3dB BW)
Frecuencia de muestreo : 125 Msps
Resolución ADC : 14 bits ( LTC ADC )
Impedancia de entrada: 1 MOhm / / 10pF
Entrada de canal de ganancia : FIJO ( rango dinámico mejorado por medio de 14 bit de granularidad )
Por defecto el voltaje máximo de la escala : + -0,6 V (+ -6 V con 10 veces la atenuación de la sonda) . Reconfigurable gran escala por medio de la sustitución de componentes discretos ( +- 15V) .
Protección de sobrecarga : a través de diodos de protección
Tipo de conector : SMA (SMA a BNC adaptadores y sondas disponibles en «Red Pitaya Kit de diagnóstico» )

Caracterización extremo frontal de RF

Canales de salida RF: 2
Ancho de banda : 49 MHz a 3 dB (DC acoplado , 3dB BW definido por el filtro anti- imagen)
Frecuencia de muestreo : 125 Msps
Resolución DAC: 14 bits
Impedancia: 50 Ohm
De energía a escala completa : 10 dBm ( 50 Ohm de carga )
La velocidad de respuesta de la salida: 200 V / us
Protección del cortocircuito: SI
Tipo de conector : SMA ( SMA a BNC adaptadores disponibles en «Kit de diagnóstico Pitaya rojo «)
Canales de entrada analógicos adicionales: 4
Frecuencia de muestreo : 100 ksps
Resolución ADC : 12 bits
Ancho de banda : 50 kHz
Tipo de conector : IDC (conector de desplazamiento de aislamiento )

RF caracterización extremo posterior

Canales de salida analógicos adicionales: 4
Tipo: PWM paso bajo filtrada
Frecuencia de modulación PWM : 250 MHz
Frecuencia de muestreo nominal: 100 ksps
Equivalente resolución PWM : 11.3 bits de
Tipo de conector : IDC (conector de desplazamiento de aislamiento )

DIGITAL
16 GPIO digitales con conectividad FPGA ( ó 8 diferenciales ) Lógica @ 3.3V
4 pares de señales digitales diferenciales que deben utilizarse para fines de sincronización y de transferencia de datos en serie con la capacidad de conexión en cadena de hasta 500 Mbps .
Tipo de conector : 2x conectores «tipo SATA »
FPGA : Xilinx Zynq 7010 SoC ( 17600 LUT , 28k Celdas lógicas , 80 rebanadas DSP )
Otro conectividad : 100 Mb Ethernet , USB, USB OTG ( 2.0 ) , JTAG , I2C , UART , SPI …

 

 

 

El software para Red Pitaya

Red Pitaya se basa en el sistema operativo GNU / Linux y puede ser personalizado en diferentes niveles de programación. Interfaces de software disponibles son: HDL , C / C + +, los lenguajes de script C , Matlab y las interfaces web basadas en HTML.

La interfaz web permite el acceso de funcionalidad Pitaya rojo de la mayoría de los navegadores por lo que las aplicaciones de Red Pitaya están disponibles en iPhone , iPad, otros teléfonos inteligentes y las tabletas u ordenadores . Es muy simple para desarrollar nuevas plataformas de aplicaciones independientes que se ejecutan tan suave como aplicaciones nativas.

Conjunto inicial de OUT – OF-THE -BOX INSTRUMENTOS

OSCILOSCOPIO : 2 canales @ 125 MS / s digital de 14 bits con capacidad de disparo externo o señal basada

ANALIZADOR DE ESPECTRO : 2 canales con 50 MHz de ancho de banda de la señal con capacidad de diagrama de cascada

ARBITRARIA GENERADOR DE ONDA : 2 canales @ 125 MHz generación de forma de onda arbitraria de 14 bits con capacidad de disparo externo

RESPUESTA DE FRECUENCIA ANALIZADOR : 2 canales con ancho de banda de 60 MHz

Controlador programable 2×2 MIMO PID

pitaya2

 

Fuente aqui

Anuncio publicitario

Proyecto alarma casera con Netduino


En este original   proyecto  se trata de proteger una habitación de la bomba de sumidero  potencialmente peligrosa para los niños  asegurándose  de que las estancias quedan las  puertas cerradas y las personas (principalmente niños) no entran  en esta.

Las soluciones «alarma de la puerta» disponibles en el mercado parecen dirigidas a congeladores y simplemente no se adaptan a  necesidades mas complejas del autor   que pensaba mas bien  en una solución  con  Netduino.

La idea  original por tanto era algo que hiciera sonar  una alarma corta cuando se abriera la puerta y luego alertara a intervalos (cada pocos minutos), similar a un detector de humo con una batería que funcionase hasta agotar la batería o  hasta que la puerta se cerrase

esquema_alarma

La unidad controla la puerta a través de un interruptor magnético. Cuando se abre la puerta varias cosas suceden:

  1.  La luz del techo se enciende con un relé que controla una carga de baja  tensión.
  2.  Un servicio web se llama el cual envía un MMS a un teléfono.
  3. Un contador de tiempo que  se activa qeu al concluir  producirá una alerta sonora y hara una  llamada webservice (MMS) si la puerta permanece abierta durante un periodo de tiempo determinado.

Cuando se cierra la puerta a la luz se apaga y el temporizador de la alarma se detiene. El proyecto también incorpora una pantalla LCD de 2 líneas para mensajes, 2 LEDs (1 para la energía, 1 para la indicación de modo de problemas / override) y algunos botones para interactuar con el sistema.

Las funcionalidades de esta alarma de puerta basada en Netduino pues son las siguientes :

  •  Apaga/enciende  la luz : la enciende automáticamente cuando se abre la puerta y la apaga cuando la puerta está cerrada
  •  Alarma del MMS al abrir la puerta (a través de llamadas de servicio web)
  •  Alerta audible y alerta MMS adicional si la puerta se deja abierta más tiempo que  el  valor del temporizador
  •  Alerta que se repiten a intervalos especificados si la puerta sigue dejándose abierta
  • 4 botones :
    •  Botón 1: Manual de luz de encendido / apagado de anulación
    • – Botón 2: Regreso al control de forma automática la luz
    • – Botón 3: mensajes de error Revisión (principalmente para conexiones de red)
    • – Botón 4: Encender / apagar el sensor de la puerta (permite prolongado puerta abierta sin alerta)

Respecto al software para Netduino  se utilizan  cuatro clases :

Una clase para  dar soporte  a la comunicación de red:

public static class Network
{
public static bool NetworkAvail = false;
public static NetworkInterface ni = NetworkInterface.GetAllNetworkInterfaces()[0];

static NoteClass[] networkUpTune = {
new NoteClass(5,NoteClass.C, NoteClass.ThirtySecond),
new NoteClass(5,NoteClass.Rest, NoteClass.ThirtySecond),
new NoteClass(5,NoteClass.C, NoteClass.ThirtySecond),
new NoteClass(5,NoteClass.Rest, NoteClass.ThirtySecond),
new NoteClass(5,NoteClass.C, NoteClass.ThirtySecond)
};

static NoteClass[] networkDownTune = {
new NoteClass(3,NoteClass.C, NoteClass.ThirtySecond),
new NoteClass(3,NoteClass.Rest, NoteClass.ThirtySecond),
new NoteClass(3,NoteClass.C, NoteClass.ThirtySecond),
new NoteClass(3,NoteClass.Rest, NoteClass.ThirtySecond),
new NoteClass(3,NoteClass.C, NoteClass.ThirtySecond)
};

static NoteClass[] alertTune = {
new NoteClass(5,NoteClass.C, NoteClass.Eighth),
new NoteClass(6,NoteClass.C, NoteClass.Eighth),
new NoteClass(5,NoteClass.C, NoteClass.Eighth),
new NoteClass(6,NoteClass.C, NoteClass.Eighth)
};

public static void InitNetwork()
{
ParallaxLCD.Print(«Network…»);
int count = 0;
//DHCP can take a few seconds to finish so wait (up to 10 seconds) for it to complete
while (true)
{
count++;
ni = NetworkInterface.GetAllNetworkInterfaces()[0];
//only try for 10 seconds
if (ni.IPAddress != «0.0.0.0» || count > 10) break;
Thread.Sleep(1000);
}
if (ni.IPAddress == «0.0.0.0»)
{
ParallaxLCD.Print(«Network…\rError: Failed»);
}
else
{
ParallaxLCD.Print(«Network… IP:\r» + ni.IPAddress);
NetworkAvail = true;
}
//wire in event handler to keep track of the current network up/down state
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
}

static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
NetworkAvail = e.IsAvailable;
if (Program.initializing)
return;
if (NetworkAvail)
{
ParallaxLCD.Play(networkUpTune);
}
else
{
ParallaxLCD.Play(networkDownTune);
}
}

public static void SendAlert()
{
if (NetworkAvail)
{
try
{
//HttpWebRequest
HttpWebRequest alertRequest = (HttpWebRequest)WebRequest.Create(Program.AlertWebService);
alertRequest.Method = «GET»;
HttpWebResponse alertResponse = (HttpWebResponse)alertRequest.GetResponse();
if (alertResponse.StatusCode != HttpStatusCode.OK)
{
Program.LastError = «(SendAlert) » + alertResponse.StatusCode.ToString() + «: » + alertResponse.StatusDescription;
ParallaxLCD.Play(alertTune);
}
}
catch (Exception e)
{
Program.LastError = «(SendAlert) » + e.Message;
ParallaxLCD.Play(alertTune);
}
}
else
{
Program.LastError = «(SendAlert) Network unavailable»;
ParallaxLCD.Play(alertTune);
}
}

}
}

La clase  para controlar el display LCD

//Non-visible characters (Decimal ASCII) used by the Parallax LCD as commands
public enum LCD_COMMAND_CHARS
{
PrintCustomChar0 = 0,
PrintCustomChar1 = 1,
PrintCustomChar2 = 2,
PrintCustomChar3 = 3,
PrintCustomChar4 = 4,
PrintCustomChar5 = 5,
PrintCustomChar6 = 6,
PrintCustomChar7 = 7,
Backspace = 8,
Right = 9,
LineFeed = 10,
FormFeed = 12, //clears display and sets cursor to row 0 column 0
CR = 13,
BacklightOn = 17,
BacklightOff = 18,
DisplayOff = 21,
DisplayOn_NoCursor_NoBlink = 22,
DisplayOn_NoCursor_CharBlink = 23,
DisplayOn_Cursor_NoBlink = 24,
DisplayOn_Cursor_CharBlink = 25,
//Sound control
NoteLength_1_64 = 208,
NoteLength_1_32 = 209,
NoteLength_1_16 = 210,
NoteLength_1_8 = 211,
NoteLength_1_4 = 212,
NoteLength_1_2 = 213,
NoteLength_Whole = 214,
NoteScale_3 = 215,
NoteScale_4 = 216,
NoteScale_5 = 217,
NoteScale_6 = 218,
NoteScale_7 = 219,
Note_A = 220,
Note_A_Sharp = 221,
Note_B = 222,
Note_C = 223,
Note_C_Sharp = 224,
Note_D = 225,
Note_D_Sharp = 226,
Note_E = 227,
Note_F = 228,
Note_F_Sharp = 229,
Note_G = 230,
Note_G_Sharp = 231,
Note_Rest = 232,
LoadCustomChar0 = 248,
LoadCustomChar1 = 249,
LoadCustomChar2 = 250,
LoadCustomChar3 = 251,
LoadCustomChar4 = 252,
LoadCustomChar5 = 253,
LoadCustomChar6 = 254,
LoadCustomChar7 = 255
}

//This class assumes the Parallax LCD/speaker combo unit is connected to Netduino Plus Digital I/O PIN 3
//which is reserved for COM2 in the Netduino framework. Also assumes the Parallax LCD has been set to
//9600 baud using it’s onboard dip switches.
public static class ParallaxLCD
{
private static SerialPort LCD_PORT;
private static string COM_PORT = «COM2»; //Netduino Plus Digital I/O PIN 3
private static int COM_BAUD = 9600;

private static bool _LCD_state = false;

public static bool LCD
{
get
{
return _LCD_state;
}
set
{
if (value == _LCD_state)
{
//LCD already in specified state, don’t do anything
return;
}
if (value)
{
LCDOn();
BacklightOn();
}
else
{
BacklightOff();
LCDOff();
}
_LCD_state = value;
}
}
public static void Print(string inputstring)
{
//if the first line is >= 16 characters then remove the line break for a more natural behavior
int cr = inputstring.IndexOf(‘\r’, 0);
if (cr >= 16)
{
inputstring = inputstring.Substring(0, cr) + inputstring.Substring(cr + 1);
}
//this routine assumes all output will be «full screen», meaning no other data is left on the screen
ClearLCD();
byte[] bytes = UTF8Encoding.UTF8.GetBytes(inputstring);
LCD_PORT.Write(bytes, 0, bytes.Length);
}

public static void StartSerial()
{
LCD_PORT = new SerialPort(COM_PORT, COM_BAUD, Parity.None, 8, StopBits.One);
LCD_PORT.Open();
}

public static void BacklightOn()
{
LCD_PORT.Write(new byte[] { (int)LCD_COMMAND_CHARS.BacklightOn }, 0, 1);
}

public static void BacklightOff()
{
LCD_PORT.Write(new byte[] { (int)LCD_COMMAND_CHARS.BacklightOff }, 0, 1);
}

public static void ClearLCD()
{
LCD_PORT.Write(new byte[] { (int)LCD_COMMAND_CHARS.FormFeed }, 0, 1);
}

public static void LCDOff()
{
LCD_PORT.Write(new byte[] { (int)LCD_COMMAND_CHARS.DisplayOff }, 0, 1);
}

public static void LCDOn()
{
LCD_PORT.Write(new byte[] { (int)LCD_COMMAND_CHARS.DisplayOn_NoCursor_NoBlink }, 0, 1);
}

public static void LCDCR()
{
LCD_PORT.Write(new byte[] { (int)LCD_COMMAND_CHARS.CR }, 0, 1);
}

//Short, high-pitched sound to ack as notification that an action was detected (like a button press)
public static void Acknowledge()
{
Play(new NoteClass(7, NoteClass.A, NoteClass.ThirtySecond));
}

//Sound a traditional computer beep
public static void Beep()
{
Play(new NoteClass(5, NoteClass.A, NoteClass.Quarter));
}

public static void Play(NoteClass note)
{
byte[] sequence = new byte[3];
sequence[0] = (byte)note.ScaleChar;
sequence[1] = (byte)note.LengthChar;
sequence[2] = (byte)note.NoteChar;
LCD_PORT.Write(sequence, 0, 3);
}
public static void Play(NoteClass[] notes)
{
int currentScale = 0;
int currentLength = 0;
int count = 0;
if (notes != null && notes.Length > 0)
{
byte[] sequence = new byte[notes.Length * 3];
foreach (NoteClass note in notes)
{
if (note.ScaleChar != currentScale)
{
currentScale = note.ScaleChar;
sequence[count++] = (byte)currentScale;
}
if (note.LengthChar != currentLength)
{
currentLength = note.LengthChar;
sequence[count++] = (byte)currentLength;
}
sequence[count++] = (byte)note.NoteChar;
}
LCD_PORT.Write(sequence, 0, count);
}
}

public static byte[] CharsToBytes(char[] Input)
{
byte[] ReturnValue = new byte[Input.Length];

for (int Counter = 0; Counter < Input.Length; ++Counter)
{
ReturnValue[Counter] = (byte)Input[Counter];
}
return ReturnValue;
}

}
public class NoteClass
{
//Helper constants
public const int A = 0;
public const int ASharp = 1;
public const int B = 2;
public const int C = 3;
public const int CSharp = 4;
public const int D = 5;
public const int DSharp = 6;
public const int E = 7;
public const int F = 8;
public const int FSharp = 9;
public const int G = 10;
public const int GSharp = 11;
public const int Rest = 12;

public const int SixtyQuarter = (int)LCD_COMMAND_CHARS.NoteLength_1_64;
public const int ThirtySecond = (int)LCD_COMMAND_CHARS.NoteLength_1_32;
public const int Sixteenth = (int)LCD_COMMAND_CHARS.NoteLength_1_16;
public const int Eighth = (int)LCD_COMMAND_CHARS.NoteLength_1_8;
public const int Quarter = (int)LCD_COMMAND_CHARS.NoteLength_1_4;
public const int Half = (int)LCD_COMMAND_CHARS.NoteLength_1_2;
public const int Whole = (int)LCD_COMMAND_CHARS.NoteLength_Whole;

private int _scale = 5;
private int _note = A;
private int _length = Quarter;

public int Scale
{
get
{
return _scale;
}
set
{
if (value >= 3 && value <= 7)
{
_scale = value;
}
}
}
public int ScaleChar
{
get
{
return ((int)LCD_COMMAND_CHARS.NoteScale_3 – 3) + _scale;
}
}
public int Note
{
get
{
return _note;
}
set
{
if (value >= A && value <= Rest)
{
_note = value;
}
}
}
public int NoteChar
{
get
{
return (int)LCD_COMMAND_CHARS.Note_A + _note;
}
}
public int Length
{
get
{
return _length;
}
set
{
if (value >= SixtyQuarter && value <= Whole)
{
_length = value;
}
}
}
public int LengthChar
{
get
{
return _length;
}
}

public NoteClass(int scale, int note, int length)
{
Scale = scale;
Note = note;
Length = length;
}
}

Una clase para controlar los pulsadores

public static class Utility
{
public static string PadLeft(string val, int maxlen, string padchar)
{
string newval = val;
while (newval.Length < maxlen)
{
newval = padchar + newval;
}
return newval;
}
public static string PadRight(string val, int maxlen, string padchar)
{
string newval = val;
while (newval.Length < maxlen)
{
newval += padchar;
}
return newval;
}
}

Y por último la clase principal:

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;

namespace DoorManager
{
public enum LightModes { Auto, ManualOn, ManualOff }

public class Program
{
#region User Settings & Constants
public static Cpu.Pin DoorSensorPin = Pins.GPIO_PIN_D11; //Magnetic switch to monitor door open/close state
public static Cpu.Pin LEDPin = Pins.GPIO_PIN_D13; //Status indicator (blinks if error or override on)
public static Cpu.Pin LightPin = Pins.GPIO_PIN_D12; //Connection to high voltage relay to control room light
public static Cpu.Pin Button1Pin = Pins.GPIO_PIN_D7; //Manually turns light on/off
public static Cpu.Pin Button2Pin = Pins.GPIO_PIN_D6; //Returns light control to automatic
public static Cpu.Pin Button3Pin = Pins.GPIO_PIN_D5; //Display error messages
public static Cpu.Pin Button4Pin = Pins.GPIO_PIN_D4; //Toggles door sensor (when off, no alerts are created)
public const int InitialDoorOpenAlertDelay = 30; //in minutes
public const int OngoingDoorOpenSoundAlertDelay = 1; //in minutes
public const int OngoingDoorOpenMessageAlertDelay = 30; //in minutes
public const int LCDOffDelay = 10; //in seconds
public const string AlertWebService = «http://192.168.1.2/WS/SendAlert.aspx?a=Door+Manager&e=Door+Opened»;
#endregion

#region Fields
public static string LastError = «»;
public static InterruptPort DoorSensor;
public static OutputPort LED;
public static OutputPort Light;
public static InterruptPort Button1;
public static InterruptPort Button2;
public static InterruptPort Button3;
public static InterruptPort Button4;
private static bool IsDoorSensorProcessing = false;
private static bool IsDoorSensorIgnored = false;
public static bool IsDoorOpen = false;
private static bool _LightState = false;
public static bool initializing = true;
public static bool IgnoreButtons = true;
public static bool IgnoreAlerts = false;
public static bool AlertScheduled = false;
public static Timer DoorTimer = new Timer(new TimerCallback(DoorTimerHandler), null, Timeout.Infinite, Timeout.Infinite);
public static Timer LCDTimer = new Timer(new TimerCallback(LCDTimerHandler), null, Timeout.Infinite, Timeout.Infinite);
public static Timer LEDTimer = new Timer(new TimerCallback(LEDTimerHandler), null, Timeout.Infinite, Timeout.Infinite);
public static Timer ButtonTimer = new Timer(new TimerCallback(ButtonTimerHandler), null, Timeout.Infinite, Timeout.Infinite);
public static Timer SendAlertTimer = new Timer(new TimerCallback(SendAlertTimerHandler), null, Timeout.Infinite, Timeout.Infinite);
public static Timer DoorCloseTimer = new Timer(new TimerCallback(DoorCloseTimerHandler), null, Timeout.Infinite, Timeout.Infinite);
public static int CurrentMessageAlertDelayTimeout = 0;
public static int CurrentSoundAlertDelayTimeout = 0;
public static int CurrentAlertDelayTime = 0;
public static int CurrentLCDDelayTime = 0;
public static LightModes LightMode = LightModes.Auto;
private static int _LEDBlinkCount = 0;
public static bool _LEDBlink = false;

static NoteClass[] initTune = {
new NoteClass(5,NoteClass.C, NoteClass.Sixteenth),
new NoteClass(5,NoteClass.D, NoteClass.Sixteenth),
new NoteClass(5,NoteClass.E, NoteClass.Sixteenth),
new NoteClass(5,NoteClass.F, NoteClass.Sixteenth),
new NoteClass(5,NoteClass.G, NoteClass.Sixteenth),
new NoteClass(6,NoteClass.A, NoteClass.Sixteenth),
new NoteClass(6,NoteClass.B, NoteClass.Sixteenth),
new NoteClass(6,NoteClass.C, NoteClass.Sixteenth)
};
#endregion

#region Properties
public static bool LEDBlink
{
set
{
if (value)
_LEDBlinkCount++;
else
_LEDBlinkCount–;
if (_LEDBlinkCount > 0 && !_LEDBlink)
{
_LEDBlink = true;
LEDTimer.Change(250, Timeout.Infinite); //start timer
}
else if (_LEDBlinkCount == 0 && _LEDBlink)
{
LEDTimer.Change(Timeout.Infinite, Timeout.Infinite); //cancel timer
_LEDBlink = false;
LED.Write(false);
}
}
}
#endregion

#region Program Start
public static void Main()
{
Initialize();
ShowDoorSensorState();

Thread.Sleep(Timeout.Infinite); //keep running forever
}
#endregion

#region Methods
static void IgnoreButton()
{
IgnoreButtons = true;
ButtonTimer.Change(500, Timeout.Infinite); //restart timer
}

public static bool SetLightState()
{
bool expectedState = IsDoorOpen;
switch (LightMode)
{
case LightModes.ManualOn:
expectedState = true;
break;
case LightModes.ManualOff:
expectedState = false;
break;
}
if (expectedState != _LightState)
{
_LightState = expectedState;
Light.Write(expectedState);
}
return _LightState;
}

public static void SetIgnoreDoorSensor(bool ignore)
{
if (ignore != IsDoorSensorIgnored)
{
IsDoorSensorIgnored = ignore;
if (ignore)
{
LEDBlink = true;
//stop door sensor
DoorTimer.Change(Timeout.Infinite, Timeout.Infinite);
ParallaxLCD.LCD = true;
ParallaxLCD.Print(«Door Sensor\rDisabled»);
SetLCDOffTimer();
}
else
{
LEDBlink = false;
ParallaxLCD.LCD = true;
ParallaxLCD.Print(«Door Sensor\rEnabled»);
Thread.Sleep(2000);
//Check door
ShowDoorSensorState();
}
}
}

static void ShowDoorSensorState()
{
if (IsDoorSensorIgnored)
return;
ParallaxLCD.LCD = true; //ensure LCD is on
ParallaxLCD.Print(«Door » + (IsDoorOpen ? «Open» : «Closed»));
if (IsDoorOpen)
{
//start door timer
CurrentSoundAlertDelayTimeout = InitialDoorOpenAlertDelay * 60 * 1000; //convert minutes to milliseconds
CurrentAlertDelayTime = 0;
DoorTimer.Change(0, Timeout.Infinite);
}
else
{
//clear door timer
DoorTimer.Change(Timeout.Infinite, Timeout.Infinite);
//set LCD timer
SetLCDOffTimer();
}
SetLightState();
}

static void SetLCDOffTimer()
{
CurrentLCDDelayTime = LCDOffDelay * 1000;
LCDTimer.Change(1000, Timeout.Infinite);
}

static void Initialize()
{
ParallaxLCD.StartSerial();
ParallaxLCD.LCD = true;
ParallaxLCD.ClearLCD();
Thread.Sleep(1000);
ParallaxLCD.Print(«Initializing…»);
ParallaxLCD.Beep();
Thread.Sleep(1000);

//set LED
LED = new OutputPort(LEDPin, false);
LEDBlink = true;

//setup door sensor
DoorSensor = new InterruptPort(DoorSensorPin, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth);
DoorSensor.OnInterrupt += new NativeEventHandler(DoorSensor_OnInterrupt);
IsDoorOpen = DoorSensor.Read();

//setup light control
Light = new OutputPort(LightPin, false);
Light.Write(_LightState);

//setup buttons
Button1 = new InterruptPort(Button1Pin, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeLow);
Button1.OnInterrupt += new NativeEventHandler(Button1_OnInterrupt);
Button2 = new InterruptPort(Button2Pin, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeLow);
Button2.OnInterrupt += new NativeEventHandler(Button2_OnInterrupt);
Button3 = new InterruptPort(Button3Pin, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeLow);
Button3.OnInterrupt += new NativeEventHandler(Button3_OnInterrupt);
Button4 = new InterruptPort(Button4Pin, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeLow);
Button4.OnInterrupt += new NativeEventHandler(Button4_OnInterrupt);

//setup network
Network.InitNetwork();

Thread.Sleep(5000);

ParallaxLCD.Print(«Ready»);
ParallaxLCD.Play(initTune);

Thread.Sleep(2000);

LEDBlink = false;

initializing = false;
IgnoreButtons = false;
}
#endregion

#region Timer Handlers
static void DoorCloseTimerHandler(object sender)
{
//this timer turns off sending alerts for a period of time after the door has been closed; this is another «bounce» preventative measure
DoorCloseTimer.Change(Timeout.Infinite, Timeout.Infinite); //cancel timer
IgnoreAlerts = false;
}

static void SendAlertTimerHandler(object sender)
{
//performing this in a timer ensures switch «bounce» doesn’t send multiple alerts
SendAlertTimer.Change(Timeout.Infinite, Timeout.Infinite); //cancel timer
Network.SendAlert();
AlertScheduled = false;
}

static void ButtonTimerHandler(object sender)
{
//this routine is to delay reaction to button presses to eliminate «bounce» and false presses
ButtonTimer.Change(Timeout.Infinite, Timeout.Infinite); //cancel timer
IgnoreButtons = false;
}

static void LEDTimerHandler(object sender)
{
if (_LEDBlink)
{
LED.Write(!LED.Read());
LEDTimer.Change(250, Timeout.Infinite); //restart timer
}
else
{
LED.Write(false);
}
}

static void LCDTimerHandler(object sender)
{
if (!IsDoorOpen || IsDoorSensorIgnored)
{
CurrentLCDDelayTime -= 1000;
if (CurrentLCDDelayTime <= 0)
{
CurrentLCDDelayTime = 0;
ParallaxLCD.LCD = false; //turn off LCD
//clear LCD timer
LCDTimer.Change(Timeout.Infinite, Timeout.Infinite);
}
else
{
LCDTimer.Change(1000, Timeout.Infinite);
}
}
else
{
//clear LCD timer
LCDTimer.Change(Timeout.Infinite, Timeout.Infinite);
}
}

static void DoorTimerHandler(object sender)
{
if (IsDoorOpen && !IsDoorSensorIgnored)
{
if (CurrentSoundAlertDelayTimeout > 0)
{
CurrentSoundAlertDelayTimeout -= CurrentAlertDelayTime;
}
if (CurrentMessageAlertDelayTimeout > 0)
{
CurrentMessageAlertDelayTimeout -= CurrentAlertDelayTime;
}
if (CurrentMessageAlertDelayTimeout <= 0)
{
//alert
SendAlertTimer.Change(5000, Timeout.Infinite); //send alert after 5 seconds
//restart delay
CurrentMessageAlertDelayTimeout = OngoingDoorOpenMessageAlertDelay * 60 * 1000; //convert minutes to milliseconds
}
if (CurrentSoundAlertDelayTimeout > 0)
{
int mins = CurrentSoundAlertDelayTimeout / 60000;
int secs = (CurrentSoundAlertDelayTimeout – (mins * 60000)) / 1000;
ParallaxLCD.Print(«Door Open\rAlert in » + (mins > 1 ? mins.ToString() + » min» : secs.ToString() + » sec»));
if (mins > 1)
{
CurrentAlertDelayTime = 60000;
}
else
{
CurrentAlertDelayTime = 1000;
}
}
else
{
//alert
ParallaxLCD.Play(new NoteClass(7, NoteClass.A, NoteClass.Half));
//restart delay
CurrentSoundAlertDelayTimeout = OngoingDoorOpenSoundAlertDelay * 60 * 1000; //convert minutes to milliseconds
CurrentAlertDelayTime = 0;
}
DoorTimer.Change(CurrentAlertDelayTime, Timeout.Infinite);
}
}
#endregion

#region Event Handlers
static void DoorSensor_OnInterrupt(uint data1, uint data2, DateTime time)
{
if (initializing || IsDoorSensorProcessing)
return;
IsDoorSensorProcessing = true;
//magnetic switch wired to normally open / onboard switch normally high
//therefore when the door is closed (magnetic switch open) the onboard switch (normally high) is on
IsDoorOpen = (data2 == 1);
if (IsDoorOpen && !IgnoreAlerts)
{
AlertScheduled = true;
SendAlertTimer.Change(5000, Timeout.Infinite); //send alert after 5 seconds
}
else if (!IsDoorOpen && !AlertScheduled)
{
IgnoreAlerts = true;
DoorCloseTimer.Change(5000, Timeout.Infinite); //prevent alerts for 5 seconds
}
ShowDoorSensorState();
IsDoorSensorProcessing = false;
}

/// <summary>
/// Button 1 turns the light on/off manually.
/// </summary>
static void Button1_OnInterrupt(uint data1, uint data2, DateTime time)
{
if (initializing)
return;
if (!IgnoreButtons)
{
IgnoreButtons = true;
ParallaxLCD.Acknowledge();
LightModes oldMode = LightMode;
if (_LightState)
LightMode = LightModes.ManualOff;
else
LightMode = LightModes.ManualOn;
SetLightState();
//if we’re moving off auto mode start the led blinking for awareness
if (oldMode == LightModes.Auto)
LEDBlink = true;
IgnoreButton();
}
}

/// <summary>
/// Button 2 sets the light back to automatic (door sensor controlled).
/// </summary>
static void Button2_OnInterrupt(uint data1, uint data2, DateTime time)
{
if (initializing)
return;
if (!IgnoreButtons)
{
IgnoreButtons = true;
if (LightMode != LightModes.Auto)
{
ParallaxLCD.Acknowledge();
LightMode = LightModes.Auto;
SetLightState();
LEDBlink = false;
}
IgnoreButton();
}
}

static void Button3_OnInterrupt(uint data1, uint data2, DateTime time)
{
if (initializing)
return;
if (!IgnoreButtons && (!IsDoorOpen || IsDoorSensorIgnored))
{
IgnoreButtons = true;
ParallaxLCD.Acknowledge();
if (LastError != null && LastError.Length > 0)
{
string msg = LastError;
//show error in byte size pieces
ParallaxLCD.LCD = true;
while (msg.Length > 0)
{
if (msg.Length > 32)
{
ParallaxLCD.Print(msg.Substring(0,32));
msg = msg.Substring(32);
}
else
{
ParallaxLCD.Print(msg);
msg = «»;
}
Thread.Sleep(5000);
}
ParallaxLCD.Acknowledge();
SetLCDOffTimer();
}
else
{
ParallaxLCD.LCD = true;
ParallaxLCD.Print(«No Errors»);
SetLCDOffTimer();
}
IgnoreButton();
}
}

/// <summary>
/// Button 4 disables/re-enables the door sensor.
/// </summary>
static void Button4_OnInterrupt(uint data1, uint data2, DateTime time)
{
if (initializing)
return;
if (!IgnoreButtons)
{
IgnoreButtons = true;
ParallaxLCD.Acknowledge();
SetIgnoreDoorSensor(!IsDoorSensorIgnored);
IgnoreButton();
}
}
#endregion
}
}

Lista de componentes :

  • 2 LED, 4 interruptores momentáneos, tornillos diverso, caja de proyecto
  • Opcional: Kit Protoshield para Ardiono – $ 9.90  http://www.seeedstud…uino-p-318.html
  • Este kit incluye una placa de circuito de prototipos, conectores, resistencias, los LED (no caja montable en proyecto), conmutadores (no caja montable proyecto) y otras piezas misceláneas que puede ayudar a un iniciado a empezar.

Fuente  aqui

Domótica con Netduino y Kinect


Introducción

Hay un montón de mediocre  tecnología sobre el tema de la domotica  en el mercado siendo ademas  los productos  demasiado caros, así que el autor Dan Thyer  decidió construir su  propio sistema domótico. El autor empezó con el microcontrolador Arduino, pero el código rápidamente se convirtió en difícil de mantener porque la programación en Arduino   no esta orientada a objetos,  no puede  hacer multithreading  asi como tampoco permite depuración real con puntos de interrupción tal como se puede hacer con Netduino .Refactorizó entones  su  código para C # y  NET Micro Framework eligiendo  Netduino plus, http://www.netduino.com/netduinoplus/specs.htm , para el microcontrolador  (la versión Plus incluye  un adaptador de Ethernet para la comunicación de red).

Netduino controlado Pistola de agua

El primer proyecto  era una pistola de agua servo controlada para la piscina. El código  para la Netduino controla los servos para rociar el arma de fuego en diferentes patrones en la piscina. Entonces construyo una interfaz de Windows Phone 7 para apuntar los servos a la posición de la pantalla donde se toca. El  autor solía usar IIS Smooth Streaming para transmitir vídeo en el teléfono así que intento apuntar de forma remota a los niños en la piscina desde cualquier lugar. Así consiguió  resultados mixtos con la pieza de video  pero el autor reconoce  que necesitaría perfeccionar lo reduciendo el tiempo de almacenamiento en búfer para que sea más tiempo real.

NetduinoHomeAutomation/LogicalDan_002.jpg

Jardín

El próximo proyecto era controlar el riego del jardín habilitando los  horarios a través  de código los tiempos para regar el jardín y controlar la duración del riego.

NetduinoHomeAutomation/LogicalDan_004.jpg

Kinect

Muchas personas usan  para a hacer proyectos con el Kinect de Microsoft, que tiene una rica SDK completo con los controladores, APIs y un montón de buen código de ejemplo. El Kinect tiene un montón de sensores, incluyendo una cámara RGB, un sensor de profundidad y un micrófono de múltiples matrices. Con Kinect, usted es el controlador! de modo  que el autor tuvo  la idea de usar el Kinect para el controlador de la pistola de agua en la piscina de modo que puede puede apuntar el arma apuntando a donde usted quiera para disparar. El disparador se controla doblando su otro brazo para que la mano está por encima de la articulación del codo. La conexión del Kinect al  controlador fue  muy simple debido a la rica API Kinect y porque el autor había escrito los niveles de back-end para comunicarse con el microcontrolador Netduino.

NetduinoHomeAutomation / VideoSquirtGun.JPG
Vea este vídeo de la pistola de

Reconocimiento de voz en el Kinect

Otra de las características en el Kinect es el micrófono de múltiples matrices con reconocimiento de voz de modo que se puede jugar un poco con los comandos de voz para controlar la pistola de agua y para abrir el garaje.

Vea este vídeo de Simon Says Kinect

Android Puerta de cochera

Es autor ademas   escribio   una aplicación nativa para Android para llamar a un servicio web REST (WCF) que se comunica con el Netduino para abrir el garaje.

Poniendo todo junto

La imagen siguiente muestra la comunicación entre los componentes

NetduinoHomeAutomation/LogicalDan_005.jpg

La imagen de abajo muestra los dispositivos que controla el Netduino

NetduinoHomeAutomation/LogicalDan_006.jpg

NetduinoHomeAutomation / VideoAll.JPG
Vea este vídeo para ver cómo se organiza todo esto

Comunicación Ethernet

La comunicación Ethernet con el Netduino fue la parte más difícil del proyecto.

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using Microsoft.SPOT.Net.NetworkInformation;
using System.Threading;

namespace Netduino.Controller
{
    public delegate void MessageEventHandler(string Message);

    class EthernetCommunication
    {
        #region Private Variables
        private string _hostAddress = null;
        private int _port = 80;
        private string _netduinoStaticIPAddress = null;
        private string _subnetMask = null;
        private string _gatewayAddress = null;
        private Thread _listeningThread;
        private Socket _clientSocket = null;
        private static EthernetCommunication _ethernetCommunication;
        #endregion

        #region Constructors
        //This keeps other classes from creating an instance
        private EthernetCommunication()
        {
        }
        #endregion

        #region Public Properties
        public string HostAddress
        {
            set { _hostAddress = value; }
            get { return _hostAddress; }
        }
        public int Port
        {
            set { _port = value; }
            get { return _port; }
        }
        public string NetduinoStaticIPAddress
        {
            set 
            { 
                _netduinoStaticIPAddress = value;
                SetNetduinoStaticIPConfiguration();
            }
            get { return _netduinoStaticIPAddress; }
        }
        public string SubnetMask
        {
            set
            {
                _subnetMask = value;
                SetNetduinoStaticIPConfiguration();
            }
            get { return _subnetMask; }
        }
        public string GatewayAddress
        {
            set 
            {
                _gatewayAddress = value;
                SetNetduinoStaticIPConfiguration();
            }
            get { return _gatewayAddress; }
        }
        #endregion

        #region Events
        public static event MessageEventHandler EventHandlerMessageReceived;
        #endregion

        #region Public Methods

        private void StartListening()
        {
            _listeningThread = new Thread(new ThreadStart(ReceiveSocketsInListeningThread));
            _listeningThread.Start();
        }

        private void InitializeConfiguration()
        {
            if (_netduinoStaticIPAddress == null)
                throw new Exception("The netduino Static IP Address nust be set!");

            if (_subnetMask == null)
                throw new Exception("The Subnet Mask must be set!");

            if (_gatewayAddress == null)
                throw new Exception("The Gateway address must be set.");

            SetNetduinoStaticIPConfiguration();
            NetworkInterface networkInterface = NetworkInterface.GetAllNetworkInterfaces()[0];

            if (_netduinoStaticIPAddress != networkInterface.IPAddress)
                throw new Exception("Problem setting the static IP.");

            if (_subnetMask != networkInterface.SubnetMask)
                throw new Exception("Problem setting the subnet mask.");

            if (_gatewayAddress != networkInterface.GatewayAddress)
                throw new Exception("Problem setting the gateway address.");
        }
        #endregion

        #region Public Static Methods
        public static EthernetCommunication GetInstance()
        {
            if (_ethernetCommunication == null)
            {
                _ethernetCommunication = new EthernetCommunication();
                _ethernetCommunication.HostAddress = Config.HostAddress;
                _ethernetCommunication.Port = Config.Port;
                _ethernetCommunication.NetduinoStaticIPAddress = Config.NetduinoStaticIPAddress;
                _ethernetCommunication.SubnetMask = Config.SubnetMask;
                _ethernetCommunication.GatewayAddress = Config.GatewayAddress;
                _ethernetCommunication.InitializeConfiguration();
                _ethernetCommunication.StartListening();
            }
            return _ethernetCommunication;
        }

        public static void SendMessage(string message)
        {
            GetInstance().SendEthernetMessage(message);
        }
        #endregion

        #region Private Methods
        private bool IsSocketConnected(Socket socket)
        {
            bool connectionNotClosedResetOrTerminated = !socket.Poll(1000, SelectMode.SelectRead);
            bool socketHasDataAvailableToRead = (socket.Available != 0);
            return (connectionNotClosedResetOrTerminated || socketHasDataAvailableToRead);
        }

        private void ReceiveSocketsInListeningThread()
        {
            string receiveMessage = "";
            bool exitProgram = false;

            using (System.Net.Sockets.Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                socket.Bind(new IPEndPoint(IPAddress.Any, _port));
                socket.Listen(10);

                while (!exitProgram)
                {
                    Debug.Print("Waiting for connection...");
                    _clientSocket = socket.Accept();  //This call is "blocking" and will will wait for a connection, which also means the thread hangs around
                    Debug.Print( "Connection Accepted!");

                    using (_clientSocket)
                    {
                        while (IsSocketConnected(_clientSocket))
                        {
                            int availablebytes = _clientSocket.Available;
                            byte[] buffer = new byte[availablebytes];
                            _clientSocket.Receive(buffer);
                            if (buffer.Length > 0)
                            {
                                receiveMessage = new string(Encoding.UTF8.GetChars(buffer));
                                RaiseMessageReceivedEvent(receiveMessage);
                                if (receiveMessage.ToUpper() == "EXIT")
                                {
                                    exitProgram = true;
                                }
                            }

                        }
                    }
                }
            }
        }

        private void RaiseMessageReceivedEvent(string message)
        {
            // Event will be null if there are no subscribers
            if (EventHandlerMessageReceived != null)
            {
                EventHandlerMessageReceived(message);
            }
        }

        private void SetNetduinoStaticIPConfiguration()
        {
            //Exit if not all of the configuration properties are set
            if (_netduinoStaticIPAddress == null || _subnetMask == null || _gatewayAddress == null)
                return;

            NetworkInterface networkInterface = NetworkInterface.GetAllNetworkInterfaces()[0];

            bool _ipAddressAlreadySet = _netduinoStaticIPAddress == networkInterface.IPAddress;
            bool _subnetMaskAlreadySet = _subnetMask == networkInterface.SubnetMask;
            bool _gatewayAlreadySet = _gatewayAddress == networkInterface.GatewayAddress;

            if (_ipAddressAlreadySet && _subnetMaskAlreadySet && _gatewayAlreadySet)
                return;

            // Set our IP address to a new value
            // This will be saved in the config sector of the netduino and will survive reboots 
            networkInterface.EnableStaticIP(_netduinoStaticIPAddress, _subnetMask, _gatewayAddress);
        }

        private void SendEthernetMessage(string message)
        {
            if (_hostAddress != null && _port > 0)
            {
                using (System.Net.Sockets.Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
                {
                    IPHostEntry entry = Dns.GetHostEntry(_hostAddress);
                    IPAddress address = entry.AddressList[0];
                    IPEndPoint endpoint = new IPEndPoint(address, _port);

                    try
                    {
                        socket.Connect(endpoint);
                        socket.Send(Encoding.UTF8.GetBytes(message));
                        socket.Close();
                        Debug.Print(message);
                    }
                    catch (SocketException se)
                    {
                        Debug.Print("Socket Exception!  Probably no server or bad ip?");
                        Debug.Print(se.StackTrace);
                    }
                }
            }
        }
        #endregion
    }
}

Si desea ver un ejemplo de cómo hablar con una aplicación de escritorio, descargue el código fuente y  estudie  el proyecto Netduino.Desktop.Messenger.

Comunicación Servo

Los servos era divertido para programar. Yo escribí una clase servo que ajuste el ángulo y el Mínimo y Máximo grados. He añadido la propiedad invertida para invertir el ángulo porque  el autor tenia  una versión de interior de la pistola de agua que se monta en el suelo mientras la versión de exterior está montada al revés.

using System;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;

namespace Netduino.Controller
{
    public class Servo : IDisposable
    {
        #region Private Variables
        private PWM _servo;
        private bool _invertAngle = false;
        private int _degreeMin = Config.DegreeMinDefault;
        private int _degreeMax = Config.DegreeMaxDefault;
        private uint _durationMin = Config.DurationMinDefault;
        private uint _durationMax = Config.DurationMaxDefault;
        private uint _angle = Config.HomeDefaultAngle;
        private uint _period = Config.PeriodDefault;
        #endregion

        #region Constructors
        public Servo(Cpu.Pin pin)
        {
            _servo = new PWM(pin);
            _servo.SetDutyCycle(0);
        }
        #endregion

        #region Public Methods
        public void Dispose()
        {
            DisengageServo();
            _servo.Dispose();
        }

        /// <summary> 
        /// Disengage the servo.  
        /// The servo motor will stop trying to maintain an angle 
        ///  
        public void DisengageServo()
        {
            _servo.SetDutyCycle(0);
        }

        public void EngageServo()
        {
            SetPulse();
        }
        #endregion

        #region Private Methods
        private void SetPulse()
        {
            uint angle = _invertAngle ? 180 - _angle: _angle;
            uint duration = (angle) * (_durationMax - _durationMin) / 180 + _durationMin;
            _servo.SetPulse(period: _period, duration: duration);  
        }
        #endregion

        #region Public Properties
        public int Angle
        {
            set
            {
                if (value > _degreeMax)
                    value = _degreeMax;

                if (value < _degreeMin)
                    value = _degreeMin;

                if (value < 0)
                    value = 0;

                _angle = (uint)value;
                SetPulse();
            }
            get
            {
                return (int)_angle;
            }
        }

        public bool InvertAngle
        {
            set {_invertAngle = value;}
            get { return _invertAngle; }
        }

        public int DegreeMin
        {
            set {_degreeMin  = value;}
            get { return _degreeMin; }
        }

        public int DegreeMax
        {
            set { _degreeMax = value; }
            get { return _degreeMax; }
        }

        public uint durationMin
        {
            set { _durationMin = value; }
            get { return _durationMin; }
        }

        public uint durationMax
        {
            set { _durationMax = value; }
            get { return _durationMax; }
        }

        public uint period
        {
            set { _period = value; }
            get { return _period; }
        }
        #endregion
    }
}

Controlar el Jardín

El autor ademas  escribiió  una biblioteca de comandos de tiempo para el NET Micro Framework. Tenga en cuenta que el. NET Micro Framework es muy rico, pero no tiene los genéricos.

using System;
using System.Threading;
using System.Collections;
using Microsoft.SPOT;

namespace Netduino.Controller
{
    public delegate void AlarmCallback();

    class AlarmData
    {
        public int Key { get; set; }
        public ExtendedTimer ExtendedTimer { get; set; }
        public bool RemoveAfterRun { get; set; }
        public AlarmCallback Callback { get; set; }
    }

    class Time
    {
        #region Private Variables
        private static Hashtable _alarmHashtable;
        private static int _key;
        #endregion

        #region Constructors
        //This keeps other classes from creating an instance
        private Time()
        {
        }
        #endregion

        #region Public Static Methods
        public static void SetTime(int year, int month, int day, int hour,int minute, int second, int millisecond )
        {
            DateTime presentTime = new DateTime( year, month, day, hour, minute, second, millisecond);
            Microsoft.SPOT.Hardware.Utility.SetLocalTime(presentTime);
        }

        public static void RunDaily(AlarmCallback alarmCallback, int hour, int minute, int second)
        {
            DateTime alarmTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hour, minute, second, 0);

            //If we already missed today then tomorrow is the first day to run
            if(alarmTime<DateTime.Now)
            {
                alarmTime = alarmTime.AddDays(1);
            }

            TimeSpan dailyTimeSpan = new TimeSpan(24, 0, 0);
            CreateAlarm(alarmCallback, alarmTime, dailyTimeSpan, false);
        }

        public static void RunOnDelay(AlarmCallback alarmCallback, int runInMilliseconds)
        {
            DateTime alarmTime = DateTime.Now.AddMilliseconds(runInMilliseconds);
            CreateAlarm(alarmCallback, alarmTime, TimeSpan.Zero, true);
        }

        public static void RunRepetitively(AlarmCallback alarmCallback, int repeatMilliseconds)
        {
            DateTime alarmTime = DateTime.Now.AddMilliseconds(repeatMilliseconds);
            TimeSpan repeatTimeSpan = new TimeSpan(0, 0, 0, 0, repeatMilliseconds);
            CreateAlarm(alarmCallback, alarmTime, repeatTimeSpan, false);
        }
        #endregion

        #region Private Methods
        private static void CreateAlarm(AlarmCallback alarmCallback, DateTime alarmTime, TimeSpan timeSpan, bool removeAfterRun)
        {
            if (_alarmHashtable == null)
                _alarmHashtable = new Hashtable();

            _key=_key+1;

            AlarmData alarmData = new AlarmData();
            alarmData.Key = _key;
            alarmData.Callback = alarmCallback;
            alarmData.ExtendedTimer = new ExtendedTimer(OnExecuteAlarm, alarmData, alarmTime, timeSpan);
            alarmData.RemoveAfterRun = removeAfterRun;

            _alarmHashtable.Add(_key, alarmData);
        }

        private static void OnExecuteAlarm(object target)
        {
            AlarmData alarmData = (AlarmData)target;

            if (alarmData.RemoveAfterRun)
                _alarmHashtable.Remove(alarmData.Key);

            alarmData.Callback.Invoke();
        }
        #endregion
    }
}

El Programa Principal. NET Micro Framework

Hay un controlador de eventos para la comunicación Ethernet que se ejecuta cuando se recibe un mensaje.

EthernetCommunication.EventHandlerMessageReceived += new MessageEventHandler(OnMessageReceived);
El método OnMessageReceived analiza el mensaje y llama a los métodos para ejecutar los comandos. El siguiente fragmento de código es sólo parcial, pero la fuente completa está disponible para su descarga aqui (necesita previamente darse de alta en en el site de  code project si no lo estaba con anterioridad)
private static void OnMessageReceived(string message)
        {
            string[] parts = message.Split(' ');
            switch(parts[0].ToUpper()) 
            {
                case "M":
                case "MOVE":
                    if (parts.Length != 3)
                    {
                        EthernetCommunication.SendMessage("The move command takes 3 arguments.");
                        break;
                    }
                    int leftRightAngle = int.Parse(parts[1]);
                    int upDownAngle = int.Parse(parts[2]);
                    _squirtGun.MoveToPosition(leftRightAngle, upDownAngle);
                    break;

                case "U":
                case "UP":
                    int upDelta = parts.Length > 1 ? int.Parse(parts[1]) : 1;
                    _squirtGun.UpDownAngle = _squirtGun.UpDownAngle + upDelta;
                    break;
Fuente aqui

Demo de alarma con 11Netduinos


Mike Linnen   ha creado un ingenioso sistema de Alarma con 11 dispositivos Netduino simulando los componentes de un sistema de seguridad para el hogar ,donde todos ellos están  conectados  entre  si   gracias a servicios en la nube alojados en Windows Azure.

Este  prototipo  fue creado como una presentación para un grupo local de usuarios .net explicándoles  los conceptos de Internet de las cosas  o M2M (machine to machine).

Todos los dispositivos de comunicación al servicio de nube van  sobre un bus de mensajes de MQTT.

El servicio en la nube es el cerebro del sistema y toma las decisiones sobre cómo el sistema reacciona a varias entradas.

Gracias a un panel de control que puede verse mediante un navegador web  se puede interactuar  con el sistema  y las  actualizaciones  se envían en tiempo real a los navegadores vía signalr.

Sobre las famosas lentillas medidoras del nivel de glucosa de Google


Usted probablemente habrá  escuchado que la diabetes es un enorme y creciente problema que afectan a una de cada 19 personas en el planeta,pero es posible que no esté familiarizado con la lucha diaria que muchas personas con diabetes se enfrentan al tratar de mantener sus niveles de azúcar en la sangre bajo control.

Sin control de azúcar en la sangre ,esto pone a las personas en situación de riesgo para una serie de complicaciones peligrosas, algunos a corto plazo y otros a largo plazo, incluyendo el daños a los ojos, los riñones y el corazón (un triste ejemplo una  madre,que una vez se desmayó por una bajada de azúcar y condujo su coche fuera de la carretera).

De hecho mucha gente que padece esta enfermedad dicen que controlar su diabetes es como tener un trabajo a tiempo parcial,pues los niveles de glucosa cambian con frecuencia con la actividad normal como el ejercicio o comer o incluso el sudorde modo que picos repentinos o gotas precipitadas son peligrosos y no es poco común, que requiere un control la vuelta al reloj.  Aunque algunas personas usan los monitores de glucosa, con un sensor de glucosa incrustado debajo de la piel, todas las personas con diabetes todavía deben pincharse el dedo y las gotas de la prueba de sangre durante el día.  Es perturbador, y es doloroso y  como resultado, muchas personas con diabetes chequean su glucosa en sangre con menos frecuencia de lo que deberían.

Con los años, muchos científicos han investigado diversos fluidos corporales-como las lágrimas-en la esperanza de encontrar una forma más fácil para la gente para realizar un seguimiento de sus niveles de glucosa. Pero como se puede imaginar, las lágrimas son difíciles de recopilar y estudiar.. En Google [x], se  han  preguntado si miniaturizando la  electrónica podrian  conseguirlo  mediante  chips y sensores tan pequeños que se ven como pedacitos de brillo, y una antena más delgadas que un cabello humano-podría ser una manera de descifrar el misterio de la glucosa lacrimógenos y medirlo con una mayor precisión.

Ahora de hecho estab  probando un lente de contacto inteligente que está construido para medir los niveles de glucosa en las lágrimas utilizando un diminuto chip inalámbrico y sensor de glucosa en miniatura que se encajan entre dos capas de material para lentes de contacto blandas.

Los  prototipos que estan probando pueden generar una lectura de una vez por segundo.

También estan investigando la posibilidad de que esto servirá como una alerta temprana para el usuario, por lo que estan explorando la integración de pequeñas luces LED que podrían iluminar indicar que los niveles de glucosa han cruzado por encima o por debajo de ciertos umbrales.  Todavía es pronto para esta tecnología, pero han  completado múltiples estudios de investigación clínica que están ayudando a refinar el prototipo y esperan que esto podría algún día conducir a una nueva forma para que las personas con diabetes para controlar su enfermedad.

De hecho estan en conversaciones con la FDA, pero aún queda mucho trabajo por hacer para convertir esta tecnología en un sistema que la gente puede usar.  No vana hacer esto por sí solo pues tienen  la intención de buscar socios que sean expertos en la oferta de productos que hay en el mercado.  Estos socios utilizarían nuestra tecnología para una lente de contacto inteligente y desarrollarían  aplicaciones que harían las mediciones disponibles para el usuario y su médico.

Desde google    dicen que  buscan proyectos  desafiantes   y en momentos en que la Federación Internacional de Diabetes (PDF) está declarando que el mundo está «perdiendo la batalla» contra la diabetes, piensan  que este proyecto merece  la pena intentarlo.

Fuente  aqui

Herramientas para construir twitter walls


A la hora de asistir a un evento, muchas veces nos encontramos con pantallas especiales dedicadas a mostrarnos lo que está sucediendo en Twitter  conocidas como Twitter walls o tweet walls, que  dependiendo del presupuesto asignado, a veces tienen detrás todo un software especialmente desarrollado para la ocasión. En el caso de los eventos más normales  como pueden ser conferencias,clases, seminarios, etc que, por desgracia  carecen de sponsors, podemos usar varias utilidades que nos permitiran proyectar un hashtag de dicho evento:

Visible Tweets

Para usar  Visible Tweets no necesitamos nada más que un hashtag y un proyector para poder trabajar con esta herramienta. Usando todos los términos de búsqueda que podemos encontrar en el buscador de Twitter, podemos crear un tweet wall en apenas unos minutos, sin demasiados problemas. Cuando ingresamos a la herramienta, nos encontraremos con una barra central donde tenemos que insertar nuestra palabra clave, y luego, nada más sentarnos a ver cómo funciona.

No es necesario crear una cuenta para poder usar Visible Tweets, y como nos podemos imaginar para proyectar un hashtag en un evento nada más tenemos que conectar un PC a un proyector o TV. No será lo más avanzado del mercado, pero ciertamente funciona. Si queremos hacer algunas limitaciones, podemos seleccionar nada más los tweets de una determinada cuenta, pero también seguir palabras claves, hashtags y más. Es una herramienta de visualización de tweets muy efectiva, ideal para aquellos que no tienen mucho presupuesto para dedicar a esta cuestión.

hashtags

Twitter Fontana

Twitter Fontana también es una herramienta muy sencilla que nos permite proyectar un hashtag en un evento sin demasiados problemas pero sí nos pedirá que iniciemos sesión con Twitter para poder comenzar a usarla.

Una vez que tenemos creada la selección de tweets, vamos a poder pausar, personalizar, y ver como presentación Esto último es muy importante dado que será lo que nos permita trabajar con un proyector o TV en un evento . Así como Visible Tweets, no necesitaremos nada adicional, y podremos configurar el estilo de transición entre diferentes tweets, el estilo en general que tendrá la presentación, y mucho más. En poco tiempo podemos tener configurado un tweet wall con los colores de una marca, por ejemplo.

Tweet Fontana

Tint

Tint es una herramienta empresarial que, además de permitirnos proyectar un hashtag en un evento, también es una solución apropiada para poder embeber todas las redes de Social Media en varios canales de marketing que pueda tener una marca. Tint es básicamente un tablero donde podemos sincronizar todas las redes sociales, y comenzar a trabajar desde allí. Además de cuentas, también se puede monitorear hashtags específicos, y esto es lo que particularmente nos interesa.

Tint cuenta con una buena cantidad de clientes de renombre, entre los que podemos mencionar a bandas como Kiss y The Lumineers, equipos como los Dallas Cowboys, y marcas como Sony y Bacardi. Claramente, para poder usar Tint tendremos que dedicar parte del presupuesto del evento para poder hacer esto, dado que no es una herramienta gratuita. Pero sí es una de las herramientas más poderosas, dado que además de proyectar un hashtag en un evento nos permite aprovechar otros canales como Facebook y YouTube.

 

TweetBeam

TweetBeam es una herramienta específicas para poder proyectar un hashtag permitiendo  crear un tweet wall rápidamente y con la sola asistencia de un proyector o TV. TweetBeam es, en principio, una herramienta gratuita siempre y cuando esté destinada a proyectos no comerciales. Sin embargo, si nos interesa usarlo para negocios, podemos contactarnos con su equipo para recibir un presupuesto de uso.

Conectándonos con nuestra cuenta de Twitter, podemos acceder a un tablero especial donde podemos ir creando “shows” en base a eventos y ocasiones especiales, también hashtags. La actualización es automática, pero gracias a este tablero podremos trabajar en algunas cuestiones básicas de edición. También puede ser interesante para conferencias y presentaciones. Entre algunos de sus clientes, se cuentan Disney y Cisco.

TweetBeam

Twijector

Twijector,  cuenta con herramientas de moderación que permiten, entre otras cosas, crear un filtro de groserías, o de palabras que no queremos que sean destacadas, así como también bloquear a los spammers. Fundamentalmente, tiene una herramienta de pre-moderación para que solamente los tweets seleccionados por nosotros aparezcan proyectados.

Twijector tiene otras funcionalidades atractivas,como por ejemplo nos permite guardar todos los tweets que se han recibido sobre un determinado evento en un archivo especial para poder accederlo en el futuro ,asi como  tambien  nos permite generar una “audiencia” con todas las personas que interactuar con el hashtag del evento( para obtener algo así como una base de datos personal de los usuarios de Twitter a los que les interesa nuestra marca o evento).

Fuente  aqui

Rasberry como terminal ligero


Tener un PC en casa para navegar solo a Internet o usar aplicaciones en red no es tan difícil como antes ya que podemos disponer por menos de 40€ de un dispositivo personalizable incluso en diseño por muy poco dinero que se conectará a nuestra TV o televisor y en el cual podremos instalar un sistema operativo adaptado al uso que vayamos a hacer del mismo.

No se trata de un ordenador por supuesto muy potente pero aún así podremos instalar Linux (varias distribuciones disponibles) e incluso utilizar en el la aplicación Teamviewer para acceder a una maquina virtual con sistema operativo Windows u otro de forma remota sin tener que comprar un PC adicional.

Pero además, gracias a Inasset podremos incluso alojar pagando solo 10€ de alta, el dispositivo en el centro de datos, con una IP incluida en el precio e instalar dentro del miniPC una pequeña web (el modelo de 8GB cuesta 40€ y puede ser suficiente para una pequeña web) y todo ello sin pagar luego una cuota mensual. ¡Genial! (dispone de 1MB de linea pero que puede ampliarse a los MB que necesitemos a 1€/MB al mes adicional).

Existen para él adaptadores para incluirlos en el propio monitor o tv e incluso carcasas personalizables al gusto de cada cual incluso a medida desde 15€ para negocios siempre y cuando se pidan al menos 20 unidades. (como siempre el precio se reduce cuantas más compras…)

Fuente  aqui

Un sencillo cebador electrónico muy económico


Las luminarias fluorescente, también denominada tubos fluorescentes, aunque su efecto se basa exactamente en la fosforescencia, son  luminarias que cuentan  con una lámpara de vapor de mercurio a baja presión y son  utilizadas normalmente para la iluminación doméstica e industrial

Su gran ventaja frente a otro tipo de lámparas, como las incandescentes, es su eficiencia energética y muy bajo coste  ,aunque esto esta siendo revatido gracias a las luminarias basadas en   leds SMD de alta potencia muy superiores en cuanto a prestaciones    pues  no son contaminantes ( no contienen mercurio ni irradian RF) , tienen una  mayor vida y eficiencia, ofrecen una luz muy similar a la luz solar pero a cambio su coste aun es demasiado elevado si lo comporamos con los viejos  tubos fluorescentes   .

Este tipo de s luminarias estan formadas  por un tubo o bulbo fino de vidrio revestido interiormente con diversas sustancias químicas compuestas llamadas fósforos, aunque generalmente no contienen el elemento químico fósforo y no deben confundirse con él. Esos compuestos químicos emiten luz visible al recibir una radiación ultravioleta. El tubo contiene además una pequeña cantidad de vapor de mercurio y un gas inerte, habitualmente argón o neón, a una presión más baja que la presión atmosférica. En cada extremo del tubo se encuentra un filamento hecho de tungsteno, que al calentarse al rojo contribuye a la ionización de los gases.

Por tanto los tubos fluorescentes son lámparas   con un electrodo situado a cada lado, cuyo interior contiene vapor de mercurio junto con cierta cantidad de polvo fluorescente de fósforo produciendose  la luz se  mediante la activación de la fluorescencia de dicho polvo por la radiación ultravioleta de una descarga eléctrica provocada entre los electrodos y mantenida en el vapor de mercurio encerrado en el tubo.

Antes de provocar la descarga, los electrodos son precalentados por medio del famoso cebador que, al abrirse, genera un pico de alta tensión suficiente como para provocar el encendido de la lámpara.

En resumen estas son las carastericticas de los tubos fluorescentes:

  • LUMINOSIDAD: Las lámparas fluorescentes tienen un rendimiento luminoso que puede estimarse entre 50 y 90 lúmenes por vatio (lm/W), de hecho  una cuestión curiosa es que la luminosidad de la lámpara depende no solamente del revestimiento luminescente, sino de la superficie emisora, de modo que al variar la potencia varía el tamaño, por ejemplo, la de 18 W mide unos 60 cm, la de 36 W, 1,20 m y la de 58 W 1,50 m.
  • VIDA ÚTIL: vida útil es también mucho mayor que la de las lámparas de incandescencia, pudiendo variar con facilidad entre 5000 h y más de 75000 h (entre 5 y 75 veces más), lo que depende de diversos factores, tales como el tipo de lámpara fluorescente o el equipo complementario que se utilice con ella.
  • COLOR: Hay en el mercado distintos modelos con diferentes temperaturas de color comprendida generalmente entre los 3000 K y los 6500 K (del Blanco Cálido a Luz Día Frío). Sin embargo, en la actualidad se pueden conseguir tubos con una amplia gama de temperatura de color, lo que permite encontrar con relativa facilidad modelos que van desde los 2700 K hasta los 10000 K, siendo el mas recomendado el color blanco (4000K).

Aunque la eficiencia  y su  bajisimo  coste han justificado  su existencia , los tubos   adolecen de los siguintes   problemas:

  • Las lámparas fluorescentes no dan una luz continua, sino que muestran un parpadeo que depende de la frecuencia de la corriente alterna aplicada
  • El parpadeo puede causar el efecto estroboscópico, de forma que un objeto que gire a cierta velocidad podría verse estático bajo una luz fluorescente. Por tanto, en algunos lugares (como talleres con maquinaria) podría no ser recomendable esta luz.
  • El parpadeo, aunque poco perceptible, puede afectar notablemente la salud de algunas personas con algunos tipos migrañas, epilepsia y, en algunos casos, su efecto es tan devastador para la salud que hay quienes quedan excluidos completamente de algunos ámbitos públicos (bibliotecas, trabajo, deportes,…) en los que suelen utilizarse este tipo de iluminación.
  • El parpadeo también causa problemas con las cámaras de vídeo, ya que la frecuencia a la que lee la imagen del sensor puede coincidir con las fluctuaciones (oscilaciones) en intensidad de la lámpara fluorescente.
  • Las lámparas fluorescentes ven reducida su vida útil si son encendidas y apagadas de manera continuada, visto que su acción de encender les cuesta mucho más trabajo que mantenerse encendidas.
  • Las lámparas fluorescentes con balasto antiguo no pueden conectarse a un atenuador normal o dimmer (un regulador para controlar el brillo). Hay lámparas especiales (de 4 contactos) y controladores especiales que permiten usar un interruptor con regulador de intensidad.

Desde mediados de la década de los 80, hay una solución para evitar la mayoria de los  inconvenientes mencionados , que es el balasto electrónico, que ha cobrado gran importancia a partir de mediados de los 90 hasta la actualidad  sobre todo desde la aparicion de las  lámparas fluorescentes compactas(LFC).

En este sistema se hace funcionar al tubo de la misma manera que en la forma tradicional pero esta vez en una frecuencia de más de 20 kHz con lo que se evita completamente el efecto estroboscópico, logra que el parpadeo sea invisible para el ojo humano (y a su vez que las cámaras de vídeo difícilmente logren captarlo), y que desaparezcan ruidos por trabajar por encima del espectro audible. En definitiva se obtiene una mejora del 10% en el rendimiento de la lámpara, un menor consumo, menor calor disipado, silencio absoluto de la reactancia y mayor vida útil a los tubos .

Los balastos electrónicos utiliza un circuito  elecronico  para proporcionar a las lámparas y a los tubos fluorescentes  un arranque más rápido, sin parpadeo, y sirven para alimentar varias lamparas.

En general, los balastos electrónicos aumentan la frecuencia de trabajo a 20 kHz o más con lo que se consigue hacer inapreciable el parpadeo que se produce cuando se trabaja a 100 o 120 Hz (dos veces la frecuencia de la alimentación). Además, el rendimiento de las lamparas fluorescentes aumenta un 9% cuando se llega a 10 kHz y continua aumentando poco a poco hasta los 20 kHz. este aumento de la frecuencia permite pues aumentar el rendimiento energético de conjunto lámpara-balasto.

El balasto electrónico remplaza el conjunto del balasto convencional, el cebador y el condensador. La carcasa que contiene los componentes tiene forma oblonga para encajar en el lugar de los viejos balastros en las luminarias.

Otras ventajas:

  • Silencioso y con un rendimiento energético superior al 98% lo que es mucho, comparado con el los balastos corrientes, y se debe principalmente a que casi no se calientan (no disipan energía en forma de calor).
  • El rendimiento luminoso aumenta con la frecuencia de algunos centenares de kHz, con 32 W se obtiene el mismo flujo luminoso que con 36 W con balasto normal, considerando el consumo exclusivamente del tubo.
  • Un solo balasto puede encender uno a o más tubos.

Algunos balastos electrónicos no utilizan electrodos de calentamiento, lo que puede limitar la duración de las lámparas en caso de ciclos de encendido-apagado repetitivos.

Dada la gran popularidad que han tenido los LFC, simpre  que  la potencia del tubo   fluorescente sea  similar o menor   a la de una lampara  LFC ,   debido  a   su bajisimo  coste  podemos    extraer el balast electronico de un  LFC  en desuso  o estropeada ( normalmente el tubo se agota antes qeu la electronica se estopee )  para usuarlo en una lampara fluorescente.

Debemos  tener cuidado  extremo  con la extraccion del  balasto   por la gran toxicidad del mercurio contenido  en el interior del tubo  intentando en ningun caso romper el tubo para hacer mas facil al extraccion .Normalmente haciendo palanca  sobre la parte central de la parte superior del casquillo   permite  que se pueda abrir   el compartimiento de pástico   ne dos partes    que  incluye en su interior el balast

Antes de extraer el  balast de la LFC   debemos  fijarnos y  marcar  muy bien en las 6 conexiones de este :

  • 2 conexiones que iran   directamente a la red de CA
  • 2 conexiones  que iran a un extremo el tubo fluorescente
  • 2 conexiones que iran a otro extremo del tubo fluorescente

Una vez extraido el balast     deberemos re-acondicionar  la instalación  eléctrica  del tubo fluorescente para incluir el  nuevo balast que susititura por completo   tanto al balast inductivo o  reactancia   como el  clásico  cebador

Si observamos el montaje clásico , deberemos eliminar la reactancia  y el cabador y montar en su lugar el balast electrónico extraído del LFC

Eliminada la reactancia y el cebador   del tubo fluorescente , debemos ahora de conectar el nuevo  balast por un lado a la red ca  y  por otro lado los   4 hilos a los respectivos filamentos del tubo  no olvidando de aislar el balast con cinta adhesiva u otro material aislante

nuevo esquema

Y por último una imagen  que muestra  el tubo fluorescente con un balast reciclado de un luminaria compacta .

 

IMG_20140123_192658

Cómo esconder los cables de la mesa de tu TV


1-Utiliza la regleta adecuada

Una regleta adecuada para todo lo que queremos enchufar es imprescindible si queremos tener nuestro cableado bien organizado,pero además de cuestiones de seguridad, es importante escoger una regleta con suficientes enchufes para conectar todos los aparatos previstos, teniendo en cuenta que esa cantidad puede aumentar en el futuro, que podemos necesitar enchufar alguna cosa en algún momento y que es posible que algunos transformadores pueden inutilizar las tomas contiguas.

Para solucionar este último punto, existen regletas en el mercado con los enchufes bien separados entre sí, así como pequeños alargadores que permiten alejar el odioso transformador uno centímetros, y así poder usar todas las tomas.

2. No cruces los cables

Es importante decidir bien dónde enchufamos cada aparato en la regleta, para que no se nos cruce ningún cable después, que es el principal motivo por el que empiezan a enredarse,así, si unos aparatos están a la izquierda de la regleta y otros a la derecha, enchufaremos cada uno a la parte de la regleta más próxima a ellos. De esta manera será mucho más fácil sacar un cable cuando lo necesitemos y será más complicado que se forme una maraña.

3. Agrupa los cables

Si agrupamos varios cables para que vayan juntos durante parte del recorrido, reduciremos mucho las posibilidades de que se enreden. Para unirlos, podemos hacerlo de muchas maneras: hay quien utiliza bridas de plástico, velcro o alambres plastificados —como los que cierran el pan de molde— aunque también hay productos específicos, como tubos de plástico en espiral, que es probablemente la mejor manera.

A la hora de unir cables, hay que tener en cuenta que no conviene juntar cableado eléctrico con cables que transmitan señales, como un cable de red o uno HDMI, ya que se pueden crear interferencias que reduzcan la calidad de la imagen o la velocidad de conexión.

4. Identifica cada cable con etiquetas

Identificar cada cable con etiquetas  se puede conseguir de muchas maneras. De forma barata, podemos pegar trozos de papel con celo identificando cada cable —incluso con colores diferentes— o atar etiquetas con un cordel. Si somos de los que nos gusta tener todo de diseño, podemos optar por cosas como estos divertidos muñecos que cuelgan de los cables.

5. Evita los cables demasiado largos, o enrollalos

Aunque enrollar un cable de electricidad en uso no es lo mejor, a veces no queda otro remedio si el cable empleado es demasiado largo, algo que debemos evitar a toda costa, ya que los cables serpenteantes, además de antiestéticos, son un foco creador de embrollos, de modo que cuando sea posible, escojamos el cable de la distancia justa y si nos sobra cable, enrollemos el sobrante de forma ordenada. Y si podemos guardar el sobrante en una caja como en la imagen, mejor que mejor.

6-Utiliza   una rejilla  para las conexiones

Truco orden cables - 1

Nunca está de más conocer todas las posibilidades a la hora de tratar de evitar las horribles marañas en las que se convierten los cables al menor descuido.

En esta ocasión nos encontramos ante un caso típico de cableado desordenado. A pesar de que se trata de un mueble con una amplia apertura que facilita las conexiones, se puede intuir un desorden  y antiestético cableado.

Truco orden cables - 2

La solución propuesta es que los cables, en vez de salir de la parte posterior del mueble, entren y salgan por diferentes aberturas que hechas con la pertinente corona para madera, de forma similar a como ocurre en algunas mesas de escritorio para los cables del ordenador.

Se han tenido en cuenta todos los detalles, como los huecos para el cable de una lámpara auxiliar o una pequeña apertura para poder acceder al interruptor de la regleta y apagar todos los aparatos de una sola vez. Además, el panel trasero se puede retirar para acceder en caso tener que desconectar algún aparato.

Truco orden cables - 3

Desde luego, es una muy buena idea para poner orden en los cables de la mesa del televisor, aunque tal como confiesa su autor, en el interior aún hay un desorden similar, solo que está oculto, así que mi propuesta es que utilice una rejilla como esta para fijar cada cable por un recorrido y evitarse enredos desagradables.

Generar, almacenar y procesar energía a través del hidrógeno sin la necesidad de estar conectado a la red eléctrica


La empresa española   Tina Systems creada recientemente orientada al sector energético    lleva más de tres décadas investigando, junto a un equipo de científicos y electroquímicos del Instituto Kurchatov de Física Nuclear de Moscú, un método  que en una primera aproximación  sitúe el hidrógeno en  estructuras como escuelas,centros médicos ,etc  en lugares de acceso remoto, que se encuentren lejos de la red eléctrica obteniendo la energía de cualquiera de las renovables conocidas y  después, el excedente se conserve en forma de hidrógeno comprimido en unos módulos de 15 metros cuadrados diseñados por la compañía de modo que  cuando no hay sol o falta viento, las reservas se transformrían en electricidad.

El gran problema de las energías renovables es que no están disponibles pues si es de noche,no  hay viento,hay nubes ,etc.  no se recibirá energía suficiente   por lo que la solución podría ser  almacenarla, aunque como las baterías normales no devuelven toda( sobre  un 80% de media) y requieren de un mantenimiento ,lo ideal seria  almacenar esta  en hidrógeno pues eso supone  que se recuperaría el 100%,así  que la gestión energética no  solo serias más eficiente, sino que también es más económica.

Todo esto es posible  gracias al nuevo  generador de hidrógeno que han protegido con diversas patentes  y cuyos creadores lo definen como «un electrolizador único en el mundo» que, a través de métodos de generación de energía renovables y agua, es capaz de producir Hidrógeno a alta presión por electrolisis ,pero para comprimirlo tiene el handicap de ser poco ecológico y caro, tanto en términos energéticos como económico,s por lo que   prescinden del compresor mecánico   usando  hidrógeno a 300 bares gracias a un electrolizador tipo PEM(con esta presión un vehículo tiene una autonomía de 80 ó 98 kilómetros).

Tina Systems dispone de un proyecto piloto funcional en la localidad de Muñoveros, en Segovia, que incluye un Toyota Prius modificado para funcionar con hidrógeno a presión. Han contratado los servicios de los bancos de negocios GBS Finanzas y SGI Cambium para elaborar un plan de negocios que iniciará la producción y comercialización de los módulos energéticos en el segundo semestre de 2014.

El objetivo es autoabastecer a escuelas, centros médicos y pequeños talleres industriales de áreas desfavorecidas, principalmente en África y América Latina, regiones que engloban a la mayor parte de los 1.800 millones de personas en todo el mundo que no tienen acceso a la energía eléctrica. Consideran que, cuando el precio del barril de petróleo rompa la barrera de los 200 dólares, se producirá tal escasez que la oferta será incapaz de abastecer la demanda, momento en el que se setarán las bases de la conocida como economía del hidrógeno.

Con esta solucion , no es de extrañar que las previsiones de facturación de Tina Systems para los próximos siete años superen los 800 millones de euros «en un escenario conservador».

La instalacion   se vende por 95.000 euros, una cantidad que representa entre la cuarta y la sexta parte del precio de otras instalaciones similares siendo un solo módulo s capaz de generar hasta 18 Kwh/día y tiene una vida útil estimada en 25 años.

Pero «no es oro todo lo que reluce» y no debemos olvidar que en muchas partes de planeta también escasean los recursos hidricos  que  junto con la luz del sol o el viento este sistema requiere.

Al igual que muchos auguran un futuro prometedor a la llamada economía del hidrógeno también algunos pronostican la llamada economía del agua en el foco de generaciones venideras pues es obvio de que una vez se solucione el problema de la energía acceder a los recursos hídricos  va   a seguir siendo  el gran problema  de nuestra especie en generaciones venideras.

Fuente aqui

Como descargar videos en tu terminal Android


Muchas veces nos encontramos con mala  conexión de deats o sin cobertura 3G  lo cual nos impide reproducir nuestros videos favoritos de forma fluida ,razón por la cual se ha desarrollado una serie de apps que permiten la descarga de estos contenidos para que estos puedan ser visionados offline.

A continuación se describen algunas herramientas para tal finalidad:

Tube Video Downloader

Tube Video Downloader, permite descargar vídeos de varias fuentes y guardarlos en distintos formatos, como FLV, MP4 o MKV, entre otros. Entre otras cosas, admite descargas simultáneas, detecta los enlaces automáticamente e integra su propio reproductor de vídeo.. Puede descargar y guardar videos en diferentes formatos como FLV , MP4 , 3GP , MOV , WMV , MKV, et y detecta automáticamente los enlaces desde el navegador Web , por lo que no es necesario copiarlos y pegarlos en la aplicación

Esta aplicación lamentablemente  no permite descargar videos de YouTube a causa de las condiciones de servicio.

Características

  • Descarga de vídeos en partes paralelas para aumentar y
  • Acelerr la velocidad de descarga
  • Resume en pausa o descargas interrumpidas si es apoyada por el sitio web .
  •  Permite pausa , eliminar, cancelar y reanudar descargas
  •  Soporte para vídeos de archivos grandes (más de 2 GB)
  •  Soporte diferentes formatos : MP4 , 3GP , FLV , MOV , WMV , MKV, etc
  • Se ejecuta en segundo plano
  •  Varios videos se pueden descargar de forma simultánea o en la cola
  •  Detecta automáticamente los enlaces de tu navegador Web
  •  Vídeos abiertos con su reproductor de medios favorito
  •  Soporte muchos idiomas : inglés , francés , español , etc

Video Download

Video Download, sirve para reproducir  vídeos por streaming de portales tan populares como Vimeo, Bing, Dailymotion, Veoh o Metacafe, facilitando  la descarga de vídeos desde estos sitios y otros que contengan material multimedia. Entre sus ventajas, descarga los vídeos directamente en la tarjeta SD,  con la velocidad ultra rápida , de sus tiendas de video familiares ( vimeo , youtube , dailymotion , video bing, Veoh ) .

Además, la aplicación puede acelerar la transferencia directa con algún sitio que permite descargar videos directamente , como tube8 o algunos sitios como él.
La  aplicacion puede detectar enlaces de vídeo en una página web, de modo que usted puede copiar enlace de vídeo para ver la secuencia en un reproductor de vídeo como Mxplayer , reproductor Mobo o VPlayer …
Sitios de soporte :

  • Vimeo ( vimeo.com ) : user hecho y compartir vídeos
  • Metacafe ( metacafe.com ) : Trailer, películas divertidas y contiene contenido para adultos
  • Dailymotion ( dailymotion.com ) : deporte, remolque …
  • Veoh ( veoh.com ) : programas de televisión , anime …
  • vídeo Bing ( bing.com / video) : películas, música …
  • smotri ( smotri.com ) : Russian tienda de vídeos , contiene contenido para adultos
  • apertura ( break.com ): videos divertidos
  • blip ( blip.com ) : serie de videos
  • videos para adultos : tube8, redtube, xvideos ( tube8.com , redtube.com , xvideos.com )
  • zing , nhaccuatui ( mp3.zing.vn , nhaccuatui.com ): videos
  • Viz

En el caso de Viz, cuentas con un buscador integrado para realizar las búsquedas de vídeos en varias fuentes, como Vimeo, Dailymotion, Funny or die, Veoh y muchas más. Una vez encontrado el vídeo que te interesa, puedes reproducirlo directamente desde Viz o descargarlo cómodamente. Como en los casos anteriores, Viz soporta descargas simultáneas.

MultiClip

Con MultiClip se puede buscar en Internet vídeos y también imágenes y archivos PDF. Su interfaz í es muy funcional, permitiéndote bajar vídeos en distintos formatos. Además, podrás ver las imágenes y reproducir los vídeos desde la propia aplicación  y por supuesto permite guardar fácilmente todo tipo de archivos desde la red.

Es un simple sistema de descarga tipo navegador que le permite guardar archivos de videos, imágenes, música y más desde la red y por supuesto, puede visualizar toda la información grabada sin conexión o en modo avión.

Características principales:

  • Reproduce y guarda PDF, vídeo, imagen y otros archivos multimedia
  • Guarda el historial descargado
  • Descarga la notificación completa
  • Reproduce vídeos en la aplicación: Función de reproducción
  • Permite reproducir vídeos online
  • Navegador en la aplicación
  • Puedes elegir vídeos usando una búsqueda en la web
  • Puedes buscar lo que necesites en el navegador
  • Características de los marcadores del sitio
  • Reproducción destacada en stream para los sitios donde se comparten vídeos (como YouTube, Dailymotion, Veoh)
  • Soporta descargas de varios sitios donde se comparten vídeos
  • Descarga vídeos de sitios donde se comparten vídeos como Dailymotion, Nico Nico, FC2 vídeos, SayMove!, Pandora TB, Daum Garaku (56.com), Tudou, Youku, Veoh, Metacafe, Vimeo.
  • Reproduce medios descargados o guardados todas las veces que quieras
  • Graba o descarga archivos de música como mp3 o wma como caché y reprodúcelos sin necesitar conexión
  •  Compatible con transmisiones por streaming. Ve vídeos grabados en cualquier momento
  •  Compatible con mp4 y mp3
  •  Puedes reproducir vídeos grabados en diferentes reproductores de vídeo o música
  •  Descarga o graba tus vídeos, imágenes o archivos PDF favoritos・SO soportado:Android versiones 2.X ~ 4
  • Soporta 16 idiomas:Japonés, inglés, chino (simplificado y tradicional), koreano, español, portugués, indonesio, el idioma de Tailandia (tagalog), árabe, alemán, francés, italiano, turco, vietnamita y ruso.

Notas sobre el uso

– Ten presente que, de acuerdo con los términos y condiciones de YouTube, está prohibido guardar contenidos de YouTube.
・Lee cuidadosamente y respeta los términos y condiciones de los sitios que uses.

Free Video Downloader

Free Video Downloader es un práctico gestor de descargas de vídeos compatible con la mayoría de portales y páginas de vídeos, a excepción claro está de YouTube, y que permite añadir varios enlaces y descargarlos cómodamente. Como en casos anteriores, Free Video Downloader integra reproductor.No es compatible con descargas de youtube debidos a sus terminos de servicio. Se ha descargado mas de 15 millones y traducida a 14 idiomas

FVD es una herramienta que te permite descargar archivos de una multitud de sitios web directamente en tu dispositivo para que puedas verlos cuando quieras ahorrándote así el uso de internet.

Es muy fácil de usar:
Una vez que lo hayas instalado, solo tienes que ir al sitio web deseado con tu navegador web favorito o con el navegador integrado en la aplicación, y reproducir el archivo. El icono de FVD aparecerá y podrás descargar el archivo.

Ten en cuenta que descargar y reproducir archivos protegidos por copyright está prohibido y regulado por las leyes del país en el que te encuentres.
CARACTERÍSTICAS:

  •  Gratis
  •  Sencillo e inmediato
  •  Navegador web integrado para un uso más rápido (en pruebas)
  •  Posibilidad de descargar varios archivos a la vez
  •  Posibilidad de ocultar el icono y restablecerlo más tarde

Video Downloader For Android

Otra práctica aplicación para descargar vídeos con Android compatible con varios formatos, como MP4, AVI, SWF, FLV e incluso MP3 para guardar solamente el audio del vídeo. Video Downloader For Android admite descargas simultáneas y ofrece también la opción de reproducir el vídeo a partir de su URL sin necesidad de descargarlo directamente.

Puede reproducir y descargar archivos de vídeo como MKV, AVI, MP4, FLV, SWF .. en el dispositivo de URL Web

Esto Apps es fácil, rápida hasta 5x veces según lo informado por el hilo!
Los archivos multimedia tales como mp4, mkv, avi, swf, flv, mp3, ogg, etc, pueden resproducirse  y descargar en su dispositivo.
En el dispositivo, se puede navegar yver vídeo, audio, archivos multimedia de imagen flash.
Si desea reproducir archivos SWF, necesita tener instalado Adobe ® Flash ® Player Plugin (incorporado en el reproductor de SWF).

Android Download Manager

Por otro lado tenemos Android Download Manager, un gestor de descargas que admite toda clase de archivos y que incluye en su lista vídeos. Android Download Manager es el mejor administrador de descargas para telefonos móviles Android. Puedes descargar rápidamente todo tipo de archivos de Internet. Puede pausar, reanudar, reiniciar y cancelar cualquier descarga. Detecta automáticamente los enlaces desde el navegador Web por lo que no hay necesidad de copiarlos y pegarlos.

No permite descargas de youtube como otras apps ya comentadas por la politica de uso –

Características

  •  Descarga archivos en partes paralelas para aumentar y acelerar la velocidad de descarga
  •  Puede reanudar descargas pausadas o rotas
  •  Permite pausar, cancelar y reiniciar cualquier descarga,
  •  Soporte para descargas de archivos de gran tamaño (más de 4 GB)
  •  Descarga todo tipo de archivos: música, videos, fotografías, software, documentos (Word, Excel, PowerPoint, PDF), etc.
  •  Se ejecuta en segundo plano
  •  Varios archivos pueden ser descargados de manera simultánea o en cola
  •  Detecta automáticamente los enlaces de descarga o pueden ser agregados manualmente.
  •  Abre archivos con tus aplicaciones favoritas
  •  Soporta diferentes idiomas: Español, Inglés, Francés, etc.

Existe  versión  gratuita con publicidad y tambien la de pago  Android Download Manager PRO sin anuncios.

EasyTube

Por ultimo destacamos , EasyTube, no disponible en Google Play, que permitirá encontrar, reproducir y descargar vídeos específicamente de YouTube. Entre otras características, ofrece la descarga del vídeo o únicamente del audio en el formato original. Para instalar esta app necesitarás habilitar la opción «Orígenes desconocidos» que encontrarás en «Ajustes > Seguridad». Una vez instalada, desactiva la opción para evitar que se instalen aplicaciones maliciosas.

Fuente aqui

Como reparar un mando a distancia de DVD, TDT,TV, VHS


La mayoría de mandos a distancia para aparatos domésticos utilizan diodos de emisión cercana a infrarrojo para emitir un rayo de luz  invisible que alcance el dispositivo y que obviamente es invisible para el ojo humano, pero transporta señales que pueden ser detectadas por el aparato  gracias a una electrónica especializada.

Un mando a distancia de un sólo canal permite enviar una señal portadora, usada para accionar una determinada función. Para controles remoto multicanales, se necesitan procedimientos más sofisticados; uno de ellos consiste en modular la señal portadora con señales de diferente frecuencia,para después de la demodulación de la señal recibida, aplicando  los filtros de frecuencia apropiados poder  separar las señales respectivas,aunque  no obstante ,hoy en día, se suelen usar métodos digitales  de modo que  todas las etapas  descritas suelen ir  incluidas en  un solo circuito integrado especializado.

La mayoría de mandos a distancia no tienen led para saber si las pilas están funcionando  así que aquí  para aquellas veces que dudamos si el mando a distancia infrarrojo tiene pilas cargadas o es es que se nos ha estropeado hay un  procedimiento muy sencillo que  seguro de la mayoría de vosotros ya lo conocéis :  básicamente se trata de apuntar el mando a distancia hacia una cámara  sea cual sea el tipo (de video, de fotos, de móvil etc…) y ver si el led emisor infrarrojo se ilumina  pues aunque nuestros ojos no capten la radicación  pues nuestros ojos no  procesan el espectro infrarrojo,  el sensor de la cámara sí lo hará pudiendo descartar que las pilas estén agotadas o el mando no funcione.

Por ejemplo ,aquí veis una fotografía tomada de un mando en el que se esta pulsando cualquier tecla y se puede apreciar como el led infrarojo esta emitiendo la señal.

 

 

IMG_20131003_221534

Un problema común en la mayoría  de mandos a distancia, es que por el desgaste y el uso, determinados botones ( por ejemplo  los botones de volumen ,los de  cambio  de canal o el de encendido/apagado ) empiezan e incluso  dejan de funcionar, por lo que cada vez debemos apretarlos con mayor fuerza hasta que terminan sin responder.
Esta circunstancia   suele ser  debido a la suciedad y el desgaste  asi como  a la grasa que se va acumulando  en las pistas del teclado.  Otra circunstancia  bien distinta de la anterior  es el daño generado en  el porta pilas del mando  debido a la descomposición química de las  pilas agotadas  . Dependiendo del modelo de mando, la reparación puede ser relativamente sencilla, por lo que vale la pena intentarlo.
El Teclado de Goma sobre placa de baquelita  es el modelo mas extendido y el de mas fácil de reparación por lo general, se basa en una placa de baquelita o fibra, con una serigrafía de pistas de carbón o cobre y contactos de carbón, sobre ellos está colocada una lámina de goma, con los botones en relieve y bajo los mismos, hayamos círculos de goma negra   con tinta electronica ( y por tanto conductora ), que al pulsar un botón sobre el contacto de carbón serigrafiado cierra el contacto, con lo que el mando emite una ráfaga de impulsos.
Un método casero de reparación de este tipo de teclados, descartando que sean las pilas o  el portapilas ( si se ha estropeado con óxido por pilas en mal estado bastara limar muy bien los contactos  de este ) es literalmente lavarlos en agua y jabón, por lo que debemos proceder de la siguiente manera:
Con unos destornilladores miniatura y la ayuda de un cutter ( incluso simplemente simplemente con los dedos) , vamos desenganchando las pestañas de la carcasa y retirando los posibles tornillos si los hubiera.
Una vez retirada la carcasa, podemos sacar la placa de baquelita, para su limpieza, debemos limpiarla con alcohol y bastoncillos de los oídos o pañuelos de papel.
El teclado de goma, podemos limpiarlo con alcohol, aunque lo mas aconsejable es sumergirlo en agua con jabón, junto con las carcasas y frotar suavemente. Frotamos con un pincel con cuidado para conseguir una limpieza perfecta, aclaramos con agua y secamos con un trapo y un secador de pelo, para no dejar restos de agua.
Por último retocamos con alcohol algún contacto de goma si fuera necesario y podemos volver a montar todo el conjunto.

 

 


Comprobación de funcionamiento
Para comprobar el funcionamiento del mando, tenemos tres métodos básicos:

  • Probarlo directamente sobre el aparato del que procede el mando
  • Si dudamos de nuestra reparación   podemos  probarlo simplemente con cualquier cámara de fotos como citábamos al inicio de este post ( incluso sirve la  cámara de fotos de un teléfono móvil)  , dirigiendo el mando hacia ella y veremos el  punto de luz   generado al pulsar cualquier tecla de mando  .Esto  es posible debido  a que  la mayoria de los mandos  emiten pulos de  luz  infrarroja que, como sabemos, el ojo humano no puede  pero si cualquier sensor cmos(como el de cualquier cámara digital).
  • Utilizar una radio de AM, sintonizada en la banda mas baja, 580 Khz, pulsamos el mando y oiremos por la radio el tren de pulsos emitidos por el mando.
Si el mando a distancia sigue fallando, puede deberse a que los contactos del teclado de goma se han desgastado por el roce del uso. No os preocupéis, aun es posible reparar el mando. Limpiad el mando como se dijo anteriormente y seguid el siguiente proceso:
 Necesitaremos papel de aluminio, tijeras y pegamento rápido.
Comenzaremos por recortar cuadraditos del tamaño de los contactos, procurad que no sean demasiado grandes ya que podría crearse un contacto permanente.
Luego procederemos a ir pegando esos recortes de aluminio en los contactos de la goma. No echéis demasiado pegamento, solo con una pequeña capa sirve. No es necesario realizar este proceso con todos los botones del teclado, solo con los que fallan, pero si se los ponéis a todos mucho mejor, si lo hacéis bien, nunca habrá problemas de contacto.
Por último, aseguraos de que no sobresale ningún recorte de aluminio por encima de la zona de asiento del teclado de goma.

Para volver a ver si funciona, el método de  la cámara  digital   es el más rápido . Si  revisado el teclado y asegurándonos que llega la alimentación de 3V a la placa ( podemos comprobarlo con un polímetro en voltios DC)  , puede ser que alguno de los componentes  se haya estropeado.Descartando el controlador que no suele ser fácil reemplazar nos quedan los condensadores  y el cristal de cuarzo , todos ellos componentes muy económicos  que podrían ser susceptibles de avería.

 

En el siguiente  video  nos muestran   el reemplazo del pequeño  condensador electrolítico que la mayoría de los mandos poseen , el cual puede ser el primer componente a reemplazar si todo lo demás  no ha funcionado

 

Por último el led infrarojo  dado que normalmente esta muy expuesto ,también puede ser un problema.En el siguiente

vídeo podemos ver como se puede cambiar  muy fácilmente y quizás

 

 

 

Speech to Speech


Decir ‘Hello World!’ en varios idiomas  ya es posible en el entorno Microsoft  con la nueva función de voz a voz para la aplicación Traductor Bing para Windows .La actualización de la liberación reciente de la aplicación Traductor para Windows ahora ofrece la misma funcionalidad de voz a voz (Speech to Speech)  con la  aplicación Traductor Bing para Windows Phone 8 . Ahora usted puede aprovechar el poder de traduciones de a voz a voz  desde cualquier dispositivo  Windows. Solamente hay que decir en su dispositivo utilizando la función de micrófono para hacer pedidos o pedir direcciones y oír las palabras traducidas en el acento de un hablante nativo.

Speech Input 1

Además de la entrada de voz, esta nueva versión de la aplicación Traductor ahora ofrece a los usuarios la opción de usar la función de cámara tanto en modo vertical y horizontal. Simplemente apunte su cámara, escanee y aparecera  la  traducción en  el lenguaje impreso en su tableta o PC para crear subtítulos para la vida cotidiana.

Offline UI 2

La aplicación Traductor Bing para Windows Phone 8 ,  incluye mejoras en la funcionalidad de voz para mejorar la calidad y capacidad de respuesta de las traducciones, además de una interfaz de usuario rediseñada para los paquetes de idioma sin conexión existentes y recientemente lanzados. Al descargar los paquetes de idioma sin conexión, puede mantener la traducción sobre la marcha cuando no están conectados a Internet y evitar que los datos costosos cargos por roaming.

Ahora puedes descargar la aplicación gratuita para Windows de la tienda de Windows aquí y para el Windows Phone de la tienda de Windows Phone aquí . Los usuarios existentes que ya han descargado la aplicación, podrán acceder a las nuevas versiones sin necesidad de descargar de nuevo.

Ya sea en su teléfono de Windows o cualquier dispositivo con Windows, la aplicación Translator es el compañero de viaje perfecto para ayudar a superar las barreras del idioma, incluso cuando no hay conexión a Internet. Para obtener más información sobre las aplicaciones de Traductor de Bing, visite el Traductor para Windows y el Traductor para Windows Phone páginas de productos.

Esperamos que estas aplicaciones se convierten en tu ventana al mundo, no importa dónde se encuentre.

 

Fuente aqui

Cultivos aeroponicos gracias a Raspberry Pi


En este post, vamos a aprender cómo hacer un sistema aeropónico  controlado a través de la Raspberry Pi,  utilizando el módulo de la cámara Raspberry Pi para tomar fotos de sus plantas.
La aeroponía hace uso de la niebla en un ambiente cerrado para proporcionar las  plantas  los elementos necesarios para sobrevivir. Por lo general, las raíces de una planta se suspenden en un recipiente de niebla, mientras que el resto de la planta se encuentra por encima de la configuración. A modo de configuración cubierta, aeroponía es compatible con casi cualquier cosa que desee plantar y se puede utilizar durante todo el año! Otros beneficios incluyen: un ambiente más limpio que reduce la necesidad de productos químicos y plaguicidas, la conservación del agua y el espacio, y los rendimientos consistentes.

En Aeroponía se pueden utilizar para germinar semillas o esquejes dpara esarrollar todo el camino a tamaño completo. Para  este instructivo, el autor usa  restos de  naranja, curry y esquejes de limón.

Materiales

Cuadro de Materiales
DSC_0030.JPG

Usted necesitará:

  • 5 recipientes  de PVC grande  (cualquier recipiente similar debería funcionar, usted apenas tiene que adaptarse)
  • Pintura en aerosol negro (Si su cubo permite que una cantidad significativa de la luz)
  • Ollas netos
  • Granos de la arcilla
  • Estanque Fogger / cualquier dispositivo de nebulización
  • Sierra eléctrica (debe coincidir con el tamaño de sus ollas netas)
  • Tubo transparente (1-2 pies serán suficientes si estás usando un balde de 5 galones)
  • Sellante estanco
  • Cualquier tipo de plástico / lexan (yo usé un poco de ambas)
  • Raspberry Pi
  • Camara para Raspberry Pi
  • Cables de interconexión
  • Cable de alimentación para  PowerSwitch II
  • Esquejes de plantas (mantenerlos en agua ni en reunir durante el paso necesario para que no se sequen)
  • Saran Wrap (Opcional)

 Pintura de la Cuchara

Imagen de la pintura del Cubo
DSC_0012.JPG
DSC_0013.jpg
* Este paso sólo es necesario si el envase permite una cantidad significativa de la luz (blanco, transparente, etc ..). Habrá agua en el recipiente y con demasiada luz moho / organismos no deseados pueden crecer en el contenedor * Pinte el envase tiene previsto utilizar completamente.

Paso 3: Preparación de la Tapa

Imagen de la Preparación de la Tapa
DSC_0004.JPG
DSC_0007.jpg
DSC_0014.jpg
DSC_0010.JPG
DSC_0011.jpg
Aquí, vamos a crear agujeros en la tapa que albergarán las ollas netos. Comience por dividir la tapa en porciones iguales. Busca y marca (o agujero piloto) lugares equidistantes, asegurándose de que están espaciados lo suficiente para que cuando se utiliza la sierra de perforación de los agujeros no se superpongan. Utilice la sierra de perforación en los puntos marcados. Por último, he utilizado un cuchillo para limpiar los orificios.

Preparación de la tapa (Continúa)

Imagen de la Preparación de la tapa (Continúa)
DSC_0027.JPG
DSC_0029.jpg
DSC_0030.JPG
DSC_0031.JPG
DSC_0032.JPG

Dos cortes más se agregarán al cubo. Vamos a empezar con uno para el riego. En primer lugar, crear un recorte utilizando el plástico / lexan, esto cubrirá el agujero que luego realice en el balde. El cubo utilicé tenía un guión conveniente que corrió alrededor de la llanta, lo que me permitió hacer una tapa deslizante inteligente. Sin embargo, cualquier tipo de agujero con una cubierta de recorte lexan / plástico funcionará. A continuación, sólo tiene que elegir otro lugar y perfore un agujero del tamaño más pequeño posible que todavía permita que el cable de su máquina de humo a través de. Esto completa la preparación tapa

Paso 5: Indicador de nivel de agua

Imagen del indicador de nivel de agua
DSC_0020.JPG
DSC_0062.JPG
DSC_0034.JPG
DSC_0064.JPG
El indicador de nivel de agua es simplemente un tubo que entra en el fondo de la cubeta, y se extiende a lo largo de los lados, lo que permite ver el nivel de agua sin tener que abrir la tapa.Perforar un agujero a lo largo del lado de la cubeta en la parte inferior (de tamaño de manera que el tubo queda a su medida). A continuación, coloque el tubo hasta la parte superior del cubo, a lo largo del lado. Se puede conectar con la cinta, o si el cubo tiene plástico extra que sobresale se puede perforar un agujero e introducir el tubo a través de allí como lo hice (ver fotos). Por último, aplicar sellador en la parte del fondo del pozo alrededor del tubo y deje que se seque. Más tarde me aerosol pintado esta área para que coincida con el resto de la cubeta, pero usted no tiene que hacerlo. Cuando se llena el balde con agua, el nivel del agua en el tubo se levantará para que coincida con el cubo. Ahora usted sabrá exactamente cuándo agregar más agua.

Montaje de  Raspberry Pi

Imagen de la Raspberry Pi Monte
DSC_0007.jpg
DSC_0010.JPG
DSC_0012.JPG
DSC_0011.jpg
DSC_0009.JPG

Ahora que tiene una configuración de aeroponía en funcionamiento, es el momento de añadir un poco de frambuesa pi! Una prueba rápida del nebulizador (colocándolo en el balde con agua y dirigirla a una fuente de energía) mostró que el contenedor funciona según lo previsto.A continuación, usted querrá obtener el lexan y empezar a crear un montaje para el Raspberry Pi. Comencé con una pieza rectangular de lexan que me incliné en una forma de V, con unas aletas dobladas al final. El monte coge el guión en el cubo, no haciéndose a lo largo del lado. Esto hace que una plataforma de nivel para el pi frambuesa simplemente sentarse. El uso de otro tira fina de lexan, un simple montaje se podría hacer para el módulo de cámara. Me perforó algunos agujeros en el soporte de la cámara, y el uso de clips de papel (con recursos, lo sé) que adjunto a la cámara en el soporte. La cámara de montaje y monta RP _ son simplemente pegados con pegamento. Dependiendo de qué contenedor que utilice, su montaje, probablemente tendrá que ser modificado un poco.Me parece que la adición de un pequeño tornillo bajo el monte Pi frambuesa hace para mayor soporte.

Cableado

Foto del cableado
DSC_0026.jpg
DSC_0028.JPG
El siguiente es el cableado de la Raspberry Pi a la cola PowerSwitch II. El PowerSwitch permite controlar el poder que fluye de una salida a otro dispositivo, utilizando un microcontrolador para supervisar este proceso. Primera ruta de un cable de puente desde el pin GPIO del Pi 6 (0 V) al segundo puerto marcado en el PowerSwitch. A continuación, pase un segundo cable de GPIO 23 o cualquier otro 3.3V pin alimentado al primer puerto de la PowerSwitch etiquetado + pulg A continuación, conecte un extremo del PowerSwitch a una toma de corriente, y el otro a su nebulizador.

Software para la  Raspberry

Imagen del Software

Para el módulo de la cámara Raspberry Pi He utilizado el siguiente comando en el terminal:raspistill-o image.jpg-TX-TLXdonde las X pueden ser cualquier cantidad de tiempo (en ms). -t controla cuánto tiempo se ejecutará la cámara, los controles y-TL con qué frecuencia se tomará una foto.

Usé otra pieza de código, que se ejecuta en ralentí 3, el ciclo de los períodos de encendido / apagado para el GPIO, que controla la cola PowerSwitch, que controla el generador de niebla. Una vez más, X es la cantidad de tiempo que usted elija para un ciclo.

* Estoy seguro de que hay una manera mucho más eficiente de hacer esta parte, pero soy todavía bastante nuevo en el Pi *

 Añada las Cortes

Imagen de Añadir los esquejes
DSC_0033.JPG
DSC_0044.jpg
DSC_0047-1.JPG
Por último, usted está listo para colocar los esquejes.
Comience por el recorte de los esquejes, de manera que hay suficiente vástago expuesto a ser colocado en las ollas netas. Luego, llene las ollas netas con cuentas de barro y colocar los recortes en las cuentas. Ahora puede colocar las plantas en macetas en la cámara de aeroponía. También puede cubrir la parte superior de sus ollas netos con papel film, asegurándose de que cubre los granos de la arcilla. Esto va a disminuir la pérdida de agua.Ejecute el código y habrá terminado!

 Producto terminado

Imagen del producto terminado
DSC_0041.JPG
Consejos útiles:Recuerde que debe mantener el nivel de agua a las especificaciones de la máquina de humo.
Usted puede agregar la solución nutriente líquido al agua para ayudar a mantener sus plantas sanas.
Algunos ambientes interiores puede ser bastante seco, por lo que pueden ayudar a la fumigación de los cortes de agua cuando se ven un poco seco.
Fuente aqui

Alquiler de peliculas on-line


Gracias al uso de la banda ancha(>1.5Mbbs) ,cada vez esta mas  usual utilizar    plataformas de alquiler  de contenido en  video  on-line  no solo desde ordenadores  , sino desde otro tipo de terminales (tabletas y smartphone) incluso desde las propias TVconectadas.

Actualmente las plataformas  mas comunes son la veterana  Filmin , las nuevaYouzee,esta muy reciente, Voddler la cual  ha generado grandes expectativas por su éxito en otros países europeos  y Wuaki.tv, veamos ahora sus carastericticas  mas destacadas.

Estas plataformas tienen en común que todas pueden visualizarse mediante un navegador con Adobe Flash, aunque en algunos casos, como en el de Filmin, también cuentan con una versión en HTML 5 (el estándar del futuro) para aquellos navegadores y dispositivos que no soportan esta extensión. Sin embargo, para una correcta visualización del contenido es recomendable tener instalada la última versión del navegador así como la extensión para reproducir el formato de Adobe Flash.

Todas las plataformas permiten el alquiler de películas en streaming (es decir, a la reproducción del contenido al mismo tiempo que se descarga),  aunque el tiempo de uso varía, en función de la plataforma, entre las 24 horas de Voddler y las 72 horas de Filmin. En el caso de Youzee y Filmin, el tiempo disponible para ver la película comienza en el momento de reproducirla por primera vez. En Voddler y Wuaki.tv el tiempo de alquiler empieza a contar en el momento de pagar la película. En este caso, 24 y 48 horas respectivamente

Las películas en alquiler tienen un coste habitual entre 1,5 euros y 5 euros, según diferentes factores como la calidad de la película o si es una película de estreno reciente o bien forma parte del catálogo.

Filmin y Youzee disponen, junto con el alquiler de películas en streaming, de un servicio de suscripción que permite ver de forma ilimitada las películas que forman parte de su catálogo a modo de una especie de «barra libre «,aunque  las películas de estreno o premium no se incluyen en este servicio y, por tanto, es necesario alquilarlas de forma independienteVoddler cuenta con un modo «off line», que permite reproducir la película sin necesidad de estar conectado a Internet

Filmin

Imagen: Filmin


Filmin es la plataforma con un mayor número de películas disponibles en el momento de realizar esta prueba de uso, con un catálogo superior a las 1.700. En este sentido, esta plataforma cuenta con mil películas más en su catálogo general que hace un año, cuando se realizó la anterior prueba de uso.

Esta plataforma dispone de aplicaciones gratuitas para iPad e iPhone, lo que también posibilita su uso en un dispositivo Apple TV mediante la transmisión de la señal con Airplay. También es compatible con la consola PlayStation 3, así como el media center InOutTV. Además, cuenta con un reproductor en HTML5, lo que permite su uso desde cualquier dispositivo que cuente con un navegador web actualizado.

En general, la calidad del video estándar ofrecido por Filmin es aceptable, aunque si la fuente original proviene de un DVD de cine independiente antiguo, el formato es 4:3 y no 16:9, algo que no ocurre con películas de estreno.

En resumen  Filmin ofrece  un catálogo de cine independiente y de estreno pero no dispone de modo «off line» en dispositivos portátiles.

Youzee

Imagen: Youze


Youzee es una de las plataformas más sencillas de usar gracias a su entorno gráfico orientado a facilitar la elección de películas y su visionado. Además, cuenta un sistema de recomendación de contenidos según los gustos de los usuarios. En su debe está que el catálogo actual de películas no supera las 500, aunque se espera que este aumente de forma progresiva en los próximos meses.

Cuenta con dos formas de pago: por suscripción mensual o mediante el alquiler de películas por un tiempo de 48 horas. Normalmente las películas en alquiler son estrenos y no forman parte de las ofrecidas en el catálogo por suscripción.

Esta plataforma solo permite la visualización del contenido mediante un navegador actualizado con Adobe Flash, pero al no disponer de versión HTML 5, ni de aplicaciones especializadas, es incompatible con los dispositivos portátiles de Apple. Sin embargo, es compatible con televisores Smart TV del fabricante Samsung. A pesar de esta desventaja, la calidad del vídeo en sus versiones estándar y alta definición es muy buena.

En resumen  la plataforma ofrece calidad del vídeo estándar y alta definición pero por ahora con un escaso catálogo de películas

Wuaki.tv

Imagen: Wuaki.tv


Wuaki.tv es una de las plataformas más interesantes gracias a que su uso no solo está orientado a la visualización de películas desde un ordenador mediante un navegador actualizado con Adobe Flash, sino que también está disponible en los principales Smart TV de fabricantes como Samsung, Philips y Panasonic. También es compatible con el reproductor multimedia Gigaset.

El catálogo de este videoclub en línea está compuesto actualmente de más de 1.100 películas y un número aproximado de 20 series en calidad estándar (DVD) y en alta definición.

Wuaki.tv, no dispone de un servicio de suscripción mensual, por tanto, la única forma de acceder a las películas es mediante su alquiler por un tiempo máximo de 48 horas desde el momento de realizar la compra. Además, una veintena de películas se ofrecen de forma gratuita gracias acuerdos con anunciantes y patrocinadores. También permite la compra de películas, aunque solo pueden disfrutarse durante tres años. Pasado este tiempo, es necesario volver a comprarlas.

Por tanto Wuaki ofrce un  estupendo catálogo de películas comerciales accesible ademas directamenete desde su smart-TV y de estreno pero no dispone de servicio de suscripción mensual por el momento.

Voddler

Imagen: Vodler


Voddler es una de las últimas plataformas en llegar a España, después de su éxito en Suecia. En nuestro país, este videoclub en línea tiene un catálogo de alquiler que no supera las 200 películas, aunque cuenta con la ventaja para los usuarios de que muchas otras actuales se ofrecen de forma gratuita, hasta reunir un total de 455. Además, tampoco cuenta con un servicio de suscripción mensual, al menos que se muestre de forma clara.

Una opción interesante de Voddler es la función «off line» que permite descargar la película en vez de visualizarla en streaming. Una vez seleccionada esta opción, el usuario tiene catorce días para ver la película y 48 horas una vez comenzada la primera reproducción. Además, la película sólo está disponible para su descarga las primeras 24 horas de alquiler.

Voddler cuenta con diferentes versiones para dispositivos como teléfonos móviles y tabletas, como las aplicaciones para iPhone e iPad. Sin embargo, mientras la aplicación para iPhone es gratuita, la de iPad tiene un coste de 5,49 euros. Debido a las restricciones del sistema anticopia DRM utilizado, Voddler no es compatible con ordenadores con el sistema operativo Linux. Por otro lado muestra algunas películas en HD, pero solo son una minoría.

Sin duda pues lo mejor de Voddler es su catálogo de películas gratuitas  aunque solo este  limitado a 24 horas.

Comparativa plataformas  alquiler de peliculas on-line
Youzee Voddler Filmin Wuaki.tv
Número aproximado de largometrajes disponibles 412 455* 1782 1140
Número aproximado de series disponibles 50 11 44 20
Precio mensual suscripción 6,99 euros No tiene 15 euros No tiene
Precio habitual en alquiler 1,99 – 3,99 euros 1,49 – 3,99 euros 1,95-2,95 euros 1,99 – 4,99 euros
TIempo de alquiler 48 horas 24 horas 72 horas 48 horas
Formato del video desde ordenadores Flash Flash Flash/HTML5 Flash
Calidad del vídeo Estándar/HD Estándar/HD** Estándar/HD Estándar/HD
(*) 157 en alquiler y el resto gratuitas. (**) Solo una minoria son en HD.

Fuente aqui

Simple buscador solar


Como podemos ver en el siguinte  video un buscador solar, presentamos aqui  un «sencillo»  dispositivo que rastrea y sigue   una fuente de luz. Tal dispositivo se puede utilizar en los satélites para mantener los paneles solares alineados con el sol, o en búsqueda y rescate robots que tratan de guiar a las personas atrapadas hacia la luz o  también en instalaciones fotoeléctricas  con posibilidad de movimiento .

El circuito que presentamos  es de gran simplicidad  pues  solo  utiliza dos  fotocélulas de sulfuro de cadmio (CdS) y un servo motor que hace girar las propias  fotocélulas.

La figura 1 muestra un primer diseño inicial, el cual adolece de algunas  debilidades del diseño, que vamos a mencionar en detalle, y trataremos de solventar en nuestro dispositivo.

light seeker initial design
Figura 1. El diseño inicial para el buscador solar.

El diseño inicial era bastante simple, teníamos 5V en un extremo del grupo fotocélula y tierra en el otro extremo. Si la misma cantidad de luz cayese sobre ambas fotocélulas la tensión media sería 2.5V. En la segunda etapa, tenemos un comparador basado en un amplificador  operacional  que compara la tensión media del grupo fotocélula a 2.5V. Si la tensión de la fotocélula fuese superior a 2,5 V,  significara que más luz incide sobre la célula fotoeléctrica a la izquierda, la base de comparación sería la salida 1 y luego en el siguiente paso, el puente H forzaría que el servo girase  al grupo fotocélula a la izquierda, con el objetivo de igualar la cantidad de luz incidente que cae sobre las dos fotocélulas.

En esencia, es  un diseño  correcto  pero adolece de  algunos problemas técnicos:

  1.  Tal como esta , los servomotores siempre se volverían con toda su fuerza! esto significa que, incluso si las fotocélulas recibieron ligeramente diferentes cantidades de luz, el comparador emitiría un 1 logico  o un 00 lógico  y hará que  gire el motor lo más rápido que puede. La situación es análoga a un jugador de fútbol tratando de lanzar  el balón en línea recta, y  sólo se le permite golpear  la pelota con toda su fuerza.
  2. El comparador normalmente emite aproximadamente 3,5 V, pero nos gustaría ser capaces de tener voltajes más altos alrededor de 12volt para comandar el servo.

Con el fin de resolver el problema 1, se utilizó  modulación de ancho, y para el segundo problema se ha utilizado dos buffers.

Modulación de ancho de Pulso
En la configuración inicial  se utilizó sólo 2,5 V, ahora si lo comparamos con una onda triangular de alta frecuencia, la salida del motor será alta para una fracción de tiempo y bajo resto del tiempo. Efectivamente, esto nos permite accionar el motor con voltajes bajos, así como  tensiones mayores.

pulse width modulation
Figura 2. Pulso de modulación de anchura.

Como se observa en la Figura 2, los resultados de  la onda triángular  de la tensión de salida es alta para una parte del periodo y bajo para el resto. La entrada analógica A hace que la salida sea baja la mayoría de las veces,lo cual  corresponde aproximadamente a una salida de tensión de alrededor de 1V. Resultados de la entrada B analógica en un ciclo de trabajo del 50%  corresponde a una salida de tensión media de 2.5V.

BUFFERS
Idealmente nos gustaría tener una salida de tensión de 12 voltios para el H-puente, sin embargo, la alta salida lógica TTL es de aproximadamente 3.5V,para conseguir  12V se utilizó tampones. La Figura 3 muestra el diseño final utilizando  un inversor de colector abierto como es el 7406 y un  tampón basado en  el 7407.

light seeker final design
Figura 3. Diseño modificado para el buscador solar.

Fuente  aqui

Nuevo smartwatch de Qualcomm® ™ ya esta a la venta


Qualcomm ® Toq ™ es el nuevo  SmartWatch  de Qualcom ®   con  pantalla táctil en color de Qualcomm , que a diferencia de otros smartwatches, aprovecha la luz a su alrededor para que su pantalla sea visible incluso con luz solar brillante.

El  modelo  ha sido presentado en  las  feria del CES de las Vegas y ya esta a la venta,tanto  en Toq Store  como en Amazon   .Por el momento, solo esta disponible  con correa en negro  con un descuento ,según el fabricante puntual de 50$ ,  costando en total con el descuento ya aplicado   299,99$ ,precio bastante curioso, pues el precio justo que cuesta en ese momento el Samsung Galaxy Gear.

Los requisitos para Qualcomm Toq :para emparejarlo  con terminales  Android ™  (versión 4.0.3; Jelly Bean y por encima de preferencia) y que tengan tecnología inalámbrica Bluetooth ®.

Respecto a la pantalla Mirasol de Qualcomm ® ™ representa un avance significativo en la tecnología de visualización móvil pues utiliza la luz reflejada para crear sus imágenes en lugar de la luz de fondo típico de las tecnologías de visualización actual. El carácter reflexivo de la pantalla hace que consuma  muy baja potencia, lo que permite que sea visible incluso con luz solar brillante.Además como consecuencia , la pantalla Mirasol está siempre encendida y no requiere de un interruptor de encendido apagado, lo cual  le da acceso a su información de un vistazo.
<br<
Ahora bien debido a que la pantalla Mirasol utiliza luz reflectante, Qualcomm Toq necesita  una luz frontal integrado en la pantalla para iluminación con luz limitada ( por ejemplo en oscuridad como ocurre con los relojes digitales convencionales lcd)  . Esta luz se puede encender con un simple toque de dos veces en la correa del reloj justo por encima de la esfera del reloj.
El paradigma de smartwatches aún está en desarrollo ya que muchos están preocupados por daños al reloj, en este caso aunque ciertas características tales como resistencia al rayado se incluye con Qualcomm Toq, los usuarios SmartWatch se les debe recordar que deben cuidar del dispositivo como lo harían con cualquier otra tecnología móvil de alta calidad (es decir, smartphone), o un reloj de calidad superior diseñado como una pieza de estilo / moda.
Respecto a la duración de la batería en relación con el uso diario, tales como la visualización de las llamadas entrantes, textos, correos electrónicos y actualizaciones sociales debería durar  varios días, pero  la experiencia de cada persona será diferente dependiendo de la intensidad y frecuencia de uso.
Si  nos fijamos en el  impacto que tiene sobre la batería del  teléfono,como con cualquier dispositivo Bluetooth ® un smartphone  que está conectadoal Qualcomm Toq  , utilizará la cantidad de energía necesaria para hacerlo. Sin embargo, como la pantalla del smartphone se enciende con mucha menos frecuencia, el rendimiento real variará en función de cada usuario.
Como  aspecto curioso ,no se  puedo cambiar la pulsera puesto que en   el interior de la banda va la  bateria  para proporcionar energía a la pantalla .

A continuación  algunas características de este nuevo smartwatch:

Caras de reloj

Se puede seleccionar entre diferentes esferas de reloj para que coincida con su estilo personal. Ciertas esferas de reloj de visualización de información adicional, como las citas del calendario, el clima y las existencias.

Estilos e Iconos

Personalice Toq con diferentes estilos de iconos para que coincida con su personalidad, estado de ánimo o guardarropa.

Hub Comm

Para realizar llamadas de voz en su teléfono o un auricular Bluetooth conectado, enviar mensajes de texto rápidos, ver la última llamada y actividad de texto, y más.

Calendario

Se puede sincronizar varios calendarios con tu móvil y ver eventos para el día actual y el día siguiente.

Música

Se puede controlar la aplicación de reproductor multimedia en el teléfono Aconsejan probar  la aplicación doubleTwist con Magia Radio Android.

Acciones

Se puede llevar  un registro de sus acciones favoritas con citas de E * TRADE.

Tiempo

Previsiones meteorológicas locales y confiables de AccuWeather se entregan directamente a la muñeca.

Notificaciones

Se pueden rcibir  notificaciones directamente a su muñeca de seleccionar las apps Android cargados en el teléfono inteligente.

Estado

Se puede comprobar el estado de conexión, nivel de batería, y enviar una alerta para ayudar a encontrar el teléfono.

Configuración

Por último se puede acceder fácilmente ajustes tales como Bluetooth, modo avión y mucho más.

Sin duda es un concepto interesante pero no nuevo  pues con la competencia de  Sony Smartwatch,  Samsung Galaxy Gear ,  ZTE,  Google   e incluso Microsoft     ¿cual será el que mas aceptación  tenga?

Fuente aqui

Sobre el uso de la marca Microsoft® en nuestras publicaciones


Esta post   trata sobre algunas consideraciones legales  que debemos tener  si vamos  a hacer referencia a marcas comerciales de Microsoft en escenarios tan diversos como pueden ser redes sociales, blogs, publicaciones,seminarios ,etc.

A continuación se citan las directrices en esa materia que Microsoft®  recomienda:

El uso de marcas comerciales de Microsoft® en el texto:Se puede utilizar las marcas o nombres de productos de Microsoft para referirse a los productos y servicios siempre y cuando siga estas directrices de Microsoft. Su utilización no debe inducir a error a los consumidores en cuanto a cualquier patrocinio Microsoft, afiliación o promoción de su empresa o de sus productos o servicios.

Identificar correctamente Microsoft : Cuando se refiere a productos de software y Microsoft, aplique los símbolos de marca apropiadas de acuerdo con la lista de las marcas actuales de Microsoft(ver la Lista de marcas de Microsoft )

Estos son algunos ejemplos de marcas de Microsoft y sus descriptores:

  • Software Microsoft ®
  • Sistema operativo Windows ®
  • Encarta enciclopedia multimedia ®
  • Herramienta de creación y administración de sitios Web de FrontPage ®
  • MSN ® Internet
  • Software de mensajería Outlook ®
  • Programa de presentaciones gráficas PowerPoint ®
  • Sistema de videojuegos Xbox ®

Mencione correctamente  las marcas de Microsoft : La forma más común para establecer marcas, aparte de otras palabras o nombres es capitalizar el nombre del producto y utilizar el símbolo de marca comercial y descriptor apropiados. También puede usar subrayado, cursiva o negrita para el nombre. Ejemplos:

Correcto: Después de instalar el sistema operativo Windows ®

Incorrecto: Después de instalar los programas de Windows

Utilice Avisos de marcas comerciales: Incluya una atribución de la propiedad de Microsoft de la marca (s) en la sección aviso de crédito de su documentación o anuncio. Siga este formato:

  • Microsoft, Encarta, MSN y Windows son marcas comerciales registradas o marcas comerciales de Microsoft Corporation en Estados Unidos y / o otros países.

No utilice Descriptores inapropiados:  Marcas comerciales de Microsoft a identificar los productos y servicios específicos. No se refieren a las aplicaciones, servicios o dispositivos de hardware que trabajan con productos de Microsoft de forma incorrecta. Por ejemplo, no se refieren a los productos o servicios que funcionan con el sistema operativo Windows como «aplicaciones de Windows», «Servicios de Windows» o «hardware de Windows.» Si es necesario, estos tipos de productos pueden ser referidos por su relación con el sistema operativo de Windows mediante la inserción de la palabra «basada» entre el nombre de Windows y el tipo de producto diseñado para funcionar con Windows.

Correcto: SpreadsheetXYZ es una aplicación basada en Windows ®.

Incorrecto: SpreadsheetXYZ es una aplicación de Windows.

No utilice marcas comerciales de Microsoft en la forma posesiva o Plural: Marcas comerciales de Microsoft nunca se deben utilizar en la forma posesiva o en plural. Deben introducirse como un adjetivo seguido de un descriptor apropiado.

Correcto: Esta presentación se ha creado usando PowerPoint gestor de presentaciones ®.

Incorrecto: Widget Software Company incluyó algunas presentaciones en PowerPoint en su presentación.

Directrices de la aplicación: Su nombre editor registrada y todo lo relacionado con su aplicación-nombre, logotipo, descripción, capturas de pantalla deben ser únicos y libres de marcas comerciales de Microsoft a menos que:

  1.  Haya asegurado el permiso de Microsoft a través de una licencia o equivalente (aunque estas licencias no están generalmente disponibles en este contexto) ó
  2.  Este utilizando una marca comercial de Microsoft (sin incluir los logotipos) para describir las características o la funcionalidad de su aplicación, sin sugerir que la aplicación se publica en realidad por Microsoft.

El nombre de su aplicación, sin embargo, no puede comenzar con la marca Microsoft en cuestión. Además, logotipos de Microsoft no se pueden utilizar como un identificador de origen para su aplicación, incluyendo pero no limitado a, su imagen de mosaico de lanzamiento.

Por ejemplo, usted no puede nombrar a su aplicación «MSN» o «Windows Media Player». Sin embargo, sería aceptable para el nombre de su aplicación «Reader para MSN» o «Media Player para Windows,» siempre y cuando no se utiliza el MSN o logotipos de Windows o Windows Media Player o de otra manera sugiere que la aplicación ha sido publicado por Microsoft. Además, el lenguaje como «obras con», «diseñado para», y «optimizados para» son todos términos aceptables para explicar que su producto está diseñado para trabajar en conjunto con un producto o servicio de Microsoft.

Directrices en  medios sociales :Las pautas para los medios sociales asociados con el uso de las marcas registradas de Microsoft son bastante similares a las directrices de aplicaciones incluidas anteriormente. En concreto, los nombres de las cuentas de redes sociales y cualquier y todas las páginas o las comunidades no deben incluir ninguna marca comercial de Microsoft. Las imágenes de la cuenta asociada, páginas, o de la comunidad no deben incluir ningún logotipo de Microsoft. Las únicas excepciones a estos requisitos s

  1.  Haya asegurado el permiso de Microsoft a través de una licencia o equivalente (aunque tales licencias no suelen estar disponibles en este contexto), o
  2. Este utilizando una marca comercial de Microsoft (sin incluir logos) para describir el propósito de su cuenta, página o comunidad sin sugerir afiliación con Microsoft.

Por último, cualquier cuenta de los medios de comunicación social no debe usar el nombre o imagen de alguna de las personas prominentes dentro de Microsoft.

Por ejemplo, no se puede nombrar a su cuenta, página o comunidad «Foro Skype» o «productos de Microsoft.» Sin embargo, sería aceptable para el nombre de su cuenta, en la página, o en la comunidad «Foro de usuarios de Skype» o «Información sobre los productos de Microsoft «siempre y cuando no se utilicen los logotipos de Skype o Microsoft o de otro modo sugerir una asociación con Microsoft.

Pautas adicionales para Publicidad Collateral, Marketing y Packaging del producto:Usted puede usar los nombres de los productos y servicios de Microsoft en los envases, en los sitios Web, y en los materiales de publicidad para indicar la compatibilidad de su producto con un producto específico de Microsoft o el servicio, siempre que la referencia cumpla las directrices de este documento y las siguientes especificaciones.

Compatibilidad:Cualquier uso de un logotipo de Microsoft para indicar la compatibilidad debe ser conforme a una licencia logo debajo de uno de los Programas de logotipos de Microsoft:

  1. Usted puede utilizar las marcas de Microsoft en frases referenciales como «Funciona con Windows XP», «se ejecuta en Windows 2000» y «Para el uso con Xbox».
  2. No utilice marcas comerciales de Microsoft como el nombre del producto, nombre del servicio, o nombre de la empresa.
  3. No utilice el producto, servicio o nombres de compañías que podrían ser confundidos con ninguna marca Microsoft.
  4. No imitar o copiar el embalaje de productos Microsoft, la publicidad o la imagen comercial.
  5. No utilice las marcas comerciales de Microsoft más prominente que su producto o nombre de servicio. Usted debe mantener una distinción visual entre su empresa y el nombre del producto y cualquier marca Microsoft.
  6. No cree ni utilice logotipos que incluyan una marca Microsoft a menos que su uso sea conforme a una licencia de Microsoft (por ejemplo, no cree su propio logotipo de compatibilidad con Windows).

Logos: No utilice el logotipo de Microsoft Corporate, logotipo de Windows, o cualquier otro logotipos de Microsoft, símbolos o iconos en o en relación con los productos, embalajes, manuales, materiales promocionales o publicitarios, o sitios Web para cualquier propósito salvo si se efectúa a una marca expresa por escrito licencia de Microsoft( Programas de logotipos de Microsoft)

El logotipo corporativo de Microsoft se puede utilizar sólo en situaciones limitadas para referirse a Microsoft Corporation ( pautas logo corporativo de Microsoft)

Enlace Logos: Usted puede colocar un enlace de texto a una página Web de Microsoft en su sitio si el vínculo de texto no es una característica prominente en el sitio y no se utiliza de una manera que podría confundir o engañar a los consumidores. Usted puede consultar el nombre de la empresa o producto Microsoft Microsoft y nombres de servicio en un tipo de letra y el formato de texto plano, siempre que su uso se ajusta a las directrices generales de marcas comerciales de Microsoft y que incluye la redacción adecuada tal como «Esta manera de Microsoft.com.» A excepción de los logos de enlace como proporcionadas por Microsoft, no podrá utilizar el logotipo de la empresa Microsoft o cualquier otro logotipo o gráfico Microsoft para vincular a Microsoft. Puede utilizar Microsoft enlace logos únicamente de conformidad con las directrices aplicables a cada logo previsto( vínculo logos Microsoft)

Sitios Web:  Puede usar productos Microsoft, el servicio, y nombres de la tecnología en su sitio Web para indicar que su sitio Web se ejecuta en, o es compatible con el producto de Microsoft que se hace referencia o la tecnología, siempre que la referencia cumpla las directrices de este documento. No utilice ninguna marca Microsoft en el título de su sitio Web o como nombre de dominio de segundo nivel. Usted no puede utilizar ningún logotipo de Microsoft sin licencia o especificaciones escritas de Microsoft.

Publicaciones, Seminarios y Conferencias :Puede hacer referencia a los nombres de producto de Microsoft, servicio y tecnología en la portada de revistas y periódicos, y en el título de seminarios y conferencias, siempre que cumpla con las directrices de este documento y las siguientes especificaciones:

  1. La publicación, seminario o conferencia deben estar relacionados con el producto específico de Microsoft, el servicio o la tecnología se hace referencia.
  2. Su nombre y su logotipo deberán ser más prominente que la marca denominativa Microsoft en todos los materiales impresos relacionados con la revista, publicación periódica, seminario o conferencia.
  3. A la renuncia de patrocinio, afiliación o promoción por parte de Microsoft, de forma similar al ejemplo de abajo, se debe incluir en la publicación y en todos los materiales impresos relacionados:

«(Título) es una organización independiente (publicación) y no está afiliado con, ni se ha autorizado, patrocinado o aprobado de otra manera por Microsoft Corporation.»

  1. Usted debe incluir una atribución de la marca de acuerdo con el formato de notificación previsto en la sección Avisos de marcas comerciales El uso de esta página.
  2. No use una marca Microsoft como la palabra principal o elemento más importante en su revista, publicación periódica, seminario o conferencia. Usted puede utilizar las marcas comerciales de Microsoft de manera referencial, como «REVISTA XYZ para el sistema operativo Windows.» Su uso fuera de esta manera referencial (como «Revista Windows») requiere una licencia de Microsoft Corporation.
  3. No utilice el logotipo de Microsoft Corporate, logotipo de Windows, o cualquier otro logotipo de Microsoft o en la publicación, o en cualquier material relacionado con la publicación, seminario o conferencia. Circunstancias especiales pueden merecer una licencia de Microsoft.
  4. No use una marca Microsoft de ninguna manera que sugiere Microsoft afiliación, patrocinio, o certificación de la revista, publicación periódica, seminario o conferencia.

Empresa, producto, servicio y nombres de dominio:  No utilice ni registre ninguna marca Microsoft, incluyendo Microsoft logos, símbolos, iconos o cualquier variación de los mismos pueden llevar a confusión, como parte de su razón social, nombre comercial, nombre de producto, nombre del servicio, o el nombre de dominio. No coloque el nombre de la empresa, marcas comerciales, marcas de servicio, nombres de productos o al lado, o combinarlos con, el nombre del producto Microsoft.

Respaldo o patrocinio:No utilice ninguna marca Microsoft de ninguna manera que exprese o implique afiliación Microsoft, patrocinio, promoción, certificación o aprobación. No utilice ninguna marca Microsoft de tal manera que parece que Microsoft está legalmente asociada con su empresa. Usted debe mostrar su nombre de la empresa de manera más prominente que cualquier marca Microsoft en todos los materiales.

Artículos promocionales :No fabricar, vender o regalar artículos promocionales, como camisetas o tazas, que soportan cualquier marca Microsoft, incluyendo logotipos, sino en virtud de una licencia de marca expresa por escrito de Microsoft.

Imagen comercial y artículos publicitarios :No imitar logotipos de Microsoft, logotipos, imagen comercial, u otros elementos de embalaje de productos Microsoft y Sitios Web en cualquiera de sus materiales, incluyendo pero no limitado a la publicidad, el envasado de productos, sitios Web y materiales de promoción.

Eslóganes y lemas: No utilice ni imitar ningún slogan Microsoft, incluyendo pero no limitado a «su potencial. Nuestra Pasión. TM»

Fuente  aqui

El clon de Google Glasses


Fabricado por la firma taiwanesa ChipSIP las similitudes con su  las Google Glasses    van más allá del diseño externo: de hecho  las propias lentes de ChipSIP han sido bautizadas con el ingenioso nombre de Smart Glass  y también funcionan gracias al sistema operativo Android, aunque hay una importante  diferencia: el clon llevara  Android  sin adaptar a las peculiaridades del nuevo dispositivo(al contrario de lo que sucede con  Google Glass  )

De todos modos aunque en principio se podría ver como un inconveniente, también tiene su parte positiva ya que todas las aplicaciones favoritas deberían correr  también en las gafas (  siempre y cuando las especificaciones técnicas del producto lo permitan). Y si no es posible , debido a qeu  las gafas de ChipSIP tienen la capacidad de replicar los contenidos de la pantalla de tu móvil o tableta como si fueran un espejo, podrían  hacerlo sincronizándose a través de WiFI de  modo que si una  aplicación está en Google Play,también podra estar ante tus ojos  con este clon

def1

Además, este clon  está diseñado de tal forma que lo podrás usar tanto si llevas gafas por prescripción médica como si no, a diferencia de las Google Glass, que todavía son incómodas para los que llevan otras lentes debao   ya  además gracias a que su forma también permite adaptarlas a otro tipo de soportes, se pueden acoplar a  gafas deportivas o incluso  instrumental médico.

Como el propio fabricante se afana en dejar claro en la documentación del producto, las características de ChipSIP ,según ellos  superarían en todos los apartados a las lentes de Google tal  y como lo han publicado en la siguinte tabla:.

def4

Como vemos ChipSIP afirma que sus gafas cuentan con una pantalla transparente de alta definición a una resolución de 1280 x 720 píxeles, la versión 4.2.2 de Android, un procesador de doble núcelo a 1.2 GHz, auriculares con sonido en estéreo, cámara de 5 megapíxeles capaz de grabar vídeo a 1080p y sensores de velocidad, altitud, temperatura, luz y localizació,etc    !y todo por el módico precio de 500 dólares!,(mucho   más barato que la mayoría de ‘smartphones’ de gama alta).

Google desgraciadamente  aun  no ha anunciado el precio ni tampoco las especificaciones finales de sus famosas gafas  Glass, pero la versión con la que cuentan actualmente los desarrolladores  y otros profesionales parecen ofrecer  mucho menos que este clon y sobre todo a un precio mucho mayor (cuestan  actualmente los 1.500$  pero se oyen rumores que podrían costar mucho menos cuando se lancen masivamente al mercado de consumo)

Fuente aqui

Compartir medios entre ordenadores con su TV a traves de windows 8 con DLNA


DLNA (Digital Living Network Alliance), o «Alianza para el estilo de vida digital en red» en castellano, es una asociación de fabricantes de electrónica e informática sin ánimo de lucro fundada por Sony en junio de 2003 con el objetivo de definir directrices de interoperabilidad que permitan compartir medios digitales entre dispositivos de consumo como Televisores , ordenadores, terminales móviles y otros dispositivos multimedia.

DLNA utiliza Universal Plug and Play (UPnP) para la gestión, descubrimiento y control multimedia,para el cual define los tipos de dispositivos que DLNA soporta :»server», «renderer», «controller» asi como  los mecanismos para acceder a los medios a través de una a red(tanto wifi como Ethernet).

Las directrices DLNA suponen una capa de restricciones acerca de los tipos de formatos de fichero multimedia, codificaciones y resoluciones que los dispositivos deben soportar obteniendo como  ventaja una fácil configuración y gran versatilidad permitiendo a los fabricantes participar en el creciente mercado de los dispositivos en red y dividir los siguientes componentes tecnológicos clave.

En enero de 2011,6 ya eran más de 9,000 dispositivos diferentes los que habían obtenido el estado de «Certificado DLNA», indicado por un logo en su embalaje que confirma su interoperabilidad con los demás dispositivos DLNA, estimándose que ya se han vendido al menos  440 millones de dispositivos certificados, desde cámaras digitales a videoconsolas y televisores.

En la práctica encontramos muchos más aparatos que pueden conectarse, tales como cámaras de fotos y vídeo, consolas o, incluso, discos duros multimedia, siempre que cuenten con la oportuna certificación DLNA.

Este standard  como vamos a ver   nos permite conectar entre sí todos los equipos  con certificación DLNA   de forma transparente de modo que  no hace falta configurar nada especialmente complicado, como vamos a ver a continuación.

Para empezar  necesitamos un PC con el sistema operativo Windows 7 o Windows  8  (cualquiera de las ediciones y da igual que sea la versión de 32 o 64 bits). Por defecto, por cuestiones de seguridad no tenemos activada la posibilidad de enviar y recibir archivos multimedia, sino que tenemos que configurarla a mano:una vez lo logremos  en el menú desplegable que aparece al pulsar con el botón derecho en un archivo nos aparecerá una nueva opción llamada Reproducir en… que nos servirá para enviar dicho fichero al dispositivo DLNA que tengamos configurado en la misma red.

En Windows 7 puede ver aqui como activar   Windows Media Player 12

En Windows 8   podemos seguir los siguientes pasos:

Nos iremos a Panel de control–>Redes e Internet–>Grupo Hogar

Pulsaremos en «permitir que todos los dispositivos de esta red como televisores y consolas de juego,reproduzcan mi contenido multimedia»

allshare0

Al  pulsar en el item   si esta compartiendo contenido aparecerá  un mensaje de error:

allshare1

Al aceptar  nos aparecerán todos los dispositivos conectados a la red DLNA:

smartshare2

Como se puede apreciar desde esta pantalla se puede compartir o desabilitar  aquellos dispositivos DLNA que estén conectados simplemente activando o desactivando el check «Permitido».

Por simplicidad  puede permitir a todos los dispositivos el acceso a sus recursos multimedia:  

smartshare3

Ya solo queda seleccionar  los tipos de ficheros a compartir:

alshare5

Los contenidos que se podrán reproducir  colgaran   del equipo  en DLNAxx y sus subcarpetas .

Parar compartir ficheros simplemente debe arrastrar el contenido de sus carpetas  hacia la parte de la carpeta de DLNAxx

allshare6

Una vez compartido contenido en su PC  , ya nos iremos al TV ,en  caso  de ser un  LG con DLNA   no hay más que configurar los parámetros de red para conectarla,, permitiendo que la propia TV se encargue de gestionar la IP, la puerta de enlace y el servidor DNS s.

DLNA 8

En caso de fallar la configuracion automática ,debemos  introducir  una IP dentro del rango que tenemos asignado en nuestro router, así como los otros datos (la máscara de subred normalmente es 255.255.0.0 y la puerta de enlace es la dirección IP de nuestro router, por lo general, 192.168.1.1 o 192.168.1.0.

Por último, introducimos nuestro servidor DNS (hemos elegido el servidor de Google por sus grandes ventajas a la hora de conectarnos a Internet, con la dirección 8.8.8.8). Hacemos la prueba de conexión para asegurarnos que la TV queda enlazada con el router y con acceso a Internet, que debería mostrar que todo está perfecto.

Dentro de las diferentes fuentes de señales (TVHDMIUSB, antena, etc.) encontramos una llamada DLNA. Si tenemos la conexión de red bien configurada, al seleccionarla nos saldrá lalista de dispositivos compatibles de los que podemos coger archivos multimedia para reproducir. Únicamente debemos navegar por ellos y seleccionar el que deseemos ver en la televisión.

En este ejemplo  podemos ver dos móviles (LG y Samsung) y dos ordenadores, pero obviamente este listado varíara  en cada caso. Solo debemos elegir el dispositivo, el tipo de archivo que queremos reproducir y, navegando por las diferentes carpetas, encontrarlo y disfrutar de él en la TV. Por norma general, todas las opciones de configuración de la imagen y el vídeo estarán disponibles, incluyendo la capacidad de emular 3D a partir de una fuente 2D.

DLNA 9

Fuente aqui