Wednesday, 24 December 2014

IP Camera

Wednesday 24th December 2014

There are now lots of IP cameras out there, but I'm not impressed, colours are at best 'suspect', Audio out OR Audio in and cheapest is about £30, I think I can do better.

For a development platform I am using Arduino Due, nice fast ARM processor. Bought from Bangood.com for £8.

First I wanted memory card, mmc quite often comes with a free converter, got a few kicking about, got a few 16GB mmc kicking about. I wired 1 of the converters up to Due, few wires, bit of solder, capacitor. Used standard Arduino Cardinfo example software, got it working :-)
Ok, so that was basically free and quick.

Now I discovered ESP8266, ace module, £2 from EBay. Module is 3.3v, Due is 3.3V, wired it up.
Modified code using info off Internet (good old Google).
Needed more power than USB could supply, plugged in a USB mains plug (£1 from Ebay), cured that.
Works rather well, set it up as a web server, 2 pages (config & index), can see both pages on PC and phone browsers, some things I don't understand with requests for favourites icon.
Modified so I can have debug statements over serial to PC or not (DBG flag). Turned off serial.
I now have a stand-alone Wifi web server :-)

rigged up Arduino Due
Programming port goes to PC USB for programming and debug.
Power connector goes to USB main plug.
SDIO block and orange wire connected to SDCard
Brown/blue and green/white twisted pairs go to ESP8266
The rigged up SDCard
The rigged up ESP8266 module

That is current 'state of play', what's next?

I have an Omnivision OV2640 2MP camera module, I now need to rig that up and get it working with the Due, this is a bit more tricky, camera is on a flexi with 25 pins 0.5 mm pitch.
I think I'm going to have to make a PCB for this one.

Basic plan is to get it all running on Due, I'll then know how it all needs to work. Then maybe I can get it all working with ESP8266 acting as main processor (remove the Due). I'll then have a really small, fully functioning IP Camera for around £5.
I'll update this post as I progress.

17-01-2015
PCB was a pain, I got the mmC mirrored, I got the camera mirrored, took me 4 attempts, I only bought 2 1.3V LDO, 1 broke, 1 lost, awaiting delivery. Rest of the PCB is working, pictures:
 

Left is the bare PCB, etched drilled and trimmed. Right is the loaded PCB attached to Due.
Getting there, bit slower than I'd like, but steady.

31-01-2015
This has not been as easy as I hoped.
Latest revision of PCB. Note the Micro Memory Card holder on top right. 3D printed guide in clear PLA. Almost everything is working using an Arduino sketch. Reading and writing happily from mmC, fully active on Wifi with ESP8266, control and see results over standard USB serial, I have a simple web server running on Wifi, I can happily browse on PC or phone. Currently concentrating on camera.
OV2640 is not easy, got datasheet, could not get it running with just that, it seems like you have enough information, but when you try to use it you don't get expected results. Found the OV2640 application note, now a bit clearer, there are lots of register sequences, nearly 90% of them are writes to 'Reserved' registers. But using a recommended sequence and capturing VREF signals via interrupt and incrementing counter, I can see it is streaming. So basic control is running, it is streaming, but I need to capture the frames. Sketch is a mess, not sure Arduino is up to the task.
I tried switching to Atmel Studio 6, struggling to get the easy stuff going. SD card is supported, but not for Due and docs are not got enough to easily modify for Due.
Currently thinking, either crack on with Atmel Studio 6, or back to Arduino and tidy it up by moving the OV2640 into some kind of lib.

Can the Due handle image capture? A lot of data coming dead quick. I'll try with pure interrupts (save byte per PCCLK (Pixel clock) gated with VREF, I was thinking DMA, but I'm not convinced that it can be done, I have heard that GPIO registers are memory mapped, I have data coming in on Port C low byte, so it may be feasible to DMA bytes from single address (Port C) gated by PCCLK to RAM buffer, but I have found no details on setting up DMA on Due or SAM3X in this configuration.
I will crack it.

01/02/2015
Need to expand on 'A lot of data coming dead quick'. OV2640 is a '2 Mega Pixel' camera. 2MP camera is usual for low end phones, high end phones have 5MP, some go to 8MP. Digital Cameras are usually 12 to 20 MP. Lets not discuss Nokia 41 MP. So 2 MP on the face of it is not very big.
I put '2 Mega Pixel' on purpose, maximum capture on OV2640 is UXGA = 1600x1200 pixels. Do the math 1600x1200=1,920,000 (not quite 2,000,000) though in raw mode there are extra pixels around border for interpolation. But that is pixels, not bytes, so we need to think of formats, typical RGB565, YUV422 are 16 bits (2 bytes) per pixel, so in those cases 3,840,000 bytes per frame. Now we need to think about frame speed (Frames Per Second - FPS). Normal video / viewfinder is 15 fps, though some do go to 30 fps.
So 15 fps UXGA = 3,840,000 * 15 = 57,600,000 bytes per second = 'A lot of data coming dead quick'.
Ok, I've reduced that by a ton, getting QVGA (320x240), I've now tried interrupts, I think the data is valid (but difficult to be sure), but I am not getting full frames, I really don't think Due can handle it.

