Intro: BisexuaLED: Twitter Responsive Pride Light V2/2
Bisexual people often feel more visible online than offline, despite being the largest group within LGBTQIA+ communities.This project attempts to bridge that gap by displaying the volume of bisexual people tweeting for Bi Visibility Week.
"As Brett Beemyn and Erich Steinman state in their introduction to the Journal of Bisexuality 'Since the late twentieth century, bisexuality has seemed to be both everywhere and nowhere in popular culture.' (Beemyn & Steinman, 2001 p3). To be visible is not enough when the goal is to be read correctly, and since this is not achieved, bisexuals must continue to intentionally perform in order to construct their non-mainstream sexuality" (pg. 108 of Nora Madison's Technologies of Visibility: New Mediations of Bisexuality)
"Many individuals in digital bisexual spaces experience an ironic tension between their f2f [face-to-face] and digital experiences where they feel better able to signal their true selves in online environments than in f2f encounters" (10).
This Instructable responds to issues of bisexual erasure and bi invisibility, and illustrates some of the challenges of bi visibility in face-to-face versus online spaces. It is a more advanced version of the BisexuaLED v1, sharing the same visual design, but using a Raspberry Pi 3 as a Twitter monitor. Whenever someone publicly tweets using #BiPride or #BiVisibility, a panel of bi pride colored LEDs lights up. With each pulse of light, this display visualizes the online presence of bisexual people in a physical space. As such, this Instructable was published to coincide with Bi Visibility Day (September 23). I hope that this project resonates today and every day with bisexual individuals, as well as allies within and alongside broader LGBTQIA+ communities.
I must thank the many bisexual friends who inspired and helped invent, design, critique, revise, and evaluate this project to ensure that it ethically and meaningfully represents bisexual communities. A special thanks to Nora Madison, whose work (quoted from above) provided necessary research and context for this project! We hope you enjoy reading, and that you proudly make your own light and share these instructions!
Total Time: 2-4 hours + Pi 3 setup time.
Skills Needed: Coloring, Soldering, 3D printing
Cost: ~$50-60 (Sandpaper + Permanent Markers + LEDs + Pi 3 + Power Cord)
Step 1: Materials
- Safety Goggles
- Dust Mask (if using a Dremel)
- Soldering iron
- 3D printer (if printing enclosure yourself)
- Dremel (for cutting perfboard)
- Pliers (helpful for bending LED leads)
- Solder sucker/braid for soldering mistakes
- Helping hand
- Multimeter (helps with testing the circuit)
- Breadboard (helps with testing the circuit)
Materials and Components
- 220 grit sandpaper (any medium grit should work)
- Permanent Markers: Pink, Purple, Blue, and Black (I used Sharpie Magenta, Purple, and Blue)
- Jumper wire (I used 22 AWG solid core wire )
- Female/Male jumper wires or Female/Female
- 5mm white LEDs (x6)
- Raspberry Pi 3
- Memory card for Pi
- 5 V 2 mA power cord for Pi 3
- Preferred Enclosure + Pi 3 base
- Super glue or hot glue gun
Before starting, if you've never used a Raspberry Pi before, it's a good idea to read through the quick start guide to configure your Pi for this project.
If you don't have a spare monitor and/or mouse and keyboard, a quick search for "headless" Raspberry Pi 3 install guides (i.e. those that use an ethernet or WiFi connection to configure the Pi) yields plenty of results.
Finally, I refer to Sparkfun's Pi Twitter Monitor guide at several points in this project, and it's worth quickly reading through before getting started.
Step 2: Print the Enclosure
To start, print your preferred case + base from the Thingiverse page for this project. I designed both a meeple enclosure and a heart enclosure because they're both gender neutral and simple prints. If you want to design your own custom case, just make sure to include clips for the LED holder and a hole for wires.
I printed the meeple case above using Printrbot's "Natural" translucent PLA filament at 0.2mm layer height to balance the visibility of the LEDs, print time for the case, and the surface finish. This project should work with any filament though, even if it's a solid color, but you might need to adjust the print settings for LED visibility. More detailed print settings are included in the Thingiverse description as well.
If you're printing your own case, you can save time by finishing Step 4 while the print runs. Afterward, return to Step 2 for trimming and test fitting before continuing.
Step 3: Trim the Enclosure and Test Fit
WARNING:If things don't fit together easily, don't force them! PLA snaps rather than bending, so if the fit is too tight, sand or trim away a little more plastic and try again.
The meeple case body and cap should press-fit together without the need for trimming or sanding. However, you might need to trim away the edges of the slots on the base that hold the feet (pictured above) to ensure the case and lid fits snugly with the base. Additionally, the holes in the LED holder might be too small on the side that touched the printer build platform, but these can be easily widened with a boxcutter or exacto blade (test the fit by inserting an LED; it should fit loosely but not get stuck). As always, it's easier to shave away a little plastic at a time and check for fit. That said, if you do accidentally trim too much, or the parts are already loose, most of them can be glued in place during the final assembly step if needed. The video below (from version 1 of this project) demonstrates how things should fit together.
To test the fit of the parts before final assembly:
- With the thinner side of the LED holder facing toward the wall of the body (this will be the front of the case when finished), snap the LED holder into place within the meeple case body.
- Press fit the meeple cap to the case body.
- Align the hole of the meeple body foot with the hole in the base top, and press fit the assembled meeple body into the base top.
- Fit the Pi 3 into the pi base.
- Fit the base top into the pi base.
If everything fits, disassemble the pieces, set them aside, and move on to the next step. If things are too tight, trim away plastic as necessary. And if things are too loose, you can glue them once everything is assembled.
Step 4: Color the LEDs
Note:Before coloring the LEDs, it's a good idea to test them with a watch battery or other power source to make sure they work.
To color the LEDs, I followed the steps in motadacruz's Instructable to color 6, 5mm white LEDs using three colors (two LEDs of each color). Essentially, you need to lightly sand each LED until they look frosty, dust off the excess powder, and color them with permanent markers (wearing disposable gloves here helps keep your fingers clean). The sanding process can be a little tedious, and some suggest using frosted glass spray paint to accomplish a similar effect, but I haven't tested it myself.
After sanding, to color the lights, I used three different Sharpie permanent markers (magenta, purple, and blue). Any permanent marker brand with similar colors should work, but since I'm colorblind, the labels on these were easy to identify consistently. I recommend coloring the LEDs in pairs, and then applying a second coat of color to make the final color more saturated.
Step 5: Layout and Test the Circuit
Once the LEDs are colored, you'll want to retest them to ensure they're still working, and then sketch out and test your circuit. Keep in mind that the finished circuit board will need to fit inside the case, and the LEDs will need to fit inside the LED holder. The easiest way I've found to do this is to lay the LED holder on some perfboard and trace its outline with a permanent marker to get the rough shape and size. From there, I placed the LEDs in the board according to the circuit diagram, and then drew guidelines for where the leads will poke through. I left 2-3 extra rows on each side for soldering components to the board and connecting everything, but your soldering may be cleaner than mine.
Note: If you have a breadboard, it's a good idea to test the working circuit before continuing to make sure everything works. If you don't have a breadboard, go slowly and test things as you go with a multimeter or battery.
Once you're satisfied with your test, cut the perfboard to size.
Step 6: Cut the Perfboard to Size
WARNING: To avoid inhaling dangerous fiberglass dust while cutting and filing, wear a mask and eye protection and work in a well-ventilated area. This is especially important if you use a Dremel to cut the board.
Based on the guidelines I drew in the previous step, I cut my perfboard by scoring it with a razor on both sides, snapping it, and then sanding it. That said, if anyone designs a PCB schematic for this I'd be happy to add it, as that's currently beyond my design knowledge.
Step 7: Solder and Test Components on Board
Bend the LED leads
I've found that it's easiest to shape the LED leads one at a time by placing them into the holder, putting the leads through the perfboard, carefully bending the holder 90-degrees (making sure to align the holder with the guidelines), and then removing the LED. After bending all of the LED leads, insert them all into the LED holder in sequence.
Note: The LEDs should press fit into the holder, but if they don't you can trim away the holes a bit.
BEFORE CONTINUING, make sure you have all of your LEDs in the correct color sequence, that the thinner side of the LED holder is facing AWAY from the perfboard as shown, and that the positive and negative LED leads are oriented properly before soldering!
Solder one LED at a time and then test each as you go. It's easier to identify one bad connection when there's only one soldered :)
1) When all of the LEDs are soldered in place, cut four, 1-inch pieces of jumper wire.
2) Strip about 1/4 inch of insulation from each end of the pieces, and then bend the exposed sections 90 degrees to form a rough "C" shape.
3) From the front side of the board (i.e. the side with the LED holder and no pads), insert the wire next to the positive lead of the top LED on the right, with the remaining end inserted through the hole next to the positive lead of the middle LED on the right, as shown in the diagram above.
4) Repeat this process for the hole next to the positive lead of the bottom LED, running the wire back to the hole beside the wire adjacent to the middle LED.
5) Repeat steps above for the LEDs on the left, according to the diagram above.
1) Once all of the LEDs and jumper wires are soldered, you'll need to either create solder bridges to connect everything, strip some jumper wire, or use scrap leads. This video offers suggestions for creating solder bridges, but I've found using scrap leads a little quicker and easier in this case. Regardless of the technique, for the positive leads of the LEDs, bridge a connection to the adjacent jumper wires as shown in the diagram above.
2) Bridge the connection where the jumper wires on each side meet in the middle.
3) Finally, bridge a connection between the negative leads of the LEDs as shown (this is where having scrap leads or stripped wire helps). When all of the LEDs are connected, we'll solder on lead wires for power and ground.
Power and Ground Leads
If you purchased Male/Female jumper wires as suggested, you'll need to solder the male end of one wire to the positive end of the LED circuit (at the top of the board as shown), and do the same for the negative end (at the bottom of the board).
Alternatively, if you only have Female/Female jumper wires (like I did while writing this):
1) Cut two pieces of wire to length (about 2 inches each should be plenty).
2) Strip about 1/4 inch of insulation from each on both ends.
3) Make note of how the board is oriented. The diagram above is correct, but I screwed up the bridging in the photo of the finished board. I had to use insulated wire to avoid short circuiting things. Still works though.
4) Solder one end of one wire to the positive end of the circuit (at the top of the board as shown).
5) Solder one end of the other wire to the negative end of the circuit (at the bottom of the board as shown).
You can test your circuit with a multimeter, two AA batteries in a holder, or using any other 3v power source. If everything lights up, you're good to go to the next step! If things aren't working correctly, double check the connections in your circuit.
Step 8: Install the Board
- Install the finished circuit board into the meeple body by snapping the LED holder into place. Note: Make sure the pink LED is closest to the head. You may need to trim and sand the corners of the board to fit it into place. Once you've done this, make a note of which lead is positive and negative, and route them through the hole in the meeple foot.
- Press fit the body cap into place.
- Route the leads through the hole in the top of the base and press fit the meeple case into place.
- Slide the Pi 3 into the printed case (or use your own).
Step 9: Connect the Board to the Pi
Note: If you didn't use Male/Female jumper wires in Step 7 as suggested, connect one F/F jumper wire to each lead from the board for this step.
- Make sure the Pi 3 is unplugged and turned off before continuing.
- Connect the female end of the negative board lead to the ground pin (pin 6) of the Pi 3 as shown above.
- Connect the female end of the positive board lead to pin 22 of the Pi 3 as shown.
- Fit the assembled meeple case to the Pi case.
- Plug your Pi into the wall and boot it up.
Step 10: Program the Pi 3
For this project, I'm using the Sparkfun twitter monitor code. The explanation and code in their guide is what I used to make things blink, and we only need to change a few lines of code for this project. In addition to entering your own app keys as the guide suggests, we'll need to change the hashtags/keywords in the code, as well as the sleep time so that our LEDs stay lit for longer.
First, we'll change the search terms in line 6 from the default "#yes" to something more fitting. I used #bivisibility, #bipride, and #bisexualpride, so the code looks like this:
TERMS = ['#bipride', '#bisexualpride', '#bivisibility']
Next, we'll adjust the sleep time to be a little longer. You can tweak this as necessary in line 24 ("time.sleep()"), depending on how frequently people are tweeting. I set it to 10 seconds and adjusted from there. Once you've done this, save the script and then run it by typing the following into a terminal window:
sudo python TweetBlinky.py
Your light should start to blink in sync with tweets using the specified hashtags/terms. If it's not lighting up, double check your code, file names and file paths, the file permissions, and the physical connection. It could also be that no one is currently tweeting with the specified hashtags, so try temporarily using a common keywords (for example, 'and', 'but', 'for') for testing.
AutoRun the Script at Startup
Once you've confirmed that your light blinks when someone tweets, you might want to configure your Pi so that it listens for tweets on startup. To do this, we'll tell Cron to run the TweetBlinky.py script automatically, following Aaron's advice from stackexchange:
In a terminal window, type:
sudo crontab -e
Then, at the end of the file, add:
@reboot python /home/pi/TweetBlinky.py &
After this, hit "Ctrl + X", then press "Y", and hit Enter to save the file.
Finally, reboot the Pi (you can do this from the terminal with: sudo reboot), and the script should start automatically.
Note: If you want to stop the TweetBlinky script while your Pi is running, just re-run the script manually from the terminal (sudo python TweetBlinky.py) and then kill it from the terminal by pressing "Ctrl + C."
Step 11: Show Your Pride!
Once you've tested your code and have everything running, take pride in your work, shed some light on issues of bi visibility and bi erasure, and share!