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

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

Dave Darko designs a 16-button keep-alive switch with a Nano Every

via Arduino Blog

It’s generally not advisable to leave equipment running when unattended. As a safeguard against this possibility at hackerspaces and elsewhere, element14 Presents’ Dave Darko built a custom switch that requires users to intermittently push a button in order to produce additional ‘on’ time.

The trick here is that instead of having one keep-alive button, the unit has a matrix of 16 buttons that light up randomly to be pressed. The idea is to prevent someone from setting up a second device to simply poke the same key over and over.

The ‘unhackable’ switch, which resembles a MIDI sequencer input, runs on an Arduino Nano Every and uses a relay to directly control the power state. It’s demonstrated toward the end of the video below, where Darko plays a sort of simple button-based game to keep an LED fixture on.

Jetson Nano-Powered Sphero RVR (Part Two)

via SparkFun: Commerce Blog

This is the second of a two-part tutorial series focusing on combining two robotics kits: our SparkFun JetBot AI Kit v2.1 powered by Jetson Nano, and our SparkFun Advanced Autonomous Kit for Sphero RVR. If you want to start with part one, click here.

In our first tutorial, we assembled the robot from parts and pieces from the two kits on top of a Sphero RVR, using it as our driving base and offloading the computation and control to the NVIDIA Jetson Nano. In part two, we dive into software by uploading the JetBot image, updating the firmware on the Sphero RVR, and getting your bot up and running via teleoperation or machine learning collision avoidance!

You will be downloading software to your NVIDIA Jetson Nano, as well as controlling and programming the robot through your browser using Jupyter Notebooks, so a WiFi connection and a separate laptop is a must to get started.

Jetson Nano + Sphero RVR Mash-up (PART 2)

June 25, 2020

We took two of our biggest robotics partnerships from the previous year and shazamed them together into one robot to rule them all!

This mash-up and tutorial is a guide for you to follow along in building your own Jetson Nano-powered Sphero RVR. There is no real right way to do this; it was us in the shop for an afternoon being creative. Your sensors, board placement and hardware choices may vary.

comments | comment feed