Modify Xbox 360 Kinect for PC Use

I want to get some first hand experience working with depth cameras in a robotics context, and a little research implied the Xbox 360 Kinect sensor bar is the cheapest hardware that also has decent open source software support. So it’s time to dust off the Kinect sensor bar from my Halo 4 Edition Xbox 360.

I was a huge Halo fan and I purchased this Halo 4 console bundle as an upgrade from my first generation Xbox 360. My Halo enthusiasm has since faded and so has the Xbox 360. After I upgraded to Xbox One, I lent out this console (plus all accessories and games) to a friend with young children. Eventually the children lost interest in an antiquated console that didn’t play any of the cool new games and it resumed gathering dust. When I asked if I could reclaim my Kinect sensor bar, I was told to reclaim the whole works. The first accessory to undergo disassembly at SGVTech was the Xbox 360 Racing Steering Wheel. Now it is time for the second accessory: my Kinect sensor bar.

The sensor bar connected to my console via a proprietary connector. Most Xbox 360 accessories are wireless battery-powered devices, but the Kinect sends far more data than normal wireless controllers and requires much more power than rechargeable AA batteries can handle. Thus the proprietary connector is a combination of a 12 volt power supply alongside standard USB 2.0 data at 5 volts. To convert this sensor bar for computer use instead of a Xbox 360, the proprietary connector needs to be replaced by two separate connectors: A standard USB 2.0 plug plus a 12V power supply plug.

Having a functioning Xbox 360 made the task easier. First, by going into the Kinect diagnostics menu, I could verify the Kinect is in working condition before I start cutting things up. Second, after I severed the proprietary plug and splayed out wires in the cable, a multimeter was able to easily determine the wires for 12 volt (tan), 5 volt (red), and ground (black) by detecting the voltages placed on those wires by a running Xbox 360.

That left only the two USB data wires, colored green and white. Thankfully, this appears to be fairly standardized across USB cables. When I cut apart a USB 2.0 cable to use as my new plug, I found the same red, black, green, and white colors on wires. To test the easy thing first, I matched wire colors, kept them from shorting each other with small pieces of tape, and put 12V power on the tan wire using a bench power supply.

Since I was not confident on this wiring, I used my cheap laptop to test my suspect USB wiring instead of using my good laptop. Fortunately, the color matching appeared to work and the sensor bar enumerated properly. Ubuntu’s dmesg utility lists a Kinect sensor bar as a USB hub with three attached devices:

  1. Xbox NUI Motor: a small motor that can tilt the sensor bar up or down.
  2. Xbox Kinect Audio: on board microphone array.
  3. Xbox NUI Camera: this is our depth-sensing star!

xbox nui camera detected

[ 84.825198] usb 2-3.3: new high-speed USB device number 10 using xhci_hcd
[ 84.931728] usb 2-3.3: New USB device found, idVendor=045e, idProduct=02ae
[ 84.931733] usb 2-3.3: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[ 84.931735] usb 2-3.3: Product: Xbox NUI Camera
[ 84.931737] usb 2-3.3: Manufacturer: Microsoft

xbox 360 kinect with modified plugs 12v usb

ROS In Three Dimensions: Starting With Xbox 360 Kinect

The long-term goal driving my robotics investigations is to build something that has an awareness of its environment, and intelligently plan actions within it. (This is a goal shared by many other members of RSSC as well.) Building Phoebe gave me an introduction to ROS running in two dimensions, and now I have ambition to graduate to three. A robot working in three dimensions need a sensor that works in three dimensions, so where I’m going to start.

Phoebe started with a 2D laser scanner purchased off eBay that I learned to get up and running in ROS. Similarly, the cheapest 3D sensor that can be put on a ROS robot are repurposed Kinect sensor bars from Xbox game consoles. Even better, since I’ve been a Xbox gamer (more specifically a Halo and Forza gamer) I don’t need to visit eBay. I have my own Kinect to draft into this project. In fact, I have more than one: I have both the first generation Kinect sensor accessory for Xbox 360, and the second generation that was released alongside Xbox One.

xbox 360 kinect and xbox one kinect

The newer Xbox One Kinect is a superior sensor with a wider field of view, higher resolution, and better precision. But that doesn’t necessarily make it the best choice to start off with, because hardware capability is only part of the story.

When the Xbox 360 Kinect was launched, it was a completely novel new device offering depth sensing at a fraction of the price of existing depth sensors. There was a lot of enthusiasm both in the context of video gaming and hacking them to be used outside of Xbox 360 games. Unfortunately, the breathless hype wrote checks that the reality of a low-cost depth camera couldn’t quite cash. By the time Xbox One launched with an updated Kinect, interest had waned and far fewer open source projects aimed to work with a second generation Kinect.

The superior capabilities of the second generation sensor bar also brought downsides: it required more data bandwidth and hence a move to USB 3.0. At the time, USB 3.0 ecosystem was still maturing and new Kinect had problems working with certain USB 3.0 implementations. Even if the data could get into a computer, the sheer amount of it placed more demands on processing code. When coupled with reduced public interest, it meant software support for the second generation Kinect is less robust. A web search found a lot of people who encountered problems trying to get their second generation bar to work.

In the interest of learning the ropes and getting an introduction to the world of 3D sensing, I decided a larger and more stable software base is more interesting than raw hardware capabilities. I’ll use the first generation Xbox 360 Kinect sensor bar to climb the learning curve of building a three-dimensional solution in ROS. Once that is up and running, I can try to tame the more finicky second generation Kinect.

Happy Octopus Eating Taco and Fries

As a short break from larger scale projects, I decided to get some more SMD soldering practice. When I was at Supercon I received these little soldering kits which were designed to the simple “Shitty Add-On” specification. It’s a way for people to get a simple start with PCB projects made with aesthetics in mind as well as functionality, headlined by sophisticated #badgelife creations.

As fitting their simple nature, all I have to start with are little zip lock bags of parts. The first hint towards assembly instructions were printed on the circuit board: the text @Michelle4904 which pointed to the Twitter page of Michelle Grau and a Google Doc of assembly instructions. One notable fact of these kits is that there were no extra parts to replace any that might accidentally fly off into space, which meant I had to be extra careful handling them. Fortunately, the parts were larger than my most recent SMD LED project and while I did drop a few, these were large enough they did not fly too far and I was able to recover them.

I started with the fries. It was slow going at first because I was very afraid of losing parts. But I gradually built up a feel for handling them and things got gradually faster. After a bit of experimentation, I settled on a pattern of:

  1. Tin one pad with a small blob of solder.
  2. Place the SMD component next to the blob, and melt the blob again to connect them.
  3. Solder the other end of SMD component to other pad.

michelle4904 fries in progress

This is the rapid start portion of the learning curve – every LED felt faster and easier than the last. Soon the pack of fries were finished and illuminated. I was a little confused as to why the five LEDs were green, I had expected them to be yellow. Maybe they are seasoned fries with parsley or something?

Tangential note: when I visit Red Robin I like to upgrade to their garlic herbed fries.

michelle4904 fries illuminated

Once the fries were done, I then moved on to the taco which had a denser arrangement of components. It was an appropriate next step up in difficulty.

michelle4904 tacos in progress

Once completed, I have a taco with yellow LEDs for the shell (the same yellow I would have expected in the fries…), red LED for tomato, green LED for lettuce, and white LED for sour cream. It’s a fun little project.

Tangential note: Ixtaco Taqueria is my favorite taco place in my neighborhood.

michelle4904 tacos illuminated

The last zip lock bag has a smiling octopus and it was the easiest one to solder. It appears the original intention was to be an 1-to-4 expansion board for shitty add-ons, but if so, the connector genders are backwards.

michelle4904 octopus with connectors

No matter, I’ll just solder the taco and fries permanently to my happy octopus tentacles. In order to let this assembly of PCBs stand on its own, I soldered one of the battery holders I designed for my KISS Tindies.

michelle4904 kit combo battery

And here’s a happy octopus enjoying Taco Tuesday and a side of fries.

michelle4904 kit combo illuminated

Strange Failure Of Monoprice Monitor 10734

Under examination at a recent SGVTech meet is a strange failure mode for a big monitor. Monoprice item #10734 is a 30-inch diagonal monitor with 2560×1600 resolution. The display panel is IPS type and have LED back light – in short, it’s a pretty capable monitor. Unfortunately, it has suffered a failure of some sort that makes it pretty useless as a computer monitor: certain subpixels on the screen no longer respond to display input.

Here the monitor is supposed to display black text “What” on a white background. But as we can see, some parts inside the letters that are supposed to be dark are still illuminated, most visibly here in some green subpixels. The misbehaving pixels are not random, they are in a regular pattern, but I’m at a loss as to why this is happening.

monoprice 10734 subpixel failure

And these misbehaving subpixels drift in their value. Over a course of several minutes they will shift slightly in response to adjacent pixels. The end result is that anything left on screen for more than a few minutes will leave a ghost behind, its colors remembered by the misbehaving subpixels. It looks like old school CRT screen burn-in, but only takes a few minutes to create. Unplugging the monitor, waiting a few minutes, plugging it back in and turning it on does not eliminate the ghost. I need to wait a week before the ghosting fades to an undetectable level. This behavior means something, but I don’t know what.

In the hopes that there’s something obviously broken, out came the screwdrivers to take the monitor apart. We were not surprised to find there are minimal components inside the metal case: there is the big panel unit, connected to a small interface board which hosts the power plug and all the video input ports, connected to an even smaller circuit board hosting the user control buttons.

monoprice 10734 backless

The panel is made by LG, model number LM300WQ6(SL)(A1).

monoprice 10734 panel lg lm300wq6 sl a1

A web search found the LG datasheet for this panel. Because it is a 10-bits per color panel, and there are so many pixels, its data bandwidth requirements are enormous. 4 LVDS channels clocking over 70 MHz. There were no visibly damaged parts on its integrated circuit board. On the other end of LVDS interface cables, there were no visible damage on the interface board either.

monoprice 10734 interface board

Before I opened this up and found the datasheet, I had thought maybe I could generate signals to feed this panel using a PIC or something. But the chips I have are grossly underpowered to talk to a 4-channel LVDS panel at required speed. Perhaps this could be a FPGA project in the future? For now this misbehaving monitor will sit in a corner gathering dust waiting for the time I get around to that project, or until the next housecleaning pass where it departs as electronic recycle, whichever comes first.

Freeform Fun with Salvaged SMD LEDs

There’s a freeform circuit contest going on at Hackaday right now. I’m not eligible to enter, but I can still have fun on my own. I haven’t had any experience creating freeform circuit sculptures and now is as good as time as any to play around for a bit.

Where should I start? The sensible thing is to start simple with a few large through-hole light-emitting diodes (LEDs), but I didn’t do that. I decided to start higher up on the difficulty scale because of a few other events. The first is that I learned to salvage surface mount devices (SMD) from circuit boards with a cheap hot air gun originally designed for paint stripping. I had pulled a few SMD LEDs from a retired landline telephone and they were sitting in a jar.

The second is the arrival of a fine soldering iron tip (*). I had ordered it in anticipation for trying to repair a damaged ESP32 module. I thought I should practice using these new tips on something expendable before tackling an actual project, and a freeform exercise with salvaged SMD LED seems like a great opportunity to do so.

As a beginner at free form soldering, and a beginner at SMD soldering, the results were predictably terrible. I will win no prizes for fine workmanship here! But everyone has to start somewhere, and there will be many opportunities for practice in the future.

7 survivors light

It’s just a simple circuit with seven LEDs in parallel, on the lead of their shared current-limiting resistor. Not visible here is another aspect of learning to work with surface mount components: they are really, really small. I had actually salvaged nine LEDs. Two of the nine LEDs have flown off somewhere in my workshop and didn’t make it to the final product.

9 salvaged LEDs

For comparison, here is the “I ❤ SMD” soldering kit that was my gentle introduction to surface mount soldering. The LED in that soldering kit were significantly larger and easier to manipulate than those I salvaged from an obsolete landline telephone.

SMD intro size comparison

Moral of the story: for future projects practicing SMD assembly, be sure to have spare components on hand to replace those that fly off into space.

(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Sony KP-53S35 Signal Board “A” Components

Here are the prizes rewarded for an afternoon spent desoldering parts from a Sony KP-53S35’s signal board “A”.

Signal board A top before

The most visually striking component were the shiny metal boxes in the corner. This is where signal from the TV antenna enters into the system. RF F-Type connectors on the back panel is connected to these modules via their RCA type connector. Since this TV tuned in to analog TV broadcast signals that have long since been retired, I doubt these parts are good for any functional purpose anymore. But they are still shiny and likely to end up in a nonfunctional sculpture project.

Near these modules on the signal board was this circuit board “P”. It was the only module installed as a plug-in card, which caught our eye. Why would Sony design an easily removable module? There were two candidate explanations: (1) easy replacement because it was expected to fail frequently, or (2) easy replacement because it is something to be swapped out. Since the module worked flawlessly for 21 years, it’s probably the latter. A web search for the two main ICs on board found that the Philips TDA8315T is a NTSC decoder, which confirmed hypothesis #2: this “P” board is designed to be easily swapped for a TV to support other broadcast standards.

The RCA jacks are simple and quite likely to find use in another project.

Miscellaneous ICs and other modules were removed mostly as practice. I may look up their identifiers to see if anything is useful, but some of the parts (like the chips with Sony logo on top) are going to be proprietary and not expected to be worth the effort to figure out what they do.

The largest surface mount chip – which I used as hot air SMD removal practice – was labeled BH3856FS and is an audio processing chip handling volume and tone control. Looking at the flip side of the circuit board, we can see it has a large supporting cast of components clustered near it. It might be fun to see if I can power it up for a simple “Hello World” circuit, but returning it to full operation is dependent on the next item:

What’s far more interesting is nearby: the TDA7262 is a stereo audio amplifier with 20W per channel. This might be powerful enough to drive deflection coils to create Lissajous curves. The possibility was enough to make me spent the time and effort to remove its heat sinks gently and also recover all nearby components that might support it. I think it would be a lot of fun to get this guy back up and running in a CRT Lissajous curve project. Either with or without its former partner, the BH3856FS audio chip above.

Lissajous Curve Is An Ideal CRT Learning Project

Lissajous curve with shorter exposure

It was satisfying to see our CRT test rig showing Lissajous curves. [Emily] and I both contributed components for this cobbled-together contraption, drawing from our respective bins of parts. While the curves have their own beauty, there were also good technical reasons why it makes such a great learning project for working with salvaged cathode ray tubes. Mainly for things we don’t have to do:

Focus: We weren’t able to focus our beam in our first work session. We couldn’t count on sharp focus so we appreciate that Lissajous curves still look good when blurry. Thankfully, we did manage better focus for better pictures, but it was not required.

Modulation: To create a raster image, we must have control over beam brightness as we scan the screen. Even if doing arcade vector graphics, we need to be able to turn the beam off when moving from one shape to another. In contrast Lissajous curves are happy with an always-on dot of constant brightness.

Deflection: To create a raster image, we’d need a high level of control over the tube’s deflection coils. We’d need to create a constant horizontal sweep across the screen, as well as scanning vertically. HSYNC, VSYNC, all that good stuff. In contrast driving deflection coils for Lissajous curves require far gentler and smoother coil changes.

Geometry: Unlike modern flat panel displays, CRT can have geometry distortions: pincushion, trapezoidal, tilt, they’re all annoying to adjust and correct in order to deliver a good raster image. Fortunately, a Lissajous curve suffering from geometry distortions still look pretty good and allow us to ignore the issue for the time being.

There is a long way to go before we know enough to drive these tubes at their maximum potential. For one thing, it is running at a tiny fraction of its maximum brightness level. The tube’s previous life in a rear projection television was a hard one, visible in the above picture as a burned-in trapezoid on its phosphor layer. Driven hard enough to require liquid cooling, it would be so bright to be painful to look at and that’s when the beam is scanning across the entire screen. A Lissajous curve covers only a small fraction of that screen area. Concentrating a full-power beam in such a small area would raise concerns of phosphor damage. As pretty as Lissajous curves are, I don’t want them permanently burned into the phosphor. But we don’t have to worry about it until we get beam power figured out.

CRT Test Rig Produced Lissajous Curves

Last night’s CRT exploration adventures with [Emily] produced beautiful Lissajous curves on-screen that looked great to the eye but were a challenge to capture. (Cameras in general have a hard time getting proper focus and exposure for CRT phosphors.) Here’s a picture taken with exposure time of 1/200th of a second, showing phosphor brightness decay in a simple curve.

Lissajous curve with shorter exposure

Due to this brightness decay, more complex curves required a longer exposure time to capture. This picture was taken with a 1/50th second exposure but only captured about half of the curve.

Lissajous curve with longer exposure

Our test setup was a jury-rigged nest of wires. Not at all portable and definitely unsafe for public consumption. It required a space where everyone present are mature adults who understand high voltage parts are no joke and stay clear. (And more pragmatically, if an accident should occur, there will be other people present to call for immediate medical attention.)

CRT Test Rig angled view

Our beam power section consisted of two subsystems. The first is a battery that supplies low power (8 volts and less than 1 watt) to heat the filament. Using a battery keeps it electrically isolated from everything else. The second subsystem supplies high voltage to drive the CRT, and we keep a respectful distance from these parts when powered on.

CRT Test Rig beam power system

Connected to the tail end of the tube is the connector we freed from its original circuit board, wired with a simplified version of what was on that board. Several pins were connected to ground, some directly and others via resistors. The two wires disappearing off the top of the picture are for the heated filament. Two wires for experimentation are brought out and unconnected in this picture. The red connects to “screen grid” (which we don’t understand yet) and the black connected to an IC which we also don’t understand yet.

This is a rough exploratory circuit with known flaws. Not just the two wires that we haven’t yet connected to anything, but also the fact when we connected its ground to transformer’s ground, the tube flared bright for a fraction of a second before going dark. We only got a dot when connecting transformer ground to the filament heater negative, which was unexpected and really just tells us we still have a lot to learn. On the upside, something in this circuit allowed our “focus” wire to do its job this time, unlike our previous session.

CRT Test Rig tube wiring

But that’s to be figured out later. Tonight’s entertainment is our beam control section, which sits safely away from the high voltage bits and we can play with these while our tube is running.

CRT Test Rig beam control system

Controlling vertical deflection is an old Tektronix function generator. This is a proper piece of laboratory equipment producing precise and consistent signals. However, its maximum voltage output of 20V is not enough to give us full vertical deflection. And since we only had one, we needed something else to control horizontal deflection.

That “something else” was a hack. The big black box is a “300W” stereo amplifier, procured from the local thrift store for $15. Designed to drive speaker coils, tonight it is driving a CRT control yoke’s horizontal deflection coil instead. It was more than up to the task of providing full deflection. In fact, we had to turn the volume down to almost minimum for tonight’s experiments. A cell phone running simple tone generator app provided input signal. Not being a precision laboratory instrument, the signal generated was occasionally jittery. But enough for us to have fun producing Lissajous curves!


Old TV Picture Tubes Lights Again

When we tore apart an old rear projection television a few weeks ago, I did not expect those picture tubes would ever light up again. We took everything apart quickly within the narrow time window, so we didn’t have time to be careful to keep the electronics driving those CRTs intact. Those electronics are in pieces now, and in that writeup, I said the tubes were beautiful glass work and I hoped to display them as such in the future.

Well, there has been a change in plans.

On the same day as that teardown, [Emily] was gifted an old non-functioning camcorder. She has since taken that apart, too. The first component to see reuse was its tiny black and white viewfinder CRT. And as she dug deeper into the world of old CRTs, [Emily] came across this YouTube video by [Keystone Science] going over the basics of a cathode-ray tube and shared it with me. We were inspired to try lighting these tubes up again (without their original electronics) at yesterday’s SGVTech meetup.

The first step was to straighten out the pins at the rear end of our salvaged CRTs – they got a bit banged up in transport. A quick web search failed to find details on how to drive these tubes but probing with a meter gave us a few candidates for exploration.

Probing CRT pins

  • A pair of wires had around 8 ohms of resistance, highest of all wire pairs that gave a reading. This is likely the heating filament.
  • A few other wire pairs gave readings we didn’t understand, but several of them had some relation to a common pin. The common pin was thus our best candidate for cathode pin.

We knew the anode is connected to the side of the CRT, so now we have all the basics necessary to put a blurry dot on screen. A bench power supply was connected to the eight ohm load, and a few seconds later we can see a dull glow. Then a high voltage transformer was powered up across our anode and candidate cathode.

RPTV picture tube and transformer

After a bit of debugging, we have our blurry green dot! We proceeded to power up the other two tubes, which gave us a blue dot and a red dot. The colors look good to us, but apparently they’re not quite the right colors because during our TV disassembly we saw some color filters on the red and green tubes. (The blue tube had no color filter.)

During the course of the evening, the quality of our dot varied. Most of the time it was a blur approximately 5mm in diameter. On one occasion it bloomed out to 3cm diameter and we didn’t know what had caused it. Likewise, we had a pinpoint bright dot for a few seconds not correlating to any activity we could recall. As far as driving a CRT, we know enough to be respectful of the high voltage involved, but obviously we still have a lot more to learn. It’s just as well we don’t know how to focus the dot, because in the absence of sweep, a constant bright focused dot would likely burn a hole in the center of the screen’s phosphor layer.

A first step towards moving the beam was to put some power on the magnetic deflection yokes. These coils of wire were hooked up to a function generator, and we were able to get movement along one axis. Its maximum output of +/- 20V could only deflect a small fraction of the screen size, but it was something.

We didn’t have a second function generator on hand, but we got movement along another axis using magnets. They were taped to a shaft that was then put into a cordless drill. Holding the spinning drill near the control yoke induced movement along the other axis. Combined with the function generator, it allowed us to make a few curves on screen.

RPTV Red curves

Tinkering projects with visual results are always rewarding. With this success, there might yet be life ahead for these tubes as something other than pretty glass. A search found a hobbyist’s project to drive a CRT for an XY vector arcade monitor. That project page also linked to an excellent description of vector CRTs as used in old Atari arcade machines. Lots to learn!

Fun With Tiny CRT

When we took apart the big old rear projection television, the same family also had an old VHS camcorder from the 1980s slated for disposal. [mle_makes] took it off their hands and merrily started taking it apart for fun components. First component to be brought to our weekly SGVHAK meetup was the viewfinder’s tiny CRT. I brought the box of Sony KP-53S35 salvaged RPTV parts on the same day so we could place the two picture tubes side by side with a ruler between them.

Tiny CRT 1 - Side by side with RPTV tube

While the big tube had 21 years of TV watching burned in to the surface, the little CRT looks to be in good shape. (Also, the RPTV tube was likely driven far harder to generate the necessary brightness.) And since the little tube was part of a battery-powered device (12 volt lead-acid!) the picture tube flickered to life with a DC power supply.

Viewed from the top, we are reminded how much of a space savings modern LCDs gave us. Both of these tubes are far longer than their picture’s diagonal size.

Tiny CRT 2 - Length comparison with RPTV tube

The little tube’s image was remarkably crisp and bright when viewed in person, a fact extremely difficult to capture in a photograph. The 525 scan lines of a NTSC signal meant this little tube was pushing 600 dpi of resolution!

Tiny CRT 3 - tape measure

All of these images on the tube were generated from an old video conference camera, which had a composite video output port that was wired to the tube’s control board. Here’s one of the test setups, using a scrap piece of paper and a simple smiley face drawn on it with a Sharpie marker.

Tiny CRT 4 - camera test setup

The best picture taken of the tube was when I narrowed the aperture to get a longer field of depth, so the camera is free to focus on something other than the actual picture and still get halfway decent results. (I think it is focused on the edges of the glass here.) An admirable amount of paper texture was conveyed on this tube.

Tiny CRT 5 - camera test image

A few weeks after this initial tiny CRT demo, it became the centerpiece of this Freeform Mini CRT Sculpture on

Shouldn’t Simple LIDAR Be Cheaper By Now?

While waiting on my 3D printer to print a simple base for my laser distance scanner salvaged from a Neato robot vacuum, I went online to read more about this contraption. The more I read about it, the more I’m puzzled by its price. Shouldn’t these simple geometry-based distance scanners be a lot cheaper by now?

The journey started with this Engadget review from 2010 when Neato’s XV-11 was first introduced to fanfare that I apparently missed at the time. The laser scanner was a critical product differentiation for Neato, separating them from market leader iRobot’s Roomba vacuums. It was an advantage that was easy to explain and easy for users to see in action on their product, both of which help to justify their price premium.

Of course the rest of its market responded and now high-end robot vacuums all have mapping capability of some sort or another, pushing Neato to introduce other features like internet connectivity and remote control via a phone app. In 2016 Ars Technica reviewed these new features and found them immature. But more interesting to my technical brain is that Ars linked to a paper on Neato’s laser scanner design. Presented at May 19-23 2008 IEEE International Conference on Robotics and Automation titled A Low-Cost Laser Distance Sensor and listing multiple people from Neato Robotics as authors, it gave an insight into these spinning domes. Including this picture of internals.

Revo LDS

But even more interesting than the fascinating technology outlined in the paper, is the suggested economics advantage. The big claim is right in the abstract:

The build cost of this device, using COTS electronics and custom mechanical tooling, is under $30.

Considering that Neato robot vacuums have been in mass production for almost ten years, and that there’s been ample time for clones and imitators to come on market, it’s quite odd how these devices still cost significantly more than $30. If the claim in the paper is true, we should have these types of sensor for a few bucks by now, not $180 for an entry-level unit. If they were actually $20-$30, it would make ROS far more accessible. So what happened on the path to cheap laser scanner for everyone?

It’s also interesting that some other robot vacuum makers – like iRobot themselves – have implemented mapping via other means. Or at least, there’s no obvious dome of a laser scanner on top of some mapping-capable Neato competitors. What are they using, and are similar techniques available as ROS components? I hope to come across some answers in the near future.

Learning How To Use Pololu Stepper Driver Modules

My first experience with stepper motors is with this very inexpensive Amazon offering. (*) I’ve since learned that these stepper motors are termed “unipolar” which incurs some trade-offs. From the price tag I knew they were cheap, and from the description I knew they were easy to control from a simple program. What I did not know about is the fairly significant headwinds if one wishes to get beyond the basics.

The simple driver module that goes with these simple motors only works for straightforward on/off control. When I tried to modulate the power to be somewhere between on and off, mysterious electromagnetic stuff started happening causing erratic motor behavior. At the time I decided to postpone solving the issue and to look into it later. Well, now is later and I’m going to solve my problem by ignoring unipolar motors entirely. Because it’s more productive to look at the bipolar stepper motors used by pretty much every halfway decent piece of hardware.

The motors themselves are more expensive, and the drivers are as well. Fortunately economies of scale meant “more expensive” is still only a few dollars. Pololu sells a line of stepper motor driver modules that are popular with the 3D printing crowd. (Or at least that’s where I learned of them.) The module’s physical form factor and pinout has become something of a de-facto industry standard. And a bipolar stepper motor for experimentation is equally easy to obtain as pretty much any stepper motor salvaged from consumer electronics will be a bipolar motor. For the purposes of my experiment, this motor came from a dead inkjet printer’s paper-feed mechanism.

Hooking up the electronics is a fairly straightforward exercise in reading data sheet and following instructions. The only thing I neglected was a capacitor across the motor input pins, something pointed out to me when I brought this experimental rig to a local maker meet. Fortunately I had been playing with a small enough motor that the absence of said capacitor didn’t fry everything.

All I needed to do was generate two data signals: direction and step. This is apparently a fairly common interface, even industrial-type stepper motor controllers (*) accept similar inputs, so a Pololu is a great way to start. I created a small program to run on an 8-bit PIC microcontroller to generate these pulses, and the motor is off and running. It was super easy to get started, and this setup is enough for me to play around and build some basic understanding of stepper motor behavior. How they trade torque for speed, and how they respond to higher voltage/amperage. It’s a good foundation for designing future robotics projects.

Components on the breadboard, from left to right:

  1. Breadboard Power Supply (*)
  2. Pololu A4983 Stepper Driver
  3. PIC16F18345 with program to generate step/direction based on potentiometer value.
  4. LEDs hooked up in parallel with step and direction signals.
  5. Potentiometer

(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

A Gentle Introduction To Surface Mount Soldering

In my electronics projects to date, I’ve avoided surface mount devices (SMD) as much as I could. They require custom circuit boards because, given the absence of through-hole legs, they don’t work on prototyping breadboards. They’re small, which makes them difficult to handle without specialized tools. Tools like microscopes to see them, fine-tipped tweezers to handle them, and specialized fine tips soldering irons to solder the tiny connections.

That avoidance came to a crashing end at Layer One, where I had to face SMD head on or be left out of the fun on the Layer One badge add-on kit. The tools were provided at the event, as well as some guidance, so I got over the very beginner parts of the learning curve. It doesn’t make me an expert by any means, that would require more practice.

In the spirit of keeping the momentum going, I decided to check out a beginner-friendly SMD soldering electronics kit. The “I Can Surface Mount Solder” kit was designed by someone who also wanted a gentle introduction to SMD and decided to design a circuit for the purpose. All information is open source so I can make my own. And catering to lazy people like myself, the designer has also put kits up for sale on the maker marketplace Tindie.

There’s a volume discount for buying ten or more, with no increase in shipping, so I decided to buy ten and bring them to share at my local hobbyist meetup. I knew I wasn’t the only one who wanted to practice SMD with something simple. Before the event I had one taker for a kit besides myself. During the meet, a third one was put together by a SGVHAK regular and two more were put together by people who have never attended a SGVHAK meet before. They came because they read the meeting information on and wanted to try SMD soldering. I count this as a publicity win.

The kit itself was far easier to put together than the LayerOne LED add-on kit. The SMD components were about the largest sizes available. So they could be seen by the naked eye and while we still needed tweezers to handle them, we could solder them with regular-sized soldering tips. The only real technical challenge was determining the appropriate orientation of the lone red LED, something that took us a while to figure out. Fortunately we all determined the direction correctly before soldering.

At the end of the night, we had five little pulsing heartbeat pendants and five people who had the satisfaction of a successful SMD soldering project.

I Heart SMD

Monoprice Maker Ultimate (Wanhao Duplicator i6) Kills Another Relay

I was willing to stop at “good enough for now” on modifying my open-box Monoprice Maker Select because I needed printers up and running. In the process of designing and iterating Sawppy‘s 3D-printed components, I kept both printers busy pumping out prototypes to see how the designs in my mind survived the translation into real world pieces.

Sometimes there was enough work to keep printers busy around the clock, and this was too much stress for the control boards inside these affordable printers. It’s an inevitable tradeoff between price tag and robustness. In the case of my Monoprice Maker Ultimate, the weakest point in the chain is the main motor relay that controls power going to all the motors (both stepper motors and fan motors) and heaters.

This relay has failed once before, and under the constant workload, another one has kicked the bucket. It has started failing intermittently which shows up as brief interruption in motor power. Since the electronics are not powered through this path, these brief interruptions ruined prints, making them look like the motor drive belt had skipped a few teeth when the reality was the motors stopping briefly as the electronics continued onwards.

Last time this happened, I kept trying to diagnose belt skipping. Wasting a lot of time looking over mechanical parts that were working well. This time I recognize the symptoms and pulled out the control board before the printer failed completely.

Since it wasn’t completely burned out yet, the relay exterior didn’t look bad – only a minor discoloration that might have gone overlooked if we didn’t know exactly where to look.

Relay exterior discoloration

Cutting away the relay’s blue enclosure exposed a familiar sight: the interior is fried.

D6 Second Failed Relay

It’s always easier to do something the second time, but addressing my second fried relay is still time spent not working on the project itself.

Solarbotics Photopopper 4.2 Photovore

And now, a completely unnecessary distraction.

While digging through the parts pile for stuff to help build Sawppy’s wiring, I came across an electronics kit that has been sitting, waiting to be built, for over a decade. Every time I came across this kit I decided “I’ll build it later.” And even though I’m in the middle of building rover wiring, I looked at this kit today and thought: “I kept saying I’ll build this someday… that day is today.”

Photopopper Bag

I’m not sure how old the kit is, but I’m quite confident it’s been over a decade. The only date visible is the last revision date on the manual – August 25, 2003. The manual said it is version 4.2, the Solarbotics catalog is now up to version 5.0. I thought its age wouldn’t be a problem, it’s not like electronic components decay, right?

Photopopper Contents

It’s a simple little kit of through-hole solder components. The first step – like all kits new and old – is to lay out all parts and check against the parts manifest in the instruction. Once all parts are accounted for, assembly can begin. Given the growth in my electronics skills over the past years, this “Skill Level 3” kit is now a breeze to assemble.

It took only about half an hour to reach the point where all power components are connected. I am instructed to take the partially built robot someplace bright to give the solar powered system a test. I placed it under sunlight and… nothing.

First I ran through troubleshooting steps outlined in the manual, and none of them helped. So it was again time to deploy skills I didn’t have years ago, this time for electronics debugging. Out came the multi meter and start probing the circuit.

Diagnosis: the electrolytic capacitor is dead. Remember when I said electronic components don’t decay with age? Well, that was wrong because electrolytic capacitors do. Back into the parts pile I go and I was able to find another 4700 uF capacitor. Problem: it is physically a far larger device. In this picture, the dead capacitor from the kit is on the right, dwarfed by the new functional capacitor on the left.

Photopopper Capacitor

Since the functional capacitor is much larger physically, it couldn’t fit in the same space under my photopopper. The big capacitor would have to go above. The dead capacitor also served as the third leg of the photopopper, so that job had to be reassigned to a little piece of wire. Now the robot sit on the wire instead of a capacitor along with its two wheels.


And now… it moves! The little solar panel charges up the capacitor, and ever few seconds that power is dumped into one of the electric motors, scooting the photopopper a tiny bit forward. A process that will repeat for as long as there’s light shining on the solar panel. I’m sure that it would move farther or maybe faster if the original sized capacitor was in place. This poor photopopper has to carry a big heavy barrel of a capacitor on its back.

Technically the kit has not been completely assembled. There are also two touch sensors that help the photopopper detect walls and steer away from them. But given that it is moving, and that I wanted to get back to assembling wiring for Sawppy the Rover, I’m content enough to leave the photopopper as is. I’ll pull it out every once in a while, so I could put it under sunlight and let it scoot around.








Old ElectriFly Triton Sheds Light On Battery Condition

Today’s enlightenment comes courtesy of an old ElectriFly Triton battery charger unearthed from the dusty equipment shelf. This particular charger was purchased years ago to feed an interest in electric remote-control aircraft. At the time, the RC aircraft field was in a period of transition. The lowest-cost aircraft came with NiCad batteries, the mainstream used NiMH batteries, and the premium segments started adopting lithium-ion chemistries. To work in this world, the charger is designed to be used out at a remote control air park, hence it was designed to run on a 12 volt lead-acid battery instead of an AC outlet that might not be at the airfield.

Born into this confusion, the Triton charger was a jack of all trades. It knows how to properly charge all of the above types of batteries. It even has the capability to do a charge/discharge cycle to measure capacity. The latest models appears to have picked up even more features, but this old one is already on hand and can tell us interesting things.

Triton was first used to quantify behavior of an old 12Ah lead-acid battery dug up for solar panel investigation. It had discharged down to 6V while in storage and its voltage curve did not behave as expected. The good new is that even degraded, Triton deemed it within acceptable behavior range for a lead-acid battery. The bad news: Triton discharge test added up to only about 3.5Ah of usable capacity remaining out of the original 12Ah. There might be interesting projects where a degraded lead-acid battery can be useful, but it’s equally likely to end up in battery recycle.

After the old lead-acid battery was examined, the Triton was employed for the NiCad battery cells pulled out of the recent Dustbuster project. These cells suffered from chronic overcharging and exhibited depressed voltage levels when trying to deliver the current demanded by the Dustbuster motor. This condition might possibly be cured by individually charging and discharging the cell multiple cycles according to NiCad best practices, but that didn’t seem worth the expense of buying a NiCad charger/discharger. Fortunately, with the rediscovery of the Triton, we now have one. We’ll see if these NiCad cells can be recovered to a point to be useful for future projects, or if they should just go into battery recycle.

Triton NiCad

DSO 138 Simple Case by chibikuma2

The DSO 138 purchase was ultimately decided by seeing one in person, assembled by a local maker. That unit was first encased in an acrylic case, which cracked under use and was replaced by a 3D-printed case. Learning from the pioneer’s experience, I’ll skip the acrylic case and go straight to the 3D-printed one. If it works out, I’ll have something useful to protect the DSO 138. If it doesn’t, at least I could see one in action and decide what improvements to make.

The printer is the Monoprice Maker Ultimate, and the STL files were sliced into G-Code using Cura 3.1, printed on top of a Cura-generated raft.

DSO138 Case Bits

The author of this particular case is Thingiverse user “chibikuma2“. And the dimensions of the design looked good – all the pieces lined up well with parts on the DSO 138. The top and bottom parts of the case is held by friction. There were no fasteners and no clasps or hooks. 3D printers with loose XY accuracy may have problems creating this tight fit – if the XY “ooze” is too large, the pieces would not fit together at all. And conversely, if the printer under-extrudes, the two halves would be too loose to hold together.

The fit is good enough on the Maker Ultimate printer to fit together tightly. Once assembled, a putty knife or similar tool would be needed to pry the halves apart again.

The other printer performance dependency is first-layer performance. The labels for the controls in this design were done as lettering recessed into the surface. For these words to be legible, the first layer must be accurately positioned since slight movements are enough to spoil the lettering. Cura’s raft is what I usually use when first layer is important, sadly in this particular case it was not enough.

DSO138 Case Reset

The lettering is cosmetic, but there’s also a functional requirement for first layer precision: the 3D printed sliders that cap over the multi position switches on the DSO 138. The square hole at the base must match up to the square peg on the switches. If the holes are too large, there will be unpleasant slop in switch operation. If the holes are too small, the slider would not fit. Again this printer fell short of ideal, and had to be cleaned up with a small sharp blade.

DSO138 Case Slider

This is a decently functional case for the DSO 138, but this experience has motivated thinking towards creating a different design. Some items on the feature wish list are:

  • Move away from 3D-printed lettering. We have a label maker and we’re not afraid to use it.
  • Expose the loop of wire that generates the test square wave form.
  • Include a battery pack to supply the 9-12V DC power, with associated auxiliary components like an on/off switch.
  • A removable screen cover to protect the screen while in transit.
  • Storage for the probes.

DSO 138 Oscilloscope Kit by JYE Tech

An oscilloscope has been on the tool wish list for a while, but good ones are really expensive. But occasionally a simple basic scope would have been better than no scope at all, which is where today’s project comes into the picture.

JYE Tech makes the DSO 138 oscilloscope kit perfect for electronics hobbyists who can make use of a simple scope and also willing to put in the time and effort to assemble one out of a kit. The kit is available at a very low-cost, a fair exchange for making their customers do their own assembly.

This product is popular enough to spawn counterfeit copycats, which was a concern. Not just out of fear of a problematic product, but also the desire to support the original authors. Fortunately JYE Tech offers the option to send in the serial number for authenticity validation. The serial number of this unit purchased from Amazon vendor Kuman (*) checked out as authentic.

There are two versions of the kit that differ by their treatment of surface-mount components: pre-installed or not. This particular example is the variant with surface mount pieces already installed, the customer just has to take care of the remaining through-hole parts. All those parts to be soldered came in a single bag and had to be sorted and identified before assembly could begin.

DSO138 parts sorted

The instructions were straightforward enough for someone already familiar with basic electronics soldering. The only complaint with this kit is that some of the mount points were not designed for easy soldering. They connect directly to large pieces of copper trace that acted as a huge heat sink making it difficult to bring the solder joint up to temperature. It would have been nice if they etched a little more. Leave one contact sufficient to carry the current, and etched around the rest to serve as a thermal break.

Apart from that minor complaint, the soldering was not difficult, only tedious. The electronics hobbyist is reminded why manual assembly of circuit boards is not considered a great career. This particular example took roughly four hours to assemble. Thankfully, when power was connected, everything started running as they should. Here is the assembled DSO 138, showing the built-in square wave test signal.

DSO138 complete

A few simple tests followed the self test, clearly showing some limits of this little oscilloscope. For one thing, the voltage scale is quite unreliable. An AA battery at 1.22 volts (according to the Fluke multi meter) was interpreted by this oscilloscope as 1.67 volts. But we didn’t get this thing to read voltages – we want to use it to graph wave forms that we couldn’t see with a multi meter. (UPDATE: On the advice of the local maker who built a DSO 138 before I did, I ran the calibration routine to align Vpos with zero volt and now voltage levels are much closer to the Fluke meter readings.)

It’s now part of the toolbox. Thanks to its low-cost, it wouldn’t take much data to throw it in either of these two buckets:

  • Positive: “That was so much easier to diagnose with a scope, even a simple one. This was well worth the money.”
  • Negative: “The inaccuracy of the scope led us down the wrong diagnosis path. This was a waste of both time and money.”

While we wait for the verdict to come in, let’s work on an enclosure for this device.

(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Button Cell Joule Thief on a Clothespin

Since the time I got up and running building my own joule thief devices, I’ve been having fun lighting up LED with batteries that have otherwise been given up for dead. Most of them were AA and a few AAA, but I also had a few button cell batteries sitting around that might be good for a bit of LED fun.

Since these tiny little batteries are already weak, I did not expect very long run time out of them. And these cells on hand were in several different form factors. Given these two factors, it didn’t make sense to 3D print a battery case as I had done with with the AA batteries – the effort wouldn’t be worth the result. I just needed something to hold the contacts against the terminals of these thin batteries for long enough to drain their remaining power into some LED amusement.

Initially I tried the things that were already on my desk – paperclip and binder clip – but their naturally conductive nature meant it’s hard to avoid accidentally shorting the battery. I continued thinking along these lines during household chores, and I found my answer while doing laundry: clothespins!

Since these are made of cheap injection-molded plastic, they are not conductive like paperclips and binder clips. The cheap plastic can be easily melted with a soldering iron tip to mold around parts I wanted to mount. There is a spring to hold things tight, and the jaws open up wide enough for button cell batteries.

The bulk of the circuit was melted onto one jaw, and a wire is melted onto the other jaw. I had originally intended to run the wire through the middle of the spring, and started contemplating the best way to do so while minimizing the amount of stress metal fatigue would place on the wire.

Then I smacked myself on the forehead for overlooking the obvious: the spring is itself conductive! I don’t need to worry about metal fatigue of the wire if I recruit the spring into my circuit. So that was the final step – the wires of each jaw run to the spring, and the spring itself completes the circuit.

Clothes Peg Joule Thief

Analog Adventure: Flyback Diode

Every once in a while I learn the real world analog behavior of electronics components that I only think about in abstract digital terms. The most recent lessons come from my exposure to electrically operated switches a.k.a. relays. This exposure came from two fronts: one is the small failed relay module that I pulled out of my 3D printer, the other are the larger industrial-strength relays that were recently installed on the Tux-Lab thermoforming machine.

In the idealized digital world, these are just switches that control the flow of a large amount of electrical power on command of a much smaller electric signal. The control signal goes on, the big power goes on. Signal off, power off.

In the real world, this is implemented with an electromagnetic coil that generates the field necessary to move a physical armature. The tricky part comes from the time when the coil is de-energized. When the control signal is cut, the magnetic field collapses and is turned back into electrical energy on the circuit. This is actually the heart of my recent analog electronics project: a “Joule Thief” is a very simple flyback converter circuit to convert low battery voltage into a higher-voltage spike that can illuminate a LED.

But when the intent of the circuit is actually to just switch something on and off with a relay, such a voltage spike is unwelcome. It may in fact damage nearby components in the circuit. This is why I learned I needed to add flyback diode to protect the circuit for controlling the relays in the thermoforming machine.

Adding this array of diodes to protect against voltage spike complicates the prototype circuit, but it is good insurance to have. Once the control circuit is finalized, we plan to have a real circuit board fabricated so we don’t have to deal with this nest of wires. Unfortunately, in the near term I expect some headaches associated with the additional complexity.