Taking (Good) Pictures Of PCBs

Snapping pictures is not technically difficult with modern technology, but taking good photographs is another matter. There are a number of things that a photographer needs to account for in order to get the best possible results, and if the subject matter isn’t particularly photogenic to start with it makes the task just a little more difficult. As anyone who’s posted something for sale online can attest, taking pictures of everyday objects can present its own challenges even to seasoned photographers. [Martijn Braam] has a few tricks up his sleeve for pictures like this in his efforts to photograph various circuit boards.

[Martijn] has been updating the images on Hackerboards, an online image reference for single-board computers and other PCBs, and he demands quality in his uploads. To get good pictures of the PCBs, he starts with ample lighting in the form of two wirelessly-controlled flashes in softboxes. He’s also using a high quality macro lens with low distortion, but the real work goes into making sure the image is sharp and the PCBs have well-defined edges. He’s using a Python script to take two pictures with his camera, and some automation in ImageMagic to composite the two images together.

While we’re not all taking pictures of PCBs, it’s a great way of demonstrating the ways that a workflow can be automated in surprising ways, not to mention the proper ways of lighting a photography subject. There are some other excellent ways of lighting subjects that we’ve seen, too, including using broken LCD monitors, or you can take some of these principles to your workspace with this arch lighting system.

Play DOOM On Seven-Segment Displays

Getting DOOM to run on a computer it was never meant to run on is a fun trope in the world of esoteric retro computers. By now we’ve seen it run on everything from old NES systems to microwaves, treadmills, and basically anything with a computer inside of it. What we don’t often see are the displays themselves being set up specifically to run the classic shooter. This build might run the game itself on ordinary hardware, but the impressive part is that it’s able to be displayed on this seven-segment display.

This build makes extensive use of multiplexers to drive enough seven-segment displays to use as a passable screen. There are 1152 seven segment digits arranged in a 48 by 24 array, powered by a network of daisy-chained MAX7219 chips. A Python script running on a Raspberry Pi correlates actual image data with the digit to be displayed on each of the segments, and the Raspberry Pi sends all of that information out to the screen. The final result is a display that’s fast enough and accurate enough to play DOOM in a truly unique way.

There is much more information available about this project on their project page, and they have made everything open source for those who wish to follow along as well. The project includes more than just the ability to play DOOM, too. There’s a built-in video player and a few arcade programs programmed specifically to make use of this display. Perhaps one day we will also see something like this ported to sixteen-segment displays instead of the more common seven-segment.

This Found-Sound Organ Was Made With Python And A Laser Cutter

Some readers will no doubt remember attaching a playing card to the front fork of their bicycle so that the spokes flapped the card as the wheel rotated. It was supposed to sound like a motorcycle, which it didn’t, but it was good, clean fun with the bonus of making us even more annoying to the neighborhood retirees than the normal baseline, which was already pretty high.

[Garett Morrison]’s “Click Wheel Organ” works on much the same principle as a card in the spokes, only with far more wheels, and with much more musicality. The organ consists of a separate toothed wheel for each note, all turning on a common shaft. Each wheel is laser-cut from thin plywood, with a series of fine teeth on its outer circumference. The number of teeth, as calculated by a Python script, determines the pitch of the sound made when a thin reed is pressed against the spinning wheel. Since the ratio of teeth between the wheels is fixed, all the notes stay in tune relative to each other, as long as the speed of the wheels stays constant.

The proof-of-concept in the video below shows that speed control isn’t quite there yet — playing multiple notes at the same time seems to increase drag enough to slow the wheels down and lower the pitch for all the notes. There appears to be a photointerrupter on the wheel shaft to monitor speed, so we’d imagine a PID loop to control motor speed might help. That and a bigger motor that won’t bog down as easily. As for the sound, we’ll just say that it certainly is unique — and, that it seems like something [Nicolas Bras] would really dig.

Continue reading “This Found-Sound Organ Was Made With Python And A Laser Cutter”

A Spreadsheet For The Python Hacker

You can write a Python program or use a Jupyter Notebook to do almost anything. But you can also get a lot of things done quickly using a spreadsheet. Grist is a “hacker’s” spreadsheet that merges these worlds. It looks like a spreadsheet, but underneath are SQLite tables and the formula language is Python.

