Intro To Docker: Why And How To Use Containers On Any System

If you have your ear even slightly to the ground of the software community, you’ll have heard of Docker. Having recently enjoyed a tremendous rise in popularity, it continues to attract users at a rapid pace, including many global firms whose infrastructure depends on it. Part of Docker’s rise to fame can be attributed to its users becoming instant fans with evangelical tendencies.

But what’s behind the popularity, and how does it work? Let’s go through a conceptual introduction and then explore Docker with a bit of hands-on playing around.

Continue reading “Intro To Docker: Why And How To Use Containers On Any System”

A Servo Powered Robotic Arm, But Like You’ve Never Seen Before

We’ve written about a lot of DIY robotic arms. Some of them are high-performance, some are inexpensive, and some are just uniquely fun. This one certainly falls into the last category; whilst watching an episode of Black Mirror, [Gear Down For What] was struck by inspiration for a thin robotic limb. After some iterations he has a final prototype, and it’s quite something to see in action.

To make a robotic arm as slender as possible, the actuators can’t be mounted on the arm itself but must instead drive the arm remotely. There are a number of ways of doing this, and though [Gear Down For What] considered using pneumatics or hydraulics, he opted to keep it simple with RC servos which produced a nifty solution that we really like.

The arm is made out of a series of 3D printed ball joints, allowing rotation in any direction. The tricky bit is transferring the force from the servos to each joint. Initially bare fishing line was considered, but this made the remote joints difficult to control when lower joints were moving. The solution was to use the fishing line inside of tubing, similar to the way that bike brakes operate. This allows the force to be carried to the appropriate joint regardless of lower movement. Each joint needs an x and y tension to allow it to rotate in any direction, which means an army of sixteen servos is needed to operate the eight segment arm.

Robotic arms are always fun to build and we’ve seen some pretty neat uses for them, such as mapping magnetic fields in 3D, or teaching sign language.

Continue reading “A Servo Powered Robotic Arm, But Like You’ve Never Seen Before”

Hummingbirds, 3D Printing, And Deep Learning

Setting camera traps in your garden to see what local wildlife is around is quite popular. But [Chris Lam] has just one subject in mind: the hummingbird. He devised a custom setup to capture the footage he wanted using some neat tech.

To attract the hummingbirds, [Chris] used an off-the-shelf feeder — no need to re-invent the wheel there. To obtain the closeup footage required, a 4K action cam was used. This was attached to the feeder with a 3D-printed mount that [Chris] designed.

When it came to detecting the presence of a hummingbird in the video, there were various approaches that could have been considered. On the hardware side, PIR and ultrasonic distance sensors are popular for projects of this kind, but [Chris] wanted a pure software solution. The commonly used motion detection libraries for this type of project might have fallen over here, since the whole feeder was swinging in the air on a string, so [Chris] opted for machine learning.

A RESNET architecture was used to run a classification on each frame, to determine if the image contained a hummingbird or not. The initial attempt was not greatly successful, but after cropping the image to a smaller area around the feeder, classification accuracy greatly increased. After a bit of FFmpeg magic, the selected snippets were concatenated to make one video containing all the interesting parts; you can see the result in the clip after the break.

It seems that machine learning and wildlife cams are a match made in heaven. We’ve already written about a proof-of-concept project which identifies different animals in the footage when motion is detected.

Continue reading “Hummingbirds, 3D Printing, And Deep Learning”

Make Your Python Prettier With Decorators

Many Pythonistas are familiar with using decorators, but far fewer understand what’s happening under the hood and can write their own. It takes a little effort to learn their subtleties but, once grasped, they’re a great tool for writing concise, elegant Python.

This post will briefly introduce the concept, start with a basic decorator implementation, then walk through a few more involved examples one by one.

Continue reading “Make Your Python Prettier With Decorators”

PiPod: A Raspberry Pi Zero Portable Music Player

[Bram] wasn’t satisfied with the portable music playback devices that were currently available. He craved an offline music player that had a large storage capacity but found that this was only available in high-end, off-the-shelf options, which were far too expensive. [Bram] decided to make his own, powered by a Raspberry Pi zero. After building an initial prototype, the design was iterated a few times, with the latest version featuring a BOM cost of roughly €80.

The whole project is open source, with hardware and software files available on the project GitHub. A 2.2″ TFT displays the UI, which is of course completely customisable. Everything is squashed into a 3D printed case, which has the smallest form factor possible whilst retaining a decent amount of battery life. The electronics are what you’d expect: a boost converter to produce 5 V for the Pi from the 3.7V battery, a charge controller and a battery protection circuit. As a bonus, the battery voltage is monitored with a 12-bit ADC which reports to the Pi, enabling it to do a safe shutdown at low voltage, and display battery level on the UI.

Since the whole purpose of the device is to play audio, onboard filtered PWM wasn’t going to cut it, so instead a 24-bit DAC talks to the Pi via I2S. The audio player backend is VLC, so there’s support for plenty of different file types. A disc image of the whole system is available with everything pre-configured, and you can even buy the assembled PCB from Tindie.

Want to keep the look and feel of your old iPod? We covered an impressive restoration of a 6th gen model, upgrading the storage and battery significantly.

Power Over Ethernet Splitter Improves Negotiating Skills

Implementing PoE is made interesting by the fact that not every Ethernet device wants power; if you start dumping power onto any device that’s connected, you’re going to break things. The IEEE 802.3af standard states that the device which can source power should detect the presence of the device receiving power, before negotiating the power level. Only once this process is complete can the power sourcing device give its full supply. Of course, this requires the burden of smarts, meaning that there are many cheap devices available which simply send power regardless of what’s plugged in (passive PoE).

[Jason Gin] has taken an old, cheap passive PoE splitter and upgraded it to be 802.3af compatible (an active device). The splitter was designed to be paired with a passive injector and therefore did not work with Jason’s active 802.3at infrastructure.

The brain of the upgrade is a TI TPS2378 Powered Device controller, which does the power negotiation. It sits on one of two new boards, with a rudimentary heatsink provided by some solar cell tab wire. The second board comprises the power interface, and consists of dual Schottky bridges as well a 58-volt TVS diode to deal with any voltage spikes due to cable inductance. The Ethernet transformer shown in the diagram above was salvaged from a dead Macbook and, after some enamel scraping and fiddly soldering, it was fit for purpose. For a deeper dive on Ethernet transformers and their hacked capabilities, [Jenny List] wrote a piece specifically focusing on Raspberry Pi hardware.

[Jason]’s modifications were able to fit in the original box, and the device successfully integrated with his 802.3at setup. We love [Jason]’s work and have previously written about his eMMC adventures, repairing windows tablets and explaining the intricacies of SD card interfacing.

Stop Using Python 2: What You Need To Know About Python 3

Though Python 3 was released in 2008, many projects are still stuck on Python 2.

It’s understandable that porting large existing codebases to a new version is a prospect which sends a shiver down many a developer’s spine. But code inevitably needs to be maintained, and so when all the shiny new features that would fix everything are in a new version, is it really worth staying rooted in the past?

We’ll take you through some of the features that Python 2 programs are missing out on, not only from 3.0 but up to the current release (3.7).

Continue reading “Stop Using Python 2: What You Need To Know About Python 3”