<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Blog</title><link>http://www.oliverjenkins.com:80/blog</link><description>Blog</description><item><title>Heated bed project part 4</title><link>http://www.oliverjenkins.com:80/blog/heated-bed-project-part-4</link><description>&lt;p&gt;Well I've played around with temperature values in the MPS430 board.&amp;nbsp; Managed to blow a mosfet, and burnt my fingers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The heated bed MKII arrived after christmas and I've had it heating up.&amp;nbsp; I found an old Dell PC power supply, and have rigged that to supply the 12V for the bed.&lt;/p&gt;
&lt;p&gt;While just checking the forums, I came across these two posts.&amp;nbsp; They offer more information on heated bed control circuits.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.reprap.org/read.php?1,111424"&gt;http://forums.reprap.org/read.php?1,111424&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hydraraptor.blogspot.com/2007/10/measuring-temperature-easy-way.html"&gt;http://hydraraptor.blogspot.com/2007/10/measuring-temperature-easy-way.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For reference in the circuit design, here are a few notes I've collected since Christmas.&lt;/p&gt;
&lt;p&gt;Also since I keep losing this, &lt;a href="http://dangerousprototypes.com/docs/MSP430_quick_start"&gt;basic circuit for Launchpad MPS430&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;http://www.ecircuitcenter.com/circuits/therm_model1/therm_model1.htm&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.wolframalpha.com/input/?i=plot+%2810000+*+exp%28+3960%2f%28T%2b273%29+-+3960%2f%2825+%2b+273%29%29%29+from+T%3d0+to+200%2c+R+%3d+25"&gt;The derived R / T curve with Wolfram Alpha&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.maxim-ic.com/app-notes/index.mvp/id/817"&gt;Linearizing R/T curve&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 23 Jan 2012 22:25:08 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/heated-bed-project-part-4</guid></item><item><title>Heated bed project part 3</title><link>http://www.oliverjenkins.com:80/blog/heated-bed-project-part-3</link><description>&lt;p&gt;I've been getting to grips with various aspects of the TI Launchpad.&amp;nbsp; Specifically ADC conversion and controlling various devices within the chip.&amp;nbsp; I have got a basic temperature reading circuit linked trhough to an external LED (which I'm using in lieu of a heater).&amp;nbsp; The reading from the ADC is now controlling the 'heater' if the temperature is below an abitry threshold.&amp;nbsp; For reference I've put the code so far below.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;While just checking the forums, I came across these two posts.&amp;nbsp; They offer more information on heated bed control circuits.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.reprap.org/read.php?1,111424"&gt;http://forums.reprap.org/read.php?1,111424&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hydraraptor.blogspot.com/2007/10/measuring-temperature-easy-way.html"&gt;http://hydraraptor.blogspot.com/2007/10/measuring-temperature-easy-way.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Also since I keep losing this, &lt;a href="http://dangerousprototypes.com/docs/MSP430_quick_start"&gt;basic circuit for Launchpad MPS430&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre style="width: 600px; height: 350px; overflow: auto;"&gt;#include	"msp430g2231.h"&lt;br /&gt;#include	"stdbool.h"&lt;br /&gt;&lt;br /&gt;#define		TXD             BIT1    // TXD on P1.1&lt;br /&gt;#define		RXD		BIT2	// RXD on P1.2&lt;br /&gt;&lt;br /&gt;#define     	Bit_time    	104		// 9600 Baud, SMCLK=1MHz (1MHz/9600)=104&lt;br /&gt;#define		Bit_time_5	52		// Time for half a bit.&lt;br /&gt;&lt;br /&gt;unsigned char BitCnt;		// Bit count, used when transmitting byte&lt;br /&gt;unsigned int TXByte;		// Value sent over UART when Transmit() is called&lt;br /&gt;unsigned int RXByte;		// Value recieved once hasRecieved is set&lt;br /&gt;&lt;br /&gt;bool isReceiving;		// Status for when the device is receiving&lt;br /&gt;bool hasReceived;		// Lets the program know when a byte is received&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#define     TEMP_SENSOR             BIT5&lt;br /&gt;&lt;br /&gt;#define     HEATER                  BIT4&lt;br /&gt;#define		LED_AT_TEMP				BIT6&lt;br /&gt;#define		LED_HEATER_ON			BIT0&lt;br /&gt;&lt;br /&gt;bool ADCDone;			// ADC Done flag&lt;br /&gt;unsigned int ADCValue;	// Measured ADC Value&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Function Definitions&lt;br /&gt;void Transmit(void);&lt;br /&gt;void ConfigureADC(void);&lt;br /&gt;&lt;br /&gt;void main(void)&lt;br /&gt;{&lt;br /&gt;	WDTCTL = WDTPW + WDTHOLD;		// Stop WDT&lt;br /&gt;&lt;br /&gt;	BCSCTL1 = CALBC1_1MHZ;			// Set range&lt;br /&gt;	DCOCTL = CALDCO_1MHZ;			// SMCLK = DCO = 1MHz&lt;br /&gt;&lt;br /&gt;	P1SEL |= TXD + TEMP_SENSOR;&lt;br /&gt;	P1DIR |= TXD + HEATER + LED_AT_TEMP + LED_HEATER_ON;&lt;br /&gt;&lt;br /&gt;	P1IES |= RXD;				// RXD Hi/lo edge interrupt&lt;br /&gt;	P1IFG &amp;amp;= ~RXD;				// Clear RXD (flag) before enabling interrupt&lt;br /&gt;	P1IE |= RXD;				// Enable RXD interrupt&lt;br /&gt;&lt;br /&gt;	// Turn off all the outputs&lt;br /&gt;	P1OUT &amp;amp;= ~(LED_AT_TEMP + LED_HEATER_ON);&lt;br /&gt;	P1OUT != HEATER;	// The heater should be wired to sink current&lt;br /&gt;&lt;br /&gt;	// Turn off all the outputs&lt;br /&gt;	P1OUT &amp;amp;= ~(LED_AT_TEMP + LED_HEATER_ON);&lt;br /&gt;	P1OUT != HEATER;	// The heater should be wired to sink current&lt;br /&gt;&lt;br /&gt;	ConfigureADC();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	isReceiving = false;			// Set initial values&lt;br /&gt;	hasReceived = false;&lt;br /&gt;&lt;br /&gt;	__bis_SR_register(GIE);			// interrupts enabled\&lt;br /&gt;&lt;br /&gt;	while(1)&lt;br /&gt;	{&lt;br /&gt;		if (ADCDone) {&lt;br /&gt;			ADCDone = false;&lt;br /&gt;			TXByte = ADCValue;&lt;br /&gt;			Transmit();	// Send the value to the host pc&lt;br /&gt;&lt;br /&gt;			if (ADCValue &amp;lt; 210)&lt;br /&gt;			{&lt;br /&gt;				// Too Cold&lt;br /&gt;				// Turn on heater, turn on heating LED, turn off on temp LED&lt;br /&gt;				P1OUT &amp;amp;= ~(HEATER + LED_AT_TEMP);	// Remember this should be wired to sink current&lt;br /&gt;				//P1OUT ^= LED_AT_TEMP;&lt;br /&gt;				P1OUT |= LED_HEATER_ON;&lt;br /&gt;			}&lt;br /&gt;			else&lt;br /&gt;			{&lt;br /&gt;				P1OUT |= (HEATER + LED_AT_TEMP);&lt;br /&gt;				P1OUT &amp;amp;= ~LED_HEATER_ON;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;		if (hasReceived)		// If the device has recieved a value&lt;br /&gt;		{&lt;br /&gt;&lt;br /&gt;			P1OUT ^= (LED_AT_TEMP + LED_HEATER_ON + HEATER);&lt;br /&gt;&lt;br /&gt;			hasReceived = false;	// Clear the flag&lt;br /&gt;		}&lt;br /&gt;		//if (~hasReceived)		// Loop again if another value has been received&lt;br /&gt;    		//	__bis_SR_register(CPUOFF + GIE);&lt;br /&gt;			// LPM0, the ADC interrupt will wake the processor up. This is so that it does not&lt;br /&gt;			//	endlessly loop when no value has been Received.&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void ConfigureADC(void)&lt;br /&gt;{&lt;br /&gt;  /* Configure ADC  Channel */&lt;br /&gt;  ADC10CTL1 = INCH_5 + ADC10DIV_3 ;         // Channel 5, ADC10CLK/4&lt;br /&gt;  ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE;  //Vcc &amp;amp; Vss as reference&lt;br /&gt;  ADC10AE0 |= TEMP_SENSOR;                         //P1.5 ADC option&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* ADC interrupt routine. Pulls CPU out of sleep mode for the main loop.&lt;br /&gt;**/&lt;br /&gt;#pragma vector=ADC10_VECTOR&lt;br /&gt;__interrupt void ADC10_ISR (void)&lt;br /&gt;{&lt;br /&gt;	ADCValue = ADC10MEM;			// Saves measured value.&lt;br /&gt;	ADCDone = true;  			// Sets flag for main loop.&lt;br /&gt;	__bic_SR_register_on_exit(CPUOFF);	// Enable CPU so the main while loop continues&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Function Transmits Character from TXByte&lt;br /&gt;void Transmit()&lt;br /&gt;{&lt;br /&gt;	while(isReceiving);			// Wait for RX completion&lt;br /&gt;  	CCTL0 = OUT;				// TXD Idle as Mark&lt;br /&gt;  	TACTL = TASSEL_2 + MC_2;		// SMCLK, continuous mode&lt;br /&gt;&lt;br /&gt;  	BitCnt = 0xA;				// Load Bit counter, 8 bits + ST/SP&lt;br /&gt;  	CCR0 = TAR;				// Initialize compare register&lt;br /&gt;&lt;br /&gt;  	CCR0 += Bit_time;			// Set time till first bit&lt;br /&gt;  	TXByte |= 0x100;			// Add stop bit to TXByte (which is logical 1)&lt;br /&gt;  	TXByte = TXByte &amp;lt;&amp;lt; 1;			// Add start bit (which is logical 0)&lt;br /&gt;&lt;br /&gt;  	CCTL0 =  CCIS0 + OUTMOD0 + CCIE;	// Set signal, intial value, enable interrupts&lt;br /&gt;  	while ( CCTL0 &amp;amp; CCIE );			// Wait for previous TX completion&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Port 1 interrupt service routine&lt;br /&gt;#pragma vector=PORT1_VECTOR&lt;br /&gt;__interrupt void Port_1(void)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;	isReceiving = true;&lt;br /&gt;&lt;br /&gt;	P1IE &amp;amp;= ~RXD;			// Disable RXD interrupt&lt;br /&gt;	P1IFG &amp;amp;= ~RXD;			// Clear RXD IFG (interrupt flag)&lt;br /&gt;&lt;br /&gt;  	TACTL = TASSEL_2 + MC_2;	// SMCLK, continuous mode&lt;br /&gt;  	CCR0 = TAR;			// Initialize compare register&lt;br /&gt;  	CCR0 += Bit_time_5;		// Set time till first bit&lt;br /&gt;	CCTL0 = OUTMOD1 + CCIE;		// Dissable TX and enable interrupts&lt;br /&gt;	&lt;br /&gt;	RXByte = 0;			// Initialize RXByte&lt;br /&gt;	BitCnt = 0x9;			// Load Bit counter, 8 bits + ST&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Timer A0 interrupt service routine&lt;br /&gt;#pragma vector=TIMERA0_VECTOR&lt;br /&gt;__interrupt void Timer_A (void)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;	ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start&lt;br /&gt;&lt;br /&gt;	if(!isReceiving)&lt;br /&gt;	{&lt;br /&gt;		CCR0 += Bit_time;			// Add Offset to CCR0&lt;br /&gt;		if ( BitCnt == 0)			// If all bits TXed&lt;br /&gt;		{&lt;br /&gt;  			TACTL = TASSEL_2;		// SMCLK, timer off (for power consumption)&lt;br /&gt;			CCTL0 &amp;amp;= ~ CCIE ;		// Disable interrupt&lt;br /&gt;		}&lt;br /&gt;		else&lt;br /&gt;		{&lt;br /&gt;			CCTL0 |=  OUTMOD2;		// Set TX bit to 0&lt;br /&gt;			if (TXByte &amp;amp; 0x01)&lt;br /&gt;				CCTL0 &amp;amp;= ~ OUTMOD2;	// If it should be 1, set it to 1&lt;br /&gt;			TXByte = TXByte &amp;gt;&amp;gt; 1;&lt;br /&gt;			BitCnt --;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	else&lt;br /&gt;	{&lt;br /&gt;		CCR0 += Bit_time;				// Add Offset to CCR0&lt;br /&gt;		if ( BitCnt == 0)&lt;br /&gt;		{&lt;br /&gt;  			TACTL = TASSEL_2;			// SMCLK, timer off (for power consumption)&lt;br /&gt;			CCTL0 &amp;amp;= ~ CCIE ;			// Disable interrupt&lt;br /&gt;&lt;br /&gt;			isReceiving = false;&lt;br /&gt;&lt;br /&gt;			P1IFG &amp;amp;= ~RXD;				// clear RXD IFG (interrupt flag)&lt;br /&gt;			P1IE |= RXD;				// enabled RXD interrupt&lt;br /&gt;&lt;br /&gt;			if ( (RXByte &amp;amp; 0x201) == 0x200)		// Validate the start and stop bits are correct&lt;br /&gt;			{&lt;br /&gt;				RXByte = RXByte &amp;gt;&amp;gt; 1;		// Remove start bit&lt;br /&gt;				RXByte &amp;amp;= 0xFF;			// Remove stop bit&lt;br /&gt;				hasReceived = true;&lt;br /&gt;			}&lt;br /&gt;  			__bic_SR_register_on_exit(CPUOFF);	// Enable CPU so the main while loop continues&lt;br /&gt;		}&lt;br /&gt;		else&lt;br /&gt;		{&lt;br /&gt;			if ( (P1IN &amp;amp; RXD) == RXD)		// If bit is set?&lt;br /&gt;				RXByte |= 0x400;		// Set the value in the RXByte&lt;br /&gt;			RXByte = RXByte &amp;gt;&amp;gt; 1;			// Shift the bits down&lt;br /&gt;			BitCnt --;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Fri, 30 Dec 2011 15:55:30 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/heated-bed-project-part-3</guid></item><item><title>Heated bed project part 1</title><link>http://www.oliverjenkins.com:80/blog/heated-bed-project-part-1</link><description>&lt;p&gt;With my RepRap printing well, and some of the bugs shaken out.  I've been printing a number of larger objects.  With these I am starting to see pieces warp as the the piece cool. The 'go to' solution is to use a heated bed.&lt;/p&gt;
&lt;p&gt;RepRap eletronics such as RAMPS have on board controllers for heated beds.  However the GEN6 electronics I choose do not.  So I need a controller circuitry to manage a stand alone heated bed.&lt;/p&gt;
&lt;p&gt;Here are a series of posts, as I try to dust off some long forgotten electronic and microprocessor circuit design.&lt;/p&gt;
&lt;h2&gt;Heated build plate circuit design&lt;/h2&gt;
&lt;p&gt;The theory is simple.&amp;nbsp; We run a current through a heater element, and measure the temperature of a plate.&amp;nbsp; If the temp is too cold, power the heater.&amp;nbsp; If its too hot then turn the heater off.&lt;/p&gt;
&lt;p&gt;To heat the plate, we will provide current through a copper track.&amp;nbsp; To measure the temperature we will use a thermistor.&amp;nbsp; The resistance of a thermistor will decrease as the temperature rises.&lt;/p&gt;
&lt;p&gt;A microprocessor is used to measure the temperature, and determin if the heater needs to be on or off.&lt;/p&gt;
&lt;h2&gt;Measuring resistance&lt;/h2&gt;
&lt;p&gt;Resistance cannot be measured directly, however the voltage across it can be measured using a voltage divider.&lt;/p&gt;
&lt;pre&gt;Vin ----
       [] R1
        ----------- Vout
       []R2          
