Monthly Archives: July 2020

Juuke is an Arduino-powered RFID music player for the elderly

via Arduino Blog

While many of us take playing tunes for granted, whether via MP3s, CDs, or streaming services, for others — such as many that are very young or old — actually figuring out the interface can be a challenge. To make it easier for the elderly (and children) to enjoy music, Ananords and his girlfriend created the Juuke box.

The Juuke features an RC522 RFID reader to trigger specific songs stored on an SD card via a DFPlayer Mini, using a stereo jack and external powered speakers. The device is controlled by an Arduino Uno, and includes a volume potentiometer along with two light-up buttons — red to play/pause tracks, green for random playback.

Code for the project can be found on GitHub, with 3D print files, and the actual Fusion 360 files are also available if you’d like to build your own.

The PongMate CyberCannon Mark III is a surefire way to never lose at beer pong

via Arduino Blog

If you participate in beer pong, and your skills aren’t up to the challenge, you might be in for a rough time. While “practice makes perfect,” if you’d rather shortcut this process then engineers Nils Opgenorth and Grant Galloway have just the solution with their Arduino-powered PongMate CyberCannon Mark III.

This wrist-mounted launcher uses a time-of-flight sensor, along with an inertial measurement unit to calculate the vertical and horizontal distance to the red Solo cup, marked with a small laser. Bubble levels help users fix the device in the horizontal direction and five programmable RGB LEDs indicate when it’s ready to shoot.

To fire, it pushes a ball forward using a small servo, which is then flung out using a pair of spinning wheels. Distance is set by varying the speed of driving motors, in order create the appropriate shot velocity.

Turning Lead to Gold with FPGA

via SparkFun: Commerce Blog

We have an exciting announcement: SparkFun Electronics is now producing all Alchitry FPGA boards! Two new FPGA options are available, with the Xilinx Artix 7-equipped Au, and the Lattice iCE40 HX-equipped Cu boards. We also have two shield-like boards called "Elements" that support each of the FPGA's inherently strong capabilities and logic cells.

Don't forget that you can get a free SparkFun Qwiic Pro Micro BoogieBoard with any purchase of $75 or more using promo code "BOOGIEBOARD20" (some restrictions apply).

Now onto our new products!

The gold standard of FPGA!

Alchitry Au FPGA Development Board (Xilinx Artix 7)

Alchitry Au FPGA Development Board (Xilinx Artix 7)


The Alchitry Au Development Board is the "gold" standard for FPGA development boards, and it's one of the strongest boards of its type on the market. The Au FPGA features a Xilinx Artix 7 XC7A35T-1C FPGA with over 33,000 logic cells and 256MB of DDR3 RAM. This board is a fantastic starting point into the world of FPGAs as the heart of your next project. Now that this board is built by SparkFun, we added a Qwiic connector for easy I2C integration!

Alchitry Cu FPGA Development Board (Lattice iCE40 HX)

Alchitry Cu FPGA Development Board (Lattice iCE40 HX)


If you don't need a lot of power to start your FPGA adventure or are looking for a more economical option, the Alchitry Cu FPGA Development Board might be the perfect option for you! The Alchitry Cu is a "lighter" FPGA version than the Alchitry Au but still offers something completely unique. The Alchitry Cu uses the Lattice iCE40 HX FPGA with 7680 logic cells and is supported by the open source tool chain Project IceStorm, as well as the SparkFun Qwiic Connect System. The Cu truly exemplifies the trend of more affordable and increasingly powerful FPGA boards arriving each year.

Alchitry Io Element Board

Alchitry Io Element Board


The Alchitry Io Element Board is the perfect way to get your feet wet with digital design. The Io features four 7-segment LEDs, five momentary push buttons, 24 basic LEDs, and 24 DIP switches. All these features lend themselves to fantastic beginner tutorials that will walk you through the basics of FPGAs.

Alchitry Br Prototype Element Board

Alchitry Br Prototype Element Board


The Alchitry Br Element Board is a prototyping periphery for the Au or Cu FPGA development boards. The Br breaks out all the signals on the four headers running from your Au or Cu, and has a large prototyping area with a 0.1" pin grid for custom circuits.

There are also female headers (sold separately) available that can be soldered into the prototyping area, turning the Br Element into a breadboard so you can test out new circuits without making them a permanent resident!

RGB LED Clear Lens Common Cathode (5mm)

RGB LED Clear Lens Common Cathode (5mm)


These 5mm LEDs have four pins - one for each color and a common cathode (the longest pin). Use this LED for three status indicators, or pulse width modulate all three and get mixed colors!

