<< Home

Programmable Space Floor Lamp

October 26, 2021

One problem I have in a programmable space is things looking too "techy" when I want them to be calm — things that can always be on and out in the room while also not demanding attention to themselves. TVs and monitors are good examples of objects that don't meet this criteria: They are big and ugly when off, you don't want them on all the time, and they demand attention. I like the vision of making computers more like light bulbs: always present, but ignored.

Previously, I made a programmable space augmented reality desk lamp by following Nord Project's Lantern build but with my programmable space programs running on it. Inside the lamp head was a Raspberry Pi computer, a tiny projector, and a webcam. I really liked the build, but in practice the projector area only covered a small portion of a desk and the desk lamp form factor didn't work well when pointed horizontally or up at a wall.

The lamp looks awkward sideways and the projection area is only slightly bigger than the calendar.

I made a new version of the lamp, but in a floor lamp form-factor so that it can be positioned in more places in the room and pointed horizontally. The thing I like the most about this new lamp design is that it's calm: It is silent, does nothing by default, is ignored like a regular lamp, and it enhances things already hanging on the walls.

Lamp Head
Programmable Space Floor Lamp (next to a regular lamp on the left).

Lamp Head
Head of the floor lamp.

I used this new lamp to make an updated Musical Posters demo that uses more wall space because the floor lamp is farther away from the wall than the desk lamp could be. Pointing a laser pointer at album art and posters hanging on my wall changes what music is playing in the room. Setting up the demo involves tracing each album art and creating a "laser region". When a laser pointer goes in a region, the fact "laser in region $ID" is claimed to the programmable space and other programs use this fact to map it to a Spotify song/album/artist and then change the music.

Notes about the build for the curious

Inside the lamp head is a sandwich of: C920 webcam, 3D printed mount, Raspberry Pi 4, Nebra Anybeam RPi Projector HAT. The Anybeam projector is only 23 ANSI lumens which isn't really visible in a bright room and the RPi Projector HAT doesn't seem to be in stock any more. If I were to create a new version, I would choose a different projector that was bright enough to be mostly visible in daylight. Unfortunately a brighter projector would also be bigger and probably not silent. The Epson EpiqVision Mini EF11 ($700, 1000 lumens, laser, HD resolution.) might be my next pick.

3D printed mount CAD
3D printed mount CAD

I tried to modify several adjustable floor lamps but none of them could support the weight of the electronics (600g / 1.4lbs). I switched to a microphone stand with a ball joint (plus this) and that worked much better. The only input is power so in theory I could add a light bulb socket to outlet adapter, plug the Raspberry Pi power supply it, and enclose everything in a "bulb" that could be screwed into any light socket!

Other projected AR setups like Dynamicland or museum installations hide projectors and computers in the ceiling. This is nice for big installations with high ceilings, but in a home setting I think ceiling mounted projectors aren't invisible enough to be calm: too loud, too ugly, too in the way. This is why I am especially interested in the floor lamp form-factor and anything that looks like a regular lighting fixture in a home. Another interesting idea from Lightform's Project LFX is a "steerable projection" where motors change where the projection is pointed in the room as a way to cover more area of the room from a single projector. I like that Project LFX's demos show what projected AR could look like in a home setting.

The Raspberry Pi inside the floor lamp could run a programmable space broker itself but in my setup it connects to the main programmable space broker computer where all the programs are running. This way it is a little easier to debug and share facts with other objects in the room.

progression
Programs used to build and run the musical posters demo.


Check out more programmable space demos at programmable.space. If you have thoughts or questions, feel free to email or reach out to me on Twitter.

<< Home