GND ---------------
&lt;/pre&gt;
&lt;p&gt;Vout = (R2 / (R1 + R2)) x Vin&lt;/p&gt;
&lt;pre&gt;Vin = 12v
R1  = 2K
R2  = 1K
&lt;/pre&gt;
&lt;pre&gt;Vout = (1K / (2K + 1K)) x 12v
Vout = 2/3 * 12
Vout = 8v
&lt;/pre&gt;
&lt;p&gt;By choosing the correct combination of resistors we can get a specific output voltage from a given input.  Using a thermistor (whose voltage will vary according to temperature) as one of the resistors will give us a varying voltage that is proportional to the temperature.&lt;/p&gt;
&lt;h2&gt;Microcontroller input&lt;/h2&gt;
&lt;p&gt;The MSP430 on the TI Launchpad has on Analogue to Digital Converter (ADC), this can be employeed to read the output voltage from our divider.  This reading can be converted to a temperature reading via a look up table.&lt;/p&gt;
&lt;p&gt;Depending on the temperature calculated the heater can be controlled to heat the bed up or not.&lt;/p&gt;
&lt;p&gt;The real work comes in calculating the various details&lt;/p&gt;</description><pubDate>Thu, 29 Dec 2011 23:11:22 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/heated-bed-project-part-1</guid></item><item><title>Heated bed project part 2</title><link>http://www.oliverjenkins.com:80/blog/heated-bed-project-part-2</link><description>&lt;p&gt;Datasheets - I hate them!&amp;nbsp; They are written by engineers who know what they are doing, for engineerers who know how to read them.&amp;nbsp; Having spent some time this morning going through a load of them and various posts about the TI Launchpad (whose documentation was written by more engineers) I've steadily come to some understanding.&lt;/p&gt;
&lt;h2&gt;Know details&lt;/h2&gt;
&lt;p&gt;Analogue to Digital convertors work by comparing an input voltage to two reference voltages.&amp;nbsp; With the Launchpad the reference voltages can easily be set to 2.5V to 0V.&amp;nbsp; From the voltage divider circuit from the previous post, I need to calculate the resistors to provide Vout to be between 2.5V and 0V depending on the temperature of the thermistor.&lt;/p&gt;
&lt;p&gt;The supply voltage of the system is 12V, this is the voltage that the rest of my RepRap is powered at.&amp;nbsp; It makes sense to use this to power my heated bed.&lt;/p&gt;
&lt;p&gt;The temperature for a heated bed can run up to 200&amp;deg;C.&amp;nbsp; So our range of temperature should be anything between 10&amp;deg;C and 250&amp;deg;C.&lt;/p&gt;
&lt;h2&gt;Thermistor selection&lt;/h2&gt;
&lt;p&gt;This &lt;a title="Thermistor G550 NTC" href="http://uk.rs-online.com/web/p/thermistor/4840127/"&gt;range of thermistors&lt;/a&gt; seem suitable.&amp;nbsp; They cover the range of temperatures and are available in a number of different resistances.&amp;nbsp; It just comes down to choosing the most appropriate one.&lt;/p&gt;
&lt;p&gt;This is a diagram of what I know and what I need to calculate.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;12v ----&lt;br /&gt;         &amp;nbsp;|
         [ ] R1
          |
          +---------- Vout (0v - 2.5v)
          |
         [ ] R2 (Thermistor)
          |