That's it for this week! As always, we can't wait to see what you make! Shoot us a tweet @sparkfun, or let us know on Instagram or Facebook. We’d love to see what projects you’ve made!

Never miss a new product!

comments | comment feed

International Space Station Tracker | The MagPi 96

via Raspberry Pi

Fancy tracking the ISS’s trajectory? All you need is a Raspberry Pi, an e-paper display, an enclosure, and a little Python code. Nicola King looks to the skies

The e-paper display mid-refresh. It takes about three seconds to refresh, but it’s fast enough for this kind of project

Standing on his balcony one sunny evening, the perfect conditions enabled California-based astronomy enthusiast Sridhar Rajagopal to spot the International Space Station speeding by, and the seeds of an idea were duly sown. Having worked on several projects using tri-colour e-paper (aka e-ink) displays, which he likes for their “aesthetics and low-to-no-power consumption”, he thought that developing a way of tracking the ISS using such a display would be a perfect project to undertake.

“After a bit of searching, I was able to find an open API to get the ISS location at any given point in time,” explains Sridhar. I also knew I wouldn’t have to worry about the data changing several times per second or even per minute. Even though the ISS is wicked fast (16 orbits in a day!), this would still be well within the refresh capabilities of the e-paper display.”

The ISS location data is obtained using the Open Notify API – visit to see its current position

Station location

His ISS Tracker works by obtaining the ISS location from the Open Notify API every 30 seconds. It appends this data point to a list, so older data is available. “I don’t currently log the data to file, but it would be very easy to add this functionality,” says Sridhar. “Once I have appended the data to the list, I call the drawISS method of my Display class with the positions array, to render the world map and ISS trajectory and current location. The world map gets rendered to one PIL image, and the ISS location and trajectory get rendered to another PIL image.”

The project code is written in Python and can be found on Sridhar’s GitHub

Each latitude/longitude position is mapped to the corresponding XY co-ordinate. The last position in the array (the latest position) gets rendered as the ISS icon to show its current position. “Every 30th data point gets rendered as a rectangle, and every other data point gets rendered as a tiny circle,” adds Sridhar.

From there, the images are then simply passed into the e-paper library’s display method; one image is rendered in black, and the other image in red.

Track… star

Little wonder that the response received from friends, family, and the wider maker community has been extremely positive, as Sridhar shares: “The first feedback was from my non-techie wife who love-love-loved the idea of displaying the ISS location and trajectory on the e-paper display. She gave valuable input on the aesthetics of the data visualisation.”

Software engineer turned hardwarehacking enthusiast and entrepreneur, Sridhar Rajagopal is the founder of Upbeat Labs and creator of ProtoStax – a maker-friendly stackable, modular,
and extensible enclosure system.

In addition, he tells us that other makers have contributed suggestions for improvements. “JP, a Hackster community user […] added information to make the Python code a service and have it launch on bootup. I had him contribute his changes to my GitHub repository – I was thrilled about the community involvement!”

Housed in a versatile, transparent ProtoStax enclosure designed by Sridhar, the end result is an elegant way of showing the current position and trajectory of the ISS as it hurtles around the Earth at 7.6 km/s. Why not have a go at making your own display so you know when to look out for the space station whizzing across the night sky? It really is an awesome sight.

Get The MagPi magazine issue 96 — out today

The MagPi magazine is out now, available in print from the Raspberry Pi Press online store, your local newsagents, and the Raspberry Pi Store, Cambridge.

You can also download the directly from PDF from the MagPi magazine website.

Subscribers to the MagPi for 12 months to get a free Adafruit Circuit Playground, or choose from one of our other subscription offers, including this amazing limited-time offer of three issues and a book for only £10!

The post International Space Station Tracker | The MagPi 96 appeared first on Raspberry Pi.

DIY OpenDPS power supply

via Dangerous Prototypes

Evan’s DIY OpenDPS power supply:

Years ago I heard about the OpenDPS project to give open source firmware to cheap and available chinese power supplies. These aren’t strictly whole power supplies, they are configurable CC and CV buck converters. That means that it needs a stable DC source to back it to be used as a bench power supply. Perhaps you may not want to do this if you intend to use the DPS as a battery charger run from a solar supply or something, but most people I see want to use them for bench supplies so that requires an existing DC supply. Today I finally finished mine.

Enginursday: Building a Wireless Custom Keyboard

via SparkFun: Commerce Blog

