Recently I bought an Anycubic Mega Pro 3D filament printer to start my foray into the world that 3d-printing is. After unboxing and assembling it, I built a nice heated enclosure for it and set up Octoprint on a Raspberry Pi. Along with learning how to work with different filaments and temperatures and what-not, I also started watching tutorials on FreeCAD. The first real project I want to complete is an enclosure and keyboard for a X80-based mini computer a friend of mine built.
After the internal hdd of my Apple Time Capsule router/backup network drive died, I decided to try to open the searingly seamless enclosure and replace the drive. First, the rubber base has to be heated up with a hot air gun carefully to loosen the glue. When it ist hot but not too hot it can be peeled off pretty easily. Underneath are simple PH1 screws that hold the metal base plate in place. With the network ports facing you, tilt this base plate to your right to open it and at the same time not rip off the cable to the little fan. Once the device is open, it’s time to remove the temp sensor taped to the old hdd and then unscrew the four stand-offs keeping the hdd in place. Next, remove two cables, then the hdd itself. As a replacement any 3.5” by 1” SATA drive with up to 3TB can be used.
After the original battery of my MacBook swelled up so much that it pressed against the touch pad from the inside and made the mouse move on its own and even produce clicks I didn’t intend, I bought a battery and tool kit and swapped it out. Apparently one has to be super careful that the provided glue solvent doesn’t touch anything else in the MacBook but the old battery. But so far I think I managed to do it! Yay!
This is how buying €100,– worth of spare parts saved me from buying a new €3.000,– Laptop.
From Idea To Product
On a typical sound-cart for motion-picture and TV filmmaking there are lots of devices that require something around 11–14V DC. The recorder, mixer, wireless microphone receivers and maybe a light all need this kind of power. So it is pretty handy if they all can be powered from a single big rechargeable Li-Ion battery. For this purpose I built a power distribution box that connects all these devices to one power source and that has individual switches for all of them so the ones not in use can be powered off easily.
- 4-pin XLR connections
- one input
- seven outputs
- seven on/off switches
- LCD for voltage, current and power consumption metering
- self-resetting fuses on every output
- solid plastic or aluminum housing
I started out with an empty cardboard box I had lying around. To see if all the switches and the LC display fitted the space it provided I made a kind of prototype.
Now I knew how much space I needed to fit all the parts. I had never before worked with self-resetting PTC polyfuses so I experimented around a little bit.
I also thought it would be nice to have an LED light up whenever one of those fuses goes off. So I soldered a tiny circuit board to each output socket that connects the output, the fuse and the LED. The LED actually bridges the fuse. That means: when the fuse goes off (meaning it becomes non-conductive) all the voltage is dropped across the LED and its built-in resistor so it lights up.
The LCD I used was bought as-is off eBay and it came with a wiring diagram which I had to implement into my build.
So this is the schematic for the whole box. Notice the LEDs are missing in this. the go across the yellow ohm symbols.
After ordering a plastic housing of the correct size I went to work and started putting it all together as best I could.
The result came out quite nice, I think.
It is done! The final version of the hardware sits on my living room wall in a nice wooden frame. The software works, too! Apart from the fact that SoundCloud don’t give out new API keys to developers of apps everything works perfectly. It just means that I have to search for a new random API key myself and save it to my Arduino Programm running on the WeMos. Also I had to tweak the php script running on my webserver. Remember that the Arduino gets the actual number to display from this php script because it doesn’t have sufficient memory to calculate it on-board. So php does the “heavy lifting” for it. SoundCloud API has some wonderful quirks to work around. The list of tracks it returns for a given user has 50 entries max. If a user has more tracks, you must use a paginated variant of the API call. This way you get multiple answers. But: in the chunks of 50 tracks some of the tracks can occur in two different chunks. So you have to check if you encountered a given track ID before, and only if not save that track’s play_count.
Download the php and Arduino files:
Still there remains a discrepancy between the plays my script calculates and the plays shown in the official SoundCloud “Pulse” App. This is due in to some hidden (non-public but scheduled for release) tracks that have a few plays which are not returned by the API call.
Hurra!, all is good now:
After the breadboard version of the circuit was proven to be functional and the software I came up with was working I decided to use KiCAD to make useful schematics and design my own PCB that I can use in my Nixie Tube SoundCloud Play-Counter project. There is a really useful Tutorial in the help menu of KiCAD and on their website that got me started with this lovely open source program that runs on Windows, Mac and Linux and has no limitations on maximum board sizes etc. like a lot of the free versions of big paid software do. Since I am working on an Apple Macintosh I also shortly considered using Eagle, but since I didn’t want to buy the software that choice would have limited me to a half-size euro board. Altium Designer, PADS (PowerPCB), ORCAD and Allegro as well as CircuitMaker or CircuitStudio are all Windows-only options so I didn’t look at them.
You can download my KiCAD files and use them if you want.
Following some YouTube tutorials and more online documentation I generated the Gerber files that are necessary for ordering an actual manufactured PCB. After checking out some services like Osh Park, Seeed Studio and Elecrow I decided to try
and ordered there. I like the way they have the ordering process set up and it seems to me they’re really fast and also pretty cheap. I went ahead and placed an order of the minimum quantity of five boards.
After soldering all the parts to the board I went ahead and plugged everything in: the external 12V power supply, the Wemos D1 mini, the 160V power supply board and finally all seven nixies. It was a really cool moment switching on power for the first time! All works fine! No parts heat up, no shorts! The entire circuit uses 27.5 to 220.0mA, averaging to a mere 155mA over time says my Fluke 177.
By now I had two working Arduino programs (sketches) and a PHP script on my own web server. When you call it (type in it’s address: http://mixedtinkerings.com/tillefon/calcscplays.php?SCUserID=0&SCApiClientID=JlZIsxg2hY5WnBgtn3jfS0UYCl0K8DOg) the PHP script uses the SoundCloud API to retrieve JSON-formatted information about a user and a list of all of a user’s tracks. From this the script calculates the total play count of that user and gives it as a JSON-formatted object.
One of my Arduino sketches was getting this total play count from the PHP script by calling it up and put the number into a variable. The other Arduino sketch can take any given number and send it to the shift registers so that the corresponding glyphs inside the Nixie tubes light up.
Marrying the two Arduino sketches that I got working was actually easier than I thought. To test the result I added a routine that makes the Nixies count from 0 to 9 in unison. This is also helpful to prevent what is called cathode poisoning. It occurs if one of a Nixie’s glyph stays lit for too long. That’s why I make the Nixies cycle through all their glyphs overtime the total play count changes.
So far I have only added one actual Nixie tube to my breadboard test setup. I have yet to solder all the connections to the rest of my Nixies.
Download my Final Sketch
Next I had to come up with some Arduino methods that would take a number and make a series of 0s and 1s out of it and then output those through the pins of my chip to the shift registers that are switching the Nixie digits on and off.
This is the Arduino sketch I made. Without a lot of help of my dear friend O. I wouldn’t have made it. If you want to have a look, you can download the sketch.
I then attached some LEDs instead of the first Nixie Tube so I could check the functionality without getting involved into that horrid 160V business just yet.
The first thing I did was go on eBay and buy twelve cheap Nixie IN-12A tubes. They don’t have the decimal point like the IN-12B but I don’t need it.
Then I watched Dave’s EEVBlog videos again quite a few times and I was able to screen capture his schematics for the electronic layout. The whole system relies on a Wemos D1 mini. This is a micro controller with built-in WiFi than can be programmed using the Arduino software on you computer. To actually switch on the Nixies which require 160V Dave found some really cheap shift registers called TPIC6B595 that can handle the high voltages.
Next I bought a high voltage power supply on eBay. It was a set containing a little PCB, all the components and a manual. I had some breadboards and jumper wires still lying around at home.
While I waited for all the goodie to arrive I fired up the Arduino software on my laptop and began programming the Wemos D1 mini. The sad thing was that I couldn’t find the code that Dave had written for his own project so I was stuck having to come up with my own code. I am NOT good at this so it took me quite a while to understand what I had to do. And I’m still not done yet. But I have made some really good progress.
My research involved getting to know the SoundCloud API and learning how to get to the numbers that I need through it. Since there’s no way to ask for the total play count of a given user, I had to parse an answer that is in the JSON format that holds a huge list of all of a user’s tracks including descriptions, keywords and everything else. I had to find the number of plays for every single track in this huge mess of characters. To do this with Arduino, I installed the famous Arduino JSON library and looked at the example code they provide with it. It took me a while to figure out that the SRAM memory of the tiny micro controller I use is way too small to hold that entire string. So I failed searching or parsing the string for the entries I needed.
My brother came up with an idea for a solution to this: write a PHP script for your WordPress server, then you give it the SoundCloud user ID and your own secret API ID key handle and it returns the total number of plays! Yay! For a big server computer the parsing of a huge JSON string is no problem. And the tiny answer that it gives can be parsed by the Arduino running on the Wemos D1 mini.
The Arduino sketch I have so far logs into my WiFi, reads the answer that my PHP script gives and prints it on the serial monitor. I am sooo happy!
Download Arduino sketch here to look at it!
As soon as my shift registers arrived, I started to place them on my breadboards. I don’t want to connect the hight voltage yet and that’s why my next step will be using LEDs instead of all the segments of the tubes to try out if my software works. Since my software is not finished yet, I stopped putting stuff together on the breadboard so I can focus on getting the numbers out of the computer chip into the real world!
I want to build a counter display that tells me how many people have hit PLAY on my track on SoundCloud in total in all times so far. The idea came to me when I watched Dave’s EEVblog Youtube video of his Nixie Tube subscriber display he made out of his YouTube silver award. Of course for SoundCloud the project has to be tweaked a little.
As I progress I will make new entries in this series of blog posts about the nixie counter display. Click here for a