How do phones do it, they are ARM based? I know Nokia, it isn't easy. Nokia had big problems, it was OK putting camera into first phone, it was high end, that means relatively low production, low sales. Putting it into low end phones = high volume, low cost, no single camera module manufacturer can handle producing the quantity of camera modules needed for a single low end phone. So Nokia and ST collaborated to produce the 'SMIA' (Standard Mobile Imaging Archecture) set of specifications. This means Nokia can buy SMIA compliant camera modules from a number of manufacturers and include in a phone.
Camera control is relatively low speed bi-directional handling 8 bit registers in phone, in almost all camera modules (including SMIA) this is based upon I2C (IIC, Inter Integrated-circuit Communications), I say 'based upon' as it is usually simplified, can't handle high speeds, changing speeds etc. There is usually no problem with controlling a camera.
For some unknown reason (maybe to do with language), the SMIA image data out port is called CCP (Camera Control Port, which it is NOT), the CCP port is special, it is very high speed sub-LVDS serial. It can be 2 wire (original) or these days single clock with multiple data lines, but in all cases it is fewer wires than parallel. It is sub-LVDS to make it ultra low noise to stop it interfering with phone RF (blocked channels). All Nokia chipsets have a special CCP input port block, the block includes the sub-LVDS pads and handles serial to parallel conversion as well as including a buffer, the ONLY way to get data out of this block is DMA. The size of the buffer was always a problem and always got increased in size for each chip revision.
If we were allowed to know (which we aren't), I believe you will find that the Broadcom processor built into the Raspberry Pi is actually an old obsolete design created for Nokia. It includes the CCP port block, it also includes the Broadcom Image pipeline. SMIA data comes from Camera Module over sub-LVDS to Nokia CCP block, it goes from CCP Block over DMA to Image pipeline, it then goes via DMA to RAM.
Almost all camera modules are either SMIA or can be SMIA, you are not allowed to use/view SMIA specifications unless you are a member of the MIPI alliance, you can't issue SMIA details (including data sheets that include SMIA details) unless you request an NDA. This is why it is so damned difficult to get information on camera modules. I was 'host software' support engineer during SMIA specification creation. Blame SMIA, MIPI, Nokia or me for the fact that you can't get camera module information!

There are things I can still try:
1) Simplify Pixel clock interrupt handler, make it more efficient, ditch range checking.
2) Switch to JPEG format for frames, compresses to 1 bit per pixel, if it is possible for lower size frames.
3) DMA from camera to RAM (some how).
4) External camera data receive / buffer (ArduCam uses a special chip).

1 & 2)
volatile int FrameCnt = 0; 

void CamCapture()
{
  FrameCnt++;
  //if (FrameCnt < MAX_FRAME)
  //  FrameBuf[FrameCnt++] = (byte)(REG_PIOC_PDSR & 0xff);
}

not completely repeatable, but maybe close enough, but it's not doing anything.
It I use long instead of int then it goes out the window.
For QCIF (176x144 lowest) in RGB565 I get 28170 bytes (28169 to 28173 over 10 attempts)
For QCIF in JPEG it's around 3560 bytes, but then JPEG will not be consistent.

Ok, Interrupt no good, try DMA
Spent most of today looking at DMA, the Due does not allow DMA source trigger from GPIO, only from in-built peripheral triggers.

That just leaves option 4, maybe a PIC?
This would actually be the best solution. I want something simple but fast. Clocks in parallel data synchronized with external trigger put into on board RAM. Fast SPI slave interface to allow RAM to be read. How hard can it be?
Why is it the best solution? It would work with Arduino Due or stand alone ESP8266.

2/2/2015
Examined camera pins with scope.
VSync is not pulsing high at start and end of frame, it goes high before start, goes low after end.
Major problem is Pixel Clk, it has really nasty 50 Hz hum hiding data. Should have checked this earlier, gone over HW App Notes and SW App Notes. HW notes say that if using a single supply for DOVDD and AVDD (as I am doing) then they should be seperated by RC filter which I have not done :-(
I'll revisit circuit (again) and see if I can cure it.
Then I can retry the interrupt capture.

14/2/2015
I fixed the problem, camera was being supplied with 12 MHz clock, settings were for 24 MHz clock. Altering settings to match clock fixed the weirdness.
Then I finally admitted defeat, Due DMA can not be used to capture frame bytes and Interrupt handling is too slow, if I slow it down enough that Due can handle it then image speed will be pointless. Even if I accept really low frame rates, there is not enough RAM in Due to hold a decent frame size.
Basically, Due attempt was pointless except as a learning exercise.

So, I need something more designed to handle camera. My current favorite is STM32F407VGT6TR, it is 14x14 LQFP with 100 pins, so I should be able to create a PCB for it. It has a purpose built Camera Interface that will connect to OV2640 and it has high speed SDCard Interface. I think I can program it to DMA frames from camera direct to SD Card. It costs a bit more than I wanted at just under £7. There is a dev platform with the chip called STM32F4DISCOVERY for £12, bought one.
It seems quite hard to set this up with any IDE that doesn't cost a fortune to license, but I'm looking into it.



Saturday, 22 November 2014

Katy Perry Action Figure

27/09/2011 (Saturday):
Another request from Daughter.

This is actually the most complex design I've ever done.

Found open source program MakeHuman, fabulous, allows you to create a human body.
So, I spent ages creating a figure that matches Katy Perry as close as I can get.
I discovered a few quirks, basic body works wonderfully, but add hair, teeth or any extras at all and the exported STL seems broken, or I don't know what I'm doing, which is probably nearer the truth.
But now I have figure :-)

