• Prototyping

    Jake Wachlin01/16/2020 at 03:21 0 comments

    Although I'd previously said I plan to use ESP32, I had some Nano RF boards that I had on hand, and though I'd test them out. These are very similar to what I'd used on the last prototype a few years ago. They have an atmega328p microcontroller and are in the classic Arduino Nano form factor, but have an NRF24L01 radio onboard. For ~$4 from Aliexpress, they are an interesting part (although unfortunately they run at 5V). 

    I thought these were worth testing out, since ESP32s are extremely power hungry. The Nano RF could feasibly be almost 100X more power efficient, allowing me to use much smaller batteries and still have great battery life.

    I breadboarded two of the Nano RF boards, each with a GY-521 (MPU-6050) accelerometer/gyro sensor, a Piranha RGB LED, and a button.

    One of the devices is the "main" board, which makes game decisions, and handles the overall system state. All the rest respond accordingly. In the image below, the secondary device has turned on the LED as requested by the main board shown on the right.

    I also have sense, timing of response, and feedback of that information back to the main board working. It is super janky and delicate in the code, but it works. The gif below shows the board lit up, beginning to fade down as it times out, then I hit the board. The impact is sensed and the main board recognizes the impact and the time it took. Right now, impact sensitivity is set low as a desktop proof of concept.

    This prototyping shows that this system design will work. The libraries needed don't take up much of the memory of the Nano RF's, so more games and less janky code can still be added. I need to do some power measurements while these are running, but using these for the next prototype would have a few nice advantages. By reducing power consumption so much, a much smaller battery could be used. This may be advantageous since I have no idea how batteries will handle the impact of a real shot. Damaging a small battery seems much less risky. In addition, different battery chemistry could be used. With the Nano RF devices, alkaline cells may be an OK choice without having to change them all the time.

  • LED Testing

    Jake Wachlin01/12/2020 at 00:01 0 comments

    I had some "Super Flux" RGB LEDs (also known as Piranha LEDs) readily available, so I set up a test with the ESP32 driving these. They are unbelievably bright, even driven at a very low current. The Gif below is highly compressed, but gives some idea just how bright the LEDs are, even through a 1/4" HDPE panel. They are uncomfortable to the eyes when not defused. The fade shown is linear, but the eyes do not have a linear response. I plan to test an intensity mapping approach soon.

    Next, I plan to test out the wireless connectivity and sensing, and try to determine rough power consumption needs and battery life.

  • History

    Jake Wachlin01/11/2020 at 03:29 0 comments

    This project really began many years ago. I like to build things but I'm also a hockey player. At tournaments I had seen a game called TopShot, where plastic pucks can be shot at an array of 9 back-lit targets. They have games such as tic-tac-toe that entertain kids for hours.

    While that system is a ton of fun, it has a bunch of downsides that I was inspired to fix. In order to be used for real training, a better design would need to survive full speed shots with real pucks. TopShot is also very large and heavy, and I saw no reason this system couldn't be small, lightweight, and modular.

    With these goals in mind, there are a few requirements for the system.

    • Wireless connectivity -- Each target should be self contained and able to talk to many other targets
    • Indication feedback -- The targets should light up in some way to provide feedback to the user
    • Sensing -- Each target must be able to sense impact on itself
    • Robustness -- The targets must handle full-speed shots with real pucks. Hockey pucks are 6 ounces of hard vulcanized rubber, and if you've ever blocked a shot you know how hard the impacts are. Shots from professionals can exceed 100mph, while amateurs regularly shoot over 80mph.

    While I was at MIT, I worked on developing some early prototypes of these hockey targets. I got busy with other things before working out all the details, but reviewing that hardware provides a good look into the first attempt.

    The prototype I built used an atmega328p as the microcontroller, nrf24l01+ as the radio, 4 WS2812 "neopixel" digitally addressable RGB LEDs for feedback, and a discrete vibration switch (basically a flexible contactor in a tube that closes when shaken). The output of a single alkaline AAA battery was boosted to 5V to run the system. The assembled PCB was mounted between two layers of white 10x10x0.25" HDPE sheet. These panels are similar to the material used in the boards of hockey rinks, and known to be very impact resistant. They also diffuse the LEDs quite nicely.

    These prototypes generally worked OK. The LED diffusion looked good, and sensing was reliable. I never risked shooting full speed at them since I only had 2 and needed them for demos, but at least the cover is robust (PCB not so much, and battery would surely have fallen out). However, the devices could not reliably transmit data. I believe this was due to the peak current draw from the NRF24L01+ when transmitting. Boosting a single AAA battery to 5V to run a radio, microcontroller, and 4 high-ish power LEDs was a bad idea in hindsight. They could receive data though, so I could demo the hardware by sending commands from a radio connected to my computer to make the targets respond as desired.

    Future Development

    I want to build some better devices now, and from my experience with ESP-NOW, using ESP32s is a cheap and easy way to do the communication part. They would also then be able to communicate to a phone (at least in theory) for setup and game selection. ESP32s are very power hungry, but easy to design for, easy to use, and cheap. I also don't need to place separate microcontroller and radio subsystems on my PCB.

    For power, I plan to use lithium 14500 cells (AA size). I've been using them in my solar sensing project with good success. They can easily provide the power needed and have large enough capacity to run the targets for a few hours before charging. I plan to have USB charging onboard. The lithium cells will be ziptied onto the board, since they are the heaviest component.

    For sensing, I will use an accelerometer. Although the digital switch was stupid simple and reliable and cheap, I like the concept that I could estimate shot speed from acceleration. I'm not convinced that will work well, but I'm curious to find out. It will also allow adjustable thresholding to eliminate false positives (e.g. a hard shot off the nearby post could shake the old targets hard enough to trigger detection.)