Archive for category Software

SK2812 RGBW LED: Test Fixture

[Edit: The SK2812 in the title and elsewhere should be SK6812. If I change the title, then all the other links break. So it goes.]

An envelope of RGBW LEDs, allegedly with SK6812 controllers, arrived from halfway around the planet:

SK2812RGBW LEDs - as received

SK2812RGBW LEDs – as received

The yellow phosphor sauce poured atop the blue LED on the left that makes it glow white leaves the upper loop of two wire bonds sticking out, but I can’t fault ’em for that. The overall build quality looks better than the ill-fated WS2812 LEDs, although it’s hard to tell by looking.

I conjured a test stand from the vasty digital deep by tweaking the WS2812 mount:

SK6812 LED Array Test Fixture - Slic3r preview

SK6812 LED Array Test Fixture – Slic3r preview

Wiring up a 5×5 panel went as before:

SK2812RGBW test fixture - rear

SK2812RGBW test fixture – rear

The array test code adds another pixel channel and runs another raised sine wave with another random period, accomplished without much hackage.

With the warm-white LED at full throttle (MaxPWM = 255), the panel tends toward the pallid end of HSV space:

SK2812RGBW test fixture - front - W PWM255

SK2812RGBW test fixture – front – W PWM255

Dialing the white MaxPWM back to 32 crisps things a bit:

SK2812RGBW test fixture - front - W PWM32

SK2812RGBW test fixture – front – W PWM32

Of course, the RGBW data stream isn’t compatible with the RGB data stream, so vacuum tubes with SK6812 chips require a slightly different driver and I can’t mix the two chips on a single tube.

The Arduino source code as a GitHub Gist:

Advertisements

, ,

2 Comments

ShopVac Hose Barb Adapter

A small ShopVac arrived with a ribbed hose carrying an absurdly long wand, so I conjured a barbed adapter with a much shorter tapered snout for the machine tools:

Vacuum hose fittings - hose barb to nozzle

Vacuum hose fittings – hose barb to nozzle

Trimming the hose end at one of the ribs makes a tidy fit:

Vacuum hose fittings - ribbed hose barb

Vacuum hose fittings – ribbed hose barb

Now I need not trip over the vacuum hose between the bandsaw bench and the sander bench…

The OpenSCAD code as a GitHub Gist:

,

Leave a comment

Streaming Radio Advertisements: Carpet Bombing

After a protracted silence in a Radionomy stream, the Raspberry Pi player offered this log:

2017-03-05 11:17:07,890 INFO: Starting mplayer on Plenitude -> /home/pi/Playlists/Radio-PLENITUDE.m3u
2017-03-05 11:17:13,651 INFO: Track name: []
2017-03-05 11:44:02,296 INFO: Track name: [David Wahler - Whispers from Eternity]
2017-03-05 11:46:36,995 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 11:47:07,117 INFO: Track name: []
2017-03-05 11:49:07,080 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
2017-03-05 11:49:10,079 INFO: Track name: [Jef Mounet & Danièle Mounet - L'ancre musicale Natures d'Eau]
2017-03-05 12:02:02,271 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:02:32,424 INFO: Track name: []
2017-03-05 12:04:32,243 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:05:01,925 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:07:02,276 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:07:31,968 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:09:32,262 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:10:02,192 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:12:02,311 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:12:32,184 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:14:32,085 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:15:02,217 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:17:02,057 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:17:32,445 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:19:32,083 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
2017-03-05 12:19:35,171 INFO: Track name: [Jean-Marc Staehle - Bercé par tant de beauté]
2017-03-05 12:23:42,410 INFO: Track name: [Francesco - Sur le chemin]
2017-03-05 12:29:50,265 INFO: Track name: [Michel Pépé - Pacifica]
2017-03-05 12:35:07,493 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:35:37,377 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:37:37,478 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
2017-03-05 12:37:41,476 INFO: Track name: [Music And Wellness (Musique Et Bien Etre) - Absolute Winner]
2017-03-05 12:46:36,742 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 12:47:06,668 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 12:49:06,538 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
2017-03-05 12:49:10,270 INFO: Track name: [Patrick Vuillaume &Nicole Bally - Pearls of Light (Instrumental by Nicole Bally)]
2017-03-05 12:53:45,357 INFO: Track name: [Trine Opsahl - Sister moon]
2017-03-05 12:54:58,596 INFO: Track name: [Peter Kater - Rebirth]
2017-03-05 13:04:52,726 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 13:05:22,665 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 13:07:21,561 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
2017-03-05 13:07:25,808 INFO: Track name: [Deuter - Flowing]
2017-03-05 13:12:55,970 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 13:13:25,859 INFO: Track name: []
2017-03-05 13:15:26,449 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
2017-03-05 13:15:33,022 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
2017-03-05 13:15:59,437 INFO: Track name: [Targetspot - TargetSpot]
2017-03-05 13:17:59,559 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
2017-03-05 13:18:06,133 INFO: Track name: [O - Part I]