I've heard of Oogoo, home made rubber. Wickes All Purpose Sealant (silicon) + Corn Flour.
I mix in batches, 3 tablespoons of silicon, add a little Humbrol Enamel matt 61 (flesh), mix together, add 2 tablespoons of Corn Flour, mix together. Gives rubber that makes a great skin.

So, import figure into OpenSCAD, turn it into moulds (for Oogoo) and create a skeleton.
First thing I tried was head, worked ok (colour needs work):
Got colour correct (humbrol), remade head. It's hollow, but need hair. Found nylon hair on Halloween hat and hair grips, spent ages threading hair into head using darning needle. Had to flatten it with clothes iron, but getting there:
I've managed to fill bubbles in chin and forehead with more Oogoo. Next problem is painting eyes, lips, eyebrows, eyelashes. Nothing sticks to Oogoo except more Oogoo! Mixing paint into silicon works, but a pig to paint on, it's so thick, tried using Xylene paint thinners, doesn't work. I'll have to use the thick stuff.
Best I can do (mostly Stabilo permanent pens):


Spent ages trying to get pose-able fingers, failed, but it'll do for now, will create whole Manikin, then revisit. Skeleton arm hinge not in correct place, need to adjust. Skeleton fingers pose well, but can't hold against pull of rubber and skeleton fingers too wide to allow Oogoo flow around sides. Wrist works really well, quite freaky.

Put head and failed arms onto full skeleton. Skeleton is NOT firm enough, joints too loose, won't stand up under weight of those few bits. Tried using Oogoo to wrap joints to strengthen and hold joint together, no good, Oogoo does not stick to PLA. Tried wrapping joints with PVC tape, didn't make much difference.

ABS maybe better? Is more elastic, I think it's more abrasive.
I'm going to re-print whole skeleton in ABS and see. I'll try wrapping in Oogoo, see if it sticks. Probably try embedding copper wire into fingers (with hot knife) to strengthen. May try putting thin skin in moulds and letting set before adding skeleton and final Oogoo so that skeleton is not too close to surface. Will try putting Oogoo into joints during assembly (rubberise joints).
Lots of ideas, some of them have to work.

 
ABS was no better at all, dismal failure, not so hard as PLA, so not as good on joints, Oogoo doesn't stick to ABS either. Embedding seemed to work, but ABS doesn't stick to copper either. Plus ABS warps far worse than PLA. Thin Oogoo skin seems good in arm moulds, but no skeleton to go in it!
Back to PLA, re-print the lot, embed wires into PLA hands, try hot gun glue in joints (like Dexter).

Eureka!
PLA arms, hot glue on mating surfaces of all joints during assembly, kept hands (shown above) with embedded wires, but covered fingers in thin layer of hot glue. Nice, tight, stiff and strong.
PLA body skeleton printing, assemble same way, should be perfect, then on with skin.
Not sure I should publish pictures of final result, may be too realistic, nudity may offend. Perhaps make it some undies.

29/11/2014 (Saturday):

Cool, now looking at 16 inch tall nude woman!
Joining sections together in oogoo was tricky, bubbles are a pain, just gave her a massage down back side smoothing over with extra oogoo, Wait until it sets then I'll do front. May actually get it finished this week-end.

30/11/2014 (Sunday):

 

In cold light of day, decided "Nah, crap, 1 out of 10, could do better".
I can't fix the joins (well, not without a lot of messing).
It doesn't bend at joints as I wanted.
Middle sections are too squashy.
Facial details added with stabilo pens have bled into Oogoo, gives a quite pleasant eye make-up type look on lashes / brows, but eyes are horrid and lips aren't so good.

Head Mould:
Re-visit head, make face side very shallow (or separate face section), add hemi-spherical eye sockets. Make longer neck overlap.
Print eye balls, paint white then insert. make red oogoo lips and place before rest of Oogoo, same with brows. Only do lashes with stabilo. Paint irises last.
This time I'll do hair thinner.

Main Mould:
Keep torso, hip and leg moulds as is.
New separate moulds for hands.
New separate moulds for arms that will mate with torso and mate with hands.
New separate neck/head brace.
Use hot glue to join together torso, hip, leg, arms and neck/head brace as top and bottom sections.

