I've got idea, that we can make VERY simple laser projector using laser pointer, some little mirrors, two simple motors (that are fast enough) and arduino or something similar. I don't want to use servos, because they are too slow (the image of smiley tooked 85 seconds of exposure actually. We need something more realtime…). I can imagine some smart-enough setup of mirrors and two synchronized motors, which will scan the laser beam regulary and evenly across rectangular shape (on the wall) and they will be not driven in any way (just mechanically synchronized). There will be also some two “reset” contacts or sensors that will let microcontroler know when the laser beam reached the first row and first column. microcontroler will use the interval between last two resets to determine how long is one pixel on time axis. This is similar design to composite video, but reset signal will come from projector instead from video signal itself. So the microcontroller will only drive the laser based on it's approximated possition. Goal of this design is that we'll be able to use different motors or change the motor speed (higher speed = better maximal resolution) whithout need for changing the code or calibrating something…
Another possibility is to use custom galvanometers (Maybe we can reuse loudspeaker or galvanometers from harddrive) to move the mirrors. It's fast, but it needs some complex driver. Probably it will need DAC, since it's fast enough to be affected by Arduino's PWM. It can be also driven by some external signal source, but it will be hard to synchronize (maybe we can drive it using souncard). I like the idea of encoding everything into output of PC audiocard - X/Y axis to L/R speaker and brightness can be probably encoded (on some high frequency which will not affect the galvanometers - we can also filter higher frequencies out later) somehow too… Then we'll be able to drive it even using portable mp3 player (with hi-quality mp3s and properly selected frequencies).
It should be
TomSuch made an RGB laser projector by himself, though aimed mainly at generating 3D effects in fog. Has been demo'd in brmlab many times, also during Brmlab Opening Party During visit of Felipe Sanches in Dec 2010 from Garoa Hacker Clube in São Paulo many improvements starting to happen and a lots of new ideas were born, mainly because current solution has been driven by proprietary hardware and software.
We are now working on open source variant of that software, expanding posibilities of both, hw and sw. Next step would be probably design our own hardware.
We are now able to quickly process SVG, GML and ILDA formats. We have yet another funny things we can do with projector like display analog clock wallsaver, play Pong or Rocket game, publish source of our client sw and let people draw remotely and simultaneously. On of the other ideas is make an webpage using svg edit (demo) where visitor can draw what he/she likes, click Publish and that picture will be published via Laser projector and also to the web gallery. We could also have a webcam to stream results.
1 -> read the STC89C51 datasheet (it is the 8051 microcontroller used in the laser controller) 2 -> figure out how to perform a binary dump of the firmware 3 -> compare it to the usb sniff of the initialization of the device after a power off 4 -> figure out the firmware loading protocol and fix our implementation of it * investigate * http://www.linux-laser.org/ * http://www.linux-laser.org/bilda/bilda-hw.php?lang=en#hardware * http://www.hugovil.com/fr/emu8051/index.html * http://marcansoft.com/blog/2010/11/openlase-open-realtime-laser-graphics/ * http://jucablues.blogspot.com/2010/12/coordinating-efforts-towards-free.html
Analog clock, hardware shots and software design discussion:
Our first watchable success using open source sw:
First Pong version, also discusing how to draw numbers
Imagine something like this, but much (at least 425x) faster (this is the 1/85FPS projector driven by servos) and maybe with slightly lower resolution (to reach the speed needed for desired POV effect):