Archive for category Software
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:
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:
Wiring up a 5×5 panel went as before:
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:
Dialing the white
MaxPWM back to 32 crisps things a bit:
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:
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:
Trimming the hose end at one of the ribs makes a tidy fit:
Now I need not trip over the vacuum hose between the bandsaw bench and the sander bench…
The OpenSCAD code as a GitHub Gist:
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]
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.
[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.
 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’…
One of the clips holding the rear fender on my Tour Easy broke:
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:
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:
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:
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.
A 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
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
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…
Mounting the ungainly WS2812 LED test fixture seemed like a Good Idea to keep the electricity out of the usual conductive litter:
The solid model shows more details:
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:
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:
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: