A radio with a white front grate and wood edges sits on a grey surface. Next to the radio are small white disks with colorful edges reminicient of microdisc-sized records. A yellow-ringed disk sits on the radio. The handwritten title says, "Summer of 2011; Holidays in Barcelona"

Spotify Player Brings Back Physical Media

Digital music has made keeping all your tunes with you a lot more convenient, but have we lost something with dematerialization? [Jordi Parra] felt that there was something lacking with the digital music experience and designed a Spotify player with a tactile interface.

Specific playlists are selected via small RFID tags that look like a cross between a MiniDisc and a vinyl record. As this is a prototype, an Arduino reads the RFID tag, but needs a computer to actually play the Spotify playlist. Future iterations could include an integrated speaker and run libspotify to create a self-contained device.

While there is still work to do for a fully seamless experience, we love the details in the industrial design of this project. Clean simple lines and a combination of wood and more modern materials make this feel like a timeless piece of tech. Definitely check out the full photo gallery including shots of the really impressive packaging.

Want more digital music with a tactile interface? Check out this MP3 Player Shelf or a Simple Internet Radio Transplant.

Blinky Project Is 6502s All The Way Down

Virtually any platform you might find yourself programming on has some simple method of running a delay. [Joey Shepard] got rather creative on a recent project, though, relying on a rather silly nesting method that we’re calling 6502s All The Way Down.

The project in question was a simple PCB that was shaped like a robot, with blinking LED eyes. Typically, you’d simply reach for the usual sleep() or delay() function to control the blink rate, but [Joey] went off-piste for this one. Instead, the PIC32 on the board runs a 6502 emulator written in MIPS assembly. This emulated 6502 is then charged with running a further 6502 emulator coded in 6502 assembly, and so on, until there’s 6502 emulators running six-deep on the humble microcontroller. The innermost emulator runs a simple program that blinks the LED eyes in a simple loop. With the overhead of running six emulators, though, the eyes only blink at a rate of roughly once every two seconds.

It’s an amusing and complicated way to write a blink program, and we applaud [Joey] for going to all that trouble. We imagine it was a great way to learn about programming the PIC32 as well as emulation in general. Meanwhile, if you’re working on your own emulator feats, be sure to let us know!

Squeezing GIFs Into Even Tighter Spaces

Showing images on a TFT or OLED display with a small AVR microcontroller can be a challenge as it requires significant storage space. One solution is to compress the images, but then you need more RAM to decompress it, and that’s a whole other problem. [David Johnson-Davies] of Technoblogy couldn’t find a GIF decoder that fit his needs, so he started writing his own.

We had previously seen a minimal GIF decoder aimed at a Cortex-M0+ that required 24 K of RAM, but this technique is running on an AVR with just 12 K of RAM. Along the way, [David] uses little tricks to shave down the requirements. Since the TFT he targets is a 5-6-5 color space, those 3-byte colors become 2 bytes. The LZW lookup table is encoded as 12-bit pointers to earlier entries plus an additional pixel. However, these savings come at a cost. Animated, local color tables, transparency, interlacing, or GIF87a formatted images aren’t supported. But he ports it over to the PyBadge, which is ATSAMD51 based.

[David] provides some sample code to display a GIF from program memory and an SD card. All the code is on GitHub under a CC By 4.0 license.

NTC Thermistor To ThingSpeak Meter Makes A Great IoT Starter Project

There are a lot of IoT solutions and frameworks out there, and [Davide] demonstrates how to make a simple data logging and tracking application with his ESP8266-to-ThingSpeak project, which reads up to four NTC (negative temperature coefficient) thermistors and sends the data to ThinkSpeak over WiFi.

IoT can be a pretty deep rabbit hole, so if you’re looking for a simple project to demonstrate the working parts and provide a starting point, the project’s GitHub repository might help you get started. We’ve also seen ThingSpeak used to track toilet paper sheet usage, which is a nice demonstration of how to interface to a physical object with moving parts.

On the other hand, if you find reading NTC thermistors to be the more interesting part, you’re in luck because [Davide] has more information about that along with a modified ESP8266 Arduino library. Watch a tour of his temperature logging hardware in action in the video, embedded below.

Continue reading “NTC Thermistor To ThingSpeak Meter Makes A Great IoT Starter Project”

It’s Ethernet, From An SPI Interface

Over the years as microcontrollers have become fast enough to do the heavy lifting, we have become used to 10 megabit Ethernet being bit-banged from interfaces it was never meant to emerge from. We think however that we’ve never seen one driven from an SPI interface, so this one from [Ivan] may be a first. With a cleverly designed transceiver using logic chips, it even offers a chance to understand something about the timing of an Ethernet interface, too.

The differential logic signals derived from a simple Ethernet transceiver can be read by an SPI bus, but for the lack of a clock line. The challenge was then to construct a circuit the would construct the required clock pulses from the state changes on the data line. This would become a monostable with XOR gate, and a shift register to handle the clock during the preamble phase.

The resulting circuitry fits neatly on a shield for the ST Nucleo 64 board, where while it might not be the obvious choice for an Ethernet shield it certainly does the job.

If unexpected Ethernet is your thing, how about the i2s peripheral on an ESP8266?

BBC Micro:Bit As Handheld Synthesizer

The BBC Micro:bit, while not quite as popular in our community as other microcontroller development boards, has a few quirks that can make it a much more interesting piece of hardware to build a project around than an Arduino. [Turi] took note of these unique features and decided that it was the perfect platform to build a synthesizer on.

The Micro:bit includes two important elements that make this project work: the LED matrix and a gyro sensor. [Turi] built a 5×5 button matrix for inputs and paired each to one of the diodes, which eliminates the problem of false inputs. The gyro sensor is used for detuning, which varies the pitch of any generated sound by a set amount according to the orientation of the device. It also includes a passive low-pass filter to make the sound more pleasant to the ear, especially for younger players of the machine. He’s released the source code on his GitHub page for anyone interested in recreating it.

While this was a one-off project for [Turi], he notes that using MicroPython to program it instead of C led to a lot of unnecessary complications, and the greater control allowed by C would enable some extra features with less hassle. Still, it’s a fun project that really showcases the unique features of this board, much like this tiny Sumo robot we covered over the summer.

Continue reading “BBC Micro:Bit As Handheld Synthesizer”

Giving Your Pets A Digital Squeak

A pet tracker has a particularly grueling set of requirements: small, light, rugged, incredibly long battery life, safe for the pet, and cheap. [Mihai Cuciuc] was looking at the options and wasn’t thrilled with any of them. So as any hacker would, he rolled his own, dubbed Squeak.

It uses an RN2483 module as it is a LoRAWAN module with publically available firmware from Microchip itself. This means [Mihai] could add his code and keep the modem code without having to reverse engineer everything or add a second microcontroller. In addition to the modem, there’s a GPS unit connected via UART. The clever part is the dual voltage regulators — the one powering the GPS is enabled or disabled by the RN2483. In addition, the RAM V_BACKUP line is always powered, which means the RN2483 can power up the GPS and let it get a quick fix (thanks to the RAM backup line).

To maximize the chances of a packet making it through, he made them only have the bare essentials. There are return packets to change the tracker’s mode (such as uplink interval or how often to capture GPS). With some cloud support, [Mihai] created infrastructure to capture the packets and relay them to Telegram. He can request the last location, receive updates, and change modes.

We’ve got you covered if you’re interested in tracking some of your dog’s other habits.