BBB with CY8C201xx and WS2812

Python I2C Cypress Capsense Library on BeagleBone Black

Over the weekend, I spent some time getting my old Cypress CapSense Express capacitive touch boards to talk to my new BeagleBone Black.

On the BBB, I2C is relatively trivial. It includes internal pull-ups, like the Arduino, so you don’t have to muck around with external resistors. My boards have a spot for pull-ups, but I never populated them, since I expected that I would rarely have a single board running on a bus. The boards also run on 3v3, so that was easy on the BBB.

My language of choice is Python where possible, so I hunted around for libraries to perform I2C over python. SMBus to the rescue! Also, Adafruit has some nice BBB libraries for I2C, which I cribbed as a starting example.

I’ve posted the result to GitHub, alongside my older Arduino/Chipkit Cypress Capsense library, and posted the python module to PyPI, so you can do fetch it with pip or easy_install.

To invoke:

import CypressCapsense_I2C

####### INITIAL SETUP - Only Do Once Per Device
# sensorInit = CypressCapsense_I2C.CypressCapsense_I2C(0x00, debug=True)
# sensorInit.setupDevice()
# sensorInit.changeDeviceAddress(0x5D) # or whatever address you want
########################################################################


## this device has already been set up to use 0x5D as its address
sensor = CypressCapsense_I2C.CypressCapsense_I2C(0x5D, debug=False)

while(True):
    print "0x%02X" % sensor.fetchTouchStatus()

Cutting 0.8mm PCB with Paper Guillotine

I just received my iTead PCBs in the mail (took about 3 weeks). I paid an extra two dollars to get half-thickness so that I could cut them more easily. My regular old paper guillotine (Xacto brand, if that matters) made short work of them.

Yes, I’m aware the video is sideways… again.

These PCBs will go in the Helix tubes to provide touch sensing capabilities.

Helix Custom PCBs

So, it turns out that they let just anyone design and print PCBs with a minimum of cost and absolutely no training whatsoever! Hooray amateurism?

The latest batches of PCBs just came in for the Volunt project (a small-scale portable version of Helix). These are the touch controller breakout boards that fit inside the rods and communicate with a series of touch sensors and relay the information via I2C to the microcontroller in the base.

Cypress Capsense Breakouts

Sooooo Tiny

I designed these boards with Fritzing, and had them made by BatchPCB (green), and OSH Park (purple). I have another batch of boards coming for Helix and Volunt from iTead in China, but who knows when they’ll actually arrive.

If you look closely, you can see that the touch boards are populated almost entirely with surface mount components. I did those with this high-tech reflow rig.

 

 

My Glorious Chariot

My Glorious Chariot

Yes, that’s a super-cheap hot plate. I populate the boards with solder paste and the components and set the boards on that little metal plate. Then, I set the dial to the W in LOW, watch it until everything reflows, and pull it off the heat.

If you set the temperature too high, you get this fabulous thing happening.

Mmmmm. Tastes like burning.

Mmmmm. Tastes like burning.

Amazingly, this board still works!

There are much fancier DIY rigs with thermocouples, but I’m incredibly lazy and didn’t bother. This seems to work for my level of detail, and I have yet to render a board unworkable.

Finally, while I’m showing off, here’s my glorious and honorable work space. Honestly, I’m not un-proud of my space frugality. Everything fits, and nothing has caught fire… yet.

My Crib

My Crib