The code is open source and if you want it hosted, there are free and paid plans. You can even try it out without even logging in and either start with a blank screen or use a template. You can see an introductory video below.

Continue reading “A Spreadsheet For The Python Hacker”

Ethersweep: An Easy-To-Deploy Ethernet Connected Stepper Controller

[Neumi] over on Hackaday.IO wanted a simple-to-use way to drive stepper motors, which could be quickly deployed in a wide variety of applications yet to be determined. The solution is named Ethersweep, and is a small PCB stack that sits on the rear of the common NEMA17-format stepper motor. The only physical connectivity, beside the motor, are ethernet and a power supply via the user friendly XT30 connector. The system can be closed loop, with both an end-stop input as well as an on-board AMS AS5600 magnetic rotary encoder (which senses the rotating magnetic field on the rear side of the motor assembly – clever!) giving the necessary feedback. Leveraging the Trinamic TMC2208 stepper motor driver gives Ethersweep silky smooth and quiet motor control, which could be very important for some applications. A rear-facing OLED display shows some useful debug information as well as the all important IP address that was assigned to the unit.

Control is performed with the ubiquitous ATMega328 microcontroller, with the Arduino software stack deployed, making uploading firmware a breeze. To that end, a USB port is also provided, hooked up to the uC with the cheap CP2102 USB bridge chip as per most Arduino-like designs. The thing that makes this build a little unusual is the ethernet port. The hardware side of things is taken care of with the Wiznet W5500 ethernet chip, which implements the MAC and PHY in a single device, needing only a few passives and a magjack to operate. The chip also handles the whole TCP/IP stack internally, so only needs an external SPI interface to talk to the host device.

Continue reading “Ethersweep: An Easy-To-Deploy Ethernet Connected Stepper Controller”

Introducing FISSURE: A Toolbox For The RF Hacker

No matter what the job at hand is, if you’re going to tackle it, you’re going to need the right kit of tools. And if your job includes making sense out of any of the signals in the virtual soup of RF energy we all live in, then you’re going to need something like the FISSURE RF framework.

Exactly what FISSURE is is pretty clear from its acronym, which stands for Frequency Independent SDR-Based Signal Understanding and Reverse Engineering. This is all pretty new — it looks like [Chris Poore] presented a talk at DEFCON a few weeks back about using FISSURE to analyze powerline communications between semi-trucks and their trailers, and they’ve got a talk scheduled for next month’s GNU Radio Conference as well. We’ve been looking through all the material we can find on FISSURE, and it appears to be an RF hacker’s dream come true. They’ve got a few examples on Twitter, like brute-forcing an old garage door opener with a security code set by a ten-position DIP switch, and sending tire pressure monitoring system (TPMS) signals to a car. They also mention some of the framework’s capabilities on the GitHub README; we’re especially interested in packet crafting for various protocols. The video below has some more examples of what FISSURE can do.

It looks like FISSURE could be a lot of fun, and very handy for your RF analysis and reverse engineering work. If you’ve been using Universal Radio Hacker like we have, this looks similar, only more so. We’ll be downloading it soon and giving it a try, so be on the lookout for a hands-on report.

Continue reading “Introducing FISSURE: A Toolbox For The RF Hacker”

screenshot from the video linked, showing example code that lights up an LED, and in a small window, also shows the LED lit up on a small Pi Pico board connected over USB

Your MicroPython Board Can Be Your Tinkering Peripheral

[Brian Pugh] has shared a cool new project that simultaneously runs on desktop Python and MicroPython – the Belay library. This library lets you control a MicroPython device seamlessly from your Python code – interacting with real-world things like analog/digital trinkets, servos, Neopixels and displays, without having to create your own firmware or APIs.

You need a serial-connected MicroPython board – even an ESP8266 should do. Then, you can intersperse your Python code with MicroPython-written functions, and call them whenever you need your connected device to do something – keeping the entire logic of your project within a single device. [Brian] provides quite a few examples, even for more complex things like displays. No doubt, there are limitations, but this looks to be a powerful tool in a hacker’s arsenal.

Readers might be reminded of an Arduino library called Firmata – an old-time way to do such connectivity. We’ve also previously covered a Pi Pico firmware that does a similar thing, and even features a breakout board for all your experimentation needs!
Continue reading “Your MicroPython Board Can Be Your Tinkering Peripheral”