Skeleton:
Wrists good, ankles good.
Increase size of knees and elbows. Increase thickness of bones. Increase size of hips and other joints.
Figure out hands.
Make rib, tummy and hip cages.

Assembly:
thin layer of Oogoo is plan, do both sides, let set. Once set add skeleton, then join together with Oogoo.

This may work.

Spiderman action figure.

Daughter asked for this.
There is a fabulous action figure on Thingiverse called Dexter, so I made one and added a costume:

 

 

Kids Night Lights

Created loads of designs, kids have 4 each here and 4 each at home, my mate Jim has 1 for his grand Daughter, my work mate has 1 for his daughter, my Son's GF's nephew has 1.
It started with my Daughter, "Can you make a moon light light?":
Next "Can you make a Mickey night light?":

Then "How about a shooting star?":
Next "Can I have a Spiderman?", "Can I have a Buzz Lightyear?":
 

Next was "Can I have Pepper Pig?", "Can I have Elsa from Frozen?". This time I created a standard night light that I could put pictures on to:
 

Of course, now I can make them easily, I got no more requests.








Still no further with Jack Door, but lots of other things created.

Thursday, 26 June 2014

Stuff

Jack Door still not finished. RFID reader is not good enough, max range about 2 inches max. Found a pre-built reader and 35 mm circular tags that are supposed to manage 4 inches, need to test.

Got knocked of my bike on way to work on Tuesday 10th June 2014. Static queue between me and right hand lane I needed. Chose nice large gap, was on the way through when car decided to close gap! Her front bumper hit my right ankle, knocked me over, drove up to my knee. I pulled myself out from under the bike, picked it up, started it up all whilst giving the young blonde driver a piece of my mind, then rode on to work. An hour later my leg not feeling so great, went home, long hot bath, 2 days off work, still painful and limping now.
I should have been staring into the Blondes eyes, would have seen she was playing with her phone, could have avoided it. I should have taken her details. But I didn't.
So, I've created a camera that attaches to my helmet, next time I will be prepared. For details, see here:
http://www.thingiverse.com/thing:372439

Also published a few other minor bits and bobs on Thingiverse:
Kiddies Night Light: http://www.thingiverse.com/thing:267662



Updated metric threads: http://www.thingiverse.com/thing:311031
Customizer version: http://www.thingiverse.com/thing:311919
Glasses case: http://www.thingiverse.com/thing:311976

Customizer version of Raspberyy Pi case: http://www.thingiverse.com/thing:313811
Hermesetas cap (stops em filling my pocket): http://www.thingiverse.com/thing:315102
Customizer Ashtray: http://www.thingiverse.com/thing:316440
Couple of Remote Holsters: http://www.thingiverse.com/thing:345945 http://www.thingiverse.com/thing:345952


My Dad was very much into Cine Camera, he created hours of Cine Film that spans between 1960 to 1987. Previously I transferred this to DVD. It wasn't really a great success, I bought a video camera, ran all the Cine and Video taped it, then transferred to PC and edited. I did it all in as high definition as I could, Cine had no sound, so added sound track of all the UK Top 20 at the actual time of the Cine.
Got it all completed and only then discovered that I could not convert from high definition to lower, so I was stuck with a set of 11 DVDs, made 2 copies, gave 1 to Dad, 1 to Sister.
2nd Sister recently asked for a copy, technology moved forward, now I can reduce, gave her a set of 2 DVD with everything on. Whilst at it, I transferred to Dropbox and published it to the whole family.
Appeals to my sense of humour, ancient 1960 Cine film hosted on very latest Cloud :-)



Tuesday, 1 April 2014

Jack Door

Monday 31st March 2014
See Introduction for pictures.

So, I have most of the Jack Door working, bit I am totally unsure of is RF ID Reader. I created the board based upon U2270 RF ID Reader chip and all the documents I could find on it.
Docs are not that good, or I'm not good enough to read them properly, too much theory, not enough practical for me. So I winged it (as usual in such cases). First attempt at making PCB was a disaster, but 2nd attempt good. Then I had to move Computer and printer into Garage while Grand Children had an extended stay. Somewhere on the way, I mislaid my test RF ID Pet tag (bought from local vet). Found this week-end.

Ok, so I put it off for a while then plugged it all together and powered it up. Lots of teething troubles, lots of re-reading specs. But eventually it was doing something. Son bought a DS203 pocket Oscilloscope some time back. Attached that, voltage pp was 30V, nice, but frequency was way off, I needed 134.2 kHz, calculated as 7.45 uS wavelength, I could adjust down to 11.4 uS before signal started to collapse. Re-visited wound Ariel (roughly 30 turns from memory), removed 1 turn, wave length lower, ended up removing about 12 turns before the frequency was low enough to adjust.
Now put scope onto output, looked like nothing but noise, played lots with software and scope before I got break through tonight. Putting tag within 2 inches of Ariel, I got close wave form, removed it, got wide wave form. Damned thing is actually working :-) Dead chuffed.
Ok, so range is bad, I'd like at least 1 metre, but 2 inches will do for development, get the thing reading, then I can do repeat reads and tune PCB properly.
The rest of tonight I spent capturing output signal and trying to decode into FDX-B format. That I now have, I am happily reading the test tag :-)
Next step is to modify software, I want to keep the reader so that I can use it to read Jack's chip, but I also want it to run as standard, power up Rf ID board, read chip, good or bad flag, power down. Rinse and repeat every second. A good read opens door (like pressing button to open), 3 bad reads in a row closes door (like pressing button to close). Keep test tag code and Jack codes in constants.
Should work, so on the way to Jack Door completion, basically just Donkey work remaining.

Tuesday, 25 March 2014

Friday 21 March 2014

'her indoors' bought the grand children a new portable DVD player. Now you may ask "what has that got to do with the price of chips?". That means I have to play with it. Pretty impressive, 9 inch LCD, plays DVDs, but it also includes a TV tuner (Analogue only) and it also includes USB memory stick, not at all bad for £25. DVDs are a big thing with the grand kids, we buy the DVD (so they have legal rights to watch it), but they want to watch it on iPhone, Android phone, TV, DVD player etc. So muggins here has to convert.
Conversion is always tricky :-(
Video formats: Basic video contains 2 basic lumps of data, that is sound and video, the 2 need to be in sync, otherwise they look funny, mouth movements don't match voice etc. (this is called lip sync). There is also TONS of this data. Sound is basically just a waveform. Video is usually a sequence of pictures, much like the old cine films, you flash each still up in sequence and you get moving pictures. Problem is the size, take a very small 160 x 120 picture (looks totally pathetic on screen, not worth having), now multiply that up = 160x120=19,200 pixels per picture, consider 16 colour (very low quality, look bad on PC), you need 16 bits (2 bytes) per pixel, multiply that up 19,200x2=38,400 bytes per frame, say 15 frames per second (low frequency, nice is 20, normal is 30), multiply that up 38,400x15=576,000 bytes per second. So you can start to see that the data for a standard 2 or 3 hour film is going to get BIG. So the data is compressed, both the video and the audio are compressed and there are a number of different types of compression that can be used for both, once compressed, these 2 lumps of compressed data are packaged up into a file format (way of storing to USB, Disc, DVD etc.).
The R&D team making the kit knows this well, but the sales, marketing and manual editors are all between them and the customer. What makes it to us is just the file format, what compression types, audio types and video sizes is not mentioned. Video conversion software guys know this, some software will let you convert for a particular mobile phone and that's wonderful, but doesn't work for kit not listed, some list just the formats, then you need to play.
So, I spent the whole of Friday night converting kiddies programs, Grandpa in my Pocket, Mr Tumble, Charlie and Lola. Another thing worth remembering when viewing kids programs, leave logic behind.

Saturday 22 March 2014. Daughter and Grand children staying. Fixed washing line, fixed outside lights. They have a pink Murphy 24 inch flat screen TV, but it has stopped remembering it's channel settings and the DVD is making a loud noise. Pulled it to pieces, nothing obvious, ordered a new main PCB, played the DVD all day, no noise, but by evening it stopped working, motor probably dead, will look at that when I fit the new PCB when it arrives.

Sunday 23 March 2014. Did Roast Chicken, Son, gf, and gf's nephew came over, 5 adults, 3 young children for lunch. The frozen stuffing balls I made worked a treat, cook from frozen, new potatoes fried in Acti-fry, plenty to go around, everyone ate lots.
Got fascinated by Clear ABS. Used it for making the night lights, pretty good as a light diffuser, printed at single layer it's actually almost like smoky glass, but too fragile, 2 layer 0.2 thick is pretty good, started making a clear glasses case out of flexible clear plastic, should look cool.

Monday 24 March 2014. Tenvis Wifi camera arrived (£34 from Amazon), set it up in living room, then sent url, user and pass to daughter in SMS. Lots of belly laughs :-) Wife watching telly, "Hey, that 'thing' is moving on it's own!!!!!", holding a chew for our dog Jack, gets a text "What type of chew is that?", what!!! All a lot of fun, you had to be there. Later it all settled down, sent same SMS to Son. Wife sitting eating a bag of crisps, gets a text "What flavour are they?", wife goes ballistic, really good night.

Tuesday 25 March 2014 (today). Iteratively printing glasses case whilst writing this.

Thursday, 20 March 2014

Daily Monday 3rd March 2014 - Thursday 6th + thoughts

Monday 3rd March 2014
'Her Indoors' likes those little garden sun powered lights, especially the £1 ones that color change red / blue and green. Nice week-end, grand children helping her in garden, one of the plastic ends that allow the light to be driven into the soil got broke. Knocked up a new one in OpenSCAD, failed to print.

Tuesday 4th March 2014
Re-designed, printed 2 (1 for spare), job done.
We have B&Q fans mounted in all bedrooms and computer room, they are great, large ceiling fan makes it cool in hot weather, light and fan are remote control, off/on and dimmer, nice kit.
Some time back one of the glass bulb covers got smashed. Can not find replacement anywhere. Been naked bulb in son's room for over a year, but Son now moved into his own house, we take over main bedroom, so light needs fixing.
Got clear ABS from night lights.
Used OpenSCAD to create replacement design. 1st print not so good, too sloppy into fitting, too fragile.

Wednesday 5th March 2014
Re-designed, printed, fits nicely, can't actually tell difference between original glass and printed. Quite chuffed, job done.

Thursday 6th March 2014
No pending small jobs, washing line snapped yesterday, need to climb tree and re-fix, bulb gone in automatic light outside kitchen door, but nothing that can be done in evening. Decided to create this blog.

Other thoughts / possible projects
When I said I built my printer, it cost only £250 because I created the parts myself.
Hot end is actually key to 3D printer, it is the main part, at the time I could have bought a 'J-End' for around £60, but I wanted to understand. I did not have a lathe at the time (bought since). So I created the main part on my pillar drill from a 6 mm steel bolt, created the PEEK mounting using pillar drill. The heating element is nichrome wire. I've had a few minor problems with it, but on the whole it works well and it's nice and small (less than 30 mm long).
I'd like to create a new brass hot end, I have 6 mm brass bolts, I now have a lathe, attempted once, but 0.35 drill snapped off drilling hole (being too clever, should have done using hand PCB drill).
So, that project is New Brass Hot End

I would quite like to try moving Wade Extruder off X-Axis using Bowden tube. I have got the PTFE tube, but that's as far as I've got so far, not taken a serious hit at it yet, garage not pleasant in winter. Moving Extruder off X-Axis should make it lighter and faster. So, that project is Bowden Extruder

I used to create PCBs using photo etch, buy photo resistant covered PCB material, I could expose using wife's forgotten sun bed (yes, a 6 foot by 4 foot UV light box!!!!!!), but sun bed is long unused packed into garage, so I bought an old monochrome laser printer off Ebay (£12), I tried direct transfer using normal paper. I produced my 1st attempt RF Id reader using it. Looked really good during etch, it wasn't until fully assembled that I looked closely under a magnifier and realized that there were micro fractures all over the damned thing. Now using laser photo transfers from Maplin, but I would like to revisit direct transfer.
So, that project is Direct Transfer PCB

Along the way to current PCB method, I tried ink jet printing direct to PCB. I bought a cheap printer from Amazon for £30, but it was the wrong one, not flat bed and the recommended ink is all pigment based, which does NOT go through Epson jets designed for dye based inks. But that does mean I have a supply of pigment based printer inks. PLA and ABS in natural state are cream coloured. You can get clear ABS where they remove the natural impurities, but you can not currently get clear PLA. But I digress.
All coloured ABS and PLA is coloured using pigments. I don't know if pigments in ink are the same as pigments used in plastic manufacture, but I do know they are both pigments. That leads to the thought that maybe I could alter the colour during printing. I am thinking that I have 4 syringes, use threaded rod to drive plunger, use a small stepper motor per syringe, same colours as standard printer (cyan, yellow, magenta and black), maybe get some 7/02 PTFE wire, remove wire and leave PTFE thin tube. 4 colours, 4 syringes, 4 thin tubes. Tubes end at some kind of very small washer shaped metal arrangement that can be attached to business end of Hot end. Plastic extrusion gets coloured, mixing may be a problem, but extruded plastic thread could get coloured around outside (middle doesn't matter, not seen).
Modify firmware, drive overall colour feed so that colour feed is matched to extrusion speed, each colour varied to make up overall feed, quantity of each colour specified in G-Code. I noticed recently that a commercial printer has just been published as the 'worlds first full colour, multi material 3D printer', nice, and a snip at only $80,000. How cool would a Full Colour Reprap be?
So, that project is Full Colour Raprap. Would definitely mean a lot of experimentation, but doable, might not work, but really cool if it did.
Hey presto, we have Reprap full colour 3D printer. But we have another major problem. Current 3D printing is based upon STL files, STL does NOT support colour, that means creating new color STL (CTL?) then modifying OpenSCAD and Slic3r, both are open source, but quite a daunting task.
So, that project is Full Colour STL. Probably too much for one man to do, I have the skills, but it would take a very long time.
Now, I did consider a stop gap, a simple bit of software, take in a standard JPEG, that gives colours and X/Y co-ordinates. Allow user to drag out areas and/or pixels to required height, that gives X, Y and Z co-ordinates. Turn a photo of a loved one into a 3D mask. Probably not too difficult to go from X/Y/Z co-ords straight to G-Codes. I did play with C# and a few very interesting 3D libraries, but that is as far as I got, really need to prove we can print in colour first or this is pointless. But project would be Jpeg to Colour G-Codes.

I buy interesting bits on Ebay:
I recently bought a Real Time Clock module, nice little PCB, full battery backed, includes battery all for 99p!!! Like to play with it (not arrived from China yet).
Daughter would like a new night light, 2 shades, say moon and sun shape, probably white moon on always, yellow sun on demand. Needs display and a few buttons to set time like Alarm clock. Idea is that Sun comes on at a set time in the morning, show young children when they are allowed to get up. Our grand children do seem to like to wake at various times between 05:00 and 08:30. The Real Time Clock Module would be invaluable here. That is Social Night Light.
I also recently bought a pair of modules, an RF transmitter module and matching RF receiver module, both have GND and VCC pins, transmitter has 1 DATA pin, receiver has 2 DATA pins, curious, need to play with them, but both really small and cool and both cost 99p!! No idea how to use these yet.
Previously I got hold of a load of very small motors, 11 mm long, about 2 mm diameter, very fast, designed as mobile phone vibrator drivers, about £1 each, I'd like to create a fully printed quad copter using these, maybe with camera, could be really cool, not really a project yet, not really useful enough.
My daughter has some 'dodgy' neighbours, shouting in the streets, swearing, hammering at their door, she would really like to keep an eye on them. Tenvis cameras are really cool, but a bit pricey.
I have a Rasperry Pi with Camera module, got that running last night whilst Fan Light cover was printing. I have a Wifi dongle hanging about. I have a camera mounted to the front of my house, old school, B&Q special bought years ago, it feeds into an old VHS video recorder (encodes to standard PAL signal), that is fed to house TV system, picture to small TV above main TV, we call it the monitor. In the past, I rigged up a second old VHS video recorder (for tuner) and a frame capture device and fed that into PC. I created a program called "Monitor", it fed frames into video files in 1 hour chunks, it also added date/time and monitored each frame, difference between 'areas of interest' in frames caused it to output a jpeg. It worked rather well, you ended up with a directory for each day, within that directory was a various number of jpegs of 'action' scenes and 24 one hour video files. Browse the jpegs. anything intersting, use time on jpeg to look in correct place at video. So, can I re-use my old code (windows based) with Rasperry Pi (Linux based), camera and Wifi dongle to produce a small, neat Wifi stand alone controllable camera (like the Tenvis, but using already available bits)?

Introduction

A friend said that with all the things I get up to, I should create a blog, so here goes.

Intro:
2 years ago I had a lot of time on my hands, so I built a Reprap Metric Prusa 3D Printer.
For details of Reprap, see here:
http://www.reprap.org/wiki/RepRap

My past work life includes: Electronics Assembly, Electronics Technician etc. So I can create circuits, Printed Circuit Boards and assemble them.

I have a pretty decent garage with a good tool set, pillar drill and lathe.

So, basically I have the tools and knowledge to pretty much build anything.
Above all else, I am a Biker in the old sense of the word: Try anything once. Never admit defeat. If it can be done then I can do it.
I'm also a great believer in the "F**k it attitude" and "If you can't fix it, f**k it, if you can't f**k it, use a bigger hammer". I do believe that when a project goes well, it can be "sexy", and things can be "perfect, but it will have to do".

Recent (completed) projects:
I have a daughter and 2 young grand children. Daughter says "Can you make a night light?", "Can you make a moon shaped night light?", 2 days later we have a moon shaped night light. Now I get "Can you make a Mickey Mouse shaped night light?" (for other grand child), 1 day later we now have moon and MM night lights, next I get "Can you make 2 more for when they stay at yours?", and "instead of moon, can we have Shooting Star?", you know it got done.
For these designs see here:
http://www.thingiverse.com/thing:267662

I am TrevM on thingiverse, you can get to all my published designs from the night light link.
These days I am a software engineer, my past life was all practical, build a PCB, wire up an electronic unit, all nice things you can hold in your hands, things you can look at and say "I built that", nice feeling. Software is different, you can't hold it, you can't point out the 'nice' design points etc., that part is missing.
Reprap introduced me to OpenSCAD, a neat application, basically, I write software to describe an object, then press a button and see that object, move it around, look at it from any angle on screen, with Reprap, I can then go further, a few button pushes later, I can hold that object in my hand. I confess to getting pretty addicted to it, just 'cos it was soooo much fun.
Making the printer cost £250 and took over a month to knock up. To keep 'her indoors' happy, I promised to create a new winch for her washing line. I soon discovered that I needed extra stuff to build a winch that were not available in OpenSCAD, that included threads and bearings.
So, my first ever OpenSCAD design was to create a system for ISO metric threads. Kind of as an after thought, I bunged it on thingiverse and was more than shocked at the fuss it caused.
The metric threads are here:
http://www.thingiverse.com/thing:27183
The finished Winch is here:
http://www.thingiverse.com/thing:28066
There are a few other quickie projects in Thingiverse.
I mention the threads because it was my first and still most popular, I mention the winch because it is big and strong (unusual in 3D printing) and it allowed me to build the printer in peace, I mention the night lights because it's my latest completed.

Current 'In Progress' projects:
Previous are all really quickie projects, these have taken a little longer and are a little more complex.

Jack Door
I have a little scamp 5 year old Jack Russel called Jack. Always well behaved, small dog, big personality. More of a teddy than a dog at home, turns into a wild creature on walks (doesn't want to be touched, examines everything with gusto) on walks.
We have 3 doors in our house. Front door he never leaves unless on lead. Kitchen side door and back patio doors lead to garden, he doesn't like using kitchen door, prefers patio door. Letting him out manually is a pain and leaving patio door open in bad weather is pretty dire. Cats use a cat flap, so I wanted a dog flap.
You can't buy a dog flap to go into a 6 foot (2 metre) square double glazed patio door. Or rather, you can, but it costs an arm and a leg.
So, I made one. it's basically a wood frame (same height as the aluminium door frame), painted similar colour to patio door and double glazed with perspex. Slide the patio door open, put the Jack Door section into the opening, latch it to the wall, the patio door closes and latches to the Jack door.
Here's a photo of the Jack Door in place:
Of course, life is never quite that simple. The perspex required grooves in the frame, the frame required shaping at the sides to mate with the frame and the patio door. I was thinking that maybe I had to shell out for a router, but my Dad had a 'plough plane', fabulous piece of kit, over a hundred years old, but did the job a treat.
Of course, 'her indoors' is concerned, wants it to ONLY work for our Jack. Jack is already chipped. Now most chip readers need to be in close contact with the dog. I think I have a design to produce a reader that will read his tag from up to 1 metre away. Idea being that I create some kind of controller, create some kind of electronic latch (I can't seem to buy one) and link it all to the reader.
But 1st job first, did the basic frame and fitted as above.
Now we find another snag. Cat's push open the cat flap with their heads, Jack simply won't!!!
So, the door is installed and instead of opening the main door, we can open the much smaller (much less draft) dog door, but increased thought needed.
I have an Arduino Leonardo Pro Micro ATmega32U4 controller (£3.32 off Ebay), fabulous bit of kit. I have that connected up to a self made driver PCB. Biggest headache was how the dickens do you open and close a dog flap under motor control? I now have a small 30 mm diameter, 40 mm long, 8 volt motor (£2 off Ebay), it connects to a printed PLA gear box (worm drive and other gears) mounted to the frame, that drives a large gear mounted to the flap. The interface board is connected to a remote control module and contains red, yellow and green LEDS and 1 button and all control housed in a printed PLA box. The flap now includes a printed PLA couner weight:

The counter weight is on the left, it is attached to the flap and hinges down with it. It is actually filled with 2 pence pieces. Ignore the wire wrapped around the bolt, that is the current way of latching the door open. The large half internal drive gear is attached to the right of the door.
This is the drive mechanism, the control box to the left, the motor and gear box to the right. In the middle are the 'open' and 'closed' limit switches. I still need to figure out how to mount the switches and create one or more suitable housings. But the box, remote control and motor all work when temporarily attaced to the door.
If door is open then press button and door closes, during close, red and yellow LEDs light on control box.
If door is closed the press button and door opens, during open, green and yellow LEDs light.
That all works, pressing any button on remote does same as pressing button on box.
The worm drive means that flap stays in end position, no electronic latches needed.
Motor and gear box are not over powered, the flap opens / closes in about 1.5 seconds, but can be easily stopped by hand (or paw or tail), so it is intrinsically safe (something that did worry me).
A more detailed picture of the gear box, motor attached to a small gear which drives small gear on end of worm, worm drives large gear, large gear is on same axle as door driving gear. Lid left off on purpose. It will also have a cover over motor, but that is finishing touch (later).
More detailed picture of control box and remote. Remote and receiver are RF, both purchased together off Ebay for £2.50. Button and LEDs are on other side of PCB.
This is the RF ID reader (to read Jack's chip), the big square is the aerial wound onto printed corners, it should fit nicely inside the double glazed flap, the small circuit board also gets mounted within the glazed section with 5 wires joining to main controller.
RF ID reader is normally not powered, once per second, controller powers it up and tries to read a chip. If it reads a chip and if it is Jack's chip then it will be considered a good read.
When closed then a good read acts like a button press.
When open then 3 bad reads act like a button press.
I have so far not tested this part, on paper it looks good, but I don't want to test on Jack, I have bought another chip from our vet, but I have misplaced it!
Besides, all the other jobs above have got in the way of completing this project, but it WILL get done.

Water proof box:
I recently changed my bike, old one was a Honda Shadow VT600C, it had a sissy bar (back rest) and mini rack, my water proof gear was bungied to it, ready to go, had the bike for 15 years, it rusted out. My new bike is a Honda Shadow VT750B, oddly, though same make a model, Honda in their wisdom have changed the style, the 600 was a cruiser, the new one is now called 'naked', it has no place to bungy anything to and I'm getting pretty bored with carrying water proofs inside a shoulder bag or even inside my jacket.
There are racks available, but pricing starts around £300 and they can go whistle.
So, I've printed a box, it's about a foot long, cylindrical, roughly 150 mm diameter. The box is here:
I'd like to spray paint it to match the bike, I'd originally planned to fix it above rear plate with tie-raps and rubber sheet, but I have so far not got around to spraying and I am now thinking that attaching behind seat may be a better option.
Still in progress.