A little over three years ago I made a custom keyboard to help speed up the process of laying out a PCB in Eagle. Truth be told, I only ended up using the keyboard for a short amount of time. It wasn't that the keyboard wasn't useful; the main issue was the case wasn't complete. It sat flat on the desk, and I was using pieces of thermal gap filler as feet to keep it from sliding.

Front and back of the original keyboard

Combined with the fact that it used a frequently needed micro USB cable, and the next closest cable was miles ten feet away from my desk, it became a tool that spent most of its time in my desk drawer. What I was missing was a little bit of inspiration to invest the time to do it right.

A few months ago I saw a library for the ESP32 that used the Bluetooth radio and turned the ESP32 into a Human Interface Device, or HID. The original keyboard didn't have enough space to easily fit the ESP32 Thing Plus I wanted to use, so it forced me to fully enclose it like I originally intended:

Profile view of the keyboard

The new box I made had more of an ergonomic pitch that matched my keyboard, starting at around an inch high in the back and thinning down to around half an inch in the front (making sure to leave room for the Cherry MX key body). I used CA glue to hold five of the six sides in place, and black electrical tape to keep the top in place. I was pretty happy with the shape and feel, and I reclaimed some of the functions the previous keyboard had, plus a few new ones:

alt text

  • Left Knob: Volume Up/Down and Mute
  • Right Knob: Eagle Grid Spacing +/- and switch between Imperial/Metic
  • LED Indicator: BLE connection status and battery indicator
  • 16 Cherry MX keys for:
    • Play/Pause
    • Skip Forward
    • Skip Backward
    • Launch Calculator (really useful for footprint creation from a datasheet)
    • 12 frequently used Eagle shortcut keys

Making the keyboard wireless gave me the flexibility to move it wherever I needed. It also, however, gave me more challenges to think about - mainly power management.

To start, I checked to see how large a battery I could physically fit, and settled on a 2000mAh battery. While the library uses Bluetooth Low Energy, it was not exactly what you would call low energy. After pairing to my computer, the ESP32 was drawing around 83mA, which means it would barely run for a full 24 hours.

Quite a few years ago when I had a wireless mouse, the number one thing that drove me crazy was that I had to charge it every few days. Often I just left the USB cable connected to keep the battery charged and went wireless only when I had to. Having that still in my mind, I wanted to make sure I didn’t run into the same issue again. By putting the ESP32 to deep sleep you can power down parts of the chip you don’t need to use, like the radio, analog to digital converter, etc., to significantly cut down on power and extend the battery life.

Pairing status image on the computer

Every time the board wakes up, the time it takes to reconnect to the computer can vary, so I needed a way to tell when it was trying to connect, and whether it was awake or asleep. I also needed to know when it was time to charge the battery. The library has a function to send the battery percentage to the computer (shown in the image above), but it wasn’t updating on the computer reliably enough to count on. I solved all of these issues with a single red/green led between the two encoders:

Alternating red and green when pairing (which looks better in person than on camera):

Gif of keyboard pairing

Double green blink when it’s connected and active:

Gif of keyboard connected over bluetooth

Double red blink when it’s awake and needs charging:

gif of led indicator to charge the battery

The LEDs draw less than a couple milliamps of current, but if you only flash the LEDs periodically, especially for when the battery needs to be charged, you can get the most out of the battery. To decide when to go to sleep, I monitor any key presses and reset a timer, so that if after 20 minutes the keyboard hasn’t been used, it will put itself to sleep. The biggest downside admittedly is that because I used a voltage divider on the keys, I can’t use them to wake up from sleep. I did try to leave the ADC powered on, but I measured 20mA of current was still being used because it was constantly polling the ADC to see if a key was pressed to wake up.

The other power management solution I came up with was adding a switch to pull the enable pin of the 3.3V regulator down to ground, which cuts power to the ESP32, but will still allow the battery to charge if power is connected.

Speaking of charging the battery, I used a USB-C Breakout along with some wire wrap to provide not only power for charging, but the USB data pins as well so that I can reprogram the board without having to open up the case and stress the wires connecting the keys to the ESP32.

back view of the keyboard

Aside from that, it behaves exactly like the wired version. I’m not exactly sure what the normal use battery life is quite yet. I’ve had the board running for about a week now without charging, aside from making a few quick tweaks to the code.

If you’re interested in making your own, you can check out the wishlist for the parts used, and the GitHub repo, which has the files for the box, code used, and schematic for the hardware and images for the keycaps I used.

Two parts not on the wishlist are the common anode red/green LED and the switch, which were parts I had laying around in my parts bin, but you should be able to easily edit the size of the holes to match your parts.

comments | comment feed