Categories
Uncategorized

Game Boy Camera

I remember seeing people use a Game Boy Camera years ago, and with my interest in lo-fi tech (and probably spurred on by 8bitMKE) I ordered a Game Boy Camera for $11.97 on eBay almost two years ago (Hey, sometimes projects take a while.)

Last fall when my daughter moved out we found her old Game Boy Advance, and after a good five minutes of Tetris I popped the camera into it and took a few photos. But alas, with no way to transfer them out of the Game Boy, they were stuck there…

After some digging around I found some posts that mentioned using an Arduino to transfer the photos from the Game Boy to a computer. Arduino you say? That’s my jam! But even then it took some time before I did anything.

I finally got the cable I needed (a “Two Player Link Cable Cord for Nintendo Game Boy”) for $3.99 on eBay after first ordering the wrong cable, and I quickly grabbed an Arduino Nano, one of my breakout boards that was already soldered up, cut the cable in half, stripped the wires, grabbed a multimeter to figure out which was which, and got it all wired up.

The arduino-gameboy-printer-emulator repo on GitHub proved the most useful to me in getting this all set up.

The process to transfer involves connecting the Game Boy and “printing” the photo you want while the Arduino serial monitor is open and set 115200 baud. The data will flow into the serial monitor window, then you copy it and paste it into the decoder and you get your image.

While I’ve got a DSLR, a phone, a Raspberry Pi camera, and other ways to capture images, the Game Boy Camera is definitely one of the more esoteric methods of doing so. Stay tuned to see what I actually do with it.

Categories
Uncategorized

Presentation Camera

Samsung Presenter

When I teach at UWM we’ve got this presentation camera at the front desk that can be used to show the Arduino and a breadboard and how things are connected. I believe it’s a Samsung SDP-860. It was probably awesome in its day, but the quality is not amazing. It does have a number of controls to zoom in and adjust the brightness, and has a built-in light and multiple outputs, but I still am not impressed with the image quality. When I did use it, I just connected it via USB to my MacBook and used QuickTime Player to get a video window and then showed that with the projector. It allowed students to see the tiny components I was using… so yeah, it worked.

But then I thought to myself, “Why not just use a webcam!?” and that’s what I’m going to do. Since I’m not teaching in the Spring semester I offered to do a Beginner Arduino Class at Milwaukee Makerspace, so I built my own camera thing… the Raster Presenter!

Raster Presenter

Yes, it’s basically a desktop microphone stand. There’s a long gooseneck to allow positioning the camera to point directly down at the desk. (It’s similar to the gooseneck rig used on Time Lapse Bot III.) I’m using a Logitech C910, which I’ve had for years, and which outputs some decent quality video.

Raster Presenter

The Raster Presenter is not quite as pretty as the Samsung model, but I dare say the quality is better, and it may even be more adjustable. It’s also lighter, can be disassembled, and does not require an external power supply. (Just a single USB connection!)

Raster Presenter

The camera mounts to a small piece of wood using zip ties that fit into notches. The wood slides into half of a mic holder that came with the mic stand. There’s a little bit of gaff tape to stop it from rotating on the gooseneck, and Bob’s your uncle!

QuickTime

When you launch QuickTime Player you just choose “File” and then “New Movie Recording” and you should see some live video. If it shows the computer’s built-in camera you can change it via the drop down menu.

QuickTime

After choosing the proper camera you can also choose to change the quality. I found that “Maximum” gave much better results than “High”, although it did seem to enable the auto-focus in the camera, which can occasionally be an issue (at least with other webcams I’ve used.)

QuickTime

Once you have all your settings you can move your mouse off the window and the controls (and title bar) should disappear. As long as you’re connected to a projector your students are ready to see the small things you want to show them! In the sample shot above the only light I used was daylight from the window to my left. I could see a bit of static in the image, but even in low-light it looked pretty good. I’ll do some testing to see if I can get away with existing light or need to augment it with another light source.

Categories
Uncategorized

A New Arm (Part II)

Assembled Arm

In my previous new arm post I banged out a quick ‘n dirty replacement arm to hold an LCD display on a RED camera using some 3D printed parts and a few nuts and bolts.

Arm Parts

Version 1 worked, but I wasn’t totally happy with it. Iteration time! The beauty of digital fabrication using a 3D printer is that it’s easy to revise your design and try something new.

Block 1

One of the issues I had with version 1 is that things spun around too much. Even with the tightening bolts, there was more spinning happening when less spinning was desired. I ended up adding a hex-shaped hole to hold the head of the bolt in place. This resulted in less spinning.

Block 2

I then figured that if one hex hole was good, two were better! Sadly, while this worked well for the first corner piece, it didn’t work as well for the second corner piece that was held in place with the nut knob.

Block 3

No problem! OpenSCAD makes it easy to comment out a piece of code and output a new STL file. I now have two (slightly) different versions of the connecting block. Oh, I also rounded the edges a bit, which resulted in a better print, and a better feel.

One thing to note here. Where I originally posted an image of the connector block (before I even printed it) I made a comment about milling it from Aluminum. (Though ultimately it was decided that a drill press and band saw might be all the tools needed.) Milling this new design would probably still be doable, but until I’m sure we like this version, what’s the point? I may end up revising again.

Nut 1

And then there was the knob… The knob I had previously been using was one of the first things I ever printed on my RepRap. I’m sure I grabbed it from Thingiverse, but I’ll be damned if I can find it now. It may have been removed. Nevertheless, I didn’t love it, so I designed a new one. This is version 1, which was ok…

Nut 2

This is version 2, with a nice hull operation to give it a more rounded feel, and (probably) make it a little bit stronger. This is my new 1/4″ nut knob from now on. (Unless I design a new one!)

Parts

So yeah, a few 3D printed parts, some nuts and bolts from the hardware store, and we’re in business.

Assembled Arm

Oh, there’s also a screw in place of a bolt on the main support, because attaching it to the camera will be ten times easier with this feature, and you may also notice a slightly smaller version of the knob on the lowest mount point. This is (probably) needed to allow clearance to tighten it. (I didn’t have the camera around to test with, but I’ll find out this week if it works.)

Update: Tested it, seems to work well! You can grab the files from Thingiverse.

Arm on RED ONE

Categories
Uncategorized

A New Arm (Part I)

I’ve made elbows before, and while I should be making hands, I ended up working on a new arm this weekend. Rather than do all the work and just show the final thing, I thought I would do what I did with the MMPIS and post as I start a project so you can see all the steps involved.

RED ONE

As you can (sort of) see in the photo, the camera has an LCD display that is attached to an adjustable arm. You can even look at it while talking on the phone! The nice thing about the arm is that by twisting just one lever, you can adjust it to any angle, and then lock it down. The terrible thing about the arm.. is, well, everything else.

RED ARM

The arm held up to over 4 years of use (and abuse) but finally failed. Things wear out. It happens. I asked one of my camera rental guys about repairing it and he said “Can’t be done, just toss it.” So… Challenge Accepted!

I basically had the arm fixed, but then something else went wrong. It’s sort of a cascading effect with multiple points of failure. If one part doesn’t work, it affects all the parts, and nothing works. We fabricated a new rod, slightly longer than the original, to compensate for the wear on the original rod, but we had to remove a part to do so, and then that part wouldn’t stay secured when you tightened it. It became a vicious circle of fix it, watch it fall apart. Crap! (I still have one idea for fixing it, thanks to David Bryan. Once parts come in I’ll try that fix as well.)

Since I couldn’t reliably repair the arm in a timely manner, I decided to create a replacement. The nice thing about building camera accessories is that you get a lot of mileage out of existing off-the-shelf hardware like 1/4″ nuts and bolts.

Block

I fired up OpenSCAD and started designing a connector block, with the idea that 1/4″ bolts would be the “arm parts” and the blocks would be the “elbows”. There’s a slot to allow for the block to flex when tightened. I’d also be using those little hex nut knobs I use all the time.

Pieces

Once I had the parts printed, I used an X-ACTO knife to clean things up and trim things down. I also used a 1/4″ drill bit to clean up the holes a bit, and a vise to push the nuts into the knobs. All the metal and plastic bits in the photo probably adds up to less than $7 USD. (And there’s a lot of extra pieces here!)

New Arm

Here’s the assembled arm holding up the LCD display on the camera. It does indeed work, but we’re going to call this ‘version 1’ as there is definitely room for improvement. Still, it’s a much more functional arm than the broken one held together with gaff tape.

New Arm

I started making some notes on what worked, and more importantly, what didn’t work, for the next version. Again, the great thing about 3D printing is that it lets you go from an idea to a finished product very quickly, and then to iterate again very quickly. If I just count my time designing and assembling things (and not the time to print the parts) this is probably less than 90 minutes of work.