0v -----&lt;/pre&gt;
&lt;p&gt;The datasheet '&lt;a href="http://uk.rs-online.com/web/p/thermistor/4840127/"&gt;Temperature Measurement Glass-Encapsulated Sensors B57550 Series Data Sheet&lt;/a&gt;' tells us about each of the parts.  The information I need can be found by looking up the thermistor against the tables provided in the &lt;a href="http://uk.rs-online.com/web/p/thermistor/4840127/"&gt;Standardized R/T Characteristics&lt;/a&gt; document.&amp;nbsp; We can get the resistance of the thermistor at various temperatures.&lt;/p&gt;
&lt;p&gt;From the first document I can see for the 2K has a 'No. of R/T characteristic' contained within table 8401.&amp;nbsp; A temperature/constant can be found by examining this table (page 26).&amp;nbsp;&amp;nbsp;&amp;nbsp; At 15&amp;deg;C, and 250&amp;deg;C these values are 1.4714 and 0.0062302.&amp;nbsp; To calculate the resistance at these temperatures, we feed the constant in to the equation found on page 1. (Rt is the resistance at particular a temperature)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
Rt = K&amp;nbsp; * R25
Rt = 1.4714 * 2K and  0.0062302 * 2K
Rt = 2.9428KΩ and 12.46Ω
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Using ohms law equation Vout = (R2 / (R1+R2)) * Vin means I can now calulate the Vout range using a particular thermistor at certain temperatures with several values of R1.&amp;nbsp; For example using a value of 2K gives us the two equations;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
Vout = (R2 / (R1 + R2)) * Vin
VoutMax = (29428 / (2000 + 29428)) * 12 = 7.14V
VoutMin = (12.46 / (2000 + 12.46)) * 12 = 0.074V
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Plugging these in to a spreadsheet means a range of values of for R1 can be plugged in and voltage range calculated.  The optimum value for R1 that I found is 12K, which gives an output voltage of 2.36V to 0.012V&lt;/p&gt;
&lt;p&gt;Since all of this is easy to calculate, and we have various thermistors to choose from I'll put together a series of calculations for those values.  Also since this effort is to be used for specific temperatures (55&amp;deg;C PLA and 120&amp;deg;C ABS), I'll put these in for checks.&amp;nbsp;&amp;nbsp; Also I also have the option of using a Vin of 3.5V since I need to pull down to this to voltage for the TI Launchpad.&lt;/p&gt;
&lt;p&gt;The spreadsheet I've just put together can be see within google docs - &lt;a href="https://docs.google.com/spreadsheet/ccc?key=0Aj7AwPFCckczdFVaVFl3QzNtTWhUUUY2emNwMVlaLUE"&gt;RepRap Heated bed thermistor calculation&lt;/a&gt; the second sheet contains the final formula.&amp;nbsp; I've highlighted in red those combinations that put the Vout range to be between 2.5v and 0v.&amp;nbsp; There are several potential combinations of R1 and Thermistor that I can use.&lt;/p&gt;
&lt;p&gt;I thought about a good means to choose which combination is optimal while putting the spreadsheet together.&amp;nbsp; The combination that provides the largest change in voltage towards the highest temperate points is the one. I should just pick the combination with the highest change in voltage between 180&amp;deg;C and 200&amp;deg;C.&amp;nbsp; This gives me the following values.&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vin&lt;/td&gt;
&lt;td&gt;3.5V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R1&lt;/td&gt;
&lt;td&gt;1.1K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thermistor&lt;/td&gt;
&lt;td&gt;&lt;a href="http://uk.rs-online.com/web/p/thermistor/4840127/"&gt;2K&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description><pubDate>Thu, 29 Dec 2011 23:11:19 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/heated-bed-project-part-2</guid></item><item><title>Building a Z-Wave dot net client in 3 minutes</title><link>http://www.oliverjenkins.com:80/blog/building-a-z-wave-dot-net-client-in-3-minutes</link><description>&lt;p&gt;I actually finished this last weekend.&amp;nbsp; I'd suggest, you can grab the &lt;a href=" http://www.oliverjenkins.com/blog/niviane-a-rest-json-interface-for-z-wave-home-automation"&gt;latest version of the WCF serve&lt;/a&gt;r.&lt;/p&gt;
&lt;p&gt;I'm working on a server which is written in .net that can be communicated to over WCF.&amp;nbsp; This should give an easy way to control Z-Wave through c# or vb.net.&lt;/p&gt;
&lt;p&gt;I've got an early release of a Z-Wave server which can be accessed via WCF.  I've written the basic server in dot net that can control simple nodes such as lamps, dimmer and binary switches.  I've uploaded it, which I've called Niviane.  You can  &lt;a href="http://media.oliverjenkins.com/niviane/Niviane.msi"&gt;download the installer&lt;/a&gt; or &lt;a href="http://media.oliverjenkins.com/niviane/Niviane.zip"&gt;full source&lt;/a&gt; for it and start to see what it's all about.&lt;/p&gt;
&lt;p&gt;Just to show how easy it is with this approach, watch this video.  I install the server then create the most basic of clients which communicates with it.&amp;nbsp; I've edited the screen capture to show the result of each of the statements to give a clear picture of what's going on.&amp;nbsp; It should be clear - I hope!&lt;/p&gt;
&lt;p&gt;I've also posted the code in the comments below.&amp;nbsp; Just copy and paste it in to a new console application, once you've added a service reference.&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://www.youtube.com/embed/--Z8hp5uIXk" frameborder="0" width="425" height="349"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;I've a few plans and tweaks such as REST/JSON interfaces (edit: &lt;a href="http://www.oliverjenkins.com/blog/niviane-a-rest-json-interface-for-z-wave-home-automation"&gt;which I've now completed&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Let me know how you get on.  I've not had a chance to really test it properly yet, so I'd appreciate some feedback.&lt;/p&gt;</description><pubDate>Tue, 02 Aug 2011 09:11:17 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/building-a-z-wave-dot-net-client-in-3-minutes</guid></item><item><title>Niviane, a REST/JSON interface for Z-Wave home automation</title><link>http://www.oliverjenkins.com:80/blog/niviane-a-rest-json-interface-for-z-wave-home-automation</link><description>&lt;p&gt;Niviane is a windows service written in dot net that gives a REST/JSON interface to a Z-wave network.&amp;nbsp; It is uses &lt;a title="Visit the Open Z-Wave project" href="http://code.google.com/p/open-zwave/"&gt;Open Z-Wave&lt;/a&gt; to control devices, so all hardware compatible with that can be controlled through Niviane.&lt;/p&gt;
&lt;p&gt;The service itself means that creating interfaces to control Z-wave is painless.&amp;nbsp; I've written a dot net &lt;a title="Video showing how to build a client in three minutes" href="http://www.youtube.com/watch?v=--Z8hp5uIXk"&gt;client in 3 minutes&lt;/a&gt;, and mobile site in an evening.&amp;nbsp; The mobile site allows both Android and iPhone phones to control lights in my house.&lt;/p&gt;
&lt;p&gt;The package comes with an installer that will install and configure the service to suit your network.&amp;nbsp; No need to have to go through the InstallUtil process.&lt;/p&gt;
&lt;p&gt;I've build it to support the JSONP technique as well.&amp;nbsp; So if you want to write Javascript browser based interfaces JQuery, AJAX etc then thats possible.&amp;nbsp; If you don't have Visual studio, you can just run the installer and use whatever stack you prefer, even a webbrowser like lynx!&lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;If you want to start playing with it, I've a few different files to download;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://media.oliverjenkins.com/niviane/Niviane.zip"&gt;Full source&lt;/a&gt;, including service, installer, console client, and mobile site (Sencha touch)&lt;/li&gt;
&lt;li&gt;&lt;a title="Installer for Niviane" href="http://media.oliverjenkins.com/niviane/Niviane.msi"&gt;Niviane installer MSI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.oliverjenkins.com/niviane/NivianeMobile.zip"&gt;Mobile site&lt;/a&gt;, see the index.js file to configure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of the options can be ignored when installing.&amp;nbsp; The two of importance are the COM port, and the service address.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For the COM port check with device manager to see what port has been assigned to your USB controller.&amp;nbsp; I've Aeon Labs Z-Stick II, and its always gone on to COM3 on my machines.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The service address, is where commands need to be sent.&amp;nbsp; It defaults to http://localhost:9087/Niviane, which is fine for testing.&amp;nbsp; If you want to send commands from several computers then change it.&amp;nbsp; For exmple I've installed it on a web server that I can access from my laptop by going to http://masterserver/ so in the wizard I typed http://masterserver:9087/Niviane&lt;/p&gt;
&lt;p&gt;Once you've the windows service up and running, its straight forward to start controlling the network.&amp;nbsp; Just make sure the Z-Wave controller is on the computer the service is running on, give it a few minutes to discover the network, then in a browser just go to;&lt;/p&gt;
&lt;p&gt;http://localhost:9087/Niviane/nodes?callback=?&lt;/p&gt;
&lt;p&gt;That should return all nodes as a JSON string.&amp;nbsp; The 'callback' parameter triggers the JOSNP format, just remove it to use JSON.&lt;/p&gt;
&lt;p&gt;For dot net applications, just add a service reference to http://localhost:9087/Niviane.&amp;nbsp; The video linked aboves, shows all the &lt;a title="Video showing how to build a client in three minutes" href="http://www.youtube.com/watch?v=--Z8hp5uIXk"&gt;steps to install and build a console client&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Service reference&lt;/h2&gt;
&lt;p&gt;The service reference is as follows, it can be seen at from this address http://localhost:9087/Niviane/help&lt;/p&gt;
&lt;p&gt;To set the basic for node 2 its;&lt;/p&gt;
&lt;p&gt;http://localhost:9087/Niviane/node/2/basic/100?callback=yes&lt;/p&gt;
&lt;p&gt;Aside from Z-Wave there are a few options to run processes on the server.&amp;nbsp; I use it to control VLC to play music etc from my server.&lt;/p&gt;
&lt;!-- .blog-post table { border: 1px solid #999; } .blog-post th { background: #999; color: #eee; }  .blog-post td, .blog-post th { border: 1px solid #999 !important; padding: 0.3em; }  --&gt; 
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Uri&lt;/th&gt; &lt;th&gt;Description&lt;/th&gt; &lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;alloff&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/alloff"&gt;&lt;a rel="operation" href="help/operations/AllOff"&gt;&lt;/a&gt;Turn everything off&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/alloff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;allon&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/allon"&gt;Turn everything on&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/allon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;isavailable&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/isavailable"&gt;Checks if the controller/network has completed startup&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/isavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node/{NodeID}&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/node/{NODEID}"&gt;Gets details about a node&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/node/{NODEID}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node/{NodeID}/basic/{Value}&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/node/{NODEID}/basic/{VALUE}"&gt;Sets tha basic property of a node&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/node/{NODEID}/basic/{VALUE}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node/{NodeID}/location/{Value}&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/node/{NODEID}/location/{VALUE}"&gt;Sets the location property of a node&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/node/{NODEID}/location/{VALUE}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node/{NodeID}/name/{Value}&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/node/{NODEID}/name/{VALUE}"&gt;Sets the name property of a node&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/node/{NODEID}/name/{VALUE}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node/{NodeID}/pollingoff/{Value}&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/node/{NODEID}/pollingoff/{VALUE}"&gt;Turns off polling for a particular node and value&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/node/{NODEID}/pollingoff/{VALUE}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node/{NodeID}/pollingon/{Value}&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/node/{NODEID}/pollingon/{VALUE}"&gt;Turns on polling for a particular node and value&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/node/{NODEID}/pollingon/{VALUE}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nodes&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/nodes"&gt;Gets details of all nodes within the network&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;processrunning&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/processrunning"&gt;Is there a process running which has been started previously&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/processrunning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;processstart/{Process}&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/processstart/{PROCESS}?arguments={ARGUMENTS}"&gt;&lt;a rel="operation" href="help/operations/ProcessStart"&gt;&lt;/a&gt;Start a process on the server&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/processstart/{PROCESS}?arguments={ARGUMENTS}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;processstop&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/processstop"&gt;Stops the currently running process&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/processstop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vlc&lt;/td&gt;
&lt;td title="http://localhost:9087/Niviane/vlc?arguments={ARGUMENTS}"&gt;Starts VLC with specified arguments&lt;/td&gt;
&lt;td&gt;http://localhost:9087/Niviane/vlc?arguments={ARGUMENTS}&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description><pubDate>Sun, 19 Jun 2011 10:06:31 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/niviane-a-rest-json-interface-for-z-wave-home-automation</guid></item><item><title>Configuring Skeinforge and RepRap</title><link>http://www.oliverjenkins.com:80/blog/configuring-skeinforge-and-reprap</link><description>&lt;p&gt;Now I've build my Reprap, I've been playing with extruding PLA.&amp;nbsp; Having tried stabbing at a few random settings, I need to get a bit more methodical with the whole process.&amp;nbsp; Here are a series of links discussing various settings, and configuration steps.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://davedurant.wordpress.com/2010/10/18/configuring-skeinforge-the-4-or-5-big-settings/"&gt;&lt;/a&gt;&lt;a href="http://wiki.makerbot.com/configuring-skeinforge"&gt;http://wiki.makerbot.com/configuring-skeinforge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://davedurant.wordpress.com/2010/10/18/configuring-skeinforge-the-4-or-5-big-settings/"&gt;http://davedurant.wordpress.com/2010/10/18/configuring-skeinforge-the-4-or-5-big-settings/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://forums.reprap.org/read.php?1,65192,65649"&gt;http://forums.reprap.org/read.php?1,65192,65649&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://richrap.blogspot.com/2011/06/skeinforge-version-41.html"&gt;http://richrap.blogspot.com/2011/06/skeinforge-version-41.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mendel-parts.com/new_forum/phpBB3/viewtopic.php?f=37&amp;amp;t=256"&gt;http://www.mendel-parts.com/new_forum/phpBB3/viewtopic.php?f=37&amp;amp;t=256&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Sun, 12 Jun 2011 09:25:16 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/configuring-skeinforge-and-reprap</guid></item><item><title>Handy list of Javascript Links</title><link>http://www.oliverjenkins.com:80/blog/handy-list-of-javascript-links</link><description>&lt;p&gt;I needed a quick method of parsing a date from one format to another. I came across this handy site &lt;a href="http://www.mattkruse.com/javascript/"&gt;http://www.mattkruse.com/javascript/&lt;/a&gt;. I've now used one of the Date functions within our internal sytems.&lt;/p&gt;
&lt;p&gt;Site borrows its design a bit too much from o'Reilly . I also came found a AJAX web site with some interesting interfaces, &lt;a href="http://ajaxian.com"&gt;ajaxian.com&lt;/a&gt; One of the interface methods I like is the floating sort list, off the home page. (&lt;a href="http://www.gregphoto.net/sortable/index.php"&gt;http://www.gregphoto.net/sortable/index.php&lt;/a&gt;)&amp;nbsp;&lt;/p&gt;</description><pubDate>Sat, 16 Apr 2011 16:23:05 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/handy-list-of-javascript-links</guid></item><item><title>Starting with Z-Wave and dot net</title><link>http://www.oliverjenkins.com:80/blog/starting-with-z-wave-and-dot-net</link><description>&lt;p&gt;This is a basic introduction in building a dot net client on top of Open Z-Wave.&amp;nbsp; I'll walk through the process from setting up a network through to the basics of writing a client in c# or vb.net.&lt;/p&gt;
&lt;p&gt;I've a few more &lt;a title="All posts on Z-Wave" href="/Tags/z-wave"&gt;posts on Z-Wave&lt;/a&gt;, so depending on what you're looking for, you might find them more relevant.&lt;/p&gt;
&lt;h2&gt;Introduction to Z-Wave&lt;/h2&gt;
&lt;p&gt;There are three key items needed to begin automating you home with Z-Wave.&amp;nbsp; These are&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Z-Wave controller (Aeon labs Z-Stick etc)&lt;/li&gt;
&lt;li&gt;Number of devices to control e.g. light switch, lamp dimmer&lt;/li&gt;
&lt;li&gt;Open Z-Wave &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once you have the hardware, you need to create the network.&amp;nbsp; The controller needs to be aware of each of the devices within the network and this is done (on the Z-Stick) by holding down the button until the LED starts to flash.&amp;nbsp; Hold the Z-stick near each device then turn on the device.&amp;nbsp; The LED should flash rapidlly to indicate the device has been registerd.&lt;br /&gt;&lt;br /&gt;Once all devices have been added, then press the button on the Z-Stick again to take it out of discovery mode.&lt;/p&gt;
&lt;p&gt;There are plenty of resources out there to help you with this.  A quick search should get you going.&lt;/p&gt;
&lt;p&gt;This video shows a demo of this application&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://www.youtube.com/embed/xkl0MRNfJ2Y" frameborder="0" width="425" height="349"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;h2&gt;Open Z-Wave&lt;/h2&gt;
&lt;p&gt;This is a library that takes care of all the low-level communication needed to control Z-Wave devices.&amp;nbsp; This is a walk through on using it to set up a simple console application that turns on all devices within the network.&lt;/p&gt;
&lt;p&gt;First download the source for the libary from the following URL &lt;a href="http://code.google.com/p/open-zwave/source/checkout"&gt;http://code.google.com/p/open-zwave/source/checkout&lt;/a&gt;.&amp;nbsp; On this machine, I've downloaded it to &lt;br /&gt;&lt;code&gt;C:\Work\Z-Wave\&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To build the library within Visual Studio, then open the solution within the following folder;&lt;br /&gt; &lt;code&gt;C:\Work\Z-Wave\dotnet\build\vs2010&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Once the build is complete, first navigate to the following folder&lt;br /&gt;&lt;code&gt;C:\Work\Z-Wave\dotnet\examples\OZWForm&lt;/code&gt;&lt;br /&gt;Within there should be a file called &lt;em&gt;CopyFilesVS2010.cmd&lt;/em&gt;, running this will put the correct solution files in to the OZWForm directory.&amp;nbsp; This demo application can then be opened in Visual Studio and built.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It is well worth while examining this application to see how everything fits together.&amp;nbsp; However if you want to start with the basics I've taken the basics out of it and written a very simple console application that turns on my lights.&lt;/p&gt;
&lt;h2&gt;Sample dot net Z-Wave application&lt;/h2&gt;
&lt;p&gt;The source for the application is available from: &lt;a href="/media/default/download/StartZWave.zip"&gt;http://www.oliverjenkins.com/media/default/download/StartZWave.zip&lt;/a&gt;.  If you've put the files from above in to a different location to me, then make sure that the configuration variables are set correctly. &lt;em&gt;zWaveConfigPath&lt;/em&gt; is especially important to get right.&lt;/p&gt;
&lt;p&gt;I had a problem with this application, until I added a trailing slash to the value.&lt;/p&gt;
&lt;p&gt;Simply build and run the program.&amp;nbsp; It should fire up and tell you everything which you need to turn on a light using z-wave with dot net.&lt;/p&gt;
&lt;p&gt;Don't worry if it takes a while to initialise.&amp;nbsp; I've waited a minute or so before for this process to complete.&amp;nbsp; Once the set up is complete the light / device is turned on by this line;&lt;br /&gt;&lt;br /&gt;m_manager.SetNodeOn(m_homeId, node.ID);&lt;/p&gt;
&lt;p&gt;Another warning is that on occation the network seems to never initialise.&amp;nbsp; If thats the case, then just re-start the program again.&lt;br /&gt;&lt;br /&gt;Hope this is of use, let me know how you get on.&lt;/p&gt;</description><pubDate>Sat, 16 Apr 2011 16:14:07 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/starting-with-z-wave-and-dot-net</guid></item><item><title>Kinect installed and ready to play with</title><link>http://www.oliverjenkins.com:80/blog/kinect-drivers-installed-and-ready</link><description>&lt;p&gt;Through a few mis-starts with a couple of out of date pages I got the Nite driver installed for the kinect.&lt;/p&gt;
&lt;p&gt;Looking around for an easy to use dot-net solution I came across this page;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.avtex.com/blogs/mhodnick/archive/2011/01/19/basic-cursor-control-with-kinect-hand-tracking-in-wpf.aspx"&gt;http://blogs.avtex.com/blogs/mhodnick/archive/2011/01/19/basic-cursor-control-with-kinect-hand-tracking-in-wpf.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Having compiled the solution I was able to control the mouse point with my hands!&amp;nbsp; Should be straight forward to figure out gesture support and link that with my Z-Wave service.&lt;/p&gt;</description><pubDate>Fri, 08 Apr 2011 13:50:25 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/kinect-drivers-installed-and-ready</guid></item><item><title>Bought a new toy to play with</title><link>http://www.oliverjenkins.com:80/blog/bought-a-new-toy-to-play-with</link><description>&lt;p&gt;Googles April fool joke spawned an interesting hack which show how easily it is to impliment crazy ideas.&amp;nbsp; Having watch the Lady Ada explination and the series of hacks comming out of the XBox Kinect.&amp;nbsp; I went ahead and bought myself one.&lt;/p&gt;
&lt;p&gt;I visited Currys to see what the current price is, I decided against buying one at full retail price.&amp;nbsp; They were looking for one with a game for about 130.&amp;nbsp; Not needing a game (my Xbox has been off for about a year now).&amp;nbsp; I decided against the purchase.&lt;/p&gt;
&lt;p&gt;However today, I happened to take a look at a local pawn shop, and came accross one for a much more reasonable one for 85.&amp;nbsp; So I could'nt&amp;nbsp; really think of a reason for not taking advantage of this bargin.&lt;/p&gt;
&lt;p&gt;What was really nice, was the PFY who served me was actually a bit interested.&amp;nbsp; Although intially he was fishing for an up-sell I soon caught him off guard with the geek side of things.&lt;/p&gt;
&lt;p&gt;"Which version of the X-Box will you be plugging it in to" - said he.&amp;nbsp; I then delivered a monolage on my plans for general hacking, and my ambition to turn it in to a gesture controller for my home automation system.&amp;nbsp; He was impressed by my geek-fu!&amp;nbsp; Although in fareness to him, he did at least have experience with X10, and saw the light about Z-Wave.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I've plenty on at the moment, but if I get to play with this then there could be some interesting uses for it as an interface.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Sun, 03 Apr 2011 15:59:19 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/bought-a-new-toy-to-play-with</guid></item><item><title>Z-Wave in the UK </title><link>http://www.oliverjenkins.com:80/blog/z-wave-in-the-uk</link><description>&lt;p&gt;For the last few months, I have been playing around with automating aspects of my home life.  It started off with a simple script to renew library books.  From there it grew to a simple MP3 player and alarm.  Along the way I built a circuit to control a lamp through USB interface - which although the prototype worked came to nothing.&lt;/p&gt;
&lt;p&gt;Within the last month I have bought and installed a couple of Z-wave light switches.  Four lamp controllers with an aim to really turbo-charge my home automation needs.&lt;/p&gt;
&lt;p&gt;With a few turns of a screwdriver, I have replaced two light switches with Z-wave dimmers, and plugged in two lamps.  All electrics seem to work.&lt;/p&gt;
&lt;p&gt;I currently don't have a control unit, since the company I bought the items from sent me the US Z-wave version rather than the EU Z-wave controller.   However I did get the correct Z-stick USB controller.&lt;/p&gt;
&lt;p&gt;This evening marked a milestone, since I managed for the first time to have a C# programme to control the lighting in my house.  The simple dot net application I have running was able to control three of the four units hooked up.&lt;/p&gt;
&lt;p&gt;How chuffed am I, nothing brings a nerd-gasm like having lights controlled from a dot net application.  Long project ahead, but I'm on track to controlling z-wave lights through dot net.&lt;/p&gt;</description><pubDate>Sun, 20 Jun 2010 21:46:06 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/z-wave-in-the-uk</guid></item><item><title>Claire Lloyd Properties</title><link>http://www.oliverjenkins.com:80/blog/claire-lloyd-properties</link><description>&lt;p&gt;Claire Lloyd Properties are an estate agents in Aylesbury, Buckinghamshire.&lt;/p&gt;
&lt;p&gt;I have just had the unfortunate experience of renting a property through this company.  Despite their boasts of being award winning, I have only one piece of advice.  Stay away from them at all costs.  In my experience of renting they are poor estate agents.&lt;/p&gt;
&lt;p&gt;They consistently failed to assist me, did not listen to my instructions of warning about the property, and broke appointments.   They must be much better estate agents in Aylesbury.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They had a months notice before I wanted to move in to the property.&lt;/li&gt;
&lt;li&gt;When I was travelling to pick up the keys they told me the property might not be ready - Safety Certificates hadn't been applied.&lt;/li&gt;
&lt;li&gt;I was left waiting an hour outside the place waiting for the checking in clerk to arrive.&lt;/li&gt;
&lt;li&gt;The clerk had gone AWOL so we had to have somebody else to take me through the process.&lt;/li&gt;
&lt;li&gt;A large number of problems with the inventory were missed including stains in the bathroom and scratches on work services.&lt;/li&gt;
&lt;li&gt;My copy of the inventory took three months to arrive&lt;/li&gt;
&lt;li&gt;A Bees nest was found under the kitchen window.  I spoke to members of staff about it on three different occasions, and it was never removed.&lt;/li&gt;
&lt;li&gt;A member of staff wanted to inspect the property mid-tenancy, I cut short a holiday to make the appointment.  I was again left waiting outside.  When I called the office I was quickly given the excuse that she was going to call me, but couldn't find my file.  Apparently her car would not start and she couldn't make the appointment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I've just received my check-out details.  All the changes we made to the inventory have been ignored.  I have the feeling they are going to rob me of my deposit now.&lt;/p&gt;
&lt;p&gt;There are plenty of estate agents around Aylesbury, I would suggest that you go to the others first.  I would not recommend anybody use this estate agent.&lt;/p&gt;
&lt;p&gt;Is may be just my experience but Claire Lloyd Properties are rubbish.&lt;/p&gt;</description><pubDate>Tue, 18 Dec 2007 10:43:54 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/claire-lloyd-properties</guid></item><item><title>Crap phone companies and Holidays</title><link>http://www.oliverjenkins.com:80/blog/crap-phone-companies-and-holidays</link><description>&lt;p&gt;I've taken the following quote from CAB (Citizens advice Bureau) at &lt;a&gt;http://www.horshamcab.org.uk/holidays.htm&lt;/a&gt;.  Its worth reading it through as well as the other documents.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3&gt;When and how can I take holidays&lt;/h3&gt;
&lt;p&gt;Can you choose when or how much holiday to take or can an employer dictate when or how much holiday can be taken&lt;/p&gt;
&lt;p&gt;You may ask to take any leave to which you are entitled by statute when you choose, provided you give your employer the correct notice and takes into account the terms of any relevant agreement. However, your employer has a right to refuse a request, provided the employer gives the correct notice and takes account of the terms of any relevant agreement.&lt;/p&gt;
&lt;p&gt;Your employer can require you to take all or any of the holiday that you are entitled to at a specific time, provided that you are given the correct prior notice and the employer takes into account the terms of any relevant agreement.&lt;/p&gt;
&lt;p&gt;The Working Time Regulations do not put any limit on the amount of holiday that can be taken at any one time. This means that there is no entitlement to take two weeks of holiday off at once, unless the relevant agreement or employment contract allows for it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Read the section in the sections &lt;q&gt;When can you take holiday&lt;/q&gt; and &lt;q&gt;Your employer refuses to let you take holiday&lt;/q&gt; in this &lt;a href="http://www.adviceguide.org.uk/e_holidays_and_holiday_pay.pdf"&gt;pdf document &lt;/a&gt;.  Its taken from   another CAB website - &lt;a href="http://www.adviceguide.org.uk/"&gt;http://www.adviceguide.org.uk/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3&gt;Your employer refuses to let you take holiday&lt;/h3&gt;
&lt;p&gt;If your employer refuses to let you take holiday when you have given theproper notice, you could:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;try to get a written statement of the terms and conditions in yourcontract of employment. All employees have a right to this, and itshould include details of your entitlement to paid holiday&lt;/li&gt;
&lt;li&gt;talk to your employer and try and reach an agreement which isacceptable to both of you&lt;/li&gt;
&lt;li&gt;get help to do this from a trade union representative, if you have one,or from an experienced adviser (see below) &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems to come down to you can take holiday, so long as you give proper notice, and you've not signed a contract that's has given those rights away.&lt;/p&gt;
&lt;p&gt;For more resources look try this search in google &lt;a href="http://www.google.co.uk/search?q=refuse+holiday+given+notice"&gt;refuse holiday given notice&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Realise that what they are doing breaks the spirit of good employer/employee relations&lt;/li&gt;
&lt;li&gt;Check your contact and contact Citizens advise Bureau&lt;/li&gt;
&lt;li&gt;Speak to your line-manager and explain why you want christmas off.&lt;/li&gt;
&lt;li&gt;Explain to him/her that you have taken professional advice.&lt;/li&gt;
&lt;li&gt;Show them the documents and explain that you wish to take matters further.&lt;/li&gt;
&lt;li&gt;Organise other staff members that feel the same way.&lt;/li&gt;
&lt;li&gt;Contact your union representative.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Remember this all depends on the fact that you have not signed a contract that says "I will work xmas if asked". &lt;/strong&gt;. If you have then its game over from the start. First have it checked and contact CAB&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%" valign="top"&gt;&lt;strong&gt;Plymouth Citizens Advice Bureau&lt;/strong&gt;
&lt;p&gt;2nd Floor, &lt;br /&gt;Cobourg House&lt;br /&gt;32 Mayflower Street &lt;br /&gt;PLYMOUTH&lt;br /&gt;Devon&lt;br /&gt;PL1 1QX&lt;/p&gt;
&lt;/td&gt;
&lt;td width="50%" valign="top"&gt;&lt;br /&gt; 
&lt;table border="0" cellspacing="2" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Telephone:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;0870 1264011&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Fax:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;01752 253928&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Email:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="mailto:advice@plymouthcab.org.uk" target="_blank"&gt;advice@plymouthcab.org.uk&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Web site:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://www.plymouthcab.org.uk" target="_blank"&gt;www.plymouthcab.org.uk&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Map:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://www.citizensadvice.org.uk/bureaumap.htm?pc=PL1+1QX" target="map"&gt;Link to map&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description><pubDate>Mon, 10 Dec 2007 21:17:06 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/crap-phone-companies-and-holidays</guid></item><item><title>What follows the golf?</title><link>http://www.oliverjenkins.com:80/blog/what-follows-the-golf</link><description>&lt;p&gt;The prototype car featured a distinctive wedge shape and took many styling cues from contemporary power-boat design&lt;/p&gt;
&lt;p&gt;One motoring review of the car after a 12,000 mile (19,000 km) test consisted simply of three words: "A baby Ferrari".&lt;/p&gt;
&lt;p&gt;
&lt;object width="425" height="355"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/tHJomEbMY8k&amp;amp;rel=1" /&gt;
&lt;param name="wmode" value="transparent" /&gt;&lt;embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/tHJomEbMY8k&amp;amp;rel=1"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;object width="425" height="355"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/Oq_b_VZH0oc&amp;amp;rel=1" /&gt;
&lt;param name="wmode" value="transparent" /&gt;&lt;embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/Oq_b_VZH0oc&amp;amp;rel=1"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Fiat_X1/9"&gt;http://en.wikipedia.org/wiki/Fiat_X1/9&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, if you sneezed on it though it would rust.  I know I had to bleed the clutch every week.  One of those cars where what worked was a bonus.  Despite all this though, every time I got in old Silvia, it felt like the following to me.&lt;/p&gt;
&lt;p&gt;
&lt;object width="425" height="355"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/_z8aLdIejPs&amp;amp;rel=1" /&gt;
&lt;param name="wmode" value="transparent" /&gt;&lt;embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/_z8aLdIejPs&amp;amp;rel=1"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;</description><pubDate>Wed, 28 Nov 2007 23:55:36 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/what-follows-the-golf</guid></item><item><title>More tea please</title><link>http://www.oliverjenkins.com:80/blog/more-tea-please</link><description>&lt;p&gt;Just been playing with a &lt;a href="http://www.my-cause.com"&gt;online petition&lt;/a&gt; web site.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.my-cause.com/more_tea_please/lrg"&gt;&lt;img title="more tea please" src="http://www.my-cause.com/more_tea_please/largebadge.jpg" border="0" alt="more tea please" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want sign up to drinking more tea!&lt;/p&gt;</description><pubDate>Mon, 25 Jun 2007 21:39:14 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/more-tea-please</guid></item><item><title>Nearly wrecked the site</title><link>http://www.oliverjenkins.com:80/blog/nearly-wrecked-the-site</link><description>&lt;p&gt;Just trying to clean up the site, I deleted the wrong datbase by mistake.  Luckilly I don't update too often and had a backup from several a couple of posts ago.  The last two posts we're carefully liften from Googles cache (&lt;a href="http://www.google.com?q=site:oliverjenkins.com"&gt;site:oliverjenkins.com&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;One of the upshots is that the Javascript bits I've put up have been mangled in the process.  Will try to fix when I take a review of the site.&lt;/p&gt;
&lt;p&gt;I kind of lost interest with the eye-tracking project.  Although the videos of my eye I made did end up being projected on massive screens curtesy of my mate &lt;a rel="no-follow" href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;amp;friendid=2346919"&gt;Dirty Henry (V.J)&lt;/a&gt;, including Big Chill.&lt;/p&gt;
&lt;p&gt;Been playing around with a bit more computer vision and image processing techniques.  Found this &lt;a href="http://cgm.cs.mcgill.ca/~orm/rotcal.html"&gt;paper&lt;/a&gt; that would offer the solution to cluster analysis in the eye tracking project.&lt;/p&gt;
&lt;p&gt;Trying to tie alot of skills together at the moment with a little side project.  Trying to build up the funds for the hardware and tools needed.  I don't want to disclose too much until things start to move on a bit.&lt;/p&gt;</description><pubDate>Thu, 16 Nov 2006 20:08:22 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/nearly-wrecked-the-site</guid></item><item><title>Eye tracking with PS2 EyeToy</title><link>http://www.oliverjenkins.com:80/blog/eye-tracking-with-ps2-eyetoy</link><description>&lt;p&gt;Grabs and tests of identifying the location of the pupil using a IR web cam.  This is work in progress, I&lt;/p&gt;
&lt;p&gt;I am using a custom filter based on the following tutorial http://www.codeproject.com/cs/media/Motion_Detection.asp&lt;/p&gt;
&lt;p&gt;Since the motion tracking methods produces too many errors -  reflection off the eye itself causes the library to detect motion across the eye, I am attempting to location the pupil on a frame by frame basis. Also the pupil can move faster than the software can pick up.&lt;/p&gt;
&lt;p&gt;I think I need to add a IR Led to have a constant light source, at the moment the camera is using ambient levels of IR and thus the success is dependant on time of day, weather etc&lt;/p&gt;
&lt;p&gt;The approach I am working on will requires an analysis of the points detected to find the area with the highest/density or even circular in shape.&lt;/p&gt;
&lt;h2&gt;Headset&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://oliverjenkins.com/images/Headset.jpg" alt="" /&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2&gt;Headset in use&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://oliverjenkins.com/images/Headset_InUse.jpg" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Eye Capture&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://oliverjenkins.com/images/EyeCam_Capture1.jpg" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Motion Tracking - Threshold Based (inconsistant)&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://oliverjenkins.com/images/EyeCam_Capture2.jpg" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Motion Tracking - Threshold Based (problems with multiple objects)&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://oliverjenkins.com/images/EyeCam_Capture3.jpg" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Motion Tracking - Threshold Based (raw output)&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://oliverjenkins.com/images/EyeCam_Capture4.jpg" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Motion Tracking - Floyd-Steinberg Binarization (need cluster analysis)&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://oliverjenkins.com/images/EyeCam_Capture5.jpg" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Test Video - Google managed to mangle to quality somewhat&lt;/h2&gt;
&lt;p&gt;&lt;embed quality="best" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-4812721875484031922" align="middle"&gt;&lt;/embed&gt;&lt;/p&gt;</description><pubDate>Thu, 16 Nov 2006 19:54:24 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/eye-tracking-with-ps2-eyetoy</guid></item><item><title>Converting a PS2 Eye-Toy to Infra-red</title><link>http://www.oliverjenkins.com:80/blog/converting-a-ps2-eye-toy-to-infra-red</link><description>&lt;p&gt;A couple of weekends ago I felt like hacking some hardware.  I had seen a series of tutorials online about converting a regular web cam to work with the Infra-Red spectrum and thought I'd give it ago.  If you haven't seen the guides they can easily be found through your favourite search engine.&lt;/p&gt;
&lt;p&gt;The nature of the hack is quite simple.  The CMOS (image sensor) within the web cam is sensitive to a wide frequency of colours and the manufactures of web cams use a simple filter to block infra-red light and allow through the visible (coloured) spectrum of light.  By replacing the filter with one that blocks visible light and lets through Infra-Red we have converted the Web-Cam to one that captures Infra-Red.  It appears that most web-cams lent themselves to this trick - so just grab one at random and give it a go.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;I managed to find a web-cam by making a trip to my local second-hand/games exchange shop.  On sale was a second-hand Eye-Toy for &amp;Acirc;&amp;pound;9.  I knew how to set up the Eye-Toy on the PC, but if you don't you can &lt;a href="http://www.kurve.com.au/sairuk/eyetoy/" target="_blank"&gt;read these instructions.&lt;/a&gt; These web-cams are of a surprisingly high quality, and I'd recommend them as for a second hand camera, you won't find a cheaper on to play with.&lt;/p&gt;
&lt;p&gt;Apart from a web cam, you will need a black part of a negative, some Super-glue and some simple tools.&lt;/p&gt;
&lt;p&gt;We will use the black part of a negative to act as a visible light filter.  I didn't have any negatives to hand so I went to my local Snapy-Snaps and just asked for a part from the start of the film.&lt;/p&gt;
&lt;h2&gt;Converting the camera&lt;/h2&gt;
&lt;h3&gt;Step 1 - Take off all the casing.&lt;/h3&gt;
&lt;p&gt;Just use a small Philips screwdriver to get the bottom half of the case off.&lt;img id="image44" class="InstructionImage" src="http://oliverjenkins.com/wp-content/uploads/2006/07/EyeToy_Bottom1.jpg" alt="EyeToy_Bottom1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Step 2 - Pull off the focus adjusting wheel&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To do this just push in one of the clips that hold it in place.  The ring should just snap out.&lt;img id="image47" class="InstructionImage" src="http://oliverjenkins.com/wp-content/uploads/2006/07/FocusRing.jpg" alt="FocusRing.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Step 3 - Take off the Lens assembly&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Just unscrew the unit, as if adjusting the focus of the camera.  Gradually it will move away from the circuit board and come loose.&lt;img id="image42" class="InstructionImage" src="http://oliverjenkins.com/wp-content/uploads/2006/07/CircuitBoard.jpg" alt="CircuitBoard.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Step 4 - Take off the filter cap&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you angle the lens assembly whilst looking at the rear of the unit you should see the Infra-Red filter glint red.  We need to replace this.  Just after the last of the thread, you should see a small split line, carefully put a scalpel in this line and pop-off the thin cap that holds the lens in place.&lt;img id="image49" class="InstructionImage" src="http://oliverjenkins.com/wp-content/uploads/2006/07/LensAssembly.jpg" alt="LensAssembly.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Step 5 - Replace the filter&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Take out the small square of glass that is in the lens assembly and cut out some negative the same size.  Put this negative back where the filter was, and glue down the filter cap.  Super glue will end up covering the lens if your not careful and destroy the whole camera.  The best advice is to apply the glue with a match to bottom of each of the lugs found on the filter cap.&lt;img id="image46" class="InstructionImage" src="http://oliverjenkins.com/wp-content/uploads/2006/07/FilterAndLens.jpg" alt="FilterAndLens.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Step 6 - Put the whole thing back together&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hopefully you've not lost any screws!&lt;img id="image45" class="InstructionImage" src="http://oliverjenkins.com/wp-content/uploads/2006/07/EyeToy_Disassembled.jpg" alt="EyeToy_Disassembled.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Testing the Camera&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The camera is now set up for Infra Red, it will appear in black and white through your computer.  A quick test is to use any remote control to view the LED show up.&lt;img id="image48" class="InstructionImage" src="http://oliverjenkins.com/wp-content/uploads/2006/07/InfraRed.jpg" alt="InfraRed.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Thu, 16 Nov 2006 19:51:05 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/converting-a-ps2-eye-toy-to-infra-red</guid></item><item><title>Stop unsolicited phone calls</title><link>http://www.oliverjenkins.com:80/blog/stop-unsolicited-phone-calls</link><description>&lt;p&gt;To stop those calls from companies who call you up to try to sell you something, you can try register your phone number with the &lt;a href="http://www.tpsonline.org.uk/tps/" target="_new"&gt;Telephone Preference Service (TPS)&lt;/a&gt;. Registration is &lt;strong&gt;free&lt;/strong&gt;, so its worth a shot. By law all companies must screen their numbers against this opt out list.&lt;/p&gt;
&lt;p&gt;As they describe themselves&lt;/p&gt;
&lt;blockquote&gt;"The Telephone Preference Service (TPS) is a central opt out register whereby individuals can register their wish not to receive unsolicited sales and marketing telephone calls. It is a legal requirement that companies do not make such calls to numbers registered on the TPS."&lt;/blockquote&gt;
&lt;p&gt;Wether or not this stops companies from wasting my time, remains to be seen.  However if any company does ring me now, I'm going after the &amp;Acirc;&amp;pound;50,000 bounty  - &lt;q&gt;&lt;a href="http://www.dti.gov.uk/news/newsarticle011105.html" target="_new"&gt;COMPANIES that plague consumers with nuisance silent calls will face fines of up to &amp;Acirc;&amp;pound;50,000&lt;/a&gt;&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;To help make it a little easier, &lt;a href="https://secure.dma.org.uk/cgi-bin/session.pl?reg_option=tps" target="_new"&gt;here is a link that takes you straight to the opt-out process.&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 27 Mar 2006 20:29:42 GMT</pubDate><guid isPermaLink="true">http://www.oliverjenkins.com:80/blog/stop-unsolicited-phone-calls</guid></item></channel></rss>