The Jingle lines introduce a short interlude of chimes separating music from advertisements. The Intro chimes play for 30 seconds and the Extro chimes play for three to five seconds. Some stations have similar interludes, others do not; apparently the station gets to choose the format.

The [Targetspot - TargetSpot] lines mark two minutes of TargetSpot insertion: either advertisements (if you’re in their target market) or generic musical interludes similar to the station’s genre (if you’re out-of-market). The ads and music often lack volume-matching with the streaming music, rarely have lower volume, and the ads are incomprehensible to my ears. The musical interludes seem to be randomly chosen from a small set of candidate tracks that, along with the chimes, become annoyingly familiar in short order.

The [] lines (yes, an empty string) mark two minutes of Public Service Announcements, advertisements, or generic musical interludes. I’m uncertain how they differ from the [Targetspot - TargetSpot] insertions.

At a minimum, Radionomy inserts two minutes of TargetSpot / PSAs after every 12 to 15 minutes of music. Adding in the Jingle markers, ads occupy just under 20% of the total “airtime” for this station.

However, bizarre events like the 17 nonstop minutes of jingles and ads inserted just after noon occur with inexplicable frequency. I’ve noticed half an hour of similar back-to-back-to-back ads on other stations, so it’s not a rare event.

To quote the TargetSpot website:

TargetSpot serves ads in real time to each listener’s personalized stream, creating a one-to-one relationship between the advertiser and the listener. The result is a dramatic increase in message relevancy and campaign effectiveness

Those keyword markers turn out to be incredibly convenient. Just sayin’…

, ,

1 Comment

Tour Easy Rear Fender Clip

One of the clips holding the rear fender on my Tour Easy broke:

Rear fender clip - broken

Rear fender clip – broken

Well, if the truth be told, the fender jammed against the tire when I jackknifed the trailer while backing into a parking spot, dragged counterclockwise with the tire, and wiped that little tab right off the block. After 16 years of service, it doesn’t owe me a thing.

Although the clip around the fender sits a bit lower than it used to (actually, the entire fender sits a bit lower than it should be), you can see the tab had a distinct bend at the edge of the aluminum block supporting the underseat bag frame: the block isn’t perpendicular to the tire / fender at that point.

After devoting far too long to thinking about how to angle the tab relative to the clip, I realized that I live in the future and can just angle the clip relative to the tab. Soooo, the solid model has a rakish tilt:

Fender Clip - Slic3r preview

Fender Clip – Slic3r preview

The original design had a pair of strain relief struts where the tab meets the clip, but I figured I’ll add those after the PETG fractures.

I mooched the small bumpouts along the arc from the original design; they provide a bit of stretch & bend so to ease the hooks around the fender.

The hooks meet the clip with very slight discontinuities that, I think, come from slight differences between the 2D offset() operation and the circle() diameter; the usual 1/cos(180/numsides) trick was unavailing, so I tinkered until the answer came out right.

Despite those stretchy bumps, it took three iterations, varying the chord height by about 1.5 mm, to securely snap those hooks onto the fender:

Rear fender clip - 3D printed improvement

Rear fender clip – 3D printed improvement

Yeah, sorry ’bout the fuzzy focus on the screw head.

It’s impossible to measure the chord height accurately enough in that position and I was not going to dismount the rear tire just to get a better measurement.

You can see how the clip’s rakish tilt matches the fender’s slope, so the tab isn’t bent at all. It’ll probably break at the block the next time I jackknife the trailer, of course.

I heroically resisted the urge to run off a lower fender mount.

The OpenSCAD source code as a GitHub Gist:

The original doodle, with some measurements unable to withstand the test of time:

Rear Fender Clip - measurement doodles

Rear Fender Clip – measurement doodles

,

Leave a comment

Another Numeric Keypad Snowflake

I got another batch of wireless keypads that, from the outside, look identical to the previous set:

Wireless USB Numeric keypads

Wireless USB Numeric keypads

The keypad on the right reports Model ID 0x4182, the same as the black plastic batch, and different from the 0x4101 of the previous batch (on the left). Apparently, the small USB dongle carries the Model ID data and the keypads can carry anybody’s logo.

The Vendor ID, of course, still shows Creative Lab’s 0x062a and all the serial numbers are 1.

Fortunately, the udev rules already have that combination and the streaming player can’t tell the difference.

Those labels on the keytops still don’t quite fit, but we’re coping as best we can.

 

 

Leave a comment

Raspberry Pi 3: Disabling the Build-In WiFi

streaming media player in the Basement Laboratory Warehouse Wing has a concrete block wall between it and the WiFi router, so that even high(er)-gain USB antennas can’t grab enough signal for reliable streaming. After some fiddling, I snaked a cable from a hub, along the floor joints, to the Pi and declared victory. It turned out the Pi, an old Pi 1 Model B, had some trouble keeping up with the times, and I eventually swapped it for a Pi 3.

Forcing a static address for the wired port followed the now-standard recipe, with eth0 instead of wlan0 in /etc/dhcpcd.conf.

However, plugging a network cable into the Pi 3 then produces two network connections: the wired one I wanted and a the aforementioned unreliable WiFi link through the built-in hardware. The only reliable way to turn off the WiFi connection seems to require applying The BFH through a line in /etc/rc.local:

sudo ifconfig wlan0 down

Removing my WiFi credentials from /etc/wpa_supplicant/wpa_supplicant.conf prevents the hardware from connecting before the hammer comes down.

And then it streams perfectly…

,

Leave a comment

Cheap WS2812 LEDs: Test Fixture Mount

Mounting the ungainly WS2812 LED test fixture seemed like a Good Idea to keep the electricity out of the usual conductive litter:

WS2812 array test fixture - rear

WS2812 array test fixture – rear

The solid model shows more details:

LED Test Fixture - solid model

LED Test Fixture – solid model

The power wires along the array edges slide into the rear (thinner) slot, with enough friction from a few gentle bends to hold the whole mess in place.

The knockoff Arduino Nano rests on the recessed ledge in the pit, with M2 screws and washers at the corners holding it down (the PCB’s built-in holes might work with 1 mm or 0-90 screws, but that’s just crazy talk). I soldered the power wires directly to the coaxial jack pins under the PCB; they snake out to the LEDs through the little trench. There should be another cutout around the USB connector for in-situ programming, although the existing code works fine.

The front (wider) slot holds a piece of translucent white acrylic to diffuse the light:

WS2812 array test fixture - front flash

WS2812 array test fixture – front flash

It’s painfully bright: a few layers of neutral density filter would be appropriate for a desk toy.

The array runs hot enough at MaxPWM = 255 to produce a gentle upward breeze.

It looks even better without the flash:

WS2812 array test fixture - front dark

WS2812 array test fixture – front dark

You’ll find many easier ways to get RGB LED panels, but that’s not the point here; I’m waiting for these things to die an unnatural death.

The OpenSCAD source code as a GitHub Gist:

, ,

3 Comments