Categories
Uncategorized

TLBot 4: CameraPi

CameraPi

If you wondered why I needed a Raspberry Pi case that could also hold a Raspberry Pi Camera… well, seriously, don’t you people know me by now!? :)

This ‘CameraPi’ is a prototype for Time Lapse Bot 4, and if you’re not familiar with my time lapse hardware experiments, check out the Time Lapse Bot project page for a good introduction.

My Time Lapse Bots have always relied on old computers, and while you can typically get old computers pretty cheap, they are also, well… old. They run old software, they often have hardware failures, non-working batteries, are heavy, and a lot of other things that are (sometimes) fine, but sometimes annoying.

Enter the Raspberry Pi, a small, inexpensive, low-power, modern Linux computer that can use an add-on camera module to create an all-in-one solution to time lapse captures. This is the kind of stuff I love playing with!

So here’s the story of making the CameraPi. I’ll avoid getting into code at this post and just talk about the process and some applications.

At raspberrypi.org I grabbed the NOOBS install, mainly because I wanted to test it out, and it worked well! I went with Rasbian. I think it had all the camera software baked in, but if not, it’s easy to add.

AppleTalk

Once up and running, I added Avahi to give the Raspberry Pi a nice network name (camerapi.local) and I also installed Netatalk to allow my Mac OS X machines to easily connect to it. Neither of these are required for the camera stuff, but I tend to drop these on most Linux machines I use.

As for the image capture, while the camera utilities have some time lapse capabilities, they did not work for me, which is fine, I created my own. (I should note that the Raspberry Pi is for educational use, so I try to follow that idea and, well, learn a lot while using it.)

I wrote a simple bash script to capture a new image every 60 seconds. You can set whatever interval you like, but I like 60 seconds. For one day that gives you 1440 images, if you’re keeping track at home. Depending on your image size and compression settings that could be over 1GB per day of still images. I’m currently using 1280×720 for my image size, as that works well when compiling video.

Photo

As long as we’re capturing images every minute, why not have a way to display them remotely via a web browser? Sure! I also installed Apache for that. There are lighter HTTP servers, but I like Apache. I wrote a simple CGI script to grab the latest image file and display it on a page… and there’s also a link to all the images for the day. Oh, and the page auto-refreshes so it keeps showing the latest image. (The images are named like so: 20130905140427 using the YYYYMMDDHHMMSS format.)

Files

OK, so we now have this running archive of photos. At some point (like, the second day) you’re going to have way more images in that folder than you want. Another shell script is the answer! Script #2 runs after midnight, grabs the date of the previous day, and moves all images matching that date to their own folder. (Oh, where do we store all these images? On a tiny USB thumb drive. It’s an 8GB drive. We figured filling that was better than filling the SD Card that contains the system.)

Files

Now we’ve got a folder named 20130905 with 1440 images in it. We should probably do something with it… Make a video! Once the files are moved we run a command with mencoder to compile all the JPG files (sorted by name, which is also sorted by date) into an AVI file. I don’t really care for AVI files though, so when that is done (and, it takes about 6 hours due to the high-quality encoding settings I use) we then use avconv (which used to be ffmpeg, sort of, oh, Linux!) to convert the AVI to an MP4 file. That does not take hours. This is all messy and could be done better.

Video

So after all that, we now have an MP4 file we can view in our browser, though it’s a silly MP4 that needs to completely load before it starts. Silly! There must be a better way.

Yes. There must be a better way. I’m sure there is. Here’s the thing. I really just started hacking. I didn’t know where I was going, so it’s all been guessing and trying things along the way. That’s the beauty of it. I’m not building this for a client. I’m not building a commercial product. I’m just playing and learning. I love it.

Oh, I forgot, I also set my capture script to launch at startup as a service. That means it also stops cleanly when you halt the system. Also, you can halt the system via another CGI just by loading a web page. Secure? Probably not. Ideally I’d like to be able to have the Pi create a WiFi network I can attach to from my phone and control. That would be nice. I’m sure it’s doable, I just need to dig in more. Dig. In. More.

Well that was fun! Thanks for reading this. If anyone really wants more info on the code, I could clean it up a bit (or not) and post it. As always, improvements are very welcome.

Update: Here’s an example video.