Build Log: The 1.5V Project

Der Wichtel

Enlightened
Joined
Mar 12, 2007
Messages
829
Location
Germany
Yes, it will always work. I used a hard switch as well.
The idea is that if the switch disconnects the circuit from power nothing is sourcing the C with current that keeps the voltage up. On the other hand the input resistance of the µC is still present that slowly discharges the C.

Took me a while as well to find out this solution since a couple years ago small ceramic capacitors with capacitance high enough to keep the µC running for a few seconds where painfully expensive. Nowadays you can even get them in the 100uF range for less than an Euro.
 

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
Writing the Firmware

In my excitement to leave the mess and stress of the solder stencils behind, I whipped up a prototype of the driver pill on the lathe.

It's a brass sleeve, holding a brass pill, holding the electronics :duh2:
pilltopandbottom.jpg


I was a little concerned about the electrical and thermal path and really needed to see the bloody thing light up after all the effort soldering the tiny driver. I'm proud to say it fired up on the first attempt.
pilllightsareon.jpg


Before final assembly, I programmed the ATtiny with a VERY simple looping program (secondary high, primary low, primary medium, primary high). Once the MCPCB was soldered and the pill secured within the sleeve, it would be a significant amount of effort to disassemble and reprogram. The program worked just fine.


The problem is that a light that constantly loops low > medium > high isn't particularly useful. My better half later asked me "Well, can't you just change what it does using the power button?". That was the kick in the butt I needed to sit down and plan the firmware and start writing code.

The end result fits neatly on the microcontroller with lots of room to spare!
compilesize.png


As I mentioned earlier to Der Wichtel, the light has no parasitic drain, so when you click it off the circuit is dead. This makes writing the firmware interesting because you can't really take anything for granted. Power could be cut at any time and completely interrupt whatever was happening. I spent a lot of time testing how each subroutine behaved when the rug was suddenly yanked out from under it. I like what "always on" lights offer but my personal preference is for a circuit designed around a hard disconnect switch.

Things I'm pretty happy with:

  • factory reset: put all settings back to the way they originally were
  • programming menu: self-advancing timer-driven menu allows setting of all variables
    • Number of levels in the rotation (1-4)
    • Output of each level (secondary, primary, light shows)
    • Memory mode toggle (last level saved when on > 1 second vs. starting at level 1 each time)
  • voltage readout: blinks out the battery voltage to 2 decimal places (1 blink --> 3 blinks --> 5 blinks == 1.35V)
  • low voltage indicator: flashes the secondary LED when the battery starts getting low
  • beacon mode: slow flash to help find it in the dark
  • output dimming: main LED is current-controlled; secondary LED is PWM @ 13kHz and goes low
  • output taper: light stays in regulation as long as it can then drops into a direct-drive taper as battery dies
  • large input voltage range: 0.5 to 5.5V (efficiency is decent at 1.5V, peaks at 3V, and drops fast at > 3.7V)

The things I'm not so happy with:

  • limited to reading voltages up to 2.56V (this is as high as the internal reference on the ATtiny goes)
  • even in deep sleep, the circuit draws ~2ma between beacon flashes (I think this is a combination of high resistance in my test bed and the boost converter idling)
  • circuit currently doesn't know how long it's been off (Der Wichtel's capacitor suggestion may fix this)
  • primary LED will only go down to 20ma (a limitation of the driver, though in practice it's about as low as I'd ever program it)

A short clip of the voltage readout in action (3 output levels, memory mode enabled). Accuracy is within +-5% of what I get with my Fluke multimeter.


A short clip of using the programming menu to set output #2 to beacon flash.
  • the 3 crazy flashes indicate that we're working with menu item #3
  • turning the light off tells the microcontroller that we want to change the value of menu item #3, so start ramping
  • turning the light off during ramping tells the microcontroller to save the new value
  • the newly saved level is displayed for 30 seconds before automatically moving on to the next menu item until all menu items are displayed and we exit programming mode


There are some tiny tweaks I'll no doubt make to the firmware, but what's been written has been fully tested and I'm confident that if I were to seal the electronics up in a brass body, I'd be able to change enough settings to happily use the light. Much better than a never-ending low > medium > high loop!

Next up: a programming/diagnostic board to make soldering these things easier!


>> Return to root post
>> Continue to next post in the series
 
Last edited:

Esko

Enlightened
Joined
Nov 17, 2008
Messages
514
Pardon for not commenting before but I think that this must be the most interesting project in Homemade etc. section for a long time. I'd like to ask one question (or more, but lets start with one). What are you going to do with the final flashlight? Are you going to make just a few for yourself and perhaps to some friends? Or, are you also going to sell these lights or light engines to fellow CPF'ers, or perhaps make everything open source? This is a big project and IMHO your flashlight is pretty much the most interesting light in AA format currently. Thanks for sharing it. :thumbsup:
 

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
Hi Esko, thanks very much for posting! I take it as the greatest compliment that you find the project interesting - that's been my goal with posting the build log. Even if the whole thing fails to launch I find it fun to read along with people's successes and failures, so it's always nice to hear that others are spending some of their time to read the stuff I write.

My short term goal is to make one, stamp my name and a serial number on it, clip it to my pocket, and pack it around all day long. :D If it performs well and I like it, I have hopes of commissioning a local machine shop to make 25 more that I can gift to friends and family.

I had no idea when I started the project that after a full year of evenings and weekends I'd still be writing firmware and really have nothing physical to show for it. It's been a real eye-opener to experience all the time, effort and money that goes into R&D (nevermind learning electronics and machining from scratch). We're looking at expanding the family now and I just hope I can finish the light before other responsibilities consume all my free time!

If the light turns out the way I picture it in my head, and other CPF'ers are interested in it, I think I'd like to make a small batch and sell them. I don't want to work on the project with the thought of sales in my head though, because:
  • there's no guarantee anyone else would want one
  • it might take me 2 more years to finish it
  • that kind of pressure would likely cause me to rush, and I don't want to compromise the end result (a leisurely pace gives me the time to get things just like I want them)
I like the idea of open-sourcing it, and if it turns out that having kids means I'll never get to work on this again, I might. For now though, I get a real kick out of making things for people and being compensated for the time and effort it took to do so. One of the things I'm most proud of is knowing that there are people in other countries who thought my A2 rings were cool enough to purchase. Maybe other CPF'ers will think this light is cool and want one - I'd be honored at the chance to build someone else's EDC light. :) Guess we'll see what happens!
 

Mattaus

Flashlight Enthusiast
Joined
Mar 29, 2011
Messages
1,765
Location
Brisbane, Australia
Not that I think you need help, but if you ever want someone to whip up a neatly laid-out PCB design let me know - I seem to have a knack for it :)
 

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
Not that I think you need help, but if you ever want someone to whip up a neatly laid-out PCB design let me know - I seem to have a knack for it :)

Thanks very much for the offer Mattaus, might take you up on that!
 

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
Building a Better Socket

AndyF has given me a much-needed kick in the pants to continue with this write-up (thanks Andy!). With the firmware 95% complete I'm ready to build a couple more converter circuits and prototype a host body. It's high-time to have something physical to pack around and abuse!

Some of you may recall my adventures with pogo pins earlier in this log. That ugly little assembly lasted ~4 more programming cycles before the pins started detaching and couldn't hit their targets anymore. It was exceedingly frustrating to use. Not only that, testing the programmed board involved hooking up all the components. I basically had a finished light before I knew if it even worked. I've been kicking around the idea of a programming+diagnostic socket for a while now, so the time seemed right to get cracking on that.

I didn't snag any pictures while machining the Delrin assembly (I'm sorry!). It was -22 in my garage at the time and my hands were freezing. Getting the thing machined as quickly and accurately as possible before I froze solid was my primary concern. This is the finished result.
machineddelrin.jpg


Next up was this sheet of acrylic
clearplastic.jpg


It's quite easy to work with! Just score...
score.jpg


... and snap!
snap.jpg


The square corners proved a bit sharp so I repeated the process to double the number of sharp corners. :devil:
knockingedgesoff.jpg

roundish.jpg


I pinched the acrylic to the Delrin with a clamp to line up the 4 outside radial holes....
holding.jpg


... and marked the center of each with a nail.
holesmarked.jpg


I then proceeded to push way too hard with my hand drill and crack the plastic. :ironic:
whoops.jpg


I was more careful with the next piece and managed to get my 4 notches around the edges.
alittlemoregentle.jpg


The two plastic parts are squeezed together like this (and in a moment you'll see why).
plasticonplastic.jpg


The socket has 2 main features: holes that line up with each of the pads on the underside of the board, and a lip that the PCB sits in to center it over those holes.
sockettop.jpg


When I inserted my pogo pins up through the bottom of the socket, 2 fit nicely...
twofits.jpg


... but three's a crowd! :ohgeez:
threesacrowd.jpg


It looks even less pretty from the business end. These pins don't have any pogo when you jam them in so tightly.
cramped.jpg


At that point I was ready to trash the entire idea. The tops of the pins would fit but the bottoms sure woul... wait. What's inside one of these things?
endstoameans.jpg


I whipped up a new Delrin socket, this one flat-bottomed without the hollow center. It was time to put a wild idea to the test:
pinsandspringsohmy.jpg


You see where I'm going with this, eh?
ifthewirefits.jpg


To keep the wires from falling out when the assembly is righted, the acrylic pins them into their sockets and is secured by the machine screws.
thenusemorewires.jpg


I added a little chunk of protoboard to attach all my headers and solder the wires to, then tightened it all up with some washers and nuts.
endresult.jpg


The ISP programming header sits like so. I very gently twisted all the necessary wires to meet it after quadruple confirming the pins would match up.
programmingheader.jpg


Then each wire was carefully soldered to the header, solidifying the whole thing in place.
soldered.jpg


One end is now complete with a power & programming header.
morepowah.jpg


The other end of the protoboard gets a similiar treatment - this one receiving an emitter on a star.
starpower.jpg


The little beast is now almost done.
thebeastie.jpg


Torturing the pins is all fun and games until you lose a spring, then they torture you trying to find it on your basement floor.
poorpins.jpg


They did eventually give up the goods and I had enough for each PCB pad.
giveupthegoods.jpg


Each of the Delrin holes gets a spring and a pin.
inyougo.jpg

youtoo.jpg


Each pin is tested against its neighbour to ensure none of them are short-circuiting (none of them were). Not much left to do now...
mygoditsfullofpins.jpg


... but push a PCB down onto it, send the code, and see whether this thing works!
seethatyoudo.jpg


Overall I'm very happy with the result. I should never have put the PCB pads so close together in the first place - lesson learned for any future projects. The time and effort spent on the programming socket is worth it though; the device is solid and makes my work 100% easier now that I can program and test without soldering a single thing to the PCB's.

So what's next? A prototype! If I haven't posted about it in a month, someone kick me in the butt please. :poke::grin2:

Cheers!

>> Return to root post
>> Continue to next post in the series
 
Last edited:

Microa

Enlightened
Joined
Mar 10, 2011
Messages
256
Location
Hong Kong
What are the sizes of your pogo pins? The pogo pins which I am using is 0.7mm in diameter and the tip is 0.5mm. The test pad on the pcb is 1mm with 2.45mm clearance.
 

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
What are the sizes of your pogo pins? The pogo pins which I am using is 0.7mm in diameter and the tip is 0.5mm. The test pad on the pcb is 1mm with 2.45mm clearance.

You've found smaller ones that I did obviously! The ones I'm using are 1mm at the tip and 1.5mm at base.
 

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
Rolling the Die(s)

After a much-needed vacation, I've spent a bit of time working on a prototype host. Progress has been... slow. My biggest issue right now is that the Taig lathe doesn't cut threads.

This is a right pain-in-the-butt because it means I'm using a vise, a button die, and a die stock.
diestock.jpg


Results have been a little crooked.
getbent.jpg


I now have a small cluster of brass pills sitting on my dining room table, all of them with crooked threads. Enough is enough! It was time to look at building a proper die holder for the lathe.

I've never machined aluminum on this lathe, and being as a 2" piece was needed, I figured this would be a good project to give it a shot.
bigalu.jpg


The outside cleaned up fairly nicely, though the metal itself was slowly welding to my cutting bits.
soshiny.jpg


It drills pretty wild - huge fuzzy strings of swarf. I'm used to the neat little brass confetti. These big strings had a bad habit of swinging around and slapping my hands with their razor sharp edges.
fuzzball.jpg


With the hole drilled through, I switched to the boring bar to widen things out.
boringtime.jpg


The throat of the die holder should now be only a tiny bit larger than my die.
thatsbetter.jpg


But the best way to check is to pop the die in there and see how things fit. Success!
snugfit.jpg


The aluminum wasn't all that kind to my machine. I think a larger, more sturdy lathe might be a bit more pleasurable to work it on. There was a lot of chatter/squealing throughout this project - you can see the slight chatter marks on the beveled edges I put around the holes.
chatter.jpg


I flipped the workpiece around in the jaws, trying my hardest to align it perfectly.
flippedaround.jpg


Unfortunately, getting zero run-out is pretty much impossible for me. I hid the intersection of the two surface cuts with a very snazzy looking groove around the bottom.
groovy.jpg


With the die holder complete for now, I switched focus to the brass rod it would ride on. This rod will be affixed to the tailstock ram and allow the die holder to feed itself down the workpiece.
cleaningbrass.jpg


I tested the holder on the rod frequently, looking for a snug (but not sticky) sliding fit. Got it!
checking.jpg

fit.jpg


The rod will be screwed onto the tailstock ram, so I drilled and tapped it.
drillfortap.jpg

threadsandmorethreads.jpg


The tailstock ram has a little raised area that requires more clearance, so I bored a little lip inside the bar.
boringlip.jpg

boredlips.jpg


After cleaning the chips out of the hole, it was time to see how things sat.
testthreads.jpg

inanimatebar.jpg

wheresmydie.jpg

ohthereitis.jpg


There was the little matter of making sure the die was actually fixed inside its holder. This requires (at minimum) the careful placement of 2 holes exactly opposite of each other at the right height. I started by checking what kind of grub screws the die stock was using, then purchasing some replacements.
testingtap.jpg

replacements.jpg


That this worked as well as it did astounded me. I built a Lego tower of slides, hung it off the back of the saddle, and mounted the die holder in it.
legotowerlathe.jpg


A little bit of ink on the side of the holder allowed me to scratch it with my center drill to locate the very edge.
findingmiddle.jpg

justascratch.jpg


With the hole positioned, there was nothing left to do but drill!
readyset.jpg

go.jpg


Why stop drilling there though, when we can keep going? :green:
wecantstophere.jpg


Not only did that work, no aluminum parts were tossed through my forehead in the process! :tinfoil: Time to tap our new holes.
taptime.jpg

ohyeah.jpg


The second you remove a workpiece from a setup, you'll never get it exactly the way it was again. Rather than risk a crooked tap, I rotated the die holder and manually tapped the other hole using a little wrench.
littlewench.jpg


Now it was time for a little test fit of the new grub screws.
onehole.jpg

twohole.jpg


I drilled and tapped one additional hole at a 90 degree angle to the others to serve as a tommy bar.
pegleg.jpg


In addition to working like a handle, it slides along the bed and prevents the die holder from twisting indefinitely as it cuts.
weaintspinnin.jpg


The only thing left to do was try it out! I quickly whipped up a brass pill to test the die holder out on.
brasspill1.jpg

brasspill2.jpg

brasspill3.jpg


The setup worked nicely!
goodfit.jpg


And it cut some straight threads too!
muchstraighter.jpg


My challenge now is that the 3-jaw chuck doesn't have the necessary grip to hold onto the smooth brass workpiece as the threads are cut. I didn't get a chance this weekend to test it, but I plan to mill 4 flat sides onto the workpiece like this:
milledflat.jpg


... then chuck the flat surfaces up in the flats of the 4-jaw chuck. That should have much better holding power and allow the die holder to cut threads much further down the piece without slipping. A working prototype is tantalizingly close - I'm hopeful that not too many more weekends of side projects like this are necessary to get there.

Until next time!

>> Return to root post
>> Continue to next post in the series
 
Last edited:

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
Machining the Driver Pill

The driver pill in this light was a bit overbuilt. It probably could have been designed a lot simpler, but:

  1. I had the extra space
  2. I wanted it to stand up to abuse
  3. I wanted it to be easily disassembled for maintenance
I started by hacking off a couple pieces of brass:
cuttingbarstock.jpg


The pill gets chucked up, center drilled and drilled roughly to size.
centerdrilled.jpg

bigdrilled.jpg


It then gets bored to final size. The Taig lathe has no graduation markings on the carriage handwheel, so a cheap set of digital calipers and a vise clamp read out the horizontal travel. :rolleyes:
boredout.jpg


A small threaded hole gets drilled in the side of the pill. It will be used clamp the pill shut around the 2 boards, securing them in place.
threadedpincher.jpg


With the threaded hole drilled, a slot is milled right through the middle of it. A socket head screw will close the pill tightly when twisted into place.
slotmilled.jpg


All finished!
driverpill.jpg


The boards slip in like so, and sit on the little ledges inside.
driverpillpano.jpg


The pill is then loaded into a sleeve, which the head and body thread onto. Makes sense, right? :thinking: The sleeve starts as another piece of brass, which gets turned down to size.
turningsleevedown.jpg

onesidedone.jpg


With one side turned down, it gets clamped in the vise and 2 parallel flats are milled onto each side. They'll provide a flat place to grip for when we go to cut the threads.
clamped.jpg

andmilled.jpg


The other side gets turned down, and we're ready for threading! Note the flats: I tightened the two opposite jaws on my 4-jaw chuck onto them which gives MUCH improved torque for the next operation.
notetheflats.jpg


You may remember this little beastie from my last post. :naughty:
allopoppet.jpg


It's enough to get the job started straight, but to finish them, a vise and die stock are still necessary.
viseanddiestock.jpg


Now it's just a matter of getting it chucked back up and repeating the process on the other side.
leveling.jpg

approach.jpg

cutting.jpg

done.jpg


Next up: making a pouch for our pill to slide into!
mounted.jpg

drillingpouch.jpg

drilledpouch.jpg

boringpouch.jpg


A business card protects the threads as the other side is drilled and bored for an LED star. The belt of material around the middle is removed and we're ready to punch a few holes in it.
businesscard.jpg

goodbyebelt.jpg

readyforholes.jpg


We'll feed our LED wires up through these holes and solder them to an LED star.
getreadyset.jpg

drill.jpg


Finished! These two pieces are the heart of the light.
finalproduct.jpg

orings.jpg


So far so good! Check back in a bit and I hope to show you the two final pieces: the head and the body.

>> Return to root post
>> Continue to next post in the series
 
Last edited:

calipsoii

Flashlight Enthusiast
Joined
Apr 21, 2010
Messages
1,412
Machining the Head & Body

What?! Two updates in two days? I know, I'm as excited as you are. :naughty: When last we left off, I'd just completed the (overly-complicated) driver pill. Just a driver pill does not a torch make though!

My bandsaw is seriously scary sometimes. Push down too hard and it starts to shake violently... push down too lightly and it actually burns the metal. Exhibit A: 1" of slightly scorched brass.
scorched.jpg


By this point you've seen my filthy lathe bench 100x more than you ever wanted, so I'll just let the pictures do the talking. The head has been the simplest part to machine out of the entire project. It was downright pleasurable and the result looks great.
let.jpg

the.jpg

pictures.jpg

do.jpg

thetalking.jpg

wont.jpg

ya.jpg


With the threaded part done, I flipped it around and drilled out the lens window. I forgot to take shots of the drilling and beveling but you're not missing much. :laughing:
forgot.jpg

thedrill.jpg


And now, like an awesome movie montage, we jump straight to the good stuff!
headfrombottom.jpg

headsideways.jpg


The 3 parts fit together like a set of Matryoshka stacking dolls. O-rings keep the pocket lint (and hopefully water) out.
dolls.jpg


We're actually not quite done with the head assembly. The reflectors I want to use are slightly (2mm) too wide to slide up into the head.
reflector.jpg


The idea was to build an expanding Delrin post which would hold the reflector in place so I could turn a few mm's off it with the lathe.
turningreflectorpost.jpg

nicefit.jpg

hangingout.jpg


The post would then be drilled and split. A screw would force the post apart, providing a tension fit.
drillingpost.jpg

splitpost.jpg

tightenthescrews.jpg


That didn't work; the screw spun endlessly in the soft Delrin and the post was not forced apart. The post and screw still seemed like a sound idea, so I parted them off.
locked.jpg

chopped.jpg


THIS WAS A HORRIBLE IDEA. :duck: I don't know why I thought it would be ok to chuck up a dowel of soft wood in a metal lathe, but it cut horribly and made a cloud of sawdust.
ohgod.jpg

whatareyoudoing.jpg


That said.... sometimes it's hard to argue with results.
ill.jpg

be.jpg

damned.jpg


Continuing my parade of ridiculous ideas, it was time to give the secondary LED a place to poke through. It was late in the day and I was tired, ok? ;)
idonteven.jpg


In the future I'll use a drill press or something more stable, but for the prototype, I was actually pretty happy with the results. I cleaned up the edges as best I could with an X-Acto knife, then tested a 3mm LED for fit. It's tough working directly on the reflector and not damaging the surface.
cleansupnice.jpg

peeking.jpg


Alright, enough with the brains, time to work on something to hold the brawn. 3" of stock is actually too long for my little lathe setup. Working it was just horrible - squealing, vibration, the works.
body.jpg


I started with my smallest drills and slowly increased the diameters. This whole operation made a horrible ruckus - I'm sure my dog was pretty upset at the squealing.
smallhole.jpg

largerhole.jpg


I'll take some blame for the noise while boring the body out though - look how much boring bar is hanging out of the holder. :green:
ridiculousboringbar.jpg


Hmm, tools say we're getting close...
gettingclose.jpg


There is one way to find out, of course.
white.jpg

red.jpg


This is the head end. I learned something pretty important doing this part - even bottoming taps don't cut to the bottom of their hole. So the threads didn't fully form right down to the little ledge and the head wouldn't screw all the way down. I had to bore a good deal deeper and re-thread the hole to get the head to tighten all the way.
threadledge.jpg

tappinghead.jpg

testfithead.jpg


The workpiece gets flipped around and the tail is threaded for a McClicky switch. This particular tap is worth its weight in gold - the 11/16x20 thread is considered 'specialty' and they had to special-order it for me (for a couple hundred bucks :broke:). I bored it a bit deeper than my plans called for after the adventures with the head.
flipped.jpg

threaded1.jpg

threaded2.jpg

threaded3.jpg


With the internals complete, it was time to think about machining the outside of the body. I couldn't do much with the steady rest in the way of the carriage, so I made a little Delrin plug for each end of the light.
delringplug.jpg

delrin1.jpg

delrin2.jpg


Not a perfect solution, but the tailstock live center inserted into the Delrin plug provided enough stability to take a series of light cuts across the surface.
tailstockcenter.jpg


This would make for a very unnecessarily heavy flashlight body for only 1 little AA battery, so I marked out the taper points with a parting tool.
prettyshinyforawhiteguy.jpg


Taking great care not to nick the head/tail threads, the middle gets thinned out, dropping a few pounds in the process.
youvelostsomeweight.jpg


This is the first time I've used the compound slide since I got the lathe. I feel like the event could have used a glass of champagne or something!
compoundslide.jpg

45degrees.jpg


The jaws left a few scratches on the head, so I flipped it around and shaved them off. The Delrin plugs proved mighty effective throughout the body machining. They also had another pleasant side effect: the body rings like a bell when you get it thin enough. Weirdest thing! I thought I was hearing things at first. But sure enough, the cutting tool rings the entire body and the Delrin plugs immediately suppress it.
scratchy.jpg


Finally! The 4th and final piece of the prototype is complete and the whole thing is ready for assembly.
bodydone1.jpg

bodydone2.jpg


But that's another post. I promise it'll have 100% less lathe pictures than this one. :whistle::twothumbs

>> Return to root post
>> Continue to next post in the series
 
Last edited:

Steve K

Flashlight Enthusiast
Joined
Jun 10, 2002
Messages
2,786
Location
Peoria, IL
Very impressive documentation!!
It does make me happier that I stick to simple things like electronics. :)
Looking forward to further updates.
 

flat-ray

Enlightened
Joined
Nov 17, 2005
Messages
239
Location
Italy
Now with these pics I can understand the massive work behind this project! Please, add more for our flashaolic curiosity. :drool:
 
Top