<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Documents</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Project Video Release Archive</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3748/project-video-release-archive</link><pubDate>Thu, 28 May 2026 14:08:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:59ab0abe-b32d-47f9-b00c-4b73b01f3bd8</guid><dc:creator>e14sbhargav</dc:creator><description>Current Revision posted to Documents by e14sbhargav on 5/28/2026 2:08:58 PM&lt;br /&gt;
&lt;div style="background:#ffffff;border-bottom:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-icid="e14" data-e14adj="t"&gt;&lt;img alt="image"  src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;span style="font-size:18px;font-weight:bold;"&gt;Project Video Releases&lt;/span&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" style="color:#f17c0e;" href="/challengesprojects/element14-presents/" data-icid="e14" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;span style="padding-right:5px;"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" style="color:#f17c0e;" href="/challengesprojects/element14-presents/vcp-program/" data-icid="e14" data-e14adj="t"&gt;Meet the Hosts&lt;/a&gt;&lt;/span&gt;&lt;span style="padding-right:5px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a href="/challenges-projects/element14-presents/project-videos/w/documents/72067/designing-a-mobile-robot-platform-with-inverse-kinematics-and-wireless-control" data-e14adj="t"&gt;Episode 716: Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a href="/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays" data-e14adj="t"&gt;Episode 715: How to Build a Reaction-Based Catch Game Using Arduino and Relays&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a href="/challenges-projects/element14-presents/project-videos/w/documents/72062/find-emi-fast-with-a-low-cost-automated-way-to-see-where-your-pcb-radiates" data-e14adj="t"&gt;Episode 714: Find EMI Fast with a Low‑Cost, Automated Way to See Where Your PCB Radiates&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 713:" href="/challenges-projects/element14-presents/project-videos/w/documents/72061/how-to-make-an-led-sculpture-react-to-sound-with-micro-bit" data-e14adj="t"&gt;Episode 713:&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72061/how-to-make-an-led-sculpture-react-to-sound-with-micro-bit"&gt;How to Make an LED Sculpture React to Sound with micro:bit&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 712: Designing a More Capable Dual Motor Driver Beyond the L298N (What worked and what didn't)" href="/challenges-projects/element14-presents/project-videos/w/documents/72060/designing-a-more-capable-dual-motor-driver-beyond-the-l298n-what-worked-and-what-didn-t" data-e14adj="t"&gt;Episode 712: Designing a More Capable Dual Motor Driver Beyond the L298N (What worked and what didn&amp;#39;t)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 711: Modern Edge AI on Raspberry Pi 5 for an Animatronic Tracker: Vision Acceleration with AI Hat+ and AI Camera" href="/challenges-projects/element14-presents/project-videos/w/documents/72059/modern-edge-ai-on-raspberry-pi-5-for-an-animatronic-tracker-vision-acceleration-with-ai-hat-and-ai-camera" data-e14adj="t"&gt;Episode 711: Modern Edge AI on Raspberry Pi 5 for an Animatronic Tracker: Vision Acceleration with AI Hat+ and AI Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 710: Your First Real PCB in KiCad : An Arduino Compatible Board Designed from Scratch" href="/challenges-projects/element14-presents/project-videos/w/documents/72057/your-first-real-pcb-in-kicad-an-arduino-compatible-board-designed-from-scratch" data-e14adj="t"&gt;Episode 710: Your First Real PCB in KiCad : An Arduino Compatible Board Designed from Scratch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 709: Was that my Number!? Fixing Caf&amp;eacute; Order Chaos with a Raspberry Pi Announcer" href="/challenges-projects/element14-presents/project-videos/w/documents/72055/was-that-my-number-fixing-cafe-order-chaos-with-a-raspberry-pi-announcer" data-e14adj="t"&gt;Episode 709: Was that my Number!? Fixing Caf&amp;eacute; Order Chaos with a Raspberry Pi Announcer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 708: Reviving a Vintage LED Sign with Arduino and PS/2 Control" href="/challenges-projects/element14-presents/project-videos/w/documents/72042/reviving-a-vintage-led-sign-with-arduino-and-ps-2-control----episode-708" data-e14adj="t"&gt;Episode 708: Reviving a Vintage LED Sign with Arduino and PS/2 Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 707: Building a Circuit Sculpture with LED Filament" href="/challenges-projects/element14-presents/project-videos/w/documents/72038/building-a-circuit-sculpture-with-led-filament----episode-707" data-e14adj="t"&gt;Episode 707: Building a Circuit Sculpture with LED Filament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72037/esp32-rfid-smart-access-control-in-a-simple-diy-build----episode-706"&gt;Episode 706: ESP32 + RFID = Smart Access Control in a Simple DIY Build&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 705: Building a Super Smooth Z-Scale Train Controller with Arduino" href="/challenges-projects/element14-presents/project-videos/w/documents/72036/building-a-super-smooth-z-scale-train-controller-with-arduino----episode-705" data-e14adj="t"&gt;Episode 705: Building a Super Smooth Z-Scale Train Controller with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 704: Hacking an IKEA Desk into a Programmable Electric Workstation" href="/challenges-projects/element14-presents/project-videos/w/documents/72035/hacking-an-ikea-desk-into-a-programmable-electric-workstation----episode-704" data-e14adj="t"&gt;Episode 704: Hacking an IKEA Desk into a Programmable Electric Workstation&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 703: How to Set Up the Raspberry Pi 5: Complete Beginner Step-by-Step Guide" href="/challenges-projects/element14-presents/project-videos/w/documents/72034/how-to-set-up-the-raspberry-pi-5-complete-beginner-step-by-step-guide----episode-703" data-e14adj="t"&gt;Episode 703: How to Set Up the Raspberry Pi 5: Complete Beginner Step-by-Step Guide&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 702: Build Your Own USB Looper for Serial Debugging and File Transfer" href="/challenges-projects/element14-presents/project-videos/w/documents/72033/build-your-own-usb-looper-for-serial-debugging-and-file-transfer----episode-702" data-e14adj="t"&gt;Episode 702: Build Your Own USB Looper for Serial Debugging and File Transfer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)" href="/challenges-projects/element14-presents/project-videos/w/documents/72031/from-snooze-to-launch-the-arduino-powered-lego-alarm-clock-inspired-by-artemis-2----episode-701" data-e14adj="t"&gt;Episode 701: From Snooze to Launch: The Arduino-Powered LEGO Alarm Clock Inspired by Artemis 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)" href="/challenges-projects/element14-presents/project-videos/w/documents/72030/how-voice-recognition-works-on-raspberry-pi-and-why-it-s-easy-to-break----episode-700" data-e14adj="t"&gt;Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72021/gimmegpio-a-simple-way-to-get-gpio-on-laptops-and-desktops----episode-699" data-e14adj="t"&gt;Episode 699:&amp;nbsp;GimmeGPIO: A Simple Way to Get GPIO on Laptops and Desktops&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72020/building-a-practical-electronics-workbench-for-makers-and-engineers----episode-698" data-e14adj="t"&gt;Episode 698:&amp;nbsp;Building a Practical Electronics Workbench for Makers and Engineers&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72009/a-smart-safe-3d-printer-cabinet-using-raspberry-pi-and-node-red----episode-697" data-e14adj="t"&gt;Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/72008/how-a-pulse-metal-detector-works-and-how-to-build-one" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 696: How a Pulse Metal Detector Works, and How to Build One&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/72007/a-diy-test-and-programming-rig-built-for-small-batch-electronics-production----episode-695" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 695: A DIY Test and Programming Rig Built for Small-Batch Electronics Production&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/secret-element14-presents/w/documents/72001/earn-your-fitness-reward-with-a-smart-cookie-jar-using-strava-and-esp32----episode-694" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 694: Earn Your Fitness Reward with a Smart Cookie Jar Using Strava and ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71999/open-source-multicolour-3d-printing-upgrade-clem-s-3d-chameleon-remix----episode-693" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 693: Open-Source Multicolour 3D Printing Upgrade: Clem&amp;rsquo;s 3D Chameleon Remix&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71995/build-your-own-esp32-fitness-heart-rate-monitor-tracker----episode-692" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 692: Build Your own ESP32 Fitness Heart Rate Monitor / Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71994/how-accurate-is-bluetooth-channel-sounding-a-deep-dive-with-the-nrf54l15" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 691: How Accurate Is Bluetooth Channel Sounding? A Deep Dive with the nRF54L15&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71993/meet-the-platypusbot-now-powered-by-raspberry-pi-ros----episode-690" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 690: Meet the PlatypusBot: Now Powered by Raspberry Pi &amp;amp; ROS&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71992/how-clem-built-a-handheld-sci-fi-communicator-that-really-works----episode-689" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 689: How Clem Built a Handheld Sci-Fi Communicator That Really Works&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71990/building-the-cylon-pumpkin-combining-a-larson-scanner-and-vocoder-for-halloween----episode-688" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 688: Building the Cylon Pumpkin: Combining a Larson Scanner and Vocoder for Halloween&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71989/turning-a-10-air-fryer-into-an-arduino-powered-filament-dryer----episode-687" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 687: Turning a $10 Air Fryer into an Arduino powered Filament Dryer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71988/creepy-motion-activated-painting-you-can-build-yourself----episode-686" data-icid="e14" data-e14adj="t"&gt;Episode 686: Creepy Motion-Activated Painting You Can Build Yourself&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71987/when-your-body-becomes-the-instrument-clem-builds-the-drone-synth----episode-685" data-icid="e14" data-e14adj="t"&gt;Episode 685: When Your Body Becomes the Instrument: Clem Builds the &amp;ldquo;Dr&amp;ouml;ne&amp;rdquo; Synth&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71985/building-an-audio-reactive-led-matrix-with-a-micro-bit-and-neopixels----episode-684" data-icid="e14" data-e14adj="t"&gt;Episode 684: Building an Audio Reactive LED Matrix with a micro:bit and NeoPixels&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71984/how-to-make-a-portable-emergency-radio-with-an-arduino-nano-in-a-mint-tin----episode-683" data-icid="e14" data-e14adj="t"&gt;Episode 683: How to Make a Portable Emergency Radio with an Arduino Nano in a Mint TinT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71974/diy-rf-modulator-raspberry-pi-pico-gaming-on-a-sony-watchman-fd-10a-crt----episode-682" data-icid="e14" data-e14adj="t"&gt;Episode 682: DIY RF Modulator + Raspberry Pi Pico = Gaming on a Sony Watchman FD-10A CRT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71963/turn-anything-into-an-arduino-module-reusing-everyday-electronics----episode-681" data-icid="e14" data-e14adj="t"&gt;Episode 681: Turn anything into an Arduino Module: Reusing Everyday Electronics&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71961/from-kit-to-custom-design-building-a-tube-based-fm-radio----episode-680" data-icid="e14" data-e14adj="t"&gt;Episode 680: From Kit to Custom Design: Building a Tube-Based FM Radio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71960/esp32-duolingo-owl-project-never-miss-a-lesson-again----episode-679" data-icid="e14" data-e14adj="t"&gt;Episode 679: ESP32 Duolingo Owl Project: Never Miss a Lesson Again&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71959/open-source-attiny3226-arduino-calculator-hardware-case-code-build----episode-678" data-icid="e14" data-e14adj="t"&gt;Episode 678: Open Source ATtiny3226 Arduino Calculator &amp;ndash; Hardware, Case &amp;amp; Code Build&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71955/make-your-own-vocoder-with-teensy-4-0---voice-of-a-cylon----episode-677" data-icid="e14" data-e14adj="t"&gt;Episode 677: Make Your Own Vocoder with Teensy 4.0 - Voice of a Cylon?!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71954/i-tried-building-16-attiny-robots-with-vibration-motors-it-was-a-disaster----episode-676" data-icid="e14" data-e14adj="t"&gt;Episode 676: I Tried Building 16 ATtiny Robots with Vibration Motors &amp;ndash; It Was a Disaster&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71953/avoid-conflict-with-this-esp32-defcon-task-tracker----episode-675" data-icid="e14" data-e14adj="t"&gt;Episode 675:Avoid Conflict with this ESP32 Defcon Task Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71947/building-an-open-source-blood-pressure-heart-signal-monitor----episode-674" data-icid="e14" data-e14adj="t"&gt;Episode 674: Building an Open Source Blood Pressure &amp;amp; Heart Signal Monitor&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71942/building-an-esp32-powered-warhammer-40k-rhino-with-dynamic-led-effects----episode-673" data-icid="e14" data-e14adj="t"&gt;Episode 673: Building an ESP32 Powered Warhammer 40k Rhino with Dynamic LED Effects!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71936/building-an-autonomous-lego-train-with-circuitpython-and-lidar----episode-672" data-icid="e14" data-e14adj="t"&gt;Episode 672: Building an Autonomous LEGO Train with CircuitPython and LIDAR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71934/platypusbot---scavenging-for-robotics-parts----episode-671" data-icid="e14" data-e14adj="t"&gt;Episode 671: PlatypusBot - Scavenging for Robotics Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71927/build-a-larson-scanner-with-sound-using-an-esp32----episode-670" data-icid="e14" data-e14adj="t"&gt;Episode 670: Build your own Larson Scanner&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71926/creating-an-esd-or-lightning-detector----episode-669" data-icid="e14" data-e14adj="t"&gt;Episode 669: Creating an ESD (Or Lightning!) Detector!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71925/designing-an-arduino-pid-controlled-micro-drone----episode-668" data-icid="e14" data-e14adj="t"&gt;Episode 668: Designing an Arduino PID Controlled Micro Drone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71921/emulating-a-speech-synthesis-chip-with-an-esp32----episode-667" data-icid="e14" data-e14adj="t"&gt;Episode 667: Emulating a Speech Synthesis Chip with an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71920/how-far-can-i2c-go----episode-666" data-icid="e14" data-e14adj="t"&gt;Episode 666: How Far Can I2C Go?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71919/raspberry-pi-ai-tracking-eye-of-sauron---ai-al-barad-dur---episode-665" data-icid="e14" data-e14adj="t"&gt;Episode 665: Raspberry Pi AI Tracking Eye of Sauron - AI AL Barad Dur&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71915/learn-how-to-make-a-photo-booth-with-the-esp32-and-telegram-automation----episode-664" data-icid="e14" data-e14adj="t"&gt;Episode 664: Learn how to Make a Photo Booth with the ESP32 and Telegram Automation!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71911/upcycling-a-vintage-microphone-into-an-emergency-radio-system----episode-663" data-icid="e14" data-e14adj="t"&gt;Episode 663: Upcycling a Vintage Microphone into an Emergency Radio System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71909/making-a-stronger-affordable-diy-robot-arm-with-3d-printing-with-raspberry-pi-pico----episode-662" data-icid="e14" data-e14adj="t"&gt;Episode 662: Making a Stronger Affordable DIY Robot Arm with 3D Printing with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71904/make-your-own-led-wrist-watch----episode-661" data-icid="e14" data-e14adj="t"&gt;Episode 661: Clem makes his own LED Wristwatch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71846/lofi-beats-to-solder-to----episode-660" data-icid="e14" data-e14adj="t"&gt;Episode 660: LoFi Beats to Solder To&lt;/a&gt;&lt;/p&gt;
&lt;p style="clear:both;margin:0;padding:0px;padding-top:12px;"&gt;&lt;a title="Episode 659:&amp;nbsp;DIY Single Board Computer with ESP32 and Raspberry Pi Pico" href="/challenges-projects/element14-presents/project-videos/w/documents/71844/diy-single-board-computer-with-esp32-and-raspberry-pi-pico----episode-659" data-e14adj="t"&gt;Episode 659:&amp;nbsp;DIY Single Board Computer with ESP32 and Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71841/a-smart-youtube-counter-with-an-audio-analyzer---episode---658" data-icid="e14" data-e14adj="t"&gt;Episode 658: A Smart Youtube Counter With An Audio Analyzer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71833/how-to-control-a-lego-mindstorms-kit-with-ai-and-raspberry-pi-5----episode-657" data-icid="e14" data-e14adj="t"&gt;Episode 657: How to Control a LEGO Mindstorms kit with AI and Raspberry Pi 5&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71831/diy-jig-for-your-laser-cutter-with-custom-arduino-automation----episode-656" data-icid="e14" data-e14adj="t"&gt;Episode 656: DIY Jig for your Laser Cutter with Custom Arduino Automation&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71810/diy-hot-plate-for-smd-soldering-using-raspberry-pi-pico----episode-655" data-icid="e14" data-e14adj="t"&gt;Episode 655: DIY Hot Plate for SMD Soldering Using Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71801/how-do-battlebots-work-in-the-pit-with-hypershock----episode-654" data-icid="e14" data-e14adj="t"&gt;Episode 654: How Do BattleBots Work? In the Pit with HyperShock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71797/edge-lit-7-segment-display-clock-using-raspberry-pi-pico----episode-653" data-icid="e14" data-e14adj="t"&gt;Episode 653: Edge-lit 7-Segment Display Clock Using Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71793/smart-windows-and-blinds-with-arduino-and-raspberry-pi-pico----episode-652" data-icid="e14" data-e14adj="t"&gt;Episode 652: Smart Windows and Blinds with Arduino and Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71784/design-for-manufacturing---project-to-product-by-modifying-off-the-shelf-cases----episode-651" data-icid="e14" data-e14adj="t"&gt;Episode 651: Design for Manufacturing - Project to Product by Modifying Off-the-Shelf Cases&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/46432/using-nordic-s-nrf7002-my-dehumidifier-tells-me-when-it-s-full----episode-650" data-icid="e14" data-e14adj="t"&gt;Episode 650: Using Nordic&amp;#39;s nRF7002, My Dehumidifier Tells Me When It&amp;#39;s Full!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29545/giant-retro-gaming-magic-mirror-with-a-raspberry-pi-5----episode-649" data-icid="e14" data-e14adj="t"&gt;Episode 649: Giant Retro Gaming Magic Mirror with a Raspberry Pi 5!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29540/home-ai-image-generation-server-with-lattepanda-and-stable-diffusion----episode-648" data-icid="e14" data-e14adj="t"&gt;Episode 648: Home AI Image Generation Server with LattePanda and Stable Diffusion&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29537/building-an-open-source-tool-for-cave-surveying----episode-647" data-icid="e14" data-e14adj="t"&gt;Episode 647: Building an Open-Source Tool for Cave Surveying&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28802/creating-a-digital-roulette-table-with-an-esp32-devkit----episode-646" data-icid="e14" data-e14adj="t"&gt;Episode 646: Creating a Digital Roulette Table with an ESP32 DevKit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28438/practical-diy-pi-pico-current-load-circuits----episode-645" data-icid="e14" data-e14adj="t"&gt;Episode 645: Practical DIY Pi Pico Current Load Circuits&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28421/turning-a-raspberry-pi-pico-into-a-gpu----episode-644" data-icid="e14" data-e14adj="t"&gt;Episode 644: Turning a Raspberry Pi Pico into a GPU!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28418/making-a-tribble-that-detects-klingons----episode-643" data-icid="e14" data-e14adj="t"&gt;Episode 643: Making a Tribble that Detects Klingons&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28416/making-a-time-lapse-camera-with-a-raspberry-pi-5----episode-642" data-icid="e14" data-e14adj="t"&gt;Episode 642: Making a Time-lapse Camera with a Raspberry Pi 5&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28409/moon-phase-display-with-raspberry-pi-pico----episode-641" data-icid="e14" data-e14adj="t"&gt;Episode 641: Moon Phase Display with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28407/tinkering-vs-engineering-can-you-build-a-laptop-from-scratch----episode-640" data-icid="e14" data-e14adj="t"&gt;Episode 640: Tinkering vs Engineering: Can You Build a Laptop from Scratch?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28405/off-grid-remote-generator-starter----episode-639" data-icid="e14" data-e14adj="t"&gt;Episode 639: Off-Grid Remote Generator Starter?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28387/rp2040-pcb-design-turn-on-and-debug---how-hard-could-it-be----episode-638" data-icid="e14" data-e14adj="t"&gt;Episode 638: RP2040 PCB: Design, Turn-On, and Debug - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28386/making-music-with-a-lego-guitar-and-capacitive-touch----episode-637" data-icid="e14" data-e14adj="t"&gt;Episode 637: Making Music with a Lego Guitar and Capacitive Touch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28384/creating-an-imu-based-3d-mouse-with-an-esp32-s3----episode-636" data-icid="e14" data-e14adj="t"&gt;Episode 636: Creating an IMU based 3D Mouse with an ESP32-S3&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28382/vintage-electronics-exploration-with-a-bally-cypress-gardens-bingo-machine---episode-635" data-icid="e14" data-e14adj="t"&gt;Episode 635: Vintage Electronics Exploration with a Bally Cypress Gardens Bingo Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28381/craft-a-festive-led-christmas-sweater-featuring-the-attiny416----episode-634" data-icid="e14" data-e14adj="t"&gt;Episode 634: Craft a Festive LED Christmas Sweater Featuring the ATtiny416&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28376/spying-under-the-christmas-tree-with-an-arduino-powered-ornament----episode-633" data-icid="e14" data-e14adj="t"&gt;Episode 633: Spying Under the Christmas Tree with an Arduino-powered Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28374/revamping-old-school-pinball-with-an-esp32----episode-632" data-icid="e14" data-e14adj="t"&gt;Episode 632: Revamping Old School Pinball with an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28372/all-purpose-debugging-a-practical-universal-screen-with-lcd-displays----episode-631" data-icid="e14" data-e14adj="t"&gt;Episode 631: All-Purpose Debugging: A Practical Universal Screen with LCD Displays&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28370/mega-iie-first-fully-functional-computer-built-around-the-apple-mega-ii-chip----episode-630" data-icid="e14" data-e14adj="t"&gt;Episode 630: Mega IIe: First Fully Functional Computer built around the Apple Mega-II Chip&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28366/backpack-splash-mark-s-water-gun-upgrade-for-epic-outdoor-water-wars----episode-629" data-icid="e14" data-e14adj="t"&gt;Episode 629: Backpack Splash: Mark&amp;#39;s Water Gun Upgrade for Epic Outdoor Water Wars!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28361/affordable-diy-robot-arm-a-deep-dive-into-3d-printing-and-servo-motors----episode-628" data-icid="e14" data-e14adj="t"&gt;Episode 628: Affordable DIY Robot Arm - A Deep Dive into 3D Printing and Servo Motors&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28353/creating-sudostick---from-prototype-to-product----episode-627" data-icid="e14" data-e14adj="t"&gt;Episode 627: Creating sudostick - From Prototype to Product&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28351/catching-you-up-on-bonesnapper-ridge---off-grid-maker-shop----episode-626" data-icid="e14" data-e14adj="t"&gt;Episode 626: Catching you Up on Bonesnapper Ridge - Off-Grid Maker Shop&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28344/interactive-magic-creating-an-enchanted-cauldron----episode-625" data-icid="e14" data-e14adj="t"&gt;Episode 625: Interactive Magic - Creating an Enchanted Cauldron&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28342/episode-624-modding-a-smoke-machine-to-add-motion-detection" data-icid="e14" data-e14adj="t"&gt;Episode 624: Modding A Smoke Machine to Add Motion Detection&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32" data-icid="e14" data-e14adj="t"&gt;Episode 623: How to Run Linux on an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28334/episode-622-building-spooky-fun-halloween-sound-pranks-with-nrf-5340-ble-audio" data-icid="e14" data-e14adj="t"&gt;Episode 622: Building Spooky Fun: Halloween Sound Pranks with nRF 5340 BLE Audio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28330/episode-621-color-sensor-based-water-quality-tracker-diy-environmental-monitoring" data-icid="e14" data-e14adj="t"&gt;Episode 621: Color Sensor-Based Water Quality Tracker: DIY Environmental Monitoring&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28328/episode-620-stey-by-step-guide-to-creating-your-own-speaking-animatronic-hat" data-icid="e14" data-e14adj="t"&gt;Episode 620: Stey-by-Step Guide to Creating your own Speaking Animatronic Hat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28316/episode-619-how-to-build-an-open-source-bluetooth-mechanical-keyboard" data-icid="e14" data-e14adj="t"&gt;Episode 619: How to Build an Open Source Bluetooth Mechanical Keyboard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28308/episode-618-upgrading-my-racing-sim-with-a-force-sensitive-keyboard" data-icid="e14" data-e14adj="t"&gt;Episode 618: Upgrading My Racing Sim with a Force-Sensitive Keyboard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28306/episode-617-simplify-network-monitoring-building-an-esp32-powered-solution" data-icid="e14" data-e14adj="t"&gt;Episode 617: Simplify Network Monitoring: Building an ESP32-Powered Solution&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28300/episode-616-mastering-oven-control-precision-resin-curing-with-diy-modifications---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 616: Mastering Oven Control: Precision Resin Curing with DIY Modifications - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28290/episode-615-building-a-unique-usb-card-reader-from-idea-to-prototype" data-icid="e14" data-e14adj="t"&gt;Episode 615: Building a Unique USB Card Reader: From Idea to Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28278/episode-614-using-pid-proportional-integral-derivative-in-robotics---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 614: Using PID (Proportional-Integral-Derivative) in Robotics - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28274/episode-613-building-a-magic-wand-talking-sound-board" data-icid="e14" data-e14adj="t"&gt;Episode 613: Building a Magic Wand Talking Sound Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28271/episode-612-handheld-basic-computer-in-badge-format-with-the-arduino-uno" data-icid="e14" data-e14adj="t"&gt;Episode 612: Handheld BASIC computer in Badge Format with the Arduino Uno&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28267/episode-611-how-to-run-the-distance-to-the-moon-with-strava-data-and-a-pico-w-board" data-icid="e14" data-e14adj="t"&gt;Episode 611: How to Run the Distance to the Moon with Strava Data and a Pico W Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28214/episode-610-how-to-embroider-with-circuits-and-conductive-thread" data-icid="e14" data-e14adj="t"&gt;Episode 610: How to Embroider with Circuits and Conductive Thread&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28213/episode-609-updating-a-fujitsu-n860-2500-t111-keyboard-to-work-with-a-ps2-standard" data-icid="e14" data-e14adj="t"&gt;Episode 609: Updating a Fujitsu N860-2500-T111 Keyboard to Work with a PS2 Standard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28200/episode-608-making-the-simplest-diy-wind-energy-generator---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 608: Making the Simplest DIY Wind Energy Generator - How Hard Could it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28198/episode-607-from-strava-to-motion-creating-an-arduino-powered-arcade-game-with-running-data" data-icid="e14" data-e14adj="t"&gt;Episode 607: From Strava to Motion: Creating an Arduino-Powered Arcade Game with Running Data&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28184/episode-606-how-to-use-lorawan-to-launch-model-rockets-wirelessly" data-icid="e14" data-e14adj="t"&gt;Episode 606: How to Use LoRaWAN to Launch Model Rockets Wirelessly&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28152/episode-605-arduino-and-leds-make-solitaire-easier-to-solve" data-icid="e14" data-e14adj="t"&gt;Episode 605: Arduino and LEDs Make Solitaire Easier to Solve&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28140/episode-604-charlieplexing-buttons-and-leds-at-the-same-time---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 604: Charlieplexing Buttons and LEDs at the Same Time - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28138/episode-603-create-your-own-air-hockey-table-with-arduino-scoring" data-icid="e14" data-e14adj="t"&gt;Episode 603: Create Your Own Air Hockey Table with Arduino Scoring&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28133/episode-602-diy-ac-dimmer-circuit-control-your-lights-with-a-raspberry-pi-pico" data-icid="e14" data-e14adj="t"&gt;Episode 602: DIY AC Dimmer Circuit: Control Your Lights with a Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28131/episode-601-how-to-reverse-engineer-electronics-building-a-developer-board-for-a-coding-class" data-icid="e14" data-e14adj="t"&gt;Episode 601: How to Reverse Engineer Electronics: Building a Developer Board for a Coding Class&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28126/episode-600-building-my-dream-digital-clock-diy-7-segment-display-with-a-cute-robot-twist" data-icid="e14" data-e14adj="t"&gt;Episode 600: Building My Dream Digital Clock: DIY 7 Segment Display with a Cute Robot Twist!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28117/episode-599-how-to-build-a-spectrum-analyzer-with-lego-bricks-discrete-electronics" data-icid="e14" data-e14adj="t"&gt;Episode 599: How to Build a Spectrum Analyzer with Lego Bricks &amp;amp; Discrete Electronics&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28102/episode-598-how-to-build-a-portable-solar-charged-off-grid-power-station" data-icid="e14" data-e14adj="t"&gt;Episode 598: How To Build a Portable, Solar-Charged Off-Grid Power Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28097/episode-597-how-to-build-a-robot-that-celebrates-good-grades-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 597: How to Build a Robot that Celebrates Good Grades with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28084/episode-596-how-to-build-your-own-voice-assistant-with-mycroft-ai---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 596: How to Build Your Own Voice Assistant with MyCroft AI - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28082/episode-595-member-challenge-accepted---universal-lanc-controller-for-dslr-cameras" data-icid="e14" data-e14adj="t"&gt;Episode 595: Member Challenge Accepted - Universal LANC Controller for DSLR cameras&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28059/episode-594-repairing-a-neewer-660-studio-light---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 594: Repairing a Neewer 660 Studio light - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28057/episode-593-playing-3d-famicom-games-wirelessly-on-the-nes---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 593: Playing 3D Famicom Games Wirelessly on the NES - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28050/episode-592-lamptopus-spinning-led-desk-lamp" data-icid="e14" data-e14adj="t"&gt;Episode 592: Lamptopus: Spinning LED Desk Lamp&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28036/episode-591-building-a-bluetooth-speaker-in-5-minutes---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 591: Building A Bluetooth Speaker in 5 Minutes - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28033/episode-590-seven-kingdoms-open-source-bartop-arcade" data-icid="e14" data-e14adj="t"&gt;Episode 590: Seven Kingdoms Open Source Bartop Arcade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28024/episode-589-upgrading-the-imac-g4-with-a-nuc" data-icid="e14" data-e14adj="t"&gt;Episode 589: Upgrading the iMac G4 With a NUC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28020/episode-588-highlights-from-element14-presents-2022" data-icid="e14" data-e14adj="t"&gt;Episode 588: Highlights from element14 presents 2022&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27982/episode-587-create-your-own-talking-stress-indicator" data-icid="e14" data-e14adj="t"&gt;Episode 587: Create Your Own Talking Stress Indicator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27965/episode-586-diy-open-source-bluetooth-headphones" data-icid="e14" data-e14adj="t"&gt;Episode 586: DIY Open Source Bluetooth Headphones&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27960/episode-585-enhancing-a-magnifying-headband-with-auto-sensing-light" data-icid="e14" data-e14adj="t"&gt;Episode 585: Enhancing a Magnifying Headband with Auto Sensing Light&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27952/episode-584-going-beyond-periodic-wakes-using-wifi-to-revive-a-sleeping-device" data-icid="e14" data-e14adj="t"&gt;Episode 584: Going Beyond Periodic Wakes: Using WiFi to Revive a Sleeping Device&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27934/episode-583-epic-neopixel-birthday-cake" data-icid="e14" data-e14adj="t"&gt;Episode 583: Epic Neopixel Birthday Cake&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27917/episode-582-smart-christmas-decoration-with-raspberry-pi-pico-and-mqtt" data-icid="e14" data-e14adj="t"&gt;Episode 582: Smart Christmas Decoration with Raspberry Pi Pico and MQTT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27900/episode-581-bee-saving-electronics-prototype" data-icid="e14" data-e14adj="t"&gt;Episode 581: Bee-Saving Electronics Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27894/episode-580-diy-low-cost-capacitance-meter-using-a-555-timer" data-icid="e14" data-e14adj="t"&gt;Episode 580: DIY Low Cost Capacitance Meter Using a 555 Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27881/episode-579-how-to-make-a-basketball-auto-score-keeper-using-colour-sensing" data-icid="e14" data-e14adj="t"&gt;Episode 579: How to Make a Basketball Auto Score Keeper Using Colour Sensing&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27879/episode-578-build-your-own-bat-detector-with-analog-parts" data-icid="e14" data-e14adj="t"&gt;Episode 578: Build your Own Bat Detector with Analog Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27862/episode-577-the-game-guy-mini-upgrading-the-unportable-game-boy" data-icid="e14" data-e14adj="t"&gt;Episode 577: The Game Guy Mini, Upgrading the Unportable Game Boy!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27861/episode-576-build-your-own-underwater-drone-with-3d-printed-parts" data-icid="e14" data-e14adj="t"&gt;Episode 576: Build your own Underwater Drone with 3D Printed Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27855/episode-575-how-to-make-a-secured-parcel-pickup-box-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 575: How to Make a Secured Parcel Pickup Box with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27846/episode-574-ghost-rider-halloween-costume" data-icid="e14" data-e14adj="t"&gt;Episode 574: Ghost Rider Halloween Costume&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27836/episode-573-using-a-pi-pico-to-convert-keyboard-input-to-morse-code" data-icid="e14" data-e14adj="t"&gt;Episode 573: Using a Pi Pico to Convert Keyboard Input to Morse Code&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27824/episode-572-how-to-use-an-esp32-camera-to-know-you-ve-got-mail" data-icid="e14" data-e14adj="t"&gt;Episode 572: How to Use an ESP32 &amp;amp; Camera to Know You&amp;#39;ve Got Mail!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27807/episode-571-using-dead-batteries-to-test-for-dead-batteries" data-icid="e14" data-e14adj="t"&gt;Episode 571: Using Dead Batteries to Test for Dead Batteries&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27805/episode-570-making-a-wifi-connected-audio-spectrum-analyzer-with-esp32" data-icid="e14" data-e14adj="t"&gt;Episode 570: Making a WiFi Connected Audio Spectrum Analyzer with ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27803/episode-569-multi-spectrum-uv-resin-curing-station-with-wurth-leds" data-icid="e14" data-e14adj="t"&gt;Episode 569: Multi-Spectrum UV Resin Curing Station with W&amp;uuml;rth LEDs&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27787/episode-568-how-to-make-a-custom-soundboard-with-the-stm32f4-using-freecad" data-icid="e14" data-e14adj="t"&gt;Episode 568: How to Make a Custom Soundboard with the STM32F4 using FreeCAD&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27785/episode-567-synced-neopixel-mickey-mouse-ears" data-icid="e14" data-e14adj="t"&gt;Episode 567: Synced NeoPixel Mickey Mouse Ears&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27760/episode-566-how-to-automate-industrial-welding-positioners-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 566: How to Automate Industrial Welding Positioners with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27758/episode-565-measuring-destructive-testing-force-with-a-20-ton-hydraulic-press" data-icid="e14" data-e14adj="t"&gt;Episode 565: Measuring Destructive Testing Force with a 20 Ton Hydraulic Press&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27734/episode-564-build-a-vu-meter-with-led-pixelated-nixie-tubes" data-icid="e14" data-e14adj="t"&gt;Episode 564: Build a VU Meter with LED Pixelated Nixie Tubes&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27732/episode-563-creating-augmented-reality-circuits-with-meta-quest-2-and-unity" data-icid="e14" data-e14adj="t"&gt;Episode 563: Creating Augmented Reality Circuits with Meta Quest 2 and Unity&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27730/episode-562-pi-home-temperature-monitoring-system" data-icid="e14" data-e14adj="t"&gt;Episode 562: Pi Home Temperature Monitoring System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27728/episode-561-wifi-to-parallel-port-ascii-art-dot-matrix-printer" data-icid="e14" data-e14adj="t"&gt;Episode 561: WiFi to Parallel Port Ascii Art Dot-Matrix Printer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27727/episode-560-raspberry-pi-controlled-lego-train-with-build-hat" data-icid="e14" data-e14adj="t"&gt;Episode 560: Raspberry Pi Controlled Lego Train with Build HAT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27706/episode-559-create-a-magic-makeup-mirror-with-pose-detection" data-icid="e14" data-e14adj="t"&gt;Episode 559: Create a Magic Makeup Mirror with Pose Detection&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27700/episode-558-3d-object-rendering-using-an-fpga" data-icid="e14" data-e14adj="t"&gt;Episode 558: 3D Object Rendering Using an FPGA&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27694/episode-557-create-your-own-handheld-serial-monitor-for-project-debugging" data-icid="e14" data-e14adj="t"&gt;Episode 557: Create your own Handheld Serial Monitor for Project Debugging&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27666/episode-556-hacking-a-hotel-pos-tablet---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 556: Hacking a Hotel POS Tablet - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27664/episode-555-dance-central-pose-estimation-game-with-tensorflow-and-raspberry-pi" data-icid="e14" data-e14adj="t"&gt;Episode 555: Dance Central Pose Estimation Game with Tensorflow and Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27647/episode-554-arduino-uno-mini-limited-edition-led-necklace" data-icid="e14" data-e14adj="t"&gt;Episode 554: Arduino Uno Mini Limited Edition LED Necklace&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27645/episode-553-adding-a-parallel-printer-port-to-an-android-phone" data-icid="e14" data-e14adj="t"&gt;Episode 553: Adding a Parallel Printer Port to an Android Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27616/episode-552---magical-potion-bottle-rack" data-icid="e14" data-e14adj="t"&gt;Episode 552: Magical Potion Bottle Rack&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27614/episode-551-can-we-rebuild-a-1930s-accounting-machine" data-icid="e14" data-e14adj="t"&gt;Episode 551: Can We Rebuild a 1930s Accounting Machine?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27608/episode-550-diy-electronic-controlled-motorized-wheelchair" data-icid="e14" data-e14adj="t"&gt;Episode 550: DIY Electronic Controlled Motorized Wheelchair&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27606/episode-549-using-a-teletype-machine-as-a-usb-printer-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 549: Using a Teletype Machine as a USB Printer with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27597/episode-548-electronic-fidget-cube-building-your-ideas" data-icid="e14" data-e14adj="t"&gt;Episode 548: Electronic Fidget Cube, Building Your Ideas!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27577/episode-547-creating-a-mummy-wake-word-detector-with-raspberry-pi-and-edge-impulse" data-icid="e14" data-e14adj="t"&gt;Episode 547: Creating a &amp;ldquo;Mummy&amp;rdquo; Wake Word Detector with Raspberry Pi and Edge Impulse&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27567/episode-546-mapping-the-outputs-of-a-1960s-teletype-machine---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 546: Mapping the Outputs of a 1960s Teletype Machine - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27576/episode-545-designing-a-custom-pcb-for-microsoft-jacdac" data-icid="e14" data-e14adj="t"&gt;Episode 545: Designing a Custom PCB for Microsoft Jacdac&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27548/episode-544-reviving-the-1984-ibm-5155---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 544: Reviving the 1984 IBM 5155 - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27522/episode-543-lego-spike-prime-weather-station-with-raspberry-pi" data-icid="e14" data-e14adj="t"&gt;Episode 543: Lego Spike Prime Weather Station with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27520/episode-542-a-noise-free-diy-switching-power-supply---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 542: A Noise-Free DIY Switching Power Supply - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27495/episode-541-vintage-laptop-battery-replaced-with-usb-power---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 541: Vintage Laptop Battery Replaced with USB Power - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27493/episode-540-object-detection-for-smart-recycling" data-icid="e14" data-e14adj="t"&gt;Episode 540: Object Detection for Smart Recycling&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27484/episode-539-training-a-machine-to-recognize-objects---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 539: Training a Machine to Recognize Objects - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27483/episode-538-how-to-build-a-quadruped-robot---no-math" data-icid="e14" data-e14adj="t"&gt;Episode 538: How to Build a Quadruped Robot - NO MATH!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27460/episode-537-build-a-phonograph-preamplifier---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 537: Build a Phonograph Preamplifier - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27458/episode-536-interactive-light-up-window-with-pose-detection-using-a-raspberry-pi-and-micro-bit" data-icid="e14" data-e14adj="t"&gt;Episode 536: Interactive Light-Up Window with Pose Detection using a Raspberry Pi and micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27441/episode-535-repair-a-sega-game-gear---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 535: Repair a Sega Game Gear - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27435/episode-534-open-source-inventory-warehousing-system" data-icid="e14" data-e14adj="t"&gt;Episode 534: Open Source Inventory Warehousing System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27432/episode-533-jumbo-diy-led" data-icid="e14" data-e14adj="t"&gt;Episode 533: Jumbo DIY LED&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27412/episode-532-world-s-first-single-chip-apple-ii-boots" data-icid="e14" data-e14adj="t"&gt;Episode 532: World&amp;rsquo;s First Single-Chip Apple II Boots!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27407/episode-531-game-guy---the-unportable-game-boy" data-icid="e14" data-e14adj="t"&gt;Episode 531: Game Guy - The Unportable Game Boy&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27399/episode-530-mqtt-controlled-led-christmas-baubles-with-raspberry-pi-pico" data-icid="e14" data-e14adj="t"&gt;Episode 530: MQTT controlled LED Christmas Baubles with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27392/episode-529-updi-program-for-new-attiny" data-icid="e14" data-e14adj="t"&gt;Episode 529: UPDI Program for new ATTiny&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27383/episode-528-let-s-build-an-electronic-fidget-cube" data-icid="e14" data-e14adj="t"&gt;Episode 528: Let&amp;#39;s Build an Electronic Fidget Cube!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27375/episode-527---interactive-light-up-window-using-a-raspberry-pi-and-micro-bit" data-icid="e14" data-e14adj="t"&gt;Episode 527: Interactive Light Up Window using a Raspberry Pi and micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27366/episode-526-cnc-router-remote-control" data-icid="e14" data-e14adj="t"&gt;Episode 526: CNC Router Remote Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27338/episode-525-demonstrating-magnetic-fields-with-helmholtz-coils-in-a-snow-globe" data-icid="e14" data-e14adj="t"&gt;Episode 525: DIY Helmholtz Snow Globe&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/27287/episode-524-arduino-iot-cloud-weather-station" data-e14adj="t"&gt;Episode 524: Arduino IoT Cloud Weather Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/27276/episode-523-make-your-own-auto-sensing-solder-fume-extractor" data-e14adj="t"&gt;Episode 523: Make your Own Auto-Sensing Solder Fume Extractor&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23245/episode-522-siren-head-halloween-wearable-costume" data-e14adj="t"&gt;Episode 522: Siren Head Halloween Wearable Costume&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23240/episode-521-diy-static-grass-applicator" data-e14adj="t"&gt;Episode 521: DIY Static Grass Applicator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23232/episode-520-adding-android-auto-as-non-permanent-add-on-with-raspberry-pi" data-e14adj="t"&gt;Episode 520: Adding Android Auto as Non-Permanent Add-On with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23225/episode-519-make-your-own-ye-olde-book-nook-diorama-with-arduino" data-e14adj="t"&gt;Episode 519: Make Your Own Ye Olde Book Nook Diorama with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23212/episode-518-guitar-vacuum-tube-distortion-pedal" data-e14adj="t"&gt;Episode 518: Guitar Vacuum Tube Distortion Pedal&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/secret-element14-presents/w/documents/4141/episode-517-emulate-an-eprom---how-hard-could-it-be" data-e14adj="t"&gt;Episode 517: Emulate an EPROM - How Hard Could it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23199/episode-516-modding-a-wireless-doorbell-with-raspberry-pi-and-esp8266" data-e14adj="t"&gt;Episode 516: Modding a Wireless Doorbell with Raspberry Pi and ESP8266&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23190/episode-515-upcycling-a-lenovo-pc-into-a-raspberry-pi-wifi-access-point" data-e14adj="t"&gt;Episode 515: Upcycling a Lenovo PC into a Raspberry Pi WiFi Access Point&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23183/episode-514-making-a-3d-graphics-card-for-the-atari-800-xl" data-e14adj="t"&gt;Episode 514: Making a 3D Graphics Card for the Atari 800 XL&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5429/episode-513-bike-speedometer-with-arduino-and-gps" data-e14adj="t"&gt;Episode 513: Bike Speedometer with Arduino and GPS&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5422/episode-512-you-cannot-buy-this-vacuum-tube-tester-you-build-it" data-e14adj="t"&gt;Episode 512: You Cannot Buy This Vacuum Tube Tester. You Build It!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5418/episode-511-face-tracking-cheeseball-launcher" data-e14adj="t"&gt;Episode 511:&amp;nbsp; Raspberry Pi Powered Cheeseball Launcher&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5407/episode-510-laser-cutter-command-station" data-e14adj="t"&gt;Episode 510: Laser Cutter Command Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5402/episode-509-diy-discrete-logic-led-countdown-timer" data-e14adj="t"&gt;Episode 509: DIY Discrete Logic LED Countdown Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5397/episode-508-raspberry-pi-fpv-rover-easy-robot-arm-upgrade" data-e14adj="t"&gt;Episode 508: Raspberry Pi FPV Rover Easy Robot Arm Upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5391/episode-507-massive-raspberry-pi" data-e14adj="t"&gt;Episode 507: Massive Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5377/episode-506-diy-star-trek-tricorder-from-build-inside-the-box" data-e14adj="t"&gt;Episode 506: DIY Star Trek Tricorder from Build Inside the Box&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5374/episode-505-super-8-camera-digitizer" data-e14adj="t"&gt;Episode 505: Super 8 Camera Digitizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5369/episode-504-diy-sump-pump-alarm" data-e14adj="t"&gt;Episode 504: DIY Sump Pump Alarm&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5360/episode-503-meet-cheesoid---the-robot-that-smells" data-e14adj="t"&gt;Episode 503: Meet Cheesoid - The Robot That Smells!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5352/episode-502-make-your-bike-a-pokebike" data-e14adj="t"&gt;Episode 502: Make Your Bike a Pokebike!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5033/episode-501-raspberry-pi-nfc-button-free-music-player" data-e14adj="t"&gt;Episode 501: Raspberry Pi NFC Button-Free Music Player&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/20721/episode-500-build-inside-the-box-challenge" data-e14adj="t"&gt;Episode 500:&amp;nbsp; Build Inside The Box Challenge!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5332/episode-499-diy-four-channel-arduino-servo-tester" data-e14adj="t"&gt;Episode 499: DIY Four Channel Arduino Servo Tester&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8706/episode-498-raspberry-pi-smart-water-dispenser" data-e14adj="t"&gt;Episode 498: Raspberry Pi Smart Water Dispenser&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5318/episode-497-raspberry-pi-rfid-pocket-money-keeper" data-e14adj="t"&gt;Episode 497: RFID Pocket Money Keeper&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8705/episode-496-compute-module-4-powered-3d-printer-board" data-e14adj="t"&gt;Episode 496: Compute Module 4 Powered 3D Printer Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5308/episode-495-magic-gif-ball-powered-by-raspberry-pi" data-e14adj="t"&gt;Episode 495: Magic GIF Ball Powered By Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5299/episode-494-keyboard-shortcuts-keypad-with-raspberry-pi-pico" data-e14adj="t"&gt;Episode 494: Keyboard Shortcuts Keypad with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5290/episode-493-neopixel-7-segment-display-clock-update" data-e14adj="t"&gt;Episode 493: NeoPixel 7 Segment Display Clock Update&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5275/episode-492-arduino-vs-555-timer---tiny-slot-car-racers" data-e14adj="t"&gt;Episode 492: Arduino vs 555 Timer - Tiny Slot Car Racers&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5273/episode-491-arduino-single-wheel-balancing-robot" data-e14adj="t"&gt;Episode 491: Arduino Single-Wheel Balancing Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5256/episode-490-diy-raspberry-pi-pico-fizz-buzz-multiplication-game" data-e14adj="t"&gt;Episode 490: DIY Raspberry Pi Pico Fizz Buzz Multiplication Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5254/episode-489-build-an-fpv-rover-with-raspberry-pi" data-e14adj="t"&gt;Episode 489: Build An FPV Rover with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5233/episode-488-diy-raspberry-pi-cyberdeck" data-e14adj="t"&gt;Episode 488: DIY Raspberry Pi Cyberdeck&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5232/episode-487-diy-magsafe-battery-charger" data-e14adj="t"&gt;Episode 487: DIY MagSafe Battery Charger&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5229/episode-486-make-the-ultimate-phone-charging-camping-flashlight" data-e14adj="t"&gt;Episode 486: Make The Ultimate Phone Charging Camping Flashlight&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5213/episode-485-how-to-make-a-custom-pcb-from-design-to-assembly" data-e14adj="t"&gt;Episode 485: How To Make A Custom PCB From Design To Assembly&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5211/episode-484-raspberry-pi-bird-watching-camera" data-e14adj="t"&gt;Episode 484: Raspberry Pi Bird Watching Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5201/episode-483-diy-miniature-multimeter" data-e14adj="t"&gt;Episode 483: DIY Miniature Multimeter&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5196/episode-482-gigantic-3d-printed-7-segment-display-clock" data-e14adj="t"&gt;Episode 482: Gigantic 3D Printed 7 Segment Display Clock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5188/episode-481-diy-lost-swan-station-split-flap-display-timer" data-e14adj="t"&gt;Episode 481: DIY LOST Swan Station Split Flap Display Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5181/episode-480-diy-toothbrush-timer" data-e14adj="t"&gt;Episode 480: DIY Toothbrush Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5179/episode-479-raspberry-pi-2xl-robot-assistant-part-2" data-e14adj="t"&gt;Episode 479: Raspberry Pi 2XL Robot Assistant Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5171/episode-478-upgrading-a-christmas-train-with-python-and-raspberry-pi" data-e14adj="t"&gt;Episode 478: Upgrading A Christmas Train&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5169/episode-477-metal-plate-your-3d-prints-with-a-diy-galvanizing-machine" data-e14adj="t"&gt;Episode 477: Metal Plate Your 3D Prints with a DIY Galvanizing Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5160/episode-476-iot-arduino-ntp-world-clock-with-spi-display" data-e14adj="t"&gt;Episode 476: IoT Arduino NTP World Clock with SPI Display&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5147/episode-475-diy-wall-mounted-arduino-barometer" data-e14adj="t"&gt;Episode 475: DIY Wall Mounted Arduino Barometer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5144/episode-474-continuum-robot-tentacle-prototype" data-e14adj="t"&gt;Episode 474: Continuum Robot Tentacle Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8680/episode-473-mendel-3d-printer-upgrade-and-maintenance" data-e14adj="t"&gt;Episode 473: Mendel 3D Printer Upgrade and Maintenance&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5120/episode-472-diy-hydration-reminder-system" data-e14adj="t"&gt;Episode 472: DIY Hydration Reminder System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5113/episode-471-diy-dance-dance-revolution-mat" data-e14adj="t"&gt;Episode 471: DIY Dance Dance Revolution Mat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5102/episode-470-voice-activated-inspector-gadget-hat" data-e14adj="t"&gt;Episode 470: Voice Activated Inspector Gadget Hat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5063/episode-469-nintendo-super-scope-modded-for-modern-televisions" data-e14adj="t"&gt;Episode 469: Nintendo Super Scope Modded For Modern Televisions&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5092/episode-468-socially-distanced-halloween-candy-dispenser" data-e14adj="t"&gt;Episode 468: Socially Distanced Halloween Candy Dispenser&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5077/episode-467-repairing-the-world-s-first-laptop-epson-hx-20" data-e14adj="t"&gt;Episode 467: Repairing the World&amp;#39;s First Laptop! (Epson HX-20)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5061/episode-466-arduino-powered-hexadecimal-color-code-clock" data-e14adj="t"&gt;Episode 466: Arduino-powered Hexadecimal Color Code Clock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5034/episode-465-lego-raspberry-pi-hq-camera" data-e14adj="t"&gt;Episode 465: Lego Raspberry Pi HQ Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5031/episode-464-particle-voice-recognition-for-home-appliances" data-e14adj="t"&gt;Episode 464: Particle Voice Recognition for Home Appliances&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5002/episode-463-raspberry-pi-speech-to-text-led-face-mask" data-e14adj="t"&gt;Episode 463: Raspberry Pi Speech to Text LED Face Mask&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5012/episode-462-joycon-controlled-electronic-rock-em-sock-em-robots" data-e14adj="t"&gt;Episode 462: Joycon Controlled Electronic Rock&amp;#39;Em Sock&amp;#39;Em Robots&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4980/episode-461-portal-2-security-camera-with-raspberry-pi-2" data-e14adj="t"&gt;Episode 461: Portal 2 Security Camera with Raspberry Pi 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4985/episode-460-trinamic-open-source-ventilator-tosv-teardown" data-e14adj="t"&gt;Episode 460: Trinamic Open Source Ventilator (TOSV) Teardown&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4961/episode-459-raspberry-pi-4-vr-conference-call-assistant" data-e14adj="t"&gt;Episode 459: Raspberry Pi 4 VR Conference Call Assistant&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4971/episode-458-diy-arduino-automated-metal-bending-machine" data-e14adj="t"&gt;Episode 458: DIY Arduino Automated Metal Bending Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4966/episode-457-arduino-mkr-zero-animatronic-rosie-the-robot-from-the-jetsons" data-e14adj="t"&gt;Episode 457: Raspberry Pi 4 Animatronic Rosie the Robot from the Jetsons&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8665/episode-456-unhackable-arduino-switch-matrix" data-e14adj="t"&gt;Episode 456: Unhackable Arduino Switch Matrix&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8664/episode-455-arduino-unit-conversion-calculator" data-e14adj="t"&gt;Episode 455: Arduino Unit Conversion Calculator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4942/episode-454-soldering-up-the-rc2014-homebrew-z80-computer-kit" data-e14adj="t"&gt;Episode 454: Soldering Up the rc2014 Homebrew Z80 Computer Kit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4937/episode-453-build-an-anti-troll-bot-using-tensorflow-and-arduino" data-e14adj="t"&gt;Episode 453: Build an Anti-Troll Bot Using TensorFlow and Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4914/episode-452-raspberry-pi-4-experimental-resin-3d-printer-updated" data-e14adj="t"&gt;Episode 452: Raspberry Pi 4 Experimental Resin 3D Printer Updated!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4913/episode-451-build-an-off-grid-wikipedia-with-raspberry-pi" data-e14adj="t"&gt;Episode 451: Build an Off Grid Wikipedia with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4906/episode-450-sega-gamegear-rebuild-with-leds" data-e14adj="t"&gt;Episode 450: Sega GameGear Rebuild with LEDs&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8657/episode-449-diy-tamagotchi---build-a-virtual-pet" data-e14adj="t"&gt;Episode 449: DIY Tamagotchi - Build a Virtual Pet&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4895/episode-448-diy-raspberry-pi-4-boxing-game" data-e14adj="t"&gt;Episode 448: DIY Raspberry Pi 4 Boxing Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4873/episode-447-diy-stop-motion-rig-with-lattepanda" data-e14adj="t"&gt;Episode 447: DIY Stop Motion Rig with LattePanda&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4871/episode-446-raspberry-pi-2xl-robot-assistant-part-1" data-e14adj="t"&gt;Episode 446: Raspberry Pi 2XL Robot Assistant Part 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8652/episode-445-raspberry-pi-4-animatronic-bd-1-companion-robot" data-e14adj="t"&gt;Episode 445: Raspberry Pi 4 Animatronic BD-1 Companion Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4848/episode-444-raspberry-pi-4-dvr" data-e14adj="t"&gt;Episode 444: Raspberry Pi 4 DVR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4836/episode-443-arduino-uno-rc-remote---can-it-be-done" data-e14adj="t"&gt;Episode 443: Arduino Uno RC Remote - Can It Be Done?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4834/episode-442-make-your-own-giant-servo" data-e14adj="t"&gt;Episode 442: Make Your Own Giant Servo&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4818/episode-441-raspberry-pi-4-international-space-station-tracker" data-e14adj="t"&gt;Episode 441: Raspberry Pi 4 International Space Station Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4810/episode-440-diy-arduino-helicopter-collective-joystick-control" data-e14adj="t"&gt;Episode 440: DIY Arduino Helicopter Collective Joystick Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4796/episode-439---mechanical-arcade-game-with-barebones-arduino" data-e14adj="t"&gt;Episode 439 - Mechanical Arcade Game with Barebones Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4787/episode-438-smartphone-controlled-diy-rover-using-websockets" data-e14adj="t"&gt;Episode 438: Smartphone Controlled DIY Rover Using Websockets&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4771/episode-437-diy-motorized-zoom-for-your-dslr" data-e14adj="t"&gt;Episode 437: DIY Motorized Zoom for Your DSLR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4767/episode-436-automated-raspberry-pi-planet-tracking-goto-telescope" data-e14adj="t"&gt;Episode 436: Automated Raspberry Pi Planet Tracking GOTO Telescope&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4756/episode-435-raspberry-pi-4-music-player-w-analog-controls" data-e14adj="t"&gt;Episode 435: Raspberry Pi 4 Music Player w/Analog Controls&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8637/episode-434-infineon-smart-city-model" data-e14adj="t"&gt;Episode 434: Infineon Smart City Model&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4742/episode-433---arduino-based-love-tester" data-e14adj="t"&gt;Episode 433: Arduino Based Love Tester&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4728/episode-432-super-fx-sword-using-the-bbc-micro-bit" data-e14adj="t"&gt;Episode 432: Super FX Sword using the BBC micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4726/episode-431-room-sized-studio-light-speakers-combo" data-e14adj="t"&gt;Episode 431: Room-Sized Studio Light Speakers Combo&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4692/episode-430-flaming-xylophone-rubens-tube" data-e14adj="t"&gt;Episode 430: Flaming Xylophone Rubens&amp;#39; Tube&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4670/episode-429-youtuber-on-air-light-with-particle-mesh-network" data-e14adj="t"&gt;Episode 429: YouTuber &amp;quot;On Air&amp;quot; Light with Particle Mesh Network&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4668/episode-428-raspberry-pi-4-crt-based-vr-headset" data-e14adj="t"&gt;Episode 428: Raspberry Pi 4 CRT-based VR Headset&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4657/episode-427-diy-retro-gaming-portable-on-a-budget" data-e14adj="t"&gt; Episode 427: DIY Retro Gaming Portable on a Budget!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4142/episode-426-retro-tv-ads-holiday-ornament" data-e14adj="t"&gt; Episode 426: Retro TV Ads Holiday Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4651/episode-425-make-your-own-raspberry-pi-4-photobooth" data-e14adj="t"&gt; Episode 425: Make Your Own Raspberry Pi 4 Photobooth!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4646/episode-424-diy-escape-room-puzzle" data-e14adj="t"&gt; Episode 424: DIY Escape Room Puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4644/episode-423-programmable-arduino-synthesizer-watch" data-e14adj="t"&gt; Episode 423: Programmable Arduino Synthesizer Watch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4628/episode-422-raspberry-pi-e-ink-task-organizer" data-e14adj="t"&gt; Episode 422: Raspberry Pi E-Ink Task Organizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4627/episode-421-raspberry-pi-4-commodore-sx-64-inspired-portable-computer" data-e14adj="t"&gt; Episode 421: Raspberry Pi 4 Commodore SX-64 Inspired Portable Computer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4616/episode-420-diy-shapeoko-cnc-pendant" data-e14adj="t"&gt; Episode 420: DIY Shapeoko CNC Pendant&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4607/episode-419-altair-8800-laptop" data-e14adj="t"&gt; Episode 419: Altair 8800 Laptop &lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4604/episode-418-animatronic-terminator-skull-with-beaglebone-ai-and-giveaway" data-e14adj="t"&gt;&amp;nbsp;Episode 418: Animatronic Terminator Skull with BeagleBone&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/00ae.svg" title="Registered"&gt;&amp;#x00ae;&lt;/span&gt;&amp;nbsp;AI&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8619/episode-417-pipboy-2000-mk-ii" data-e14adj="t"&gt;Episode 417: #Pipboy 2000 Mk II&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4596/episode-416---diy-3dprinted-label-spooler" data-e14adj="t"&gt;Episode 416: DIY #3DPrinted Label Spooler&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4588/episode-415-iron-man-helmet-heads-up-display" data-e14adj="t"&gt;Episode 415: Iron Man Helmet Heads Up Display&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4580/episode-414-raspberry-pi-4-experimental-resin-3d-printer" data-e14adj="t"&gt;Episode 414: Raspberry Pi 4 Experimental Resin 3D Printer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8610/episode-413-animatronic-claptrap-case-mod-part-2" data-e14adj="t"&gt;Episode 413: Animatronic Claptrap Case Mod Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4558/episode-412-get-to-know-your-adc-with-a-diy-temperature-probe" data-e14adj="t"&gt;Episode 412: Get to Know Your ADC with a DIY Temperature Probe&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4531/episode-411-animatronic-claptrap-computer-case---part-1" data-e14adj="t"&gt;Episode 411: Animatronic Claptrap Computer Case - Part 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4537/episode-410-macpro-g5-cheese-grater-with-raspberry-pi-4" data-e14adj="t"&gt;Episode 410: MacPro G5 Cheese Grater with Raspberry Pi 4&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4522/episode-409-commodore-sx-64-restoration" data-e14adj="t"&gt;Episode 409: Commodore SX-64 Restoration&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4516/episode-408-hand-soldered-led-oscilloscope" data-e14adj="t"&gt;Episode 408: Hand Soldered LED Oscilloscope&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4514/episode-407-the-ultimate-raspberry-pi-4-laptop" data-e14adj="t"&gt;Episode 407: The Ultimate Raspberry Pi 4 Laptop&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4507/episode-406-automated-robot-artist" data-e14adj="t"&gt;Episode 406: Automated Robot Artist&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4493/episode-405-rc-ornithopter-concept" data-e14adj="t"&gt;Episode 405: RC Ornithopter Concept&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4488/episode-404-arduino-powered-close-encounters-midi-light-board" data-e14adj="t"&gt;Episode 404: Arduino Powered Close Encounters Midi Light Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4459/episode-403-upcycled-iot-coffee-pot-ramen-maker" data-e14adj="t"&gt;Episode 403: Upcycled IoT Coffee Pot Ramen Maker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4422/episode-402-piphone-the-giant-raspberry-pi-flip-phone" data-e14adj="t"&gt;Episode 402: PiPhone++ The Giant Raspberry Pi Flip Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4128/episode-401-matrix-voice-controlled-robot" data-e14adj="t"&gt;Episode 401: Matrix Voice Controlled Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4127/episode-400-the-ultimate-raspberry-pi-stress-test" data-e14adj="t"&gt;Episode 400: The Ultimate Raspberry Pi Stress Test&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4129/episode-399-candle-powered-robot" data-e14adj="t"&gt;Episode 399: Candle-Powered Robotl&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4044/episode-398-let-me-out-hooman-bluetooth-dog-doorbell" data-e14adj="t"&gt;Episode 398: Let Me Out Hooman! Bluetooth Dog Doorbell&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4126/episode-397-steam-powered-retropie-console" data-e14adj="t"&gt;Episode 397: Steam Powered Retropie Console&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4043/episode-396-arduino-retro-led-matrix-handheld" data-e14adj="t"&gt;Episode 396: Arduino Retro LED Matrix Handheld&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4042/episode-395-raspberry-pi-stop-motion-machine" data-e14adj="t"&gt;Episode 395: Raspberry Pi Stop Motion Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8531/episode-394-animatronic-glados-head-with-raspberry-pi" data-e14adj="t"&gt;Episode 394: Animatronic GLaDOS Head with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4125/episode-393-gameboy-walkman" data-e14adj="t"&gt;Episode 393: GameBoy Walkman&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4191/episode-392-multi-line-telephone-intercom" data-e14adj="t"&gt;Episode 392: Multi-Line Telephone Intercom&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4124/episode-391-first-person-view-rc-car-with-ps1-steering-wheel" data-e14adj="t"&gt;Episode 391: First Person View RC Car with PS2 Steering Wheel&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4122/episode-390-retro-texting-smart-watch-of-the-future" data-e14adj="t"&gt;Episode 390: Retro Texting Smart Watch of the Future!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4120/episode-389-playstation-classic-portable-prototype" data-e14adj="t"&gt;Episode 389: PlayStation Classic Portable Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8519/episode-388-fpga-midi-music-synthesizer" data-e14adj="t"&gt;Episode 388: FPGA MIDI Music Synthesizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4057/episode-387-rotocell---the-rotary-cell-phone-of-the-future" data-e14adj="t"&gt;Episode 387: Rotocell - The Rotary Cell Phone of the Future!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4038/episode-386-xybernaut-wearable-pc" data-e14adj="t"&gt;Episode 386: Xybernaut Wearable PC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4117/episode-385-20-pcb-design-pitfalls" data-e14adj="t"&gt;Episode 385: 20 PCB Design Pitfalls&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4035/episode-384-retro-gaming-handheld-without-a-pcb" data-e14adj="t"&gt;Episode 384: Retro Gaming Handheld Without a PCB&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4058/episode-383-gameboy-wireless-link-cable-dmg1" data-e14adj="t"&gt;Episode 383: Gameboy Wireless Link Cable (DMG1)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8501/episode-382-modding-a-super-8-camera-into-a-digital" data-e14adj="t"&gt;Episode 382: Modding a Super 8 Camera into a Digital&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4067/episode-381-reverse-music-box" data-e14adj="t"&gt;Episode 381: Reverse Music Box&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4039/episode-380-nes-zapper-on-retropie" data-e14adj="t"&gt;Episode 380: NES Zapper on RetroPie&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4036/episode-379-macroscope-soldering-tool" data-e14adj="t"&gt;Episode 379: Macroscope Soldering Tool&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8500/episode-378-invader-zim-animatronic-gir" data-e14adj="t"&gt;Episode 378: Invader ZIM Animatronic GIR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4034/episode-377-altair-8800-replica" data-e14adj="t"&gt;Episode 377: Altair 8800 Replica&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4028/episode-376-4d-gaming-with-the-matrix-creator" data-e14adj="t"&gt;Episode 376: 4D Gaming with the Matrix Creator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4025/episode-375-hacked-fetal-detector-music-synthesizer" data-e14adj="t"&gt;Episode 375: Hacked Fetal Detector Music Synthesizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4008/episode-374-raspberry-pi-donkey-kong-holiday-ornament" data-e14adj="t"&gt;Episode 374: Raspberry Pi Donkey Kong Holiday Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3992/episode-373-raspberry-pi-fallout-terminal-pc" data-e14adj="t"&gt;Episode 373: Raspberry Pi Fallout Terminal PC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8497/episode-372-raspberry-pi-auto-etch-a-sketch" data-e14adj="t"&gt;Episode 372: Raspberry Pi Auto Etch A Sketch&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3990/episode-371-fpga-game-genie-for-atari-2600" data-e14adj="t"&gt;Episode 371: FPGA &amp;quot;Game Genie&amp;quot; for Atari 2600&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3989/episode-370-raspberry-pi-noaa-satellite-receiver" data-e14adj="t"&gt;Episode 370: Raspberry Pi NOAA Satellite Receiver&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3979/episode-369-recreating-the-atari-portfolio" data-e14adj="t"&gt;Episode 369: Recreating the Atari Portfolio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3977/episode-368-arduino-automatic-wire-cutter-and-stripper" data-e14adj="t"&gt;Episode 368: Arduino Automatic Wire Cutter and Stripper&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3968/episode-367-most-useless-iot-device-ever---part-2" data-e14adj="t"&gt;Episode 367: Most Useless IoT Device Ever - Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3960/episode-366-infinity-icosahedron" data-e14adj="t"&gt;Episode 366: Infinity Icosahedron&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3949/episode-365-twilight-zone-fortune-telling-machine" data-e14adj="t"&gt;Episode 365: Twilight Zone Fortune Telling Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3934/episode-364-raspberry-pi-virtual-reality-arcade" data-e14adj="t"&gt;Episode 364: Raspberry Pi Virtual Reality Arcade #VR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3920/episode-363-add-a-motor-to-your-bike-with-arduino" data-e14adj="t"&gt;Episode 363 - Add a Motor to your Bike with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3912/episode-362-most-worthless-iot-device-ever---part-1" data-e14adj="t"&gt;Episode 362: Most Worthless IoT Device Ever Pt. 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3903/episode-361-r-o-b-rebuild-and-upgrade" data-e14adj="t"&gt;Episode 361: R.O.B Rebuild and Upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3887/episode-360-make-your-own-raspberry-pi-cell-phone" data-e14adj="t"&gt;Episode 360: Make Your Own Raspberry Pi Cell Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3875/episode-359-make-your-own-cnc-pyrography-wood-burner" data-e14adj="t"&gt;Episode 359: Make Your Own CNC Pyrography Wood Burner&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3863/episode-358-the-shrimp-of-terror" data-e14adj="t"&gt;Episode 358: The Shrimp of Terror!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3848/episode-357-raspberry-pi-asteroid-tracker" data-e14adj="t"&gt;Episode 357: Raspberry Pi Asteroid Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8491/episode-356-bank-to-the-future-with-arduino-ti" data-e14adj="t"&gt;Episode 356: Bank to the Future with Arduino &amp;amp; TI&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3826/episode-355-raspberry-pi-pirate-radio" data-e14adj="t"&gt;Episode 355: Raspberry Pi Pirate Radio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3816/episode-354-tiny-vacuum-forming-machine" data-e14adj="t"&gt;Episode 354: Tiny Vacuum Forming Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3809/episode-353-program-your-own-fpga-video-game" data-e14adj="t"&gt;Episode 353: Program Your Own FPGA Video Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3784/episode-352-pripyat---diy-geiger-counter" data-e14adj="t"&gt;Episode 352: Pripyat - DIY Geiger Counter&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3747/episode-349-raspberry-pi-selfie-rocket" data-e14adj="t"&gt;Episode 349: Raspberry Pi Selfie Rocket&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/9678/the-ben-heck-show-episode-archive" data-e14adj="t"&gt;See All Previous Episodes&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: episode releases, friday_release_archive, element14 presents, project videos, episodes, friday releases, episode release archive, episode archive, friday release archive, project_videos&lt;/div&gt;
</description></item><item><title>Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72067/designing-a-mobile-robot-platform-with-inverse-kinematics-and-wireless-control</link><pubDate>Wed, 27 May 2026 16:09:55 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6e2682a7-8e1c-4db3-ad28-039762ae48c3</guid><dc:creator>e14sbhargav</dc:creator><description>Current Revision posted to Documents by e14sbhargav on 5/27/2026 4:09:55 PM&lt;br /&gt;
&lt;p&gt;&lt;span&gt;Milos takes his servo driven robot arm off the bench and turns it into a four wheel drive mobile platform built around the NXP FRDM RW612. The project combines an aluminium extrusion chassis, DC geared motors with L298N drivers, PCA9685 servo control, and wireless joystick input to tackle real challenges like torque, calibration, surface traction, and jitter. On the software side, he moves beyond joint by joint control into inverse kinematics and Cartesian motion, using simulation to validate behaviour before driving real hardware. The result is a modular robotics platform designed for learning, iteration, and future upgrades.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1r50d4"&gt;&lt;span&gt;Watch the Robot&amp;nbsp;Arm on Wheels&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/hSKMcJEPSlE"&gt;https://youtu.be/hSKMcJEPSlE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This project marks a natural but ambitious evolution of Milos&amp;rsquo;s earlier work on a desktop robotic arm. What began as an exploration of servo-driven motion, joint recording, and basic trajectory playback has now been transformed into a fully mobile robotic platform that combines mechanics, electronics, and software into a cohesive system.&lt;/p&gt;
&lt;p&gt;Rather than treating the robot arm and the base as separate challenges, Milos approached this build as a single platform problem: how to create a robot that can move through space, manipulate objects with intent, and serve as a foundation for far more advanced autonomy in the future.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/1641.Picture1.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/8507.Picture3.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1aq0"&gt;Idea and Plan&lt;/h2&gt;
&lt;p&gt;The starting point for this build was a clear limitation of the previous project. While the arm could replay learned movements, it was fixed in place and constrained to joint-by-joint control. As Milos puts it, the earlier version worked, &amp;ldquo;but in the end it&amp;rsquo;s just a robot arm.&amp;rdquo; The next logical step was mobility.&lt;/p&gt;
&lt;p&gt;The core idea was to mount the arm onto a four-wheel-drive base and design everything around modularity. The arm would sit on top of a rigid chassis, with space below reserved for motors, power, and electronics. Two locomotion strategies were planned from the outset: a first version using skid-steer (tank-style) drive, and a second version that would later replace the wheels with mecanum wheels for true omnidirectional movement.&lt;/p&gt;
&lt;p&gt;Crucially, Milos also decided that control needed to move beyond jogging joints or replaying recorded angles. Inverse kinematics would become central to the project, allowing the arm to be commanded in Cartesian space rather than micromanaged servo by servo.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/4377.Picture4.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar1"&gt;Electronics and Heart of the Project&lt;/h2&gt;
&lt;p&gt;At the heart of the electronics is an NXP FRDM-RW612 development board. The choice was deliberate: the board offers ample GPIO, built-in Wi-Fi, and enough processing power that Milos notes he is &amp;ldquo;only scratching the surface with what this can do.&amp;rdquo; For this stage of development, Wi-Fi connectivity and I&amp;sup2;C were the primary features in use.&lt;/p&gt;
&lt;p&gt;Wireless control is handled via a Bluetooth gamepad connected to a laptop. Commands are sent over UDP to the robot, leveraging the board&amp;rsquo;s Wi-Fi to avoid additional communication modules. As Milos explains, &amp;ldquo;I want to send commands over UDP, so over the internet to the board&amp;hellip; since the board already has built-in Wi-Fi, we&amp;rsquo;re going to utilize that.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Motor and servo control is centralized through a PCA9685 PWM driver. This single module generates PWM signals for both the five servo motors in the arm and the brushed DC motors driving the wheels. Two L298N motor driver modules handle the four geared DC motors, giving the robot full four-wheel drive and, as testing later shows, a surprising amount of torque.&lt;/p&gt;
&lt;p&gt;One subtle but important design decision involved PWM frequency. Servo motors and DC motor drivers prefer different operating ranges, but Milos settled on a compromise of around 300 Hz, noting that &amp;ldquo;at around 300 hertz everything will be happy, both the motor drivers and all of the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Power is supplied by a 12 V drill battery mounted at the rear of the robot. A robust DC-DC buck converter steps this down to 5 V for the servos and logic, while the drive motors receive the full battery voltage. An emergency stop switch doubles as a main power switch, an essential safety feature given the platform&amp;rsquo;s weight and torque.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/0167.Picture5.jpg" /&gt;&lt;img loading="lazy" alt="image" style="max-height:287px;max-width:383px;"  height="287" src="/resized-image/__size/766x574/__key/communityserver-wikis-components-files/00-00-00-03-81/5857.Picture7.jpg" width="383" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar2"&gt;Core Mechanics&lt;/h2&gt;
&lt;p&gt;If there is one area where this project demanded the most effort, it was the mechanical design. Milos is candid about this, describing the mechanical side as &amp;ldquo;actually kind of complicated and a lot of work.&amp;rdquo; The challenge was to balance strength, accessibility, and flexibility.&lt;/p&gt;
&lt;p&gt;The main chassis is constructed from standard 20&amp;times;20 and 40&amp;times;20 T-slot aluminum extrusions. These are fastened with machine screws to form a stiff, rectangular frame that resists twisting while remaining easy to modify. This choice was intentional: aluminum extrusions are widely available, easy to cut, and ideal for iterative projects.&lt;/p&gt;
&lt;p&gt;Secondary structures, mounts, and brackets are 3D printed. PLA was used for this version, with the understanding that higher-performance materials such as PC or PA may replace it later, particularly for gears. This hybrid approach keeps the build approachable while still allowing custom geometry where needed.&lt;/p&gt;
&lt;p&gt;To protect the motors from excessive radial loads, each wheel is mounted on its own axle made from an M8 bolt, supported by dual bearings. This design ensures that the bearings, rather than the motor shafts, absorb the mechanical stress. It also makes maintenance easier, since bearings are inexpensive and simple to replace.&lt;/p&gt;
&lt;p&gt;The finished platform weighs around 7 kg, giving it a low center of gravity but also making power and traction critical considerations. Ground clearance is modest, and while the robot performs well on smooth surfaces, Milos observes that &amp;ldquo;it doesn&amp;rsquo;t like surfaces like the carpet because they are extremely grippy,&amp;rdquo; leading to wheel scrub and vibration.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/Picture11.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar3"&gt;Control and Software&lt;/h2&gt;
&lt;p&gt;On the software side, the project is split cleanly between the robot and the control computer. The microcontroller firmware focuses on receiving UDP packets, parsing a compact binary payload, and translating those values into PWM outputs. As Milos summarizes, &amp;ldquo;what the code for the MCU actually does is it just gets the data over UDP&amp;hellip; and sends the PWM values through the PCA module to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The more complex logic lives on the computer side, written in Python. Two main scripts handle this. One is responsible for reading the gamepad and managing UDP communication. The other implements the control logic that converts joystick inputs into meaningful robot commands.&lt;/p&gt;
&lt;p&gt;For driving, the robot uses a differential (tank) drive model. The left joystick maps directly to forward motion and turning, with the software mixing these inputs into left and right motor commands. This makes the platform intuitive to drive while remaining simple to implement.&lt;/p&gt;
&lt;p&gt;The arm control is where the project becomes significantly more advanced. Instead of commanding individual joints, the software implements both direct and inverse kinematics. Milos explains the motivation clearly: &amp;ldquo;If we want the robot arm to reach this point&amp;hellip; how do we actually even know where the end effector is located? That&amp;rsquo;s called kinematics in robotics.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Direct kinematics calculates the position of the tool center point (TCP) from known joint angles and link lengths. Inverse kinematics does the opposite, solving for joint angles that will place the TCP at a desired coordinate. Even for a simple planar arm, Milos demonstrates that inverse kinematics quickly becomes mathematically heavy, with multiple valid solutions such as elbow-up and elbow-down configurations.&lt;/p&gt;
&lt;p&gt;Rather than reinventing the wheel, the software uses established solving techniques and provides flexibility in how solutions are chosen. Link lengths, joint limits, and servo pulse ranges are explicitly defined in code, ensuring that the mathematical model matches the physical hardware. Calibration data is stored in a JSON file, allowing the arm to be zeroed accurately after assembly. As Milos emphasizes, improper calibration &amp;ldquo;will just add up and there is just a function to actually calibrate the arm so you tell it where the actual zero position is.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To make development safer and more intuitive, a visualization script simulates the arm&amp;rsquo;s motion in real time. This allows kinematic behavior to be inspected before applying commands to the real hardware, and it highlights issues such as jitter and singularities that will eventually need path planning to resolve.&lt;/p&gt;
&lt;p&gt;The control system for the MR21 platform was designed around a clear separation of responsibilities. Low-level, time‑critical tasks run on the robot itself, while higher‑level interpretation, kinematic logic, and user interaction are handled externally. This keeps the embedded side predictable and responsive, while allowing the control logic to evolve rapidly without being constrained by microcontroller resources.&lt;/p&gt;
&lt;p&gt;At the center of the system is a wireless control link. Commands are sent to the robot over Wi‑Fi using UDP, carrying both drive and arm control data in a single, fixed‑size packet. On the robot, the microcontroller&amp;rsquo;s role is intentionally narrow: receive the packet, extract values, and generate PWM outputs via the PCA9685 for the servo motors and motor drivers. As Milos describes it, the board &amp;ldquo;just gets the data over UDP and sends the PWM values to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The packet itself is compact and structured to be easy to parse deterministically. It contains drive motor commands alongside pulse values for the arm servos, allowing the mobile base and arm to be controlled at the same time without additional synchronization logic:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
# uint32 message ID
# int16 left drive motor
# int16 right drive motor
# uint16 servo_1 .. servo_6
# Total payload size: 20 bytes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach avoids the overhead of text-based protocols and ensures consistent timing, which becomes especially important once the arm is moving while the platform is driving.&lt;/p&gt;
&lt;p&gt;For locomotion, the robot uses a differential drive model. Forward motion and turning are combined in software and translated into left and right motor commands. The mixing logic also normalizes the output so that neither side exceeds its allowed range:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
def mix_diff_drive(forward, turn):
    left = forward + turn
    right = forward - turn
    max_mag = max(1.0, abs(left), abs(right))
    left /= max_mag
    right /= max_mag
    return int(left * 100), int(right * 100)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In practice, this gives the robot predictable handling: pushing the joystick forward drives all wheels forward, pushing it sideways causes the robot to rotate in place, and intermediate positions allow smooth combined motion. This becomes particularly noticeable during testing, where the platform&amp;rsquo;s high torque makes abrupt or poorly scaled commands immediately obvious.&lt;/p&gt;
&lt;p&gt;Arm control is handled very differently. Instead of commanding individual joints directly, the software operates in Cartesian space using kinematics. The intent is not to tell each servo where to go, but to tell the arm where the tool should be. As Milos puts it, &amp;ldquo;if we want the robot arm to reach a point in space, the question becomes which joint angles get us there.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To support this, the physical structure of the arm is defined explicitly in software. Link lengths and base offsets are encoded so the mathematical model matches the real hardware:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
LINK1 = 100.0  # shoulder to elbow (mm)
LINK2 = 100.0  # elbow to wrist (mm)
LINK3 = 100.0  # wrist to tool (mm)
BASE_HEIGHT = 64.52
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Joint limits are also defined for every axis, both in terms of angular range and the corresponding PWM values. This prevents the solver from generating solutions that the hardware cannot physically achieve and protects the servos from being driven into hard stops.&lt;/p&gt;
&lt;p&gt;A practical challenge with this kind of system is calibration. Servos must be mounted at known reference angles during assembly, and even small errors at this stage affect every kinematic calculation that follows. To account for this, the software supports per‑joint offset values that can be adjusted and stored after assembly. These offsets are applied automatically whenever kinematic solutions are converted into servo commands, allowing the arm to be aligned accurately without repeated mechanical rework.&lt;/p&gt;
&lt;p&gt;Before running movements on the real hardware, the same kinematic logic is also used in a visualisation tool. This renders the arm&amp;rsquo;s motion on screen and makes it easier to spot unreachable targets, singularities, or jitter in the solution. Some uneven motion remains, particularly near the limits of reach, which Milos notes is expected without additional path planning. At this stage, the focus is on correctness and clarity rather than perfectly smooth trajectories.&lt;/p&gt;
&lt;p&gt;Taken together, the control software reflects a deliberate design philosophy. The robot executes commands simply and reliably, while the complexity lives where it is easier to debug, visualise, and extend. This structure not only makes the current platform easier to understand and reproduce, but also leaves a clear path toward future upgrades such as onboard computation, more advanced motion planning, or autonomous behaviours.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/Picture12.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/Picture13.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1n1n83"&gt;Practical Testing&lt;/h2&gt;
&lt;p&gt;With the electronics wired, software running, and mechanics assembled, the robot was finally tested as a complete system. Driving performance matched expectations: strong acceleration, the ability to turn on the spot, and enough torque to pull several kilograms, albeit with wheel slip.&lt;/p&gt;
&lt;p&gt;The arm and base can be controlled simultaneously, a key milestone that demonstrates the viability of the overall architecture. While movements can still be jittery&amp;mdash;particularly along the Z-axis&amp;mdash;the system behaves predictably once calibrated.&lt;/p&gt;
&lt;p&gt;To cap off testing, Milos put the robot to a practical, if slightly humorous, task: feeding his dog. The experiment proved that the robot can manipulate objects in the real world, even if the results were messy. The verdict was mixed, but the demonstration underscored the platform&amp;rsquo;s potential.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/Picture14.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/Picture15.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar5"&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;This version of the robot is best described as a foundation. Future plans include replacing the wheels with mecanum wheels, adding sensors for mapping and navigation, and integrating an embedded computer such as a Raspberry Pi or NVIDIA Jetson. With that in place, running ROS or ROS 2 becomes a realistic next step.&lt;/p&gt;
&lt;p&gt;As Milos notes, once mobility, perception, and higher-level planning are combined, &amp;ldquo;we&amp;rsquo;re going to have a rather nice platform.&amp;rdquo; This project does not aim to be a finished product, but rather a flexible robotics playground, one that invites iteration, experimentation, and continual improvement.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar6"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151377"&gt;Episode 716 Resources - Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/71909/making-a-stronger-affordable-diy-robot-arm-with-3d-printing-with-raspberry-pi-pico----episode-662"&gt;Making a Stronger Affordable DIY Robot Arm with 3D Printing with Raspberry Pi Pico -- Episode 662&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1k8bo0"&gt;Bill of Materials&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-6df5d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769950~5,2845501~3,3769947~4,4060368~2,2816312,4552201&amp;nsku=52AJ5993~5,50AC9540~3,52AJ5079~4,55AK3445~2,42X3730,14AM7035&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6df5d'));" data-farnell="3769950~5,2845501~3,3769947~4,4060368~2,2816312,4552201" data-newark="52AJ5993~5,50AC9540~3,52AJ5079~4,55AK3445~2,42X3730,14AM7035" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DFROBOT SERVO MOTOR&lt;/td&gt;
&lt;td&gt;DFROBOT&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-45655" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769950~5&amp;nsku=52AJ5993~5&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('45655'));" data-farnell="3769950~5" data-newark="52AJ5993~5" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WHITE PLA 3D PRINTING FILAMENT&lt;/td&gt;
&lt;td&gt;MULTICOMP&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4de8a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2845501~3&amp;nsku=50AC9540~3&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4de8a'));" data-farnell="2845501~3" data-newark="50AC9540~3" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DC GEARED MOTOR - FIT0185&lt;/td&gt;
&lt;td&gt;DFROBOT&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a411c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769947~4&amp;nsku=52AJ5079~4&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a411c'));" data-farnell="3769947~4" data-newark="52AJ5079~4" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L298N MOTOR DRIVER&lt;/td&gt;
&lt;td&gt;SEEED STUDIO&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d4b3a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4060368~2&amp;nsku=55AK3445~2&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d4b3a'));" data-farnell="4060368~2" data-newark="55AK3445~2" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCA9685 - SERVO MOTOR DRIVERr&lt;/td&gt;
&lt;td&gt;ADAFRUIT&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4d366" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2816312&amp;nsku=42X3730&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4d366'));" data-farnell="2816312" data-newark="42X3730" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NXP FRDM-RW612&lt;/td&gt;
&lt;td&gt;NXP&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c5817" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4552201&amp;nsku=14AM7035&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c5817'));" data-farnell="4552201" data-newark="14AM7035" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1k8bp1"&gt;Additional Parts&lt;/h2&gt;
&lt;table class="e14-product-bom-additional"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M3, M4, M5, M6 Screws&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aluminum 20x20 profiles&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M8 Bearing With Mount&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M8 bolts and nuts&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small bearings&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RC Wheels&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T slot nuts&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strong Buck Converter for the robot arm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12V Battery&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="mcetoc_1jpl1k8bp2"&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: wireless robot control using Wi-Fi, joystick controlled robot arm, inverse kinematics robot arm build, NXP FRDM-RW612 robotics project, modular robot chassis aluminium extrusion, DIY mobile robot with arm, differential drive robot design, mobile robot platform with robotic arm, PCA9685 servo controller robotics, robotics platform for experimentation, four wheel drive robot platform, element14 probotics project build, Python robotics control software, robot arm kinematics explained, e14presents_milosrasic, L298N motor driver robot project, friday_release&lt;/div&gt;
</description></item><item><title>Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72067/designing-a-mobile-robot-platform-with-inverse-kinematics-and-wireless-control/revision/4</link><pubDate>Wed, 27 May 2026 16:09:55 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6e2682a7-8e1c-4db3-ad28-039762ae48c3</guid><dc:creator>cstanton</dc:creator><description>Revision 4 posted to Documents by cstanton on 5/27/2026 4:09:55 PM&lt;br /&gt;
&lt;p&gt;&lt;span&gt;Milos takes his servo driven robot arm off the bench and turns it into a four wheel drive mobile platform built around the NXP FRDM RW612. The project combines an aluminium extrusion chassis, DC geared motors with L298N drivers, PCA9685 servo control, and wireless joystick input to tackle real challenges like torque, calibration, surface traction, and jitter. On the software side, he moves beyond joint by joint control into inverse kinematics and Cartesian motion, using simulation to validate behaviour before driving real hardware. The result is a modular robotics platform designed for learning, iteration, and future upgrades.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1r50d4"&gt;&lt;span&gt;Watch the Robot&amp;nbsp;Arm on Wheels&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/hSKMcJEPSlE"&gt;https://youtu.be/hSKMcJEPSlE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This project marks a natural but ambitious evolution of Milos&amp;rsquo;s earlier work on a desktop robotic arm. What began as an exploration of servo-driven motion, joint recording, and basic trajectory playback has now been transformed into a fully mobile robotic platform that combines mechanics, electronics, and software into a cohesive system.&lt;/p&gt;
&lt;p&gt;Rather than treating the robot arm and the base as separate challenges, Milos approached this build as a single platform problem: how to create a robot that can move through space, manipulate objects with intent, and serve as a foundation for far more advanced autonomy in the future.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/1641.Picture1.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/8507.Picture3.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1aq0"&gt;Idea and Plan&lt;/h2&gt;
&lt;p&gt;The starting point for this build was a clear limitation of the previous project. While the arm could replay learned movements, it was fixed in place and constrained to joint-by-joint control. As Milos puts it, the earlier version worked, &amp;ldquo;but in the end it&amp;rsquo;s just a robot arm.&amp;rdquo; The next logical step was mobility.&lt;/p&gt;
&lt;p&gt;The core idea was to mount the arm onto a four-wheel-drive base and design everything around modularity. The arm would sit on top of a rigid chassis, with space below reserved for motors, power, and electronics. Two locomotion strategies were planned from the outset: a first version using skid-steer (tank-style) drive, and a second version that would later replace the wheels with mecanum wheels for true omnidirectional movement.&lt;/p&gt;
&lt;p&gt;Crucially, Milos also decided that control needed to move beyond jogging joints or replaying recorded angles. Inverse kinematics would become central to the project, allowing the arm to be commanded in Cartesian space rather than micromanaged servo by servo.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/4377.Picture4.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar1"&gt;Electronics and Heart of the Project&lt;/h2&gt;
&lt;p&gt;At the heart of the electronics is an NXP FRDM-RW612 development board. The choice was deliberate: the board offers ample GPIO, built-in Wi-Fi, and enough processing power that Milos notes he is &amp;ldquo;only scratching the surface with what this can do.&amp;rdquo; For this stage of development, Wi-Fi connectivity and I&amp;sup2;C were the primary features in use.&lt;/p&gt;
&lt;p&gt;Wireless control is handled via a Bluetooth gamepad connected to a laptop. Commands are sent over UDP to the robot, leveraging the board&amp;rsquo;s Wi-Fi to avoid additional communication modules. As Milos explains, &amp;ldquo;I want to send commands over UDP, so over the internet to the board&amp;hellip; since the board already has built-in Wi-Fi, we&amp;rsquo;re going to utilize that.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Motor and servo control is centralized through a PCA9685 PWM driver. This single module generates PWM signals for both the five servo motors in the arm and the brushed DC motors driving the wheels. Two L298N motor driver modules handle the four geared DC motors, giving the robot full four-wheel drive and, as testing later shows, a surprising amount of torque.&lt;/p&gt;
&lt;p&gt;One subtle but important design decision involved PWM frequency. Servo motors and DC motor drivers prefer different operating ranges, but Milos settled on a compromise of around 300 Hz, noting that &amp;ldquo;at around 300 hertz everything will be happy, both the motor drivers and all of the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Power is supplied by a 12 V drill battery mounted at the rear of the robot. A robust DC-DC buck converter steps this down to 5 V for the servos and logic, while the drive motors receive the full battery voltage. An emergency stop switch doubles as a main power switch, an essential safety feature given the platform&amp;rsquo;s weight and torque.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/0167.Picture5.jpg" /&gt;&lt;img loading="lazy" alt="image" style="max-height:287px;max-width:383px;"  height="287" src="/resized-image/__size/766x574/__key/communityserver-wikis-components-files/00-00-00-04-35/5857.Picture7.jpg" width="383" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar2"&gt;Core Mechanics&lt;/h2&gt;
&lt;p&gt;If there is one area where this project demanded the most effort, it was the mechanical design. Milos is candid about this, describing the mechanical side as &amp;ldquo;actually kind of complicated and a lot of work.&amp;rdquo; The challenge was to balance strength, accessibility, and flexibility.&lt;/p&gt;
&lt;p&gt;The main chassis is constructed from standard 20&amp;times;20 and 40&amp;times;20 T-slot aluminum extrusions. These are fastened with machine screws to form a stiff, rectangular frame that resists twisting while remaining easy to modify. This choice was intentional: aluminum extrusions are widely available, easy to cut, and ideal for iterative projects.&lt;/p&gt;
&lt;p&gt;Secondary structures, mounts, and brackets are 3D printed. PLA was used for this version, with the understanding that higher-performance materials such as PC or PA may replace it later, particularly for gears. This hybrid approach keeps the build approachable while still allowing custom geometry where needed.&lt;/p&gt;
&lt;p&gt;To protect the motors from excessive radial loads, each wheel is mounted on its own axle made from an M8 bolt, supported by dual bearings. This design ensures that the bearings, rather than the motor shafts, absorb the mechanical stress. It also makes maintenance easier, since bearings are inexpensive and simple to replace.&lt;/p&gt;
&lt;p&gt;The finished platform weighs around 7 kg, giving it a low center of gravity but also making power and traction critical considerations. Ground clearance is modest, and while the robot performs well on smooth surfaces, Milos observes that &amp;ldquo;it doesn&amp;rsquo;t like surfaces like the carpet because they are extremely grippy,&amp;rdquo; leading to wheel scrub and vibration.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/Picture11.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar3"&gt;Control and Software&lt;/h2&gt;
&lt;p&gt;On the software side, the project is split cleanly between the robot and the control computer. The microcontroller firmware focuses on receiving UDP packets, parsing a compact binary payload, and translating those values into PWM outputs. As Milos summarizes, &amp;ldquo;what the code for the MCU actually does is it just gets the data over UDP&amp;hellip; and sends the PWM values through the PCA module to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The more complex logic lives on the computer side, written in Python. Two main scripts handle this. One is responsible for reading the gamepad and managing UDP communication. The other implements the control logic that converts joystick inputs into meaningful robot commands.&lt;/p&gt;
&lt;p&gt;For driving, the robot uses a differential (tank) drive model. The left joystick maps directly to forward motion and turning, with the software mixing these inputs into left and right motor commands. This makes the platform intuitive to drive while remaining simple to implement.&lt;/p&gt;
&lt;p&gt;The arm control is where the project becomes significantly more advanced. Instead of commanding individual joints, the software implements both direct and inverse kinematics. Milos explains the motivation clearly: &amp;ldquo;If we want the robot arm to reach this point&amp;hellip; how do we actually even know where the end effector is located? That&amp;rsquo;s called kinematics in robotics.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Direct kinematics calculates the position of the tool center point (TCP) from known joint angles and link lengths. Inverse kinematics does the opposite, solving for joint angles that will place the TCP at a desired coordinate. Even for a simple planar arm, Milos demonstrates that inverse kinematics quickly becomes mathematically heavy, with multiple valid solutions such as elbow-up and elbow-down configurations.&lt;/p&gt;
&lt;p&gt;Rather than reinventing the wheel, the software uses established solving techniques and provides flexibility in how solutions are chosen. Link lengths, joint limits, and servo pulse ranges are explicitly defined in code, ensuring that the mathematical model matches the physical hardware. Calibration data is stored in a JSON file, allowing the arm to be zeroed accurately after assembly. As Milos emphasizes, improper calibration &amp;ldquo;will just add up and there is just a function to actually calibrate the arm so you tell it where the actual zero position is.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To make development safer and more intuitive, a visualization script simulates the arm&amp;rsquo;s motion in real time. This allows kinematic behavior to be inspected before applying commands to the real hardware, and it highlights issues such as jitter and singularities that will eventually need path planning to resolve.&lt;/p&gt;
&lt;p&gt;The control system for the MR21 platform was designed around a clear separation of responsibilities. Low-level, time‑critical tasks run on the robot itself, while higher‑level interpretation, kinematic logic, and user interaction are handled externally. This keeps the embedded side predictable and responsive, while allowing the control logic to evolve rapidly without being constrained by microcontroller resources.&lt;/p&gt;
&lt;p&gt;At the center of the system is a wireless control link. Commands are sent to the robot over Wi‑Fi using UDP, carrying both drive and arm control data in a single, fixed‑size packet. On the robot, the microcontroller&amp;rsquo;s role is intentionally narrow: receive the packet, extract values, and generate PWM outputs via the PCA9685 for the servo motors and motor drivers. As Milos describes it, the board &amp;ldquo;just gets the data over UDP and sends the PWM values to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The packet itself is compact and structured to be easy to parse deterministically. It contains drive motor commands alongside pulse values for the arm servos, allowing the mobile base and arm to be controlled at the same time without additional synchronization logic:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
# uint32 message ID
# int16 left drive motor
# int16 right drive motor
# uint16 servo_1 .. servo_6
# Total payload size: 20 bytes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach avoids the overhead of text-based protocols and ensures consistent timing, which becomes especially important once the arm is moving while the platform is driving.&lt;/p&gt;
&lt;p&gt;For locomotion, the robot uses a differential drive model. Forward motion and turning are combined in software and translated into left and right motor commands. The mixing logic also normalizes the output so that neither side exceeds its allowed range:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
def mix_diff_drive(forward, turn):
    left = forward + turn
    right = forward - turn
    max_mag = max(1.0, abs(left), abs(right))
    left /= max_mag
    right /= max_mag
    return int(left * 100), int(right * 100)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In practice, this gives the robot predictable handling: pushing the joystick forward drives all wheels forward, pushing it sideways causes the robot to rotate in place, and intermediate positions allow smooth combined motion. This becomes particularly noticeable during testing, where the platform&amp;rsquo;s high torque makes abrupt or poorly scaled commands immediately obvious.&lt;/p&gt;
&lt;p&gt;Arm control is handled very differently. Instead of commanding individual joints directly, the software operates in Cartesian space using kinematics. The intent is not to tell each servo where to go, but to tell the arm where the tool should be. As Milos puts it, &amp;ldquo;if we want the robot arm to reach a point in space, the question becomes which joint angles get us there.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To support this, the physical structure of the arm is defined explicitly in software. Link lengths and base offsets are encoded so the mathematical model matches the real hardware:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
LINK1 = 100.0  # shoulder to elbow (mm)
LINK2 = 100.0  # elbow to wrist (mm)
LINK3 = 100.0  # wrist to tool (mm)
BASE_HEIGHT = 64.52
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Joint limits are also defined for every axis, both in terms of angular range and the corresponding PWM values. This prevents the solver from generating solutions that the hardware cannot physically achieve and protects the servos from being driven into hard stops.&lt;/p&gt;
&lt;p&gt;A practical challenge with this kind of system is calibration. Servos must be mounted at known reference angles during assembly, and even small errors at this stage affect every kinematic calculation that follows. To account for this, the software supports per‑joint offset values that can be adjusted and stored after assembly. These offsets are applied automatically whenever kinematic solutions are converted into servo commands, allowing the arm to be aligned accurately without repeated mechanical rework.&lt;/p&gt;
&lt;p&gt;Before running movements on the real hardware, the same kinematic logic is also used in a visualisation tool. This renders the arm&amp;rsquo;s motion on screen and makes it easier to spot unreachable targets, singularities, or jitter in the solution. Some uneven motion remains, particularly near the limits of reach, which Milos notes is expected without additional path planning. At this stage, the focus is on correctness and clarity rather than perfectly smooth trajectories.&lt;/p&gt;
&lt;p&gt;Taken together, the control software reflects a deliberate design philosophy. The robot executes commands simply and reliably, while the complexity lives where it is easier to debug, visualise, and extend. This structure not only makes the current platform easier to understand and reproduce, but also leaves a clear path toward future upgrades such as onboard computation, more advanced motion planning, or autonomous behaviours.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/Picture12.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/Picture13.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1n1n83"&gt;Practical Testing&lt;/h2&gt;
&lt;p&gt;With the electronics wired, software running, and mechanics assembled, the robot was finally tested as a complete system. Driving performance matched expectations: strong acceleration, the ability to turn on the spot, and enough torque to pull several kilograms, albeit with wheel slip.&lt;/p&gt;
&lt;p&gt;The arm and base can be controlled simultaneously, a key milestone that demonstrates the viability of the overall architecture. While movements can still be jittery&amp;mdash;particularly along the Z-axis&amp;mdash;the system behaves predictably once calibrated.&lt;/p&gt;
&lt;p&gt;To cap off testing, Milos put the robot to a practical, if slightly humorous, task: feeding his dog. The experiment proved that the robot can manipulate objects in the real world, even if the results were messy. The verdict was mixed, but the demonstration underscored the platform&amp;rsquo;s potential.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/Picture14.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/Picture15.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar5"&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;This version of the robot is best described as a foundation. Future plans include replacing the wheels with mecanum wheels, adding sensors for mapping and navigation, and integrating an embedded computer such as a Raspberry Pi or NVIDIA Jetson. With that in place, running ROS or ROS 2 becomes a realistic next step.&lt;/p&gt;
&lt;p&gt;As Milos notes, once mobility, perception, and higher-level planning are combined, &amp;ldquo;we&amp;rsquo;re going to have a rather nice platform.&amp;rdquo; This project does not aim to be a finished product, but rather a flexible robotics playground, one that invites iteration, experimentation, and continual improvement.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar6"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151377"&gt;Episode 716 Resources - Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/71909/making-a-stronger-affordable-diy-robot-arm-with-3d-printing-with-raspberry-pi-pico----episode-662"&gt;Making a Stronger Affordable DIY Robot Arm with 3D Printing with Raspberry Pi Pico -- Episode 662&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1k8bo0"&gt;Bill of Materials&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-6c810" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769950~5,2845501~3,3769947~4,4060368~2,2816312,4552201&amp;nsku=52AJ5993~5,50AC9540~3,52AJ5079~4,55AK3445~2,42X3730,14AM7035&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6c810'));" data-farnell="3769950~5,2845501~3,3769947~4,4060368~2,2816312,4552201" data-newark="52AJ5993~5,50AC9540~3,52AJ5079~4,55AK3445~2,42X3730,14AM7035" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DFROBOT SERVO MOTOR&lt;/td&gt;
&lt;td&gt;DFROBOT&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7527a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769950~5&amp;nsku=52AJ5993~5&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7527a'));" data-farnell="3769950~5" data-newark="52AJ5993~5" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WHITE PLA 3D PRINTING FILAMENT&lt;/td&gt;
&lt;td&gt;MULTICOMP&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-91f2b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2845501~3&amp;nsku=50AC9540~3&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('91f2b'));" data-farnell="2845501~3" data-newark="50AC9540~3" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DC GEARED MOTOR - FIT0185&lt;/td&gt;
&lt;td&gt;DFROBOT&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-df261" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769947~4&amp;nsku=52AJ5079~4&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('df261'));" data-farnell="3769947~4" data-newark="52AJ5079~4" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L298N MOTOR DRIVER&lt;/td&gt;
&lt;td&gt;SEEED STUDIO&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ba16b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4060368~2&amp;nsku=55AK3445~2&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ba16b'));" data-farnell="4060368~2" data-newark="55AK3445~2" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCA9685 - SERVO MOTOR DRIVERr&lt;/td&gt;
&lt;td&gt;ADAFRUIT&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c1dc7" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2816312&amp;nsku=42X3730&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c1dc7'));" data-farnell="2816312" data-newark="42X3730" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NXP FRDM-RW612&lt;/td&gt;
&lt;td&gt;NXP&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c54f5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4552201&amp;nsku=14AM7035&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c54f5'));" data-farnell="4552201" data-newark="14AM7035" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1k8bp1"&gt;Additional Parts&lt;/h2&gt;
&lt;table class="e14-product-bom-additional"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M3, M4, M5, M6 Screws&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aluminum 20x20 profiles&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M8 Bearing With Mount&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M8 bolts and nuts&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small bearings&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RC Wheels&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T slot nuts&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strong Buck Converter for the robot arm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12V Battery&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="mcetoc_1jpl1k8bp2"&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: wireless robot control using Wi-Fi, joystick controlled robot arm, inverse kinematics robot arm build, NXP FRDM-RW612 robotics project, modular robot chassis aluminium extrusion, DIY mobile robot with arm, differential drive robot design, mobile robot platform with robotic arm, PCA9685 servo controller robotics, robotics platform for experimentation, four wheel drive robot platform, element14 probotics project build, Python robotics control software, robot arm kinematics explained, e14presents_milosrasic, L298N motor driver robot project, friday_release&lt;/div&gt;
</description></item><item><title>Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72067/designing-a-mobile-robot-platform-with-inverse-kinematics-and-wireless-control/revision/3</link><pubDate>Wed, 27 May 2026 15:47:06 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6e2682a7-8e1c-4db3-ad28-039762ae48c3</guid><dc:creator>cstanton</dc:creator><description>Revision 3 posted to Documents by cstanton on 5/27/2026 3:47:06 PM&lt;br /&gt;
&lt;p&gt;&lt;span&gt;Milos takes his servo driven robot arm off the bench and turns it into a four wheel drive mobile platform built around the NXP FRDM RW612. The project combines an aluminium extrusion chassis, DC geared motors with L298N drivers, PCA9685 servo control, and wireless joystick input to tackle real challenges like torque, calibration, surface traction, and jitter. On the software side, he moves beyond joint by joint control into inverse kinematics and Cartesian motion, using simulation to validate behaviour before driving real hardware. The result is a modular robotics platform designed for learning, iteration, and future upgrades.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1r50d4"&gt;&lt;span&gt;Watch the Robot&amp;nbsp;Arm on Wheels&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/hSKMcJEPSlE"&gt;https://youtu.be/hSKMcJEPSlE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This project marks a natural but ambitious evolution of Milos&amp;rsquo;s earlier work on a desktop robotic arm. What began as an exploration of servo-driven motion, joint recording, and basic trajectory playback has now been transformed into a fully mobile robotic platform that combines mechanics, electronics, and software into a cohesive system.&lt;/p&gt;
&lt;p&gt;Rather than treating the robot arm and the base as separate challenges, Milos approached this build as a single platform problem: how to create a robot that can move through space, manipulate objects with intent, and serve as a foundation for far more advanced autonomy in the future.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1aq0"&gt;Idea and Plan&lt;/h2&gt;
&lt;p&gt;The starting point for this build was a clear limitation of the previous project. While the arm could replay learned movements, it was fixed in place and constrained to joint-by-joint control. As Milos puts it, the earlier version worked, &amp;ldquo;but in the end it&amp;rsquo;s just a robot arm.&amp;rdquo; The next logical step was mobility.&lt;/p&gt;
&lt;p&gt;The core idea was to mount the arm onto a four-wheel-drive base and design everything around modularity. The arm would sit on top of a rigid chassis, with space below reserved for motors, power, and electronics. Two locomotion strategies were planned from the outset: a first version using skid-steer (tank-style) drive, and a second version that would later replace the wheels with mecanum wheels for true omnidirectional movement.&lt;/p&gt;
&lt;p&gt;Crucially, Milos also decided that control needed to move beyond jogging joints or replaying recorded angles. Inverse kinematics would become central to the project, allowing the arm to be commanded in Cartesian space rather than micromanaged servo by servo.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar1"&gt;Electronics and Heart of the Project&lt;/h2&gt;
&lt;p&gt;At the heart of the electronics is an NXP FRDM-RW612 development board. The choice was deliberate: the board offers ample GPIO, built-in Wi-Fi, and enough processing power that Milos notes he is &amp;ldquo;only scratching the surface with what this can do.&amp;rdquo; For this stage of development, Wi-Fi connectivity and I&amp;sup2;C were the primary features in use.&lt;/p&gt;
&lt;p&gt;Wireless control is handled via a Bluetooth gamepad connected to a laptop. Commands are sent over UDP to the robot, leveraging the board&amp;rsquo;s Wi-Fi to avoid additional communication modules. As Milos explains, &amp;ldquo;I want to send commands over UDP, so over the internet to the board&amp;hellip; since the board already has built-in Wi-Fi, we&amp;rsquo;re going to utilize that.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Motor and servo control is centralized through a PCA9685 PWM driver. This single module generates PWM signals for both the five servo motors in the arm and the brushed DC motors driving the wheels. Two L298N motor driver modules handle the four geared DC motors, giving the robot full four-wheel drive and, as testing later shows, a surprising amount of torque.&lt;/p&gt;
&lt;p&gt;One subtle but important design decision involved PWM frequency. Servo motors and DC motor drivers prefer different operating ranges, but Milos settled on a compromise of around 300 Hz, noting that &amp;ldquo;at around 300 hertz everything will be happy, both the motor drivers and all of the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Power is supplied by a 12 V drill battery mounted at the rear of the robot. A robust DC-DC buck converter steps this down to 5 V for the servos and logic, while the drive motors receive the full battery voltage. An emergency stop switch doubles as a main power switch, an essential safety feature given the platform&amp;rsquo;s weight and torque.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar2"&gt;Core Mechanics&lt;/h2&gt;
&lt;p&gt;If there is one area where this project demanded the most effort, it was the mechanical design. Milos is candid about this, describing the mechanical side as &amp;ldquo;actually kind of complicated and a lot of work.&amp;rdquo; The challenge was to balance strength, accessibility, and flexibility.&lt;/p&gt;
&lt;p&gt;The main chassis is constructed from standard 20&amp;times;20 and 40&amp;times;20 T-slot aluminum extrusions. These are fastened with machine screws to form a stiff, rectangular frame that resists twisting while remaining easy to modify. This choice was intentional: aluminum extrusions are widely available, easy to cut, and ideal for iterative projects.&lt;/p&gt;
&lt;p&gt;Secondary structures, mounts, and brackets are 3D printed. PLA was used for this version, with the understanding that higher-performance materials such as PC or PA may replace it later, particularly for gears. This hybrid approach keeps the build approachable while still allowing custom geometry where needed.&lt;/p&gt;
&lt;p&gt;To protect the motors from excessive radial loads, each wheel is mounted on its own axle made from an M8 bolt, supported by dual bearings. This design ensures that the bearings, rather than the motor shafts, absorb the mechanical stress. It also makes maintenance easier, since bearings are inexpensive and simple to replace.&lt;/p&gt;
&lt;p&gt;The finished platform weighs around 7 kg, giving it a low center of gravity but also making power and traction critical considerations. Ground clearance is modest, and while the robot performs well on smooth surfaces, Milos observes that &amp;ldquo;it doesn&amp;rsquo;t like surfaces like the carpet because they are extremely grippy,&amp;rdquo; leading to wheel scrub and vibration.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar3"&gt;Control and Software&lt;/h2&gt;
&lt;p&gt;On the software side, the project is split cleanly between the robot and the control computer. The microcontroller firmware focuses on receiving UDP packets, parsing a compact binary payload, and translating those values into PWM outputs. As Milos summarizes, &amp;ldquo;what the code for the MCU actually does is it just gets the data over UDP&amp;hellip; and sends the PWM values through the PCA module to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The more complex logic lives on the computer side, written in Python. Two main scripts handle this. One is responsible for reading the gamepad and managing UDP communication. The other implements the control logic that converts joystick inputs into meaningful robot commands.&lt;/p&gt;
&lt;p&gt;For driving, the robot uses a differential (tank) drive model. The left joystick maps directly to forward motion and turning, with the software mixing these inputs into left and right motor commands. This makes the platform intuitive to drive while remaining simple to implement.&lt;/p&gt;
&lt;p&gt;The arm control is where the project becomes significantly more advanced. Instead of commanding individual joints, the software implements both direct and inverse kinematics. Milos explains the motivation clearly: &amp;ldquo;If we want the robot arm to reach this point&amp;hellip; how do we actually even know where the end effector is located? That&amp;rsquo;s called kinematics in robotics.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Direct kinematics calculates the position of the tool center point (TCP) from known joint angles and link lengths. Inverse kinematics does the opposite, solving for joint angles that will place the TCP at a desired coordinate. Even for a simple planar arm, Milos demonstrates that inverse kinematics quickly becomes mathematically heavy, with multiple valid solutions such as elbow-up and elbow-down configurations.&lt;/p&gt;
&lt;p&gt;Rather than reinventing the wheel, the software uses established solving techniques and provides flexibility in how solutions are chosen. Link lengths, joint limits, and servo pulse ranges are explicitly defined in code, ensuring that the mathematical model matches the physical hardware. Calibration data is stored in a JSON file, allowing the arm to be zeroed accurately after assembly. As Milos emphasizes, improper calibration &amp;ldquo;will just add up and there is just a function to actually calibrate the arm so you tell it where the actual zero position is.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To make development safer and more intuitive, a visualization script simulates the arm&amp;rsquo;s motion in real time. This allows kinematic behavior to be inspected before applying commands to the real hardware, and it highlights issues such as jitter and singularities that will eventually need path planning to resolve.&lt;/p&gt;
&lt;p&gt;The control system for the MR21 platform was designed around a clear separation of responsibilities. Low-level, time‑critical tasks run on the robot itself, while higher‑level interpretation, kinematic logic, and user interaction are handled externally. This keeps the embedded side predictable and responsive, while allowing the control logic to evolve rapidly without being constrained by microcontroller resources.&lt;/p&gt;
&lt;p&gt;At the center of the system is a wireless control link. Commands are sent to the robot over Wi‑Fi using UDP, carrying both drive and arm control data in a single, fixed‑size packet. On the robot, the microcontroller&amp;rsquo;s role is intentionally narrow: receive the packet, extract values, and generate PWM outputs via the PCA9685 for the servo motors and motor drivers. As Milos describes it, the board &amp;ldquo;just gets the data over UDP and sends the PWM values to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The packet itself is compact and structured to be easy to parse deterministically. It contains drive motor commands alongside pulse values for the arm servos, allowing the mobile base and arm to be controlled at the same time without additional synchronization logic:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
# uint32 message ID
# int16 left drive motor
# int16 right drive motor
# uint16 servo_1 .. servo_6
# Total payload size: 20 bytes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach avoids the overhead of text-based protocols and ensures consistent timing, which becomes especially important once the arm is moving while the platform is driving.&lt;/p&gt;
&lt;p&gt;For locomotion, the robot uses a differential drive model. Forward motion and turning are combined in software and translated into left and right motor commands. The mixing logic also normalizes the output so that neither side exceeds its allowed range:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
def mix_diff_drive(forward, turn):
    left = forward + turn
    right = forward - turn
    max_mag = max(1.0, abs(left), abs(right))
    left /= max_mag
    right /= max_mag
    return int(left * 100), int(right * 100)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In practice, this gives the robot predictable handling: pushing the joystick forward drives all wheels forward, pushing it sideways causes the robot to rotate in place, and intermediate positions allow smooth combined motion. This becomes particularly noticeable during testing, where the platform&amp;rsquo;s high torque makes abrupt or poorly scaled commands immediately obvious.&lt;/p&gt;
&lt;p&gt;Arm control is handled very differently. Instead of commanding individual joints directly, the software operates in Cartesian space using kinematics. The intent is not to tell each servo where to go, but to tell the arm where the tool should be. As Milos puts it, &amp;ldquo;if we want the robot arm to reach a point in space, the question becomes which joint angles get us there.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To support this, the physical structure of the arm is defined explicitly in software. Link lengths and base offsets are encoded so the mathematical model matches the real hardware:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
LINK1 = 100.0  # shoulder to elbow (mm)
LINK2 = 100.0  # elbow to wrist (mm)
LINK3 = 100.0  # wrist to tool (mm)
BASE_HEIGHT = 64.52
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Joint limits are also defined for every axis, both in terms of angular range and the corresponding PWM values. This prevents the solver from generating solutions that the hardware cannot physically achieve and protects the servos from being driven into hard stops.&lt;/p&gt;
&lt;p&gt;A practical challenge with this kind of system is calibration. Servos must be mounted at known reference angles during assembly, and even small errors at this stage affect every kinematic calculation that follows. To account for this, the software supports per‑joint offset values that can be adjusted and stored after assembly. These offsets are applied automatically whenever kinematic solutions are converted into servo commands, allowing the arm to be aligned accurately without repeated mechanical rework.&lt;/p&gt;
&lt;p&gt;Before running movements on the real hardware, the same kinematic logic is also used in a visualization tool. This renders the arm&amp;rsquo;s motion on screen and makes it easier to spot unreachable targets, singularities, or jitter in the solution. Some uneven motion remains, particularly near the limits of reach, which Milos notes is expected without additional path planning. At this stage, the focus is on correctness and clarity rather than perfectly smooth trajectories.&lt;/p&gt;
&lt;p&gt;Taken together, the control software reflects a deliberate design philosophy. The robot executes commands simply and reliably, while the complexity lives where it is easier to debug, visualize, and extend. This structure not only makes the current platform easier to understand and reproduce, but also leaves a clear path toward future upgrades such as onboard computation, more advanced motion planning, or autonomous behaviours.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1n1n83"&gt;Practical Testing&lt;/h2&gt;
&lt;p&gt;With the electronics wired, software running, and mechanics assembled, the robot was finally tested as a complete system. Driving performance matched expectations: strong acceleration, the ability to turn on the spot, and enough torque to pull several kilograms, albeit with wheel slip.&lt;/p&gt;
&lt;p&gt;The arm and base can be controlled simultaneously, a key milestone that demonstrates the viability of the overall architecture. While movements can still be jittery&amp;mdash;particularly along the Z-axis&amp;mdash;the system behaves predictably once calibrated.&lt;/p&gt;
&lt;p&gt;To cap off testing, Milos put the robot to a practical, if slightly humorous, task: feeding his dog. The experiment proved that the robot can manipulate objects in the real world, even if the results were messy. The verdict was mixed, but the demonstration underscored the platform&amp;rsquo;s potential.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar5"&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;This version of the robot is best described as a foundation. Future plans include replacing the wheels with mecanum wheels, adding sensors for mapping and navigation, and integrating an embedded computer such as a Raspberry Pi or NVIDIA Jetson. With that in place, running ROS or ROS 2 becomes a realistic next step.&lt;/p&gt;
&lt;p&gt;As Milos notes, once mobility, perception, and higher-level planning are combined, &amp;ldquo;we&amp;rsquo;re going to have a rather nice platform.&amp;rdquo; This project does not aim to be a finished product, but rather a flexible robotics playground, one that invites iteration, experimentation, and continual improvement.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar6"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151377"&gt;Episode 716 Resources - Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/71909/making-a-stronger-affordable-diy-robot-arm-with-3d-printing-with-raspberry-pi-pico----episode-662"&gt;Making a Stronger Affordable DIY Robot Arm with 3D Printing with Raspberry Pi Pico -- Episode 662&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1k8bo0"&gt;Bill of Materials&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-83b99" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769950~5,2845501~3,3769947~4,4060368~2,2816312,4552201&amp;nsku=52AJ5993~5,50AC9540~3,52AJ5079~4,55AK3445~2,42X3730,14AM7035&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('83b99'));" data-farnell="3769950~5,2845501~3,3769947~4,4060368~2,2816312,4552201" data-newark="52AJ5993~5,50AC9540~3,52AJ5079~4,55AK3445~2,42X3730,14AM7035" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DFROBOT SERVO MOTOR&lt;/td&gt;
&lt;td&gt;DFROBOT&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-48132" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769950~5&amp;nsku=52AJ5993~5&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('48132'));" data-farnell="3769950~5" data-newark="52AJ5993~5" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WHITE PLA 3D PRINTING FILAMENT&lt;/td&gt;
&lt;td&gt;MULTICOMP&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a739e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2845501~3&amp;nsku=50AC9540~3&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a739e'));" data-farnell="2845501~3" data-newark="50AC9540~3" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DC GEARED MOTOR - FIT0185&lt;/td&gt;
&lt;td&gt;DFROBOT&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7b31d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3769947~4&amp;nsku=52AJ5079~4&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7b31d'));" data-farnell="3769947~4" data-newark="52AJ5079~4" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L298N MOTOR DRIVER&lt;/td&gt;
&lt;td&gt;SEEED STUDIO&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f45a8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4060368~2&amp;nsku=55AK3445~2&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f45a8'));" data-farnell="4060368~2" data-newark="55AK3445~2" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCA9685 - SERVO MOTOR DRIVERr&lt;/td&gt;
&lt;td&gt;ADAFRUIT&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b2d53" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2816312&amp;nsku=42X3730&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b2d53'));" data-farnell="2816312" data-newark="42X3730" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NXP FRDM-RW612&lt;/td&gt;
&lt;td&gt;NXP&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-47aea" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4552201&amp;nsku=14AM7035&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('47aea'));" data-farnell="4552201" data-newark="14AM7035" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl1k8bp1"&gt;Additional Parts&lt;/h2&gt;
&lt;table class="e14-product-bom-additional"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M3, M4, M5, M6 Screws&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aluminum 20x20 profiles&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M8 Bearing With Mount&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M8 bolts and nuts&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small bearings&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RC Wheels&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T slot nuts&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strong Buck Converter for the robot arm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12V Battery&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="mcetoc_1jpl1k8bp2"&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: e14presents_milosrasic, friday_release&lt;/div&gt;
</description></item><item><title>Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72067/designing-a-mobile-robot-platform-with-inverse-kinematics-and-wireless-control/revision/2</link><pubDate>Wed, 27 May 2026 15:36:23 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6e2682a7-8e1c-4db3-ad28-039762ae48c3</guid><dc:creator>cstanton</dc:creator><description>Revision 2 posted to Documents by cstanton on 5/27/2026 3:36:23 PM&lt;br /&gt;
&lt;p&gt;This project marks a natural but ambitious evolution of Milos&amp;rsquo;s earlier work on a desktop robotic arm. What began as an exploration of servo-driven motion, joint recording, and basic trajectory playback has now been transformed into a fully mobile robotic platform that combines mechanics, electronics, and software into a cohesive system.&lt;/p&gt;
&lt;p&gt;Rather than treating the robot arm and the base as separate challenges, Milos approached this build as a single platform problem: how to create a robot that can move through space, manipulate objects with intent, and serve as a foundation for far more advanced autonomy in the future.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1aq0"&gt;Idea and Plan&lt;/h2&gt;
&lt;p&gt;The starting point for this build was a clear limitation of the previous project. While the arm could replay learned movements, it was fixed in place and constrained to joint-by-joint control. As Milos puts it, the earlier version worked, &amp;ldquo;but in the end it&amp;rsquo;s just a robot arm.&amp;rdquo; The next logical step was mobility.&lt;/p&gt;
&lt;p&gt;The core idea was to mount the arm onto a four-wheel-drive base and design everything around modularity. The arm would sit on top of a rigid chassis, with space below reserved for motors, power, and electronics. Two locomotion strategies were planned from the outset: a first version using skid-steer (tank-style) drive, and a second version that would later replace the wheels with mecanum wheels for true omnidirectional movement.&lt;/p&gt;
&lt;p&gt;Crucially, Milos also decided that control needed to move beyond jogging joints or replaying recorded angles. Inverse kinematics would become central to the project, allowing the arm to be commanded in Cartesian space rather than micromanaged servo by servo.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar1"&gt;Electronics and Heart of the Project&lt;/h2&gt;
&lt;p&gt;At the heart of the electronics is an NXP FRDM-RW612 development board. The choice was deliberate: the board offers ample GPIO, built-in Wi-Fi, and enough processing power that Milos notes he is &amp;ldquo;only scratching the surface with what this can do.&amp;rdquo; For this stage of development, Wi-Fi connectivity and I&amp;sup2;C were the primary features in use.&lt;/p&gt;
&lt;p&gt;Wireless control is handled via a Bluetooth gamepad connected to a laptop. Commands are sent over UDP to the robot, leveraging the board&amp;rsquo;s Wi-Fi to avoid additional communication modules. As Milos explains, &amp;ldquo;I want to send commands over UDP, so over the internet to the board&amp;hellip; since the board already has built-in Wi-Fi, we&amp;rsquo;re going to utilize that.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Motor and servo control is centralized through a PCA9685 PWM driver. This single module generates PWM signals for both the five servo motors in the arm and the brushed DC motors driving the wheels. Two L298N motor driver modules handle the four geared DC motors, giving the robot full four-wheel drive and, as testing later shows, a surprising amount of torque.&lt;/p&gt;
&lt;p&gt;One subtle but important design decision involved PWM frequency. Servo motors and DC motor drivers prefer different operating ranges, but Milos settled on a compromise of around 300 Hz, noting that &amp;ldquo;at around 300 hertz everything will be happy, both the motor drivers and all of the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Power is supplied by a 12 V drill battery mounted at the rear of the robot. A robust DC-DC buck converter steps this down to 5 V for the servos and logic, while the drive motors receive the full battery voltage. An emergency stop switch doubles as a main power switch, an essential safety feature given the platform&amp;rsquo;s weight and torque.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar2"&gt;Core Mechanics&lt;/h2&gt;
&lt;p&gt;If there is one area where this project demanded the most effort, it was the mechanical design. Milos is candid about this, describing the mechanical side as &amp;ldquo;actually kind of complicated and a lot of work.&amp;rdquo; The challenge was to balance strength, accessibility, and flexibility.&lt;/p&gt;
&lt;p&gt;The main chassis is constructed from standard 20&amp;times;20 and 40&amp;times;20 T-slot aluminum extrusions. These are fastened with machine screws to form a stiff, rectangular frame that resists twisting while remaining easy to modify. This choice was intentional: aluminum extrusions are widely available, easy to cut, and ideal for iterative projects.&lt;/p&gt;
&lt;p&gt;Secondary structures, mounts, and brackets are 3D printed. PLA was used for this version, with the understanding that higher-performance materials such as PC or PA may replace it later, particularly for gears. This hybrid approach keeps the build approachable while still allowing custom geometry where needed.&lt;/p&gt;
&lt;p&gt;To protect the motors from excessive radial loads, each wheel is mounted on its own axle made from an M8 bolt, supported by dual bearings. This design ensures that the bearings, rather than the motor shafts, absorb the mechanical stress. It also makes maintenance easier, since bearings are inexpensive and simple to replace.&lt;/p&gt;
&lt;p&gt;The finished platform weighs around 7 kg, giving it a low center of gravity but also making power and traction critical considerations. Ground clearance is modest, and while the robot performs well on smooth surfaces, Milos observes that &amp;ldquo;it doesn&amp;rsquo;t like surfaces like the carpet because they are extremely grippy,&amp;rdquo; leading to wheel scrub and vibration.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar3"&gt;Control and Software&lt;/h2&gt;
&lt;p&gt;On the software side, the project is split cleanly between the robot and the control computer. The microcontroller firmware focuses on receiving UDP packets, parsing a compact binary payload, and translating those values into PWM outputs. As Milos summarizes, &amp;ldquo;what the code for the MCU actually does is it just gets the data over UDP&amp;hellip; and sends the PWM values through the PCA module to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The more complex logic lives on the computer side, written in Python. Two main scripts handle this. One is responsible for reading the gamepad and managing UDP communication. The other implements the control logic that converts joystick inputs into meaningful robot commands.&lt;/p&gt;
&lt;p&gt;For driving, the robot uses a differential (tank) drive model. The left joystick maps directly to forward motion and turning, with the software mixing these inputs into left and right motor commands. This makes the platform intuitive to drive while remaining simple to implement.&lt;/p&gt;
&lt;p&gt;The arm control is where the project becomes significantly more advanced. Instead of commanding individual joints, the software implements both direct and inverse kinematics. Milos explains the motivation clearly: &amp;ldquo;If we want the robot arm to reach this point&amp;hellip; how do we actually even know where the end effector is located? That&amp;rsquo;s called kinematics in robotics.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Direct kinematics calculates the position of the tool center point (TCP) from known joint angles and link lengths. Inverse kinematics does the opposite, solving for joint angles that will place the TCP at a desired coordinate. Even for a simple planar arm, Milos demonstrates that inverse kinematics quickly becomes mathematically heavy, with multiple valid solutions such as elbow-up and elbow-down configurations.&lt;/p&gt;
&lt;p&gt;Rather than reinventing the wheel, the software uses established solving techniques and provides flexibility in how solutions are chosen. Link lengths, joint limits, and servo pulse ranges are explicitly defined in code, ensuring that the mathematical model matches the physical hardware. Calibration data is stored in a JSON file, allowing the arm to be zeroed accurately after assembly. As Milos emphasizes, improper calibration &amp;ldquo;will just add up and there is just a function to actually calibrate the arm so you tell it where the actual zero position is.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To make development safer and more intuitive, a visualization script simulates the arm&amp;rsquo;s motion in real time. This allows kinematic behavior to be inspected before applying commands to the real hardware, and it highlights issues such as jitter and singularities that will eventually need path planning to resolve.&lt;/p&gt;
&lt;p&gt;The control system for the MR21 platform was designed around a clear separation of responsibilities. Low-level, time‑critical tasks run on the robot itself, while higher‑level interpretation, kinematic logic, and user interaction are handled externally. This keeps the embedded side predictable and responsive, while allowing the control logic to evolve rapidly without being constrained by microcontroller resources.&lt;/p&gt;
&lt;p&gt;At the center of the system is a wireless control link. Commands are sent to the robot over Wi‑Fi using UDP, carrying both drive and arm control data in a single, fixed‑size packet. On the robot, the microcontroller&amp;rsquo;s role is intentionally narrow: receive the packet, extract values, and generate PWM outputs via the PCA9685 for the servo motors and motor drivers. As Milos describes it, the board &amp;ldquo;just gets the data over UDP and sends the PWM values to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The packet itself is compact and structured to be easy to parse deterministically. It contains drive motor commands alongside pulse values for the arm servos, allowing the mobile base and arm to be controlled at the same time without additional synchronization logic:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
# uint32 message ID
# int16 left drive motor
# int16 right drive motor
# uint16 servo_1 .. servo_6
# Total payload size: 20 bytes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach avoids the overhead of text-based protocols and ensures consistent timing, which becomes especially important once the arm is moving while the platform is driving.&lt;/p&gt;
&lt;p&gt;For locomotion, the robot uses a differential drive model. Forward motion and turning are combined in software and translated into left and right motor commands. The mixing logic also normalizes the output so that neither side exceeds its allowed range:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
def mix_diff_drive(forward, turn):
    left = forward + turn
    right = forward - turn
    max_mag = max(1.0, abs(left), abs(right))
    left /= max_mag
    right /= max_mag
    return int(left * 100), int(right * 100)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In practice, this gives the robot predictable handling: pushing the joystick forward drives all wheels forward, pushing it sideways causes the robot to rotate in place, and intermediate positions allow smooth combined motion. This becomes particularly noticeable during testing, where the platform&amp;rsquo;s high torque makes abrupt or poorly scaled commands immediately obvious.&lt;/p&gt;
&lt;p&gt;Arm control is handled very differently. Instead of commanding individual joints directly, the software operates in Cartesian space using kinematics. The intent is not to tell each servo where to go, but to tell the arm where the tool should be. As Milos puts it, &amp;ldquo;if we want the robot arm to reach a point in space, the question becomes which joint angles get us there.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To support this, the physical structure of the arm is defined explicitly in software. Link lengths and base offsets are encoded so the mathematical model matches the real hardware:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
LINK1 = 100.0  # shoulder to elbow (mm)
LINK2 = 100.0  # elbow to wrist (mm)
LINK3 = 100.0  # wrist to tool (mm)
BASE_HEIGHT = 64.52
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Joint limits are also defined for every axis, both in terms of angular range and the corresponding PWM values. This prevents the solver from generating solutions that the hardware cannot physically achieve and protects the servos from being driven into hard stops.&lt;/p&gt;
&lt;p&gt;A practical challenge with this kind of system is calibration. Servos must be mounted at known reference angles during assembly, and even small errors at this stage affect every kinematic calculation that follows. To account for this, the software supports per‑joint offset values that can be adjusted and stored after assembly. These offsets are applied automatically whenever kinematic solutions are converted into servo commands, allowing the arm to be aligned accurately without repeated mechanical rework.&lt;/p&gt;
&lt;p&gt;Before running movements on the real hardware, the same kinematic logic is also used in a visualization tool. This renders the arm&amp;rsquo;s motion on screen and makes it easier to spot unreachable targets, singularities, or jitter in the solution. Some uneven motion remains, particularly near the limits of reach, which Milos notes is expected without additional path planning. At this stage, the focus is on correctness and clarity rather than perfectly smooth trajectories.&lt;/p&gt;
&lt;p&gt;Taken together, the control software reflects a deliberate design philosophy. The robot executes commands simply and reliably, while the complexity lives where it is easier to debug, visualize, and extend. This structure not only makes the current platform easier to understand and reproduce, but also leaves a clear path toward future upgrades such as onboard computation, more advanced motion planning, or autonomous behaviours.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar4"&gt;Practical Testing&lt;/h2&gt;
&lt;p&gt;With the electronics wired, software running, and mechanics assembled, the robot was finally tested as a complete system. Driving performance matched expectations: strong acceleration, the ability to turn on the spot, and enough torque to pull several kilograms, albeit with wheel slip.&lt;/p&gt;
&lt;p&gt;The arm and base can be controlled simultaneously, a key milestone that demonstrates the viability of the overall architecture. While movements can still be jittery&amp;mdash;particularly along the Z-axis&amp;mdash;the system behaves predictably once calibrated.&lt;/p&gt;
&lt;p&gt;To cap off testing, Milos put the robot to a practical, if slightly humorous, task: feeding his dog. The experiment proved that the robot can manipulate objects in the real world, even if the results were messy. The verdict was mixed, but the demonstration underscored the platform&amp;rsquo;s potential.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar5"&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;This version of the robot is best described as a foundation. Future plans include replacing the wheels with mecanum wheels, adding sensors for mapping and navigation, and integrating an embedded computer such as a Raspberry Pi or NVIDIA Jetson. With that in place, running ROS or ROS 2 becomes a realistic next step.&lt;/p&gt;
&lt;p&gt;As Milos notes, once mobility, perception, and higher-level planning are combined, &amp;ldquo;we&amp;rsquo;re going to have a rather nice platform.&amp;rdquo; This project does not aim to be a finished product, but rather a flexible robotics playground, one that invites iteration, experimentation, and continual improvement.&lt;/p&gt;
&lt;h2 id="mcetoc_1jpl0u1ar6"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151377"&gt;Episode 716 Resources - Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/71909/making-a-stronger-affordable-diy-robot-arm-with-3d-printing-with-raspberry-pi-pico----episode-662"&gt;Making a Stronger Affordable DIY Robot Arm with 3D Printing with Raspberry Pi Pico -- Episode 662&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: e14presents_milosrasic, friday_release&lt;/div&gt;
</description></item><item><title>Designing a Mobile Robot Platform with Inverse Kinematics and Wireless Control</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72067/designing-a-mobile-robot-platform-with-inverse-kinematics-and-wireless-control/revision/1</link><pubDate>Wed, 27 May 2026 14:37:12 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6e2682a7-8e1c-4db3-ad28-039762ae48c3</guid><dc:creator>cstanton</dc:creator><description>Revision 1 posted to Documents by cstanton on 5/27/2026 2:37:12 PM&lt;br /&gt;
&lt;p&gt;This project marks a natural but ambitious evolution of Milos&amp;rsquo;s earlier work on a desktop robotic arm. What began as an exploration of servo-driven motion, joint recording, and basic trajectory playback has now been transformed into a fully mobile robotic platform that combines mechanics, electronics, and software into a cohesive system.&lt;/p&gt;
&lt;p&gt;Rather than treating the robot arm and the base as separate challenges, Milos approached this build as a single platform problem: how to create a robot that can move through space, manipulate objects with intent, and serve as a foundation for far more advanced autonomy in the future.&lt;/p&gt;
&lt;h2&gt;Idea and Plan&lt;/h2&gt;
&lt;p&gt;The starting point for this build was a clear limitation of the previous project. While the arm could replay learned movements, it was fixed in place and constrained to joint-by-joint control. As Milos puts it, the earlier version worked, &amp;ldquo;but in the end it&amp;rsquo;s just a robot arm.&amp;rdquo; The next logical step was mobility.&lt;/p&gt;
&lt;p&gt;The core idea was to mount the arm onto a four-wheel-drive base and design everything around modularity. The arm would sit on top of a rigid chassis, with space below reserved for motors, power, and electronics. Two locomotion strategies were planned from the outset: a first version using skid-steer (tank-style) drive, and a second version that would later replace the wheels with mecanum wheels for true omnidirectional movement.&lt;/p&gt;
&lt;p&gt;Crucially, Milos also decided that control needed to move beyond jogging joints or replaying recorded angles. Inverse kinematics would become central to the project, allowing the arm to be commanded in Cartesian space rather than micromanaged servo by servo.&lt;/p&gt;
&lt;h2&gt;Electronics and Heart of the Project&lt;/h2&gt;
&lt;p&gt;At the heart of the electronics is an NXP FRDM-RW612 development board. The choice was deliberate: the board offers ample GPIO, built-in Wi-Fi, and enough processing power that Milos notes he is &amp;ldquo;only scratching the surface with what this can do.&amp;rdquo; For this stage of development, Wi-Fi connectivity and I&amp;sup2;C were the primary features in use.&lt;/p&gt;
&lt;p&gt;Wireless control is handled via a Bluetooth gamepad connected to a laptop. Commands are sent over UDP to the robot, leveraging the board&amp;rsquo;s Wi-Fi to avoid additional communication modules. As Milos explains, &amp;ldquo;I want to send commands over UDP, so over the internet to the board&amp;hellip; since the board already has built-in Wi-Fi, we&amp;rsquo;re going to utilize that.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Motor and servo control is centralized through a PCA9685 PWM driver. This single module generates PWM signals for both the five servo motors in the arm and the brushed DC motors driving the wheels. Two L298N motor driver modules handle the four geared DC motors, giving the robot full four-wheel drive and, as testing later shows, a surprising amount of torque.&lt;/p&gt;
&lt;p&gt;One subtle but important design decision involved PWM frequency. Servo motors and DC motor drivers prefer different operating ranges, but Milos settled on a compromise of around 300 Hz, noting that &amp;ldquo;at around 300 hertz everything will be happy, both the motor drivers and all of the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Power is supplied by a 12 V drill battery mounted at the rear of the robot. A robust DC-DC buck converter steps this down to 5 V for the servos and logic, while the drive motors receive the full battery voltage. An emergency stop switch doubles as a main power switch, an essential safety feature given the platform&amp;rsquo;s weight and torque.&lt;/p&gt;
&lt;h2&gt;Core Mechanics&lt;/h2&gt;
&lt;p&gt;If there is one area where this project demanded the most effort, it was the mechanical design. Milos is candid about this, describing the mechanical side as &amp;ldquo;actually kind of complicated and a lot of work.&amp;rdquo; The challenge was to balance strength, accessibility, and flexibility.&lt;/p&gt;
&lt;p&gt;The main chassis is constructed from standard 20&amp;times;20 and 40&amp;times;20 T-slot aluminum extrusions. These are fastened with machine screws to form a stiff, rectangular frame that resists twisting while remaining easy to modify. This choice was intentional: aluminum extrusions are widely available, easy to cut, and ideal for iterative projects.&lt;/p&gt;
&lt;p&gt;Secondary structures, mounts, and brackets are 3D printed. PLA was used for this version, with the understanding that higher-performance materials such as PC or PA may replace it later, particularly for gears. This hybrid approach keeps the build approachable while still allowing custom geometry where needed.&lt;/p&gt;
&lt;p&gt;To protect the motors from excessive radial loads, each wheel is mounted on its own axle made from an M8 bolt, supported by dual bearings. This design ensures that the bearings, rather than the motor shafts, absorb the mechanical stress. It also makes maintenance easier, since bearings are inexpensive and simple to replace.&lt;/p&gt;
&lt;p&gt;The finished platform weighs around 7 kg, giving it a low center of gravity but also making power and traction critical considerations. Ground clearance is modest, and while the robot performs well on smooth surfaces, Milos observes that &amp;ldquo;it doesn&amp;rsquo;t like surfaces like the carpet because they are extremely grippy,&amp;rdquo; leading to wheel scrub and vibration.&lt;/p&gt;
&lt;h2&gt;Control and Software&lt;/h2&gt;
&lt;p&gt;On the software side, the project is split cleanly between the robot and the control computer. The microcontroller firmware focuses on receiving UDP packets, parsing a compact binary payload, and translating those values into PWM outputs. As Milos summarizes, &amp;ldquo;what the code for the MCU actually does is it just gets the data over UDP&amp;hellip; and sends the PWM values through the PCA module to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The more complex logic lives on the computer side, written in Python. Two main scripts handle this. One is responsible for reading the gamepad and managing UDP communication. The other implements the control logic that converts joystick inputs into meaningful robot commands.&lt;/p&gt;
&lt;p&gt;For driving, the robot uses a differential (tank) drive model. The left joystick maps directly to forward motion and turning, with the software mixing these inputs into left and right motor commands. This makes the platform intuitive to drive while remaining simple to implement.&lt;/p&gt;
&lt;p&gt;The arm control is where the project becomes significantly more advanced. Instead of commanding individual joints, the software implements both direct and inverse kinematics. Milos explains the motivation clearly: &amp;ldquo;If we want the robot arm to reach this point&amp;hellip; how do we actually even know where the end effector is located? That&amp;rsquo;s called kinematics in robotics.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Direct kinematics calculates the position of the tool center point (TCP) from known joint angles and link lengths. Inverse kinematics does the opposite, solving for joint angles that will place the TCP at a desired coordinate. Even for a simple planar arm, Milos demonstrates that inverse kinematics quickly becomes mathematically heavy, with multiple valid solutions such as elbow-up and elbow-down configurations.&lt;/p&gt;
&lt;p&gt;Rather than reinventing the wheel, the software uses established solving techniques and provides flexibility in how solutions are chosen. Link lengths, joint limits, and servo pulse ranges are explicitly defined in code, ensuring that the mathematical model matches the physical hardware. Calibration data is stored in a JSON file, allowing the arm to be zeroed accurately after assembly. As Milos emphasizes, improper calibration &amp;ldquo;will just add up and there is just a function to actually calibrate the arm so you tell it where the actual zero position is.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To make development safer and more intuitive, a visualization script simulates the arm&amp;rsquo;s motion in real time. This allows kinematic behavior to be inspected before applying commands to the real hardware, and it highlights issues such as jitter and singularities that will eventually need path planning to resolve.&lt;/p&gt;
&lt;p&gt;The control system for the MR21 platform was designed around a clear separation of responsibilities. Low-level, time‑critical tasks run on the robot itself, while higher‑level interpretation, kinematic logic, and user interaction are handled externally. This keeps the embedded side predictable and responsive, while allowing the control logic to evolve rapidly without being constrained by microcontroller resources.&lt;/p&gt;
&lt;p&gt;At the center of the system is a wireless control link. Commands are sent to the robot over Wi‑Fi using UDP, carrying both drive and arm control data in a single, fixed‑size packet. On the robot, the microcontroller&amp;rsquo;s role is intentionally narrow: receive the packet, extract values, and generate PWM outputs via the PCA9685 for the servo motors and motor drivers. As Milos describes it, the board &amp;ldquo;just gets the data over UDP and sends the PWM values to the motors or the servo motors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The packet itself is compact and structured to be easy to parse deterministically. It contains drive motor commands alongside pulse values for the arm servos, allowing the mobile base and arm to be controlled at the same time without additional synchronization logic:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
# uint32 message ID
# int16 left drive motor
# int16 right drive motor
# uint16 servo_1 .. servo_6
# Total payload size: 20 bytes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach avoids the overhead of text-based protocols and ensures consistent timing, which becomes especially important once the arm is moving while the platform is driving.&lt;/p&gt;
&lt;p&gt;For locomotion, the robot uses a differential drive model. Forward motion and turning are combined in software and translated into left and right motor commands. The mixing logic also normalizes the output so that neither side exceeds its allowed range:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
def mix_diff_drive(forward, turn):
    left = forward + turn
    right = forward - turn
    max_mag = max(1.0, abs(left), abs(right))
    left /= max_mag
    right /= max_mag
    return int(left * 100), int(right * 100)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In practice, this gives the robot predictable handling: pushing the joystick forward drives all wheels forward, pushing it sideways causes the robot to rotate in place, and intermediate positions allow smooth combined motion. This becomes particularly noticeable during testing, where the platform&amp;rsquo;s high torque makes abrupt or poorly scaled commands immediately obvious.&lt;/p&gt;
&lt;p&gt;Arm control is handled very differently. Instead of commanding individual joints directly, the software operates in Cartesian space using kinematics. The intent is not to tell each servo where to go, but to tell the arm where the tool should be. As Milos puts it, &amp;ldquo;if we want the robot arm to reach a point in space, the question becomes which joint angles get us there.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To support this, the physical structure of the arm is defined explicitly in software. Link lengths and base offsets are encoded so the mathematical model matches the real hardware:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;
LINK1 = 100.0  # shoulder to elbow (mm)
LINK2 = 100.0  # elbow to wrist (mm)
LINK3 = 100.0  # wrist to tool (mm)
BASE_HEIGHT = 64.52
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Joint limits are also defined for every axis, both in terms of angular range and the corresponding PWM values. This prevents the solver from generating solutions that the hardware cannot physically achieve and protects the servos from being driven into hard stops.&lt;/p&gt;
&lt;p&gt;A practical challenge with this kind of system is calibration. Servos must be mounted at known reference angles during assembly, and even small errors at this stage affect every kinematic calculation that follows. To account for this, the software supports per‑joint offset values that can be adjusted and stored after assembly. These offsets are applied automatically whenever kinematic solutions are converted into servo commands, allowing the arm to be aligned accurately without repeated mechanical rework.&lt;/p&gt;
&lt;p&gt;Before running movements on the real hardware, the same kinematic logic is also used in a visualization tool. This renders the arm&amp;rsquo;s motion on screen and makes it easier to spot unreachable targets, singularities, or jitter in the solution. Some uneven motion remains, particularly near the limits of reach, which Milos notes is expected without additional path planning. At this stage, the focus is on correctness and clarity rather than perfectly smooth trajectories.&lt;/p&gt;
&lt;p&gt;Taken together, the control software reflects a deliberate design philosophy. The robot executes commands simply and reliably, while the complexity lives where it is easier to debug, visualize, and extend. This structure not only makes the current platform easier to understand and reproduce, but also leaves a clear path toward future upgrades such as onboard computation, more advanced motion planning, or autonomous behaviours.&lt;/p&gt;
&lt;h2&gt;Practical Testing&lt;/h2&gt;
&lt;p&gt;With the electronics wired, software running, and mechanics assembled, the robot was finally tested as a complete system. Driving performance matched expectations: strong acceleration, the ability to turn on the spot, and enough torque to pull several kilograms, albeit with wheel slip.&lt;/p&gt;
&lt;p&gt;The arm and base can be controlled simultaneously, a key milestone that demonstrates the viability of the overall architecture. While movements can still be jittery&amp;mdash;particularly along the Z-axis&amp;mdash;the system behaves predictably once calibrated.&lt;/p&gt;
&lt;p&gt;To cap off testing, Milos put the robot to a practical, if slightly humorous, task: feeding his dog. The experiment proved that the robot can manipulate objects in the real world, even if the results were messy. The verdict was mixed, but the demonstration underscored the platform&amp;rsquo;s potential.&lt;/p&gt;
&lt;h2&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;This version of the robot is best described as a foundation. Future plans include replacing the wheels with mecanum wheels, adding sensors for mapping and navigation, and integrating an embedded computer such as a Raspberry Pi or NVIDIA Jetson. With that in place, running ROS or ROS 2 becomes a realistic next step.&lt;/p&gt;
&lt;p&gt;As Milos notes, once mobility, perception, and higher-level planning are combined, &amp;ldquo;we&amp;rsquo;re going to have a rather nice platform.&amp;rdquo; This project does not aim to be a finished product, but rather a flexible robotics playground, one that invites iteration, experimentation, and continual improvement.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: e14presents_milosrasic, friday_release&lt;/div&gt;
</description></item><item><title>Project Video Release Archive</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3748/project-video-release-archive/revision/213</link><pubDate>Thu, 21 May 2026 14:06:50 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:59ab0abe-b32d-47f9-b00c-4b73b01f3bd8</guid><dc:creator>e14sbhargav</dc:creator><description>Revision 213 posted to Documents by e14sbhargav on 5/21/2026 2:06:50 PM&lt;br /&gt;
&lt;div style="background:#ffffff;border-bottom:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-icid="e14" data-e14adj="t"&gt;&lt;img alt="image"  src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;span style="font-size:18px;font-weight:bold;"&gt;Project Video Releases&lt;/span&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" style="color:#f17c0e;" href="/challengesprojects/element14-presents/" data-icid="e14" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;span style="padding-right:5px;"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" style="color:#f17c0e;" href="/challengesprojects/element14-presents/vcp-program/" data-icid="e14" data-e14adj="t"&gt;Meet the Hosts&lt;/a&gt;&lt;/span&gt;&lt;span style="padding-right:5px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a href="/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays" data-e14adj="t"&gt;Episode 715: How to Build a Reaction-Based Catch Game Using Arduino and Relays&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a href="/challenges-projects/element14-presents/project-videos/w/documents/72062/find-emi-fast-with-a-low-cost-automated-way-to-see-where-your-pcb-radiates" data-e14adj="t"&gt;Episode 714: Find EMI Fast with a Low‑Cost, Automated Way to See Where Your PCB Radiates&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 713:" href="/challenges-projects/element14-presents/project-videos/w/documents/72061/how-to-make-an-led-sculpture-react-to-sound-with-micro-bit" data-e14adj="t"&gt;Episode 713:&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72061/how-to-make-an-led-sculpture-react-to-sound-with-micro-bit"&gt;How to Make an LED Sculpture React to Sound with micro:bit&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 712: Designing a More Capable Dual Motor Driver Beyond the L298N (What worked and what didn't)" href="/challenges-projects/element14-presents/project-videos/w/documents/72060/designing-a-more-capable-dual-motor-driver-beyond-the-l298n-what-worked-and-what-didn-t" data-e14adj="t"&gt;Episode 712: Designing a More Capable Dual Motor Driver Beyond the L298N (What worked and what didn&amp;#39;t)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 711: Modern Edge AI on Raspberry Pi 5 for an Animatronic Tracker: Vision Acceleration with AI Hat+ and AI Camera" href="/challenges-projects/element14-presents/project-videos/w/documents/72059/modern-edge-ai-on-raspberry-pi-5-for-an-animatronic-tracker-vision-acceleration-with-ai-hat-and-ai-camera" data-e14adj="t"&gt;Episode 711: Modern Edge AI on Raspberry Pi 5 for an Animatronic Tracker: Vision Acceleration with AI Hat+ and AI Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 710: Your First Real PCB in KiCad : An Arduino Compatible Board Designed from Scratch" href="/challenges-projects/element14-presents/project-videos/w/documents/72057/your-first-real-pcb-in-kicad-an-arduino-compatible-board-designed-from-scratch" data-e14adj="t"&gt;Episode 710: Your First Real PCB in KiCad : An Arduino Compatible Board Designed from Scratch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 709: Was that my Number!? Fixing Caf&amp;eacute; Order Chaos with a Raspberry Pi Announcer" href="/challenges-projects/element14-presents/project-videos/w/documents/72055/was-that-my-number-fixing-cafe-order-chaos-with-a-raspberry-pi-announcer" data-e14adj="t"&gt;Episode 709: Was that my Number!? Fixing Caf&amp;eacute; Order Chaos with a Raspberry Pi Announcer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 708: Reviving a Vintage LED Sign with Arduino and PS/2 Control" href="/challenges-projects/element14-presents/project-videos/w/documents/72042/reviving-a-vintage-led-sign-with-arduino-and-ps-2-control----episode-708" data-e14adj="t"&gt;Episode 708: Reviving a Vintage LED Sign with Arduino and PS/2 Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 707: Building a Circuit Sculpture with LED Filament" href="/challenges-projects/element14-presents/project-videos/w/documents/72038/building-a-circuit-sculpture-with-led-filament----episode-707" data-e14adj="t"&gt;Episode 707: Building a Circuit Sculpture with LED Filament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72037/esp32-rfid-smart-access-control-in-a-simple-diy-build----episode-706"&gt;Episode 706: ESP32 + RFID = Smart Access Control in a Simple DIY Build&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 705: Building a Super Smooth Z-Scale Train Controller with Arduino" href="/challenges-projects/element14-presents/project-videos/w/documents/72036/building-a-super-smooth-z-scale-train-controller-with-arduino----episode-705" data-e14adj="t"&gt;Episode 705: Building a Super Smooth Z-Scale Train Controller with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 704: Hacking an IKEA Desk into a Programmable Electric Workstation" href="/challenges-projects/element14-presents/project-videos/w/documents/72035/hacking-an-ikea-desk-into-a-programmable-electric-workstation----episode-704" data-e14adj="t"&gt;Episode 704: Hacking an IKEA Desk into a Programmable Electric Workstation&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 703: How to Set Up the Raspberry Pi 5: Complete Beginner Step-by-Step Guide" href="/challenges-projects/element14-presents/project-videos/w/documents/72034/how-to-set-up-the-raspberry-pi-5-complete-beginner-step-by-step-guide----episode-703" data-e14adj="t"&gt;Episode 703: How to Set Up the Raspberry Pi 5: Complete Beginner Step-by-Step Guide&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 702: Build Your Own USB Looper for Serial Debugging and File Transfer" href="/challenges-projects/element14-presents/project-videos/w/documents/72033/build-your-own-usb-looper-for-serial-debugging-and-file-transfer----episode-702" data-e14adj="t"&gt;Episode 702: Build Your Own USB Looper for Serial Debugging and File Transfer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)" href="/challenges-projects/element14-presents/project-videos/w/documents/72031/from-snooze-to-launch-the-arduino-powered-lego-alarm-clock-inspired-by-artemis-2----episode-701" data-e14adj="t"&gt;Episode 701: From Snooze to Launch: The Arduino-Powered LEGO Alarm Clock Inspired by Artemis 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)" href="/challenges-projects/element14-presents/project-videos/w/documents/72030/how-voice-recognition-works-on-raspberry-pi-and-why-it-s-easy-to-break----episode-700" data-e14adj="t"&gt;Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72021/gimmegpio-a-simple-way-to-get-gpio-on-laptops-and-desktops----episode-699" data-e14adj="t"&gt;Episode 699:&amp;nbsp;GimmeGPIO: A Simple Way to Get GPIO on Laptops and Desktops&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72020/building-a-practical-electronics-workbench-for-makers-and-engineers----episode-698" data-e14adj="t"&gt;Episode 698:&amp;nbsp;Building a Practical Electronics Workbench for Makers and Engineers&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72009/a-smart-safe-3d-printer-cabinet-using-raspberry-pi-and-node-red----episode-697" data-e14adj="t"&gt;Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/72008/how-a-pulse-metal-detector-works-and-how-to-build-one" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 696: How a Pulse Metal Detector Works, and How to Build One&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/72007/a-diy-test-and-programming-rig-built-for-small-batch-electronics-production----episode-695" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 695: A DIY Test and Programming Rig Built for Small-Batch Electronics Production&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/secret-element14-presents/w/documents/72001/earn-your-fitness-reward-with-a-smart-cookie-jar-using-strava-and-esp32----episode-694" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 694: Earn Your Fitness Reward with a Smart Cookie Jar Using Strava and ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71999/open-source-multicolour-3d-printing-upgrade-clem-s-3d-chameleon-remix----episode-693" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 693: Open-Source Multicolour 3D Printing Upgrade: Clem&amp;rsquo;s 3D Chameleon Remix&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71995/build-your-own-esp32-fitness-heart-rate-monitor-tracker----episode-692" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 692: Build Your own ESP32 Fitness Heart Rate Monitor / Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71994/how-accurate-is-bluetooth-channel-sounding-a-deep-dive-with-the-nrf54l15" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 691: How Accurate Is Bluetooth Channel Sounding? A Deep Dive with the nRF54L15&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71993/meet-the-platypusbot-now-powered-by-raspberry-pi-ros----episode-690" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 690: Meet the PlatypusBot: Now Powered by Raspberry Pi &amp;amp; ROS&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71992/how-clem-built-a-handheld-sci-fi-communicator-that-really-works----episode-689" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 689: How Clem Built a Handheld Sci-Fi Communicator That Really Works&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71990/building-the-cylon-pumpkin-combining-a-larson-scanner-and-vocoder-for-halloween----episode-688" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 688: Building the Cylon Pumpkin: Combining a Larson Scanner and Vocoder for Halloween&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71989/turning-a-10-air-fryer-into-an-arduino-powered-filament-dryer----episode-687" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 687: Turning a $10 Air Fryer into an Arduino powered Filament Dryer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71988/creepy-motion-activated-painting-you-can-build-yourself----episode-686" data-icid="e14" data-e14adj="t"&gt;Episode 686: Creepy Motion-Activated Painting You Can Build Yourself&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71987/when-your-body-becomes-the-instrument-clem-builds-the-drone-synth----episode-685" data-icid="e14" data-e14adj="t"&gt;Episode 685: When Your Body Becomes the Instrument: Clem Builds the &amp;ldquo;Dr&amp;ouml;ne&amp;rdquo; Synth&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71985/building-an-audio-reactive-led-matrix-with-a-micro-bit-and-neopixels----episode-684" data-icid="e14" data-e14adj="t"&gt;Episode 684: Building an Audio Reactive LED Matrix with a micro:bit and NeoPixels&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71984/how-to-make-a-portable-emergency-radio-with-an-arduino-nano-in-a-mint-tin----episode-683" data-icid="e14" data-e14adj="t"&gt;Episode 683: How to Make a Portable Emergency Radio with an Arduino Nano in a Mint TinT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71974/diy-rf-modulator-raspberry-pi-pico-gaming-on-a-sony-watchman-fd-10a-crt----episode-682" data-icid="e14" data-e14adj="t"&gt;Episode 682: DIY RF Modulator + Raspberry Pi Pico = Gaming on a Sony Watchman FD-10A CRT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71963/turn-anything-into-an-arduino-module-reusing-everyday-electronics----episode-681" data-icid="e14" data-e14adj="t"&gt;Episode 681: Turn anything into an Arduino Module: Reusing Everyday Electronics&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71961/from-kit-to-custom-design-building-a-tube-based-fm-radio----episode-680" data-icid="e14" data-e14adj="t"&gt;Episode 680: From Kit to Custom Design: Building a Tube-Based FM Radio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71960/esp32-duolingo-owl-project-never-miss-a-lesson-again----episode-679" data-icid="e14" data-e14adj="t"&gt;Episode 679: ESP32 Duolingo Owl Project: Never Miss a Lesson Again&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71959/open-source-attiny3226-arduino-calculator-hardware-case-code-build----episode-678" data-icid="e14" data-e14adj="t"&gt;Episode 678: Open Source ATtiny3226 Arduino Calculator &amp;ndash; Hardware, Case &amp;amp; Code Build&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71955/make-your-own-vocoder-with-teensy-4-0---voice-of-a-cylon----episode-677" data-icid="e14" data-e14adj="t"&gt;Episode 677: Make Your Own Vocoder with Teensy 4.0 - Voice of a Cylon?!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71954/i-tried-building-16-attiny-robots-with-vibration-motors-it-was-a-disaster----episode-676" data-icid="e14" data-e14adj="t"&gt;Episode 676: I Tried Building 16 ATtiny Robots with Vibration Motors &amp;ndash; It Was a Disaster&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71953/avoid-conflict-with-this-esp32-defcon-task-tracker----episode-675" data-icid="e14" data-e14adj="t"&gt;Episode 675:Avoid Conflict with this ESP32 Defcon Task Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71947/building-an-open-source-blood-pressure-heart-signal-monitor----episode-674" data-icid="e14" data-e14adj="t"&gt;Episode 674: Building an Open Source Blood Pressure &amp;amp; Heart Signal Monitor&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71942/building-an-esp32-powered-warhammer-40k-rhino-with-dynamic-led-effects----episode-673" data-icid="e14" data-e14adj="t"&gt;Episode 673: Building an ESP32 Powered Warhammer 40k Rhino with Dynamic LED Effects!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71936/building-an-autonomous-lego-train-with-circuitpython-and-lidar----episode-672" data-icid="e14" data-e14adj="t"&gt;Episode 672: Building an Autonomous LEGO Train with CircuitPython and LIDAR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71934/platypusbot---scavenging-for-robotics-parts----episode-671" data-icid="e14" data-e14adj="t"&gt;Episode 671: PlatypusBot - Scavenging for Robotics Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71927/build-a-larson-scanner-with-sound-using-an-esp32----episode-670" data-icid="e14" data-e14adj="t"&gt;Episode 670: Build your own Larson Scanner&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71926/creating-an-esd-or-lightning-detector----episode-669" data-icid="e14" data-e14adj="t"&gt;Episode 669: Creating an ESD (Or Lightning!) Detector!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71925/designing-an-arduino-pid-controlled-micro-drone----episode-668" data-icid="e14" data-e14adj="t"&gt;Episode 668: Designing an Arduino PID Controlled Micro Drone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71921/emulating-a-speech-synthesis-chip-with-an-esp32----episode-667" data-icid="e14" data-e14adj="t"&gt;Episode 667: Emulating a Speech Synthesis Chip with an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71920/how-far-can-i2c-go----episode-666" data-icid="e14" data-e14adj="t"&gt;Episode 666: How Far Can I2C Go?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71919/raspberry-pi-ai-tracking-eye-of-sauron---ai-al-barad-dur---episode-665" data-icid="e14" data-e14adj="t"&gt;Episode 665: Raspberry Pi AI Tracking Eye of Sauron - AI AL Barad Dur&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71915/learn-how-to-make-a-photo-booth-with-the-esp32-and-telegram-automation----episode-664" data-icid="e14" data-e14adj="t"&gt;Episode 664: Learn how to Make a Photo Booth with the ESP32 and Telegram Automation!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71911/upcycling-a-vintage-microphone-into-an-emergency-radio-system----episode-663" data-icid="e14" data-e14adj="t"&gt;Episode 663: Upcycling a Vintage Microphone into an Emergency Radio System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71909/making-a-stronger-affordable-diy-robot-arm-with-3d-printing-with-raspberry-pi-pico----episode-662" data-icid="e14" data-e14adj="t"&gt;Episode 662: Making a Stronger Affordable DIY Robot Arm with 3D Printing with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71904/make-your-own-led-wrist-watch----episode-661" data-icid="e14" data-e14adj="t"&gt;Episode 661: Clem makes his own LED Wristwatch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71846/lofi-beats-to-solder-to----episode-660" data-icid="e14" data-e14adj="t"&gt;Episode 660: LoFi Beats to Solder To&lt;/a&gt;&lt;/p&gt;
&lt;p style="clear:both;margin:0;padding:0px;padding-top:12px;"&gt;&lt;a title="Episode 659:&amp;nbsp;DIY Single Board Computer with ESP32 and Raspberry Pi Pico" href="/challenges-projects/element14-presents/project-videos/w/documents/71844/diy-single-board-computer-with-esp32-and-raspberry-pi-pico----episode-659" data-e14adj="t"&gt;Episode 659:&amp;nbsp;DIY Single Board Computer with ESP32 and Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71841/a-smart-youtube-counter-with-an-audio-analyzer---episode---658" data-icid="e14" data-e14adj="t"&gt;Episode 658: A Smart Youtube Counter With An Audio Analyzer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71833/how-to-control-a-lego-mindstorms-kit-with-ai-and-raspberry-pi-5----episode-657" data-icid="e14" data-e14adj="t"&gt;Episode 657: How to Control a LEGO Mindstorms kit with AI and Raspberry Pi 5&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71831/diy-jig-for-your-laser-cutter-with-custom-arduino-automation----episode-656" data-icid="e14" data-e14adj="t"&gt;Episode 656: DIY Jig for your Laser Cutter with Custom Arduino Automation&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71810/diy-hot-plate-for-smd-soldering-using-raspberry-pi-pico----episode-655" data-icid="e14" data-e14adj="t"&gt;Episode 655: DIY Hot Plate for SMD Soldering Using Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71801/how-do-battlebots-work-in-the-pit-with-hypershock----episode-654" data-icid="e14" data-e14adj="t"&gt;Episode 654: How Do BattleBots Work? In the Pit with HyperShock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71797/edge-lit-7-segment-display-clock-using-raspberry-pi-pico----episode-653" data-icid="e14" data-e14adj="t"&gt;Episode 653: Edge-lit 7-Segment Display Clock Using Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71793/smart-windows-and-blinds-with-arduino-and-raspberry-pi-pico----episode-652" data-icid="e14" data-e14adj="t"&gt;Episode 652: Smart Windows and Blinds with Arduino and Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71784/design-for-manufacturing---project-to-product-by-modifying-off-the-shelf-cases----episode-651" data-icid="e14" data-e14adj="t"&gt;Episode 651: Design for Manufacturing - Project to Product by Modifying Off-the-Shelf Cases&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/46432/using-nordic-s-nrf7002-my-dehumidifier-tells-me-when-it-s-full----episode-650" data-icid="e14" data-e14adj="t"&gt;Episode 650: Using Nordic&amp;#39;s nRF7002, My Dehumidifier Tells Me When It&amp;#39;s Full!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29545/giant-retro-gaming-magic-mirror-with-a-raspberry-pi-5----episode-649" data-icid="e14" data-e14adj="t"&gt;Episode 649: Giant Retro Gaming Magic Mirror with a Raspberry Pi 5!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29540/home-ai-image-generation-server-with-lattepanda-and-stable-diffusion----episode-648" data-icid="e14" data-e14adj="t"&gt;Episode 648: Home AI Image Generation Server with LattePanda and Stable Diffusion&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29537/building-an-open-source-tool-for-cave-surveying----episode-647" data-icid="e14" data-e14adj="t"&gt;Episode 647: Building an Open-Source Tool for Cave Surveying&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28802/creating-a-digital-roulette-table-with-an-esp32-devkit----episode-646" data-icid="e14" data-e14adj="t"&gt;Episode 646: Creating a Digital Roulette Table with an ESP32 DevKit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28438/practical-diy-pi-pico-current-load-circuits----episode-645" data-icid="e14" data-e14adj="t"&gt;Episode 645: Practical DIY Pi Pico Current Load Circuits&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28421/turning-a-raspberry-pi-pico-into-a-gpu----episode-644" data-icid="e14" data-e14adj="t"&gt;Episode 644: Turning a Raspberry Pi Pico into a GPU!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28418/making-a-tribble-that-detects-klingons----episode-643" data-icid="e14" data-e14adj="t"&gt;Episode 643: Making a Tribble that Detects Klingons&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28416/making-a-time-lapse-camera-with-a-raspberry-pi-5----episode-642" data-icid="e14" data-e14adj="t"&gt;Episode 642: Making a Time-lapse Camera with a Raspberry Pi 5&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28409/moon-phase-display-with-raspberry-pi-pico----episode-641" data-icid="e14" data-e14adj="t"&gt;Episode 641: Moon Phase Display with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28407/tinkering-vs-engineering-can-you-build-a-laptop-from-scratch----episode-640" data-icid="e14" data-e14adj="t"&gt;Episode 640: Tinkering vs Engineering: Can You Build a Laptop from Scratch?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28405/off-grid-remote-generator-starter----episode-639" data-icid="e14" data-e14adj="t"&gt;Episode 639: Off-Grid Remote Generator Starter?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28387/rp2040-pcb-design-turn-on-and-debug---how-hard-could-it-be----episode-638" data-icid="e14" data-e14adj="t"&gt;Episode 638: RP2040 PCB: Design, Turn-On, and Debug - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28386/making-music-with-a-lego-guitar-and-capacitive-touch----episode-637" data-icid="e14" data-e14adj="t"&gt;Episode 637: Making Music with a Lego Guitar and Capacitive Touch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28384/creating-an-imu-based-3d-mouse-with-an-esp32-s3----episode-636" data-icid="e14" data-e14adj="t"&gt;Episode 636: Creating an IMU based 3D Mouse with an ESP32-S3&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28382/vintage-electronics-exploration-with-a-bally-cypress-gardens-bingo-machine---episode-635" data-icid="e14" data-e14adj="t"&gt;Episode 635: Vintage Electronics Exploration with a Bally Cypress Gardens Bingo Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28381/craft-a-festive-led-christmas-sweater-featuring-the-attiny416----episode-634" data-icid="e14" data-e14adj="t"&gt;Episode 634: Craft a Festive LED Christmas Sweater Featuring the ATtiny416&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28376/spying-under-the-christmas-tree-with-an-arduino-powered-ornament----episode-633" data-icid="e14" data-e14adj="t"&gt;Episode 633: Spying Under the Christmas Tree with an Arduino-powered Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28374/revamping-old-school-pinball-with-an-esp32----episode-632" data-icid="e14" data-e14adj="t"&gt;Episode 632: Revamping Old School Pinball with an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28372/all-purpose-debugging-a-practical-universal-screen-with-lcd-displays----episode-631" data-icid="e14" data-e14adj="t"&gt;Episode 631: All-Purpose Debugging: A Practical Universal Screen with LCD Displays&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28370/mega-iie-first-fully-functional-computer-built-around-the-apple-mega-ii-chip----episode-630" data-icid="e14" data-e14adj="t"&gt;Episode 630: Mega IIe: First Fully Functional Computer built around the Apple Mega-II Chip&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28366/backpack-splash-mark-s-water-gun-upgrade-for-epic-outdoor-water-wars----episode-629" data-icid="e14" data-e14adj="t"&gt;Episode 629: Backpack Splash: Mark&amp;#39;s Water Gun Upgrade for Epic Outdoor Water Wars!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28361/affordable-diy-robot-arm-a-deep-dive-into-3d-printing-and-servo-motors----episode-628" data-icid="e14" data-e14adj="t"&gt;Episode 628: Affordable DIY Robot Arm - A Deep Dive into 3D Printing and Servo Motors&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28353/creating-sudostick---from-prototype-to-product----episode-627" data-icid="e14" data-e14adj="t"&gt;Episode 627: Creating sudostick - From Prototype to Product&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28351/catching-you-up-on-bonesnapper-ridge---off-grid-maker-shop----episode-626" data-icid="e14" data-e14adj="t"&gt;Episode 626: Catching you Up on Bonesnapper Ridge - Off-Grid Maker Shop&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28344/interactive-magic-creating-an-enchanted-cauldron----episode-625" data-icid="e14" data-e14adj="t"&gt;Episode 625: Interactive Magic - Creating an Enchanted Cauldron&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28342/episode-624-modding-a-smoke-machine-to-add-motion-detection" data-icid="e14" data-e14adj="t"&gt;Episode 624: Modding A Smoke Machine to Add Motion Detection&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32" data-icid="e14" data-e14adj="t"&gt;Episode 623: How to Run Linux on an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28334/episode-622-building-spooky-fun-halloween-sound-pranks-with-nrf-5340-ble-audio" data-icid="e14" data-e14adj="t"&gt;Episode 622: Building Spooky Fun: Halloween Sound Pranks with nRF 5340 BLE Audio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28330/episode-621-color-sensor-based-water-quality-tracker-diy-environmental-monitoring" data-icid="e14" data-e14adj="t"&gt;Episode 621: Color Sensor-Based Water Quality Tracker: DIY Environmental Monitoring&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28328/episode-620-stey-by-step-guide-to-creating-your-own-speaking-animatronic-hat" data-icid="e14" data-e14adj="t"&gt;Episode 620: Stey-by-Step Guide to Creating your own Speaking Animatronic Hat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28316/episode-619-how-to-build-an-open-source-bluetooth-mechanical-keyboard" data-icid="e14" data-e14adj="t"&gt;Episode 619: How to Build an Open Source Bluetooth Mechanical Keyboard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28308/episode-618-upgrading-my-racing-sim-with-a-force-sensitive-keyboard" data-icid="e14" data-e14adj="t"&gt;Episode 618: Upgrading My Racing Sim with a Force-Sensitive Keyboard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28306/episode-617-simplify-network-monitoring-building-an-esp32-powered-solution" data-icid="e14" data-e14adj="t"&gt;Episode 617: Simplify Network Monitoring: Building an ESP32-Powered Solution&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28300/episode-616-mastering-oven-control-precision-resin-curing-with-diy-modifications---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 616: Mastering Oven Control: Precision Resin Curing with DIY Modifications - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28290/episode-615-building-a-unique-usb-card-reader-from-idea-to-prototype" data-icid="e14" data-e14adj="t"&gt;Episode 615: Building a Unique USB Card Reader: From Idea to Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28278/episode-614-using-pid-proportional-integral-derivative-in-robotics---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 614: Using PID (Proportional-Integral-Derivative) in Robotics - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28274/episode-613-building-a-magic-wand-talking-sound-board" data-icid="e14" data-e14adj="t"&gt;Episode 613: Building a Magic Wand Talking Sound Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28271/episode-612-handheld-basic-computer-in-badge-format-with-the-arduino-uno" data-icid="e14" data-e14adj="t"&gt;Episode 612: Handheld BASIC computer in Badge Format with the Arduino Uno&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28267/episode-611-how-to-run-the-distance-to-the-moon-with-strava-data-and-a-pico-w-board" data-icid="e14" data-e14adj="t"&gt;Episode 611: How to Run the Distance to the Moon with Strava Data and a Pico W Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28214/episode-610-how-to-embroider-with-circuits-and-conductive-thread" data-icid="e14" data-e14adj="t"&gt;Episode 610: How to Embroider with Circuits and Conductive Thread&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28213/episode-609-updating-a-fujitsu-n860-2500-t111-keyboard-to-work-with-a-ps2-standard" data-icid="e14" data-e14adj="t"&gt;Episode 609: Updating a Fujitsu N860-2500-T111 Keyboard to Work with a PS2 Standard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28200/episode-608-making-the-simplest-diy-wind-energy-generator---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 608: Making the Simplest DIY Wind Energy Generator - How Hard Could it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28198/episode-607-from-strava-to-motion-creating-an-arduino-powered-arcade-game-with-running-data" data-icid="e14" data-e14adj="t"&gt;Episode 607: From Strava to Motion: Creating an Arduino-Powered Arcade Game with Running Data&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28184/episode-606-how-to-use-lorawan-to-launch-model-rockets-wirelessly" data-icid="e14" data-e14adj="t"&gt;Episode 606: How to Use LoRaWAN to Launch Model Rockets Wirelessly&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28152/episode-605-arduino-and-leds-make-solitaire-easier-to-solve" data-icid="e14" data-e14adj="t"&gt;Episode 605: Arduino and LEDs Make Solitaire Easier to Solve&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28140/episode-604-charlieplexing-buttons-and-leds-at-the-same-time---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 604: Charlieplexing Buttons and LEDs at the Same Time - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28138/episode-603-create-your-own-air-hockey-table-with-arduino-scoring" data-icid="e14" data-e14adj="t"&gt;Episode 603: Create Your Own Air Hockey Table with Arduino Scoring&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28133/episode-602-diy-ac-dimmer-circuit-control-your-lights-with-a-raspberry-pi-pico" data-icid="e14" data-e14adj="t"&gt;Episode 602: DIY AC Dimmer Circuit: Control Your Lights with a Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28131/episode-601-how-to-reverse-engineer-electronics-building-a-developer-board-for-a-coding-class" data-icid="e14" data-e14adj="t"&gt;Episode 601: How to Reverse Engineer Electronics: Building a Developer Board for a Coding Class&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28126/episode-600-building-my-dream-digital-clock-diy-7-segment-display-with-a-cute-robot-twist" data-icid="e14" data-e14adj="t"&gt;Episode 600: Building My Dream Digital Clock: DIY 7 Segment Display with a Cute Robot Twist!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28117/episode-599-how-to-build-a-spectrum-analyzer-with-lego-bricks-discrete-electronics" data-icid="e14" data-e14adj="t"&gt;Episode 599: How to Build a Spectrum Analyzer with Lego Bricks &amp;amp; Discrete Electronics&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28102/episode-598-how-to-build-a-portable-solar-charged-off-grid-power-station" data-icid="e14" data-e14adj="t"&gt;Episode 598: How To Build a Portable, Solar-Charged Off-Grid Power Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28097/episode-597-how-to-build-a-robot-that-celebrates-good-grades-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 597: How to Build a Robot that Celebrates Good Grades with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28084/episode-596-how-to-build-your-own-voice-assistant-with-mycroft-ai---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 596: How to Build Your Own Voice Assistant with MyCroft AI - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28082/episode-595-member-challenge-accepted---universal-lanc-controller-for-dslr-cameras" data-icid="e14" data-e14adj="t"&gt;Episode 595: Member Challenge Accepted - Universal LANC Controller for DSLR cameras&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28059/episode-594-repairing-a-neewer-660-studio-light---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 594: Repairing a Neewer 660 Studio light - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28057/episode-593-playing-3d-famicom-games-wirelessly-on-the-nes---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 593: Playing 3D Famicom Games Wirelessly on the NES - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28050/episode-592-lamptopus-spinning-led-desk-lamp" data-icid="e14" data-e14adj="t"&gt;Episode 592: Lamptopus: Spinning LED Desk Lamp&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28036/episode-591-building-a-bluetooth-speaker-in-5-minutes---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 591: Building A Bluetooth Speaker in 5 Minutes - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28033/episode-590-seven-kingdoms-open-source-bartop-arcade" data-icid="e14" data-e14adj="t"&gt;Episode 590: Seven Kingdoms Open Source Bartop Arcade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28024/episode-589-upgrading-the-imac-g4-with-a-nuc" data-icid="e14" data-e14adj="t"&gt;Episode 589: Upgrading the iMac G4 With a NUC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28020/episode-588-highlights-from-element14-presents-2022" data-icid="e14" data-e14adj="t"&gt;Episode 588: Highlights from element14 presents 2022&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27982/episode-587-create-your-own-talking-stress-indicator" data-icid="e14" data-e14adj="t"&gt;Episode 587: Create Your Own Talking Stress Indicator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27965/episode-586-diy-open-source-bluetooth-headphones" data-icid="e14" data-e14adj="t"&gt;Episode 586: DIY Open Source Bluetooth Headphones&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27960/episode-585-enhancing-a-magnifying-headband-with-auto-sensing-light" data-icid="e14" data-e14adj="t"&gt;Episode 585: Enhancing a Magnifying Headband with Auto Sensing Light&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27952/episode-584-going-beyond-periodic-wakes-using-wifi-to-revive-a-sleeping-device" data-icid="e14" data-e14adj="t"&gt;Episode 584: Going Beyond Periodic Wakes: Using WiFi to Revive a Sleeping Device&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27934/episode-583-epic-neopixel-birthday-cake" data-icid="e14" data-e14adj="t"&gt;Episode 583: Epic Neopixel Birthday Cake&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27917/episode-582-smart-christmas-decoration-with-raspberry-pi-pico-and-mqtt" data-icid="e14" data-e14adj="t"&gt;Episode 582: Smart Christmas Decoration with Raspberry Pi Pico and MQTT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27900/episode-581-bee-saving-electronics-prototype" data-icid="e14" data-e14adj="t"&gt;Episode 581: Bee-Saving Electronics Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27894/episode-580-diy-low-cost-capacitance-meter-using-a-555-timer" data-icid="e14" data-e14adj="t"&gt;Episode 580: DIY Low Cost Capacitance Meter Using a 555 Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27881/episode-579-how-to-make-a-basketball-auto-score-keeper-using-colour-sensing" data-icid="e14" data-e14adj="t"&gt;Episode 579: How to Make a Basketball Auto Score Keeper Using Colour Sensing&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27879/episode-578-build-your-own-bat-detector-with-analog-parts" data-icid="e14" data-e14adj="t"&gt;Episode 578: Build your Own Bat Detector with Analog Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27862/episode-577-the-game-guy-mini-upgrading-the-unportable-game-boy" data-icid="e14" data-e14adj="t"&gt;Episode 577: The Game Guy Mini, Upgrading the Unportable Game Boy!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27861/episode-576-build-your-own-underwater-drone-with-3d-printed-parts" data-icid="e14" data-e14adj="t"&gt;Episode 576: Build your own Underwater Drone with 3D Printed Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27855/episode-575-how-to-make-a-secured-parcel-pickup-box-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 575: How to Make a Secured Parcel Pickup Box with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27846/episode-574-ghost-rider-halloween-costume" data-icid="e14" data-e14adj="t"&gt;Episode 574: Ghost Rider Halloween Costume&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27836/episode-573-using-a-pi-pico-to-convert-keyboard-input-to-morse-code" data-icid="e14" data-e14adj="t"&gt;Episode 573: Using a Pi Pico to Convert Keyboard Input to Morse Code&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27824/episode-572-how-to-use-an-esp32-camera-to-know-you-ve-got-mail" data-icid="e14" data-e14adj="t"&gt;Episode 572: How to Use an ESP32 &amp;amp; Camera to Know You&amp;#39;ve Got Mail!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27807/episode-571-using-dead-batteries-to-test-for-dead-batteries" data-icid="e14" data-e14adj="t"&gt;Episode 571: Using Dead Batteries to Test for Dead Batteries&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27805/episode-570-making-a-wifi-connected-audio-spectrum-analyzer-with-esp32" data-icid="e14" data-e14adj="t"&gt;Episode 570: Making a WiFi Connected Audio Spectrum Analyzer with ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27803/episode-569-multi-spectrum-uv-resin-curing-station-with-wurth-leds" data-icid="e14" data-e14adj="t"&gt;Episode 569: Multi-Spectrum UV Resin Curing Station with W&amp;uuml;rth LEDs&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27787/episode-568-how-to-make-a-custom-soundboard-with-the-stm32f4-using-freecad" data-icid="e14" data-e14adj="t"&gt;Episode 568: How to Make a Custom Soundboard with the STM32F4 using FreeCAD&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27785/episode-567-synced-neopixel-mickey-mouse-ears" data-icid="e14" data-e14adj="t"&gt;Episode 567: Synced NeoPixel Mickey Mouse Ears&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27760/episode-566-how-to-automate-industrial-welding-positioners-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 566: How to Automate Industrial Welding Positioners with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27758/episode-565-measuring-destructive-testing-force-with-a-20-ton-hydraulic-press" data-icid="e14" data-e14adj="t"&gt;Episode 565: Measuring Destructive Testing Force with a 20 Ton Hydraulic Press&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27734/episode-564-build-a-vu-meter-with-led-pixelated-nixie-tubes" data-icid="e14" data-e14adj="t"&gt;Episode 564: Build a VU Meter with LED Pixelated Nixie Tubes&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27732/episode-563-creating-augmented-reality-circuits-with-meta-quest-2-and-unity" data-icid="e14" data-e14adj="t"&gt;Episode 563: Creating Augmented Reality Circuits with Meta Quest 2 and Unity&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27730/episode-562-pi-home-temperature-monitoring-system" data-icid="e14" data-e14adj="t"&gt;Episode 562: Pi Home Temperature Monitoring System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27728/episode-561-wifi-to-parallel-port-ascii-art-dot-matrix-printer" data-icid="e14" data-e14adj="t"&gt;Episode 561: WiFi to Parallel Port Ascii Art Dot-Matrix Printer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27727/episode-560-raspberry-pi-controlled-lego-train-with-build-hat" data-icid="e14" data-e14adj="t"&gt;Episode 560: Raspberry Pi Controlled Lego Train with Build HAT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27706/episode-559-create-a-magic-makeup-mirror-with-pose-detection" data-icid="e14" data-e14adj="t"&gt;Episode 559: Create a Magic Makeup Mirror with Pose Detection&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27700/episode-558-3d-object-rendering-using-an-fpga" data-icid="e14" data-e14adj="t"&gt;Episode 558: 3D Object Rendering Using an FPGA&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27694/episode-557-create-your-own-handheld-serial-monitor-for-project-debugging" data-icid="e14" data-e14adj="t"&gt;Episode 557: Create your own Handheld Serial Monitor for Project Debugging&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27666/episode-556-hacking-a-hotel-pos-tablet---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 556: Hacking a Hotel POS Tablet - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27664/episode-555-dance-central-pose-estimation-game-with-tensorflow-and-raspberry-pi" data-icid="e14" data-e14adj="t"&gt;Episode 555: Dance Central Pose Estimation Game with Tensorflow and Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27647/episode-554-arduino-uno-mini-limited-edition-led-necklace" data-icid="e14" data-e14adj="t"&gt;Episode 554: Arduino Uno Mini Limited Edition LED Necklace&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27645/episode-553-adding-a-parallel-printer-port-to-an-android-phone" data-icid="e14" data-e14adj="t"&gt;Episode 553: Adding a Parallel Printer Port to an Android Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27616/episode-552---magical-potion-bottle-rack" data-icid="e14" data-e14adj="t"&gt;Episode 552: Magical Potion Bottle Rack&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27614/episode-551-can-we-rebuild-a-1930s-accounting-machine" data-icid="e14" data-e14adj="t"&gt;Episode 551: Can We Rebuild a 1930s Accounting Machine?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27608/episode-550-diy-electronic-controlled-motorized-wheelchair" data-icid="e14" data-e14adj="t"&gt;Episode 550: DIY Electronic Controlled Motorized Wheelchair&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27606/episode-549-using-a-teletype-machine-as-a-usb-printer-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 549: Using a Teletype Machine as a USB Printer with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27597/episode-548-electronic-fidget-cube-building-your-ideas" data-icid="e14" data-e14adj="t"&gt;Episode 548: Electronic Fidget Cube, Building Your Ideas!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27577/episode-547-creating-a-mummy-wake-word-detector-with-raspberry-pi-and-edge-impulse" data-icid="e14" data-e14adj="t"&gt;Episode 547: Creating a &amp;ldquo;Mummy&amp;rdquo; Wake Word Detector with Raspberry Pi and Edge Impulse&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27567/episode-546-mapping-the-outputs-of-a-1960s-teletype-machine---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 546: Mapping the Outputs of a 1960s Teletype Machine - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27576/episode-545-designing-a-custom-pcb-for-microsoft-jacdac" data-icid="e14" data-e14adj="t"&gt;Episode 545: Designing a Custom PCB for Microsoft Jacdac&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27548/episode-544-reviving-the-1984-ibm-5155---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 544: Reviving the 1984 IBM 5155 - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27522/episode-543-lego-spike-prime-weather-station-with-raspberry-pi" data-icid="e14" data-e14adj="t"&gt;Episode 543: Lego Spike Prime Weather Station with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27520/episode-542-a-noise-free-diy-switching-power-supply---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 542: A Noise-Free DIY Switching Power Supply - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27495/episode-541-vintage-laptop-battery-replaced-with-usb-power---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 541: Vintage Laptop Battery Replaced with USB Power - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27493/episode-540-object-detection-for-smart-recycling" data-icid="e14" data-e14adj="t"&gt;Episode 540: Object Detection for Smart Recycling&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27484/episode-539-training-a-machine-to-recognize-objects---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 539: Training a Machine to Recognize Objects - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27483/episode-538-how-to-build-a-quadruped-robot---no-math" data-icid="e14" data-e14adj="t"&gt;Episode 538: How to Build a Quadruped Robot - NO MATH!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27460/episode-537-build-a-phonograph-preamplifier---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 537: Build a Phonograph Preamplifier - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27458/episode-536-interactive-light-up-window-with-pose-detection-using-a-raspberry-pi-and-micro-bit" data-icid="e14" data-e14adj="t"&gt;Episode 536: Interactive Light-Up Window with Pose Detection using a Raspberry Pi and micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27441/episode-535-repair-a-sega-game-gear---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 535: Repair a Sega Game Gear - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27435/episode-534-open-source-inventory-warehousing-system" data-icid="e14" data-e14adj="t"&gt;Episode 534: Open Source Inventory Warehousing System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27432/episode-533-jumbo-diy-led" data-icid="e14" data-e14adj="t"&gt;Episode 533: Jumbo DIY LED&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27412/episode-532-world-s-first-single-chip-apple-ii-boots" data-icid="e14" data-e14adj="t"&gt;Episode 532: World&amp;rsquo;s First Single-Chip Apple II Boots!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27407/episode-531-game-guy---the-unportable-game-boy" data-icid="e14" data-e14adj="t"&gt;Episode 531: Game Guy - The Unportable Game Boy&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27399/episode-530-mqtt-controlled-led-christmas-baubles-with-raspberry-pi-pico" data-icid="e14" data-e14adj="t"&gt;Episode 530: MQTT controlled LED Christmas Baubles with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27392/episode-529-updi-program-for-new-attiny" data-icid="e14" data-e14adj="t"&gt;Episode 529: UPDI Program for new ATTiny&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27383/episode-528-let-s-build-an-electronic-fidget-cube" data-icid="e14" data-e14adj="t"&gt;Episode 528: Let&amp;#39;s Build an Electronic Fidget Cube!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27375/episode-527---interactive-light-up-window-using-a-raspberry-pi-and-micro-bit" data-icid="e14" data-e14adj="t"&gt;Episode 527: Interactive Light Up Window using a Raspberry Pi and micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27366/episode-526-cnc-router-remote-control" data-icid="e14" data-e14adj="t"&gt;Episode 526: CNC Router Remote Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27338/episode-525-demonstrating-magnetic-fields-with-helmholtz-coils-in-a-snow-globe" data-icid="e14" data-e14adj="t"&gt;Episode 525: DIY Helmholtz Snow Globe&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/27287/episode-524-arduino-iot-cloud-weather-station" data-e14adj="t"&gt;Episode 524: Arduino IoT Cloud Weather Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/27276/episode-523-make-your-own-auto-sensing-solder-fume-extractor" data-e14adj="t"&gt;Episode 523: Make your Own Auto-Sensing Solder Fume Extractor&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23245/episode-522-siren-head-halloween-wearable-costume" data-e14adj="t"&gt;Episode 522: Siren Head Halloween Wearable Costume&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23240/episode-521-diy-static-grass-applicator" data-e14adj="t"&gt;Episode 521: DIY Static Grass Applicator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23232/episode-520-adding-android-auto-as-non-permanent-add-on-with-raspberry-pi" data-e14adj="t"&gt;Episode 520: Adding Android Auto as Non-Permanent Add-On with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23225/episode-519-make-your-own-ye-olde-book-nook-diorama-with-arduino" data-e14adj="t"&gt;Episode 519: Make Your Own Ye Olde Book Nook Diorama with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23212/episode-518-guitar-vacuum-tube-distortion-pedal" data-e14adj="t"&gt;Episode 518: Guitar Vacuum Tube Distortion Pedal&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/secret-element14-presents/w/documents/4141/episode-517-emulate-an-eprom---how-hard-could-it-be" data-e14adj="t"&gt;Episode 517: Emulate an EPROM - How Hard Could it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23199/episode-516-modding-a-wireless-doorbell-with-raspberry-pi-and-esp8266" data-e14adj="t"&gt;Episode 516: Modding a Wireless Doorbell with Raspberry Pi and ESP8266&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23190/episode-515-upcycling-a-lenovo-pc-into-a-raspberry-pi-wifi-access-point" data-e14adj="t"&gt;Episode 515: Upcycling a Lenovo PC into a Raspberry Pi WiFi Access Point&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23183/episode-514-making-a-3d-graphics-card-for-the-atari-800-xl" data-e14adj="t"&gt;Episode 514: Making a 3D Graphics Card for the Atari 800 XL&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5429/episode-513-bike-speedometer-with-arduino-and-gps" data-e14adj="t"&gt;Episode 513: Bike Speedometer with Arduino and GPS&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5422/episode-512-you-cannot-buy-this-vacuum-tube-tester-you-build-it" data-e14adj="t"&gt;Episode 512: You Cannot Buy This Vacuum Tube Tester. You Build It!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5418/episode-511-face-tracking-cheeseball-launcher" data-e14adj="t"&gt;Episode 511:&amp;nbsp; Raspberry Pi Powered Cheeseball Launcher&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5407/episode-510-laser-cutter-command-station" data-e14adj="t"&gt;Episode 510: Laser Cutter Command Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5402/episode-509-diy-discrete-logic-led-countdown-timer" data-e14adj="t"&gt;Episode 509: DIY Discrete Logic LED Countdown Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5397/episode-508-raspberry-pi-fpv-rover-easy-robot-arm-upgrade" data-e14adj="t"&gt;Episode 508: Raspberry Pi FPV Rover Easy Robot Arm Upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5391/episode-507-massive-raspberry-pi" data-e14adj="t"&gt;Episode 507: Massive Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5377/episode-506-diy-star-trek-tricorder-from-build-inside-the-box" data-e14adj="t"&gt;Episode 506: DIY Star Trek Tricorder from Build Inside the Box&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5374/episode-505-super-8-camera-digitizer" data-e14adj="t"&gt;Episode 505: Super 8 Camera Digitizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5369/episode-504-diy-sump-pump-alarm" data-e14adj="t"&gt;Episode 504: DIY Sump Pump Alarm&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5360/episode-503-meet-cheesoid---the-robot-that-smells" data-e14adj="t"&gt;Episode 503: Meet Cheesoid - The Robot That Smells!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5352/episode-502-make-your-bike-a-pokebike" data-e14adj="t"&gt;Episode 502: Make Your Bike a Pokebike!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5033/episode-501-raspberry-pi-nfc-button-free-music-player" data-e14adj="t"&gt;Episode 501: Raspberry Pi NFC Button-Free Music Player&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/20721/episode-500-build-inside-the-box-challenge" data-e14adj="t"&gt;Episode 500:&amp;nbsp; Build Inside The Box Challenge!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5332/episode-499-diy-four-channel-arduino-servo-tester" data-e14adj="t"&gt;Episode 499: DIY Four Channel Arduino Servo Tester&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8706/episode-498-raspberry-pi-smart-water-dispenser" data-e14adj="t"&gt;Episode 498: Raspberry Pi Smart Water Dispenser&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5318/episode-497-raspberry-pi-rfid-pocket-money-keeper" data-e14adj="t"&gt;Episode 497: RFID Pocket Money Keeper&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8705/episode-496-compute-module-4-powered-3d-printer-board" data-e14adj="t"&gt;Episode 496: Compute Module 4 Powered 3D Printer Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5308/episode-495-magic-gif-ball-powered-by-raspberry-pi" data-e14adj="t"&gt;Episode 495: Magic GIF Ball Powered By Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5299/episode-494-keyboard-shortcuts-keypad-with-raspberry-pi-pico" data-e14adj="t"&gt;Episode 494: Keyboard Shortcuts Keypad with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5290/episode-493-neopixel-7-segment-display-clock-update" data-e14adj="t"&gt;Episode 493: NeoPixel 7 Segment Display Clock Update&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5275/episode-492-arduino-vs-555-timer---tiny-slot-car-racers" data-e14adj="t"&gt;Episode 492: Arduino vs 555 Timer - Tiny Slot Car Racers&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5273/episode-491-arduino-single-wheel-balancing-robot" data-e14adj="t"&gt;Episode 491: Arduino Single-Wheel Balancing Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5256/episode-490-diy-raspberry-pi-pico-fizz-buzz-multiplication-game" data-e14adj="t"&gt;Episode 490: DIY Raspberry Pi Pico Fizz Buzz Multiplication Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5254/episode-489-build-an-fpv-rover-with-raspberry-pi" data-e14adj="t"&gt;Episode 489: Build An FPV Rover with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5233/episode-488-diy-raspberry-pi-cyberdeck" data-e14adj="t"&gt;Episode 488: DIY Raspberry Pi Cyberdeck&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5232/episode-487-diy-magsafe-battery-charger" data-e14adj="t"&gt;Episode 487: DIY MagSafe Battery Charger&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5229/episode-486-make-the-ultimate-phone-charging-camping-flashlight" data-e14adj="t"&gt;Episode 486: Make The Ultimate Phone Charging Camping Flashlight&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5213/episode-485-how-to-make-a-custom-pcb-from-design-to-assembly" data-e14adj="t"&gt;Episode 485: How To Make A Custom PCB From Design To Assembly&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5211/episode-484-raspberry-pi-bird-watching-camera" data-e14adj="t"&gt;Episode 484: Raspberry Pi Bird Watching Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5201/episode-483-diy-miniature-multimeter" data-e14adj="t"&gt;Episode 483: DIY Miniature Multimeter&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5196/episode-482-gigantic-3d-printed-7-segment-display-clock" data-e14adj="t"&gt;Episode 482: Gigantic 3D Printed 7 Segment Display Clock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5188/episode-481-diy-lost-swan-station-split-flap-display-timer" data-e14adj="t"&gt;Episode 481: DIY LOST Swan Station Split Flap Display Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5181/episode-480-diy-toothbrush-timer" data-e14adj="t"&gt;Episode 480: DIY Toothbrush Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5179/episode-479-raspberry-pi-2xl-robot-assistant-part-2" data-e14adj="t"&gt;Episode 479: Raspberry Pi 2XL Robot Assistant Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5171/episode-478-upgrading-a-christmas-train-with-python-and-raspberry-pi" data-e14adj="t"&gt;Episode 478: Upgrading A Christmas Train&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5169/episode-477-metal-plate-your-3d-prints-with-a-diy-galvanizing-machine" data-e14adj="t"&gt;Episode 477: Metal Plate Your 3D Prints with a DIY Galvanizing Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5160/episode-476-iot-arduino-ntp-world-clock-with-spi-display" data-e14adj="t"&gt;Episode 476: IoT Arduino NTP World Clock with SPI Display&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5147/episode-475-diy-wall-mounted-arduino-barometer" data-e14adj="t"&gt;Episode 475: DIY Wall Mounted Arduino Barometer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5144/episode-474-continuum-robot-tentacle-prototype" data-e14adj="t"&gt;Episode 474: Continuum Robot Tentacle Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8680/episode-473-mendel-3d-printer-upgrade-and-maintenance" data-e14adj="t"&gt;Episode 473: Mendel 3D Printer Upgrade and Maintenance&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5120/episode-472-diy-hydration-reminder-system" data-e14adj="t"&gt;Episode 472: DIY Hydration Reminder System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5113/episode-471-diy-dance-dance-revolution-mat" data-e14adj="t"&gt;Episode 471: DIY Dance Dance Revolution Mat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5102/episode-470-voice-activated-inspector-gadget-hat" data-e14adj="t"&gt;Episode 470: Voice Activated Inspector Gadget Hat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5063/episode-469-nintendo-super-scope-modded-for-modern-televisions" data-e14adj="t"&gt;Episode 469: Nintendo Super Scope Modded For Modern Televisions&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5092/episode-468-socially-distanced-halloween-candy-dispenser" data-e14adj="t"&gt;Episode 468: Socially Distanced Halloween Candy Dispenser&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5077/episode-467-repairing-the-world-s-first-laptop-epson-hx-20" data-e14adj="t"&gt;Episode 467: Repairing the World&amp;#39;s First Laptop! (Epson HX-20)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5061/episode-466-arduino-powered-hexadecimal-color-code-clock" data-e14adj="t"&gt;Episode 466: Arduino-powered Hexadecimal Color Code Clock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5034/episode-465-lego-raspberry-pi-hq-camera" data-e14adj="t"&gt;Episode 465: Lego Raspberry Pi HQ Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5031/episode-464-particle-voice-recognition-for-home-appliances" data-e14adj="t"&gt;Episode 464: Particle Voice Recognition for Home Appliances&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5002/episode-463-raspberry-pi-speech-to-text-led-face-mask" data-e14adj="t"&gt;Episode 463: Raspberry Pi Speech to Text LED Face Mask&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5012/episode-462-joycon-controlled-electronic-rock-em-sock-em-robots" data-e14adj="t"&gt;Episode 462: Joycon Controlled Electronic Rock&amp;#39;Em Sock&amp;#39;Em Robots&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4980/episode-461-portal-2-security-camera-with-raspberry-pi-2" data-e14adj="t"&gt;Episode 461: Portal 2 Security Camera with Raspberry Pi 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4985/episode-460-trinamic-open-source-ventilator-tosv-teardown" data-e14adj="t"&gt;Episode 460: Trinamic Open Source Ventilator (TOSV) Teardown&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4961/episode-459-raspberry-pi-4-vr-conference-call-assistant" data-e14adj="t"&gt;Episode 459: Raspberry Pi 4 VR Conference Call Assistant&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4971/episode-458-diy-arduino-automated-metal-bending-machine" data-e14adj="t"&gt;Episode 458: DIY Arduino Automated Metal Bending Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4966/episode-457-arduino-mkr-zero-animatronic-rosie-the-robot-from-the-jetsons" data-e14adj="t"&gt;Episode 457: Raspberry Pi 4 Animatronic Rosie the Robot from the Jetsons&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8665/episode-456-unhackable-arduino-switch-matrix" data-e14adj="t"&gt;Episode 456: Unhackable Arduino Switch Matrix&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8664/episode-455-arduino-unit-conversion-calculator" data-e14adj="t"&gt;Episode 455: Arduino Unit Conversion Calculator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4942/episode-454-soldering-up-the-rc2014-homebrew-z80-computer-kit" data-e14adj="t"&gt;Episode 454: Soldering Up the rc2014 Homebrew Z80 Computer Kit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4937/episode-453-build-an-anti-troll-bot-using-tensorflow-and-arduino" data-e14adj="t"&gt;Episode 453: Build an Anti-Troll Bot Using TensorFlow and Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4914/episode-452-raspberry-pi-4-experimental-resin-3d-printer-updated" data-e14adj="t"&gt;Episode 452: Raspberry Pi 4 Experimental Resin 3D Printer Updated!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4913/episode-451-build-an-off-grid-wikipedia-with-raspberry-pi" data-e14adj="t"&gt;Episode 451: Build an Off Grid Wikipedia with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4906/episode-450-sega-gamegear-rebuild-with-leds" data-e14adj="t"&gt;Episode 450: Sega GameGear Rebuild with LEDs&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8657/episode-449-diy-tamagotchi---build-a-virtual-pet" data-e14adj="t"&gt;Episode 449: DIY Tamagotchi - Build a Virtual Pet&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4895/episode-448-diy-raspberry-pi-4-boxing-game" data-e14adj="t"&gt;Episode 448: DIY Raspberry Pi 4 Boxing Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4873/episode-447-diy-stop-motion-rig-with-lattepanda" data-e14adj="t"&gt;Episode 447: DIY Stop Motion Rig with LattePanda&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4871/episode-446-raspberry-pi-2xl-robot-assistant-part-1" data-e14adj="t"&gt;Episode 446: Raspberry Pi 2XL Robot Assistant Part 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8652/episode-445-raspberry-pi-4-animatronic-bd-1-companion-robot" data-e14adj="t"&gt;Episode 445: Raspberry Pi 4 Animatronic BD-1 Companion Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4848/episode-444-raspberry-pi-4-dvr" data-e14adj="t"&gt;Episode 444: Raspberry Pi 4 DVR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4836/episode-443-arduino-uno-rc-remote---can-it-be-done" data-e14adj="t"&gt;Episode 443: Arduino Uno RC Remote - Can It Be Done?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4834/episode-442-make-your-own-giant-servo" data-e14adj="t"&gt;Episode 442: Make Your Own Giant Servo&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4818/episode-441-raspberry-pi-4-international-space-station-tracker" data-e14adj="t"&gt;Episode 441: Raspberry Pi 4 International Space Station Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4810/episode-440-diy-arduino-helicopter-collective-joystick-control" data-e14adj="t"&gt;Episode 440: DIY Arduino Helicopter Collective Joystick Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4796/episode-439---mechanical-arcade-game-with-barebones-arduino" data-e14adj="t"&gt;Episode 439 - Mechanical Arcade Game with Barebones Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4787/episode-438-smartphone-controlled-diy-rover-using-websockets" data-e14adj="t"&gt;Episode 438: Smartphone Controlled DIY Rover Using Websockets&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4771/episode-437-diy-motorized-zoom-for-your-dslr" data-e14adj="t"&gt;Episode 437: DIY Motorized Zoom for Your DSLR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4767/episode-436-automated-raspberry-pi-planet-tracking-goto-telescope" data-e14adj="t"&gt;Episode 436: Automated Raspberry Pi Planet Tracking GOTO Telescope&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4756/episode-435-raspberry-pi-4-music-player-w-analog-controls" data-e14adj="t"&gt;Episode 435: Raspberry Pi 4 Music Player w/Analog Controls&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8637/episode-434-infineon-smart-city-model" data-e14adj="t"&gt;Episode 434: Infineon Smart City Model&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4742/episode-433---arduino-based-love-tester" data-e14adj="t"&gt;Episode 433: Arduino Based Love Tester&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4728/episode-432-super-fx-sword-using-the-bbc-micro-bit" data-e14adj="t"&gt;Episode 432: Super FX Sword using the BBC micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4726/episode-431-room-sized-studio-light-speakers-combo" data-e14adj="t"&gt;Episode 431: Room-Sized Studio Light Speakers Combo&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4692/episode-430-flaming-xylophone-rubens-tube" data-e14adj="t"&gt;Episode 430: Flaming Xylophone Rubens&amp;#39; Tube&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4670/episode-429-youtuber-on-air-light-with-particle-mesh-network" data-e14adj="t"&gt;Episode 429: YouTuber &amp;quot;On Air&amp;quot; Light with Particle Mesh Network&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4668/episode-428-raspberry-pi-4-crt-based-vr-headset" data-e14adj="t"&gt;Episode 428: Raspberry Pi 4 CRT-based VR Headset&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4657/episode-427-diy-retro-gaming-portable-on-a-budget" data-e14adj="t"&gt; Episode 427: DIY Retro Gaming Portable on a Budget!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4142/episode-426-retro-tv-ads-holiday-ornament" data-e14adj="t"&gt; Episode 426: Retro TV Ads Holiday Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4651/episode-425-make-your-own-raspberry-pi-4-photobooth" data-e14adj="t"&gt; Episode 425: Make Your Own Raspberry Pi 4 Photobooth!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4646/episode-424-diy-escape-room-puzzle" data-e14adj="t"&gt; Episode 424: DIY Escape Room Puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4644/episode-423-programmable-arduino-synthesizer-watch" data-e14adj="t"&gt; Episode 423: Programmable Arduino Synthesizer Watch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4628/episode-422-raspberry-pi-e-ink-task-organizer" data-e14adj="t"&gt; Episode 422: Raspberry Pi E-Ink Task Organizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4627/episode-421-raspberry-pi-4-commodore-sx-64-inspired-portable-computer" data-e14adj="t"&gt; Episode 421: Raspberry Pi 4 Commodore SX-64 Inspired Portable Computer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4616/episode-420-diy-shapeoko-cnc-pendant" data-e14adj="t"&gt; Episode 420: DIY Shapeoko CNC Pendant&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4607/episode-419-altair-8800-laptop" data-e14adj="t"&gt; Episode 419: Altair 8800 Laptop &lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4604/episode-418-animatronic-terminator-skull-with-beaglebone-ai-and-giveaway" data-e14adj="t"&gt;&amp;nbsp;Episode 418: Animatronic Terminator Skull with BeagleBone&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/00ae.svg" title="Registered"&gt;&amp;#x00ae;&lt;/span&gt;&amp;nbsp;AI&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8619/episode-417-pipboy-2000-mk-ii" data-e14adj="t"&gt;Episode 417: #Pipboy 2000 Mk II&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4596/episode-416---diy-3dprinted-label-spooler" data-e14adj="t"&gt;Episode 416: DIY #3DPrinted Label Spooler&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4588/episode-415-iron-man-helmet-heads-up-display" data-e14adj="t"&gt;Episode 415: Iron Man Helmet Heads Up Display&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4580/episode-414-raspberry-pi-4-experimental-resin-3d-printer" data-e14adj="t"&gt;Episode 414: Raspberry Pi 4 Experimental Resin 3D Printer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8610/episode-413-animatronic-claptrap-case-mod-part-2" data-e14adj="t"&gt;Episode 413: Animatronic Claptrap Case Mod Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4558/episode-412-get-to-know-your-adc-with-a-diy-temperature-probe" data-e14adj="t"&gt;Episode 412: Get to Know Your ADC with a DIY Temperature Probe&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4531/episode-411-animatronic-claptrap-computer-case---part-1" data-e14adj="t"&gt;Episode 411: Animatronic Claptrap Computer Case - Part 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4537/episode-410-macpro-g5-cheese-grater-with-raspberry-pi-4" data-e14adj="t"&gt;Episode 410: MacPro G5 Cheese Grater with Raspberry Pi 4&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4522/episode-409-commodore-sx-64-restoration" data-e14adj="t"&gt;Episode 409: Commodore SX-64 Restoration&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4516/episode-408-hand-soldered-led-oscilloscope" data-e14adj="t"&gt;Episode 408: Hand Soldered LED Oscilloscope&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4514/episode-407-the-ultimate-raspberry-pi-4-laptop" data-e14adj="t"&gt;Episode 407: The Ultimate Raspberry Pi 4 Laptop&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4507/episode-406-automated-robot-artist" data-e14adj="t"&gt;Episode 406: Automated Robot Artist&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4493/episode-405-rc-ornithopter-concept" data-e14adj="t"&gt;Episode 405: RC Ornithopter Concept&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4488/episode-404-arduino-powered-close-encounters-midi-light-board" data-e14adj="t"&gt;Episode 404: Arduino Powered Close Encounters Midi Light Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4459/episode-403-upcycled-iot-coffee-pot-ramen-maker" data-e14adj="t"&gt;Episode 403: Upcycled IoT Coffee Pot Ramen Maker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4422/episode-402-piphone-the-giant-raspberry-pi-flip-phone" data-e14adj="t"&gt;Episode 402: PiPhone++ The Giant Raspberry Pi Flip Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4128/episode-401-matrix-voice-controlled-robot" data-e14adj="t"&gt;Episode 401: Matrix Voice Controlled Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4127/episode-400-the-ultimate-raspberry-pi-stress-test" data-e14adj="t"&gt;Episode 400: The Ultimate Raspberry Pi Stress Test&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4129/episode-399-candle-powered-robot" data-e14adj="t"&gt;Episode 399: Candle-Powered Robotl&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4044/episode-398-let-me-out-hooman-bluetooth-dog-doorbell" data-e14adj="t"&gt;Episode 398: Let Me Out Hooman! Bluetooth Dog Doorbell&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4126/episode-397-steam-powered-retropie-console" data-e14adj="t"&gt;Episode 397: Steam Powered Retropie Console&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4043/episode-396-arduino-retro-led-matrix-handheld" data-e14adj="t"&gt;Episode 396: Arduino Retro LED Matrix Handheld&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4042/episode-395-raspberry-pi-stop-motion-machine" data-e14adj="t"&gt;Episode 395: Raspberry Pi Stop Motion Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8531/episode-394-animatronic-glados-head-with-raspberry-pi" data-e14adj="t"&gt;Episode 394: Animatronic GLaDOS Head with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4125/episode-393-gameboy-walkman" data-e14adj="t"&gt;Episode 393: GameBoy Walkman&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4191/episode-392-multi-line-telephone-intercom" data-e14adj="t"&gt;Episode 392: Multi-Line Telephone Intercom&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4124/episode-391-first-person-view-rc-car-with-ps1-steering-wheel" data-e14adj="t"&gt;Episode 391: First Person View RC Car with PS2 Steering Wheel&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4122/episode-390-retro-texting-smart-watch-of-the-future" data-e14adj="t"&gt;Episode 390: Retro Texting Smart Watch of the Future!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4120/episode-389-playstation-classic-portable-prototype" data-e14adj="t"&gt;Episode 389: PlayStation Classic Portable Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8519/episode-388-fpga-midi-music-synthesizer" data-e14adj="t"&gt;Episode 388: FPGA MIDI Music Synthesizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4057/episode-387-rotocell---the-rotary-cell-phone-of-the-future" data-e14adj="t"&gt;Episode 387: Rotocell - The Rotary Cell Phone of the Future!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4038/episode-386-xybernaut-wearable-pc" data-e14adj="t"&gt;Episode 386: Xybernaut Wearable PC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4117/episode-385-20-pcb-design-pitfalls" data-e14adj="t"&gt;Episode 385: 20 PCB Design Pitfalls&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4035/episode-384-retro-gaming-handheld-without-a-pcb" data-e14adj="t"&gt;Episode 384: Retro Gaming Handheld Without a PCB&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4058/episode-383-gameboy-wireless-link-cable-dmg1" data-e14adj="t"&gt;Episode 383: Gameboy Wireless Link Cable (DMG1)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8501/episode-382-modding-a-super-8-camera-into-a-digital" data-e14adj="t"&gt;Episode 382: Modding a Super 8 Camera into a Digital&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4067/episode-381-reverse-music-box" data-e14adj="t"&gt;Episode 381: Reverse Music Box&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4039/episode-380-nes-zapper-on-retropie" data-e14adj="t"&gt;Episode 380: NES Zapper on RetroPie&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4036/episode-379-macroscope-soldering-tool" data-e14adj="t"&gt;Episode 379: Macroscope Soldering Tool&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8500/episode-378-invader-zim-animatronic-gir" data-e14adj="t"&gt;Episode 378: Invader ZIM Animatronic GIR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4034/episode-377-altair-8800-replica" data-e14adj="t"&gt;Episode 377: Altair 8800 Replica&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4028/episode-376-4d-gaming-with-the-matrix-creator" data-e14adj="t"&gt;Episode 376: 4D Gaming with the Matrix Creator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4025/episode-375-hacked-fetal-detector-music-synthesizer" data-e14adj="t"&gt;Episode 375: Hacked Fetal Detector Music Synthesizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4008/episode-374-raspberry-pi-donkey-kong-holiday-ornament" data-e14adj="t"&gt;Episode 374: Raspberry Pi Donkey Kong Holiday Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3992/episode-373-raspberry-pi-fallout-terminal-pc" data-e14adj="t"&gt;Episode 373: Raspberry Pi Fallout Terminal PC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8497/episode-372-raspberry-pi-auto-etch-a-sketch" data-e14adj="t"&gt;Episode 372: Raspberry Pi Auto Etch A Sketch&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3990/episode-371-fpga-game-genie-for-atari-2600" data-e14adj="t"&gt;Episode 371: FPGA &amp;quot;Game Genie&amp;quot; for Atari 2600&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3989/episode-370-raspberry-pi-noaa-satellite-receiver" data-e14adj="t"&gt;Episode 370: Raspberry Pi NOAA Satellite Receiver&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3979/episode-369-recreating-the-atari-portfolio" data-e14adj="t"&gt;Episode 369: Recreating the Atari Portfolio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3977/episode-368-arduino-automatic-wire-cutter-and-stripper" data-e14adj="t"&gt;Episode 368: Arduino Automatic Wire Cutter and Stripper&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3968/episode-367-most-useless-iot-device-ever---part-2" data-e14adj="t"&gt;Episode 367: Most Useless IoT Device Ever - Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3960/episode-366-infinity-icosahedron" data-e14adj="t"&gt;Episode 366: Infinity Icosahedron&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3949/episode-365-twilight-zone-fortune-telling-machine" data-e14adj="t"&gt;Episode 365: Twilight Zone Fortune Telling Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3934/episode-364-raspberry-pi-virtual-reality-arcade" data-e14adj="t"&gt;Episode 364: Raspberry Pi Virtual Reality Arcade #VR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3920/episode-363-add-a-motor-to-your-bike-with-arduino" data-e14adj="t"&gt;Episode 363 - Add a Motor to your Bike with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3912/episode-362-most-worthless-iot-device-ever---part-1" data-e14adj="t"&gt;Episode 362: Most Worthless IoT Device Ever Pt. 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3903/episode-361-r-o-b-rebuild-and-upgrade" data-e14adj="t"&gt;Episode 361: R.O.B Rebuild and Upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3887/episode-360-make-your-own-raspberry-pi-cell-phone" data-e14adj="t"&gt;Episode 360: Make Your Own Raspberry Pi Cell Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3875/episode-359-make-your-own-cnc-pyrography-wood-burner" data-e14adj="t"&gt;Episode 359: Make Your Own CNC Pyrography Wood Burner&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3863/episode-358-the-shrimp-of-terror" data-e14adj="t"&gt;Episode 358: The Shrimp of Terror!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3848/episode-357-raspberry-pi-asteroid-tracker" data-e14adj="t"&gt;Episode 357: Raspberry Pi Asteroid Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8491/episode-356-bank-to-the-future-with-arduino-ti" data-e14adj="t"&gt;Episode 356: Bank to the Future with Arduino &amp;amp; TI&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3826/episode-355-raspberry-pi-pirate-radio" data-e14adj="t"&gt;Episode 355: Raspberry Pi Pirate Radio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3816/episode-354-tiny-vacuum-forming-machine" data-e14adj="t"&gt;Episode 354: Tiny Vacuum Forming Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3809/episode-353-program-your-own-fpga-video-game" data-e14adj="t"&gt;Episode 353: Program Your Own FPGA Video Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3784/episode-352-pripyat---diy-geiger-counter" data-e14adj="t"&gt;Episode 352: Pripyat - DIY Geiger Counter&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3747/episode-349-raspberry-pi-selfie-rocket" data-e14adj="t"&gt;Episode 349: Raspberry Pi Selfie Rocket&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/9678/the-ben-heck-show-episode-archive" data-e14adj="t"&gt;See All Previous Episodes&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: episode releases, friday_release_archive, element14 presents, project videos, episodes, friday releases, episode release archive, episode archive, friday release archive, project_videos&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays</link><pubDate>Thu, 21 May 2026 13:29:40 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>e14sbhargav</dc:creator><description>Current Revision posted to Documents by e14sbhargav on 5/21/2026 1:29:40 PM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54hafv0"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/yxGkHVo9bEw"&gt;https://youtu.be/yxGkHVo9bEw&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jp537b3t0"&gt;Can you Catch the Game?&lt;/h2&gt;
&lt;div&gt;
&lt;p&gt;When he was young, Mark didn&amp;rsquo;t have access to modern gaming platforms. Like many at the time, entertainment came from broadcast television, limited channels, scheduled programming, and a reliance on anticipation rather than instant access. One particular show left a lasting impression: &lt;em&gt;The Honeymoon Quiz&lt;/em&gt;. Among its many challenges was a deceptively simple game that stood out for its difficulty and tension.&lt;/p&gt;
&lt;p&gt;The concept was straightforward. A frame positioned above the player held several sticks. Without warning, they would drop at random, and the player&amp;rsquo;s only task was to catch them before they hit the ground. Simple in design, but demanding in execution.&lt;/p&gt;
&lt;p&gt;Decades later, Mark revisits this concept with a modern, electronics-driven interpretation, building a fully autonomous, microcontroller-based version of the game. As he puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It will hold several sticks that will drop down randomly one by one&amp;hellip; and you need to try to catch them. That&amp;rsquo;s the game.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/0525.schematic.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp537b3t1"&gt;The Schematic&lt;/h2&gt;
&lt;p&gt;The system is divided cleanly into four functional sections: power, control, sound, and actuation.&lt;/p&gt;
&lt;p&gt;The power design reflects Mark&amp;rsquo;s preference for simplicity and reliability over modern optimisation. While acknowledging newer approaches, he intentionally uses a linear regulator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know it&amp;#39;s not the most elegant regulator nowadays, but it&amp;#39;s analog and it&amp;#39;s proven and tested&amp;hellip; that&amp;#39;s why I use it.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;An input supply (e.g. 12V) is stepped down to 8V for the actuators. This is a deliberate choice to provide sufficient drive strength to the relay-based mechanisms responsible for releasing the sticks.&lt;/p&gt;
&lt;p&gt;The Arduino Nano operates using its onboard regulator, while also serving as the central controller. A push button connected to digital pin D2 serves dual purposes: starting the game and toggling difficulty.&lt;/p&gt;
&lt;p&gt;This behaviour is clearly implemented in the code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define StartButton 2
EasyButton button(StartButton);

void buttonPressed() {
  running = !running;
}

void sequenceEllapsed() {
  expertmode = !expertmode;
  digitalWrite(ModeLed, expertmode);
}

button.onPressed(buttonPressed);
button.onSequence(2, 1500, sequenceEllapsed);&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Here, a single press toggles the game state, while a double press (within 1500 ms) activates &amp;ldquo;expert mode&amp;rdquo; &amp;mdash; a faster-paced variant of gameplay.&lt;/p&gt;
&lt;p&gt;The sound system is implemented using a PWM-driven speaker, producing simple tones to indicate game states. Mark describes this pragmatically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only used to generate a beeping sound to indicate the start and the end of a game&amp;hellip; it will do the job quick and dirty.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Finally, the relay drivers form the core of the mechanical interaction. Each relay controls a latch mechanism holding a stick. When triggered, the latch releases, allowing gravity to do the rest.&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000368.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp538s5b2"&gt;Game logic and behaviour&lt;/h2&gt;
&lt;p&gt;The game&amp;rsquo;s operation is governed by a simple but effective state-driven loop. Once started, it progresses through a fixed lifecycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Play a start tone&lt;/li&gt;
&lt;li&gt;Sequentially drop sticks in random order&lt;/li&gt;
&lt;li&gt;Ensure no stick is dropped twice&lt;/li&gt;
&lt;li&gt;Play an end tone and reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The randomness is carefully handled to avoid repetition:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int randStick = random(3, 13);

while (valueExistsInArray(droplog, arraySize, randStick)) {
  randStick = random(3, 13);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This ensures that each actuator is triggered only once per game cycle, a detail not explicitly called out in the original blog, but critical to gameplay integrity.&lt;/p&gt;
&lt;p&gt;Timing is also adjustable based on difficulty:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (expertmode == 1) randTime = randTime * 500;
else randTime = randTime * 1000;&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;This reflects Mark&amp;rsquo;s intent to scale challenge dynamically, something he alludes to in his video breakdown&amp;nbsp;as part of creating &amp;ldquo;a more difficult game.&amp;rdquo;&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000025.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53cbpg3"&gt;Placing the components&lt;/h2&gt;
&lt;p&gt;Component placement follows a logical and structured layout, aided by the available space on the prototyping board. While the blog presents this as straightforward. Mark notes:&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know this is not the most elegant way of soldering&amp;hellip; but I have to make do with what I have at home.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This highlights a key aspect of the project: it is intentionally accessible and built using available tools rather than precision manufacturing.&lt;/p&gt;
&lt;p&gt;After soldering, the board requires manual refinement. Traces are selectively removed using a rotary tool to prevent unintended connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;If I don&amp;#39;t we will have a big short circuit&amp;hellip; so this needs to be done.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000061.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53dsku4"&gt;Baseplate&lt;/h2&gt;
&lt;p&gt;The baseplate serves as a practical integration point for the electronics. It houses the PCB, speaker, LED, and control button in a compact arrangement.&lt;/p&gt;
&lt;p&gt;Mark emphasises the importance of keeping wiring short and manageable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I made a base plate&amp;hellip; to keep wires short and compact.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;This design choice reduces noise, improves reliability, and simplifies assembly, particularly important in a system with multiple actuators.&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000378.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53eclc5"&gt;Building a Rig&lt;/h2&gt;
&lt;p&gt;The mechanical structure is deliberately flexible. While the blog suggests building a frame, the transcript shows Mark adapting available materials:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You can use some wood bars&amp;hellip; I happen to have aluminum frames laying around from an old table.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This reinforces the project&amp;rsquo;s ethos: use what you have, adapt creatively.&lt;/p&gt;
&lt;p&gt;Actuators are mounted to the horizontal bar using strong double-sided tape. Interestingly, this is not just a convenience but a considered mechanical decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Make sure you use proper double-sided tape&amp;hellip; you don&amp;rsquo;t want the actuator to fall off completely.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;The goal is controlled release, only the sticks should fall, not the mechanisms themselves.&lt;/p&gt;
&lt;p&gt;Another practical insight not present in the original write-up is wiring flexibility:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;All I need to worry about later is which wire is the common&amp;hellip; all the other wires I can just connect randomly because the actuators are controlled randomly.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Because activation is randomised in software, physical ordering is irrelevant, a useful simplification during assembly. The sticks themselves are simple wooden segments, but their preparation is essential for consistent performance.&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;Cut to approximately 25 cm and fitted with hooks, they interface directly with the latch mechanisms. While the blog presents this briefly, the transcript reinforces the intended gameplay experience, lightweight sticks that drop cleanly and predictably.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fumk7"&gt;Sketch upload&lt;/h2&gt;
&lt;p&gt;Programming the Arduino completes the system. Mark uses the Arduino IDE, selecting the correct board and port before uploading the sketch.&lt;/p&gt;
&lt;p&gt;The only dependency is the EasyButton library:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;EasyButton.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;div&gt;As highlighted in both the blog and transcript, this library simplifies input handling and enables multi-function button logic without complex interrupt handling, although the code does optionally enable interrupts if supported:&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (button.supportsInterrupt()) {
  button.enableInterrupt(buttonISR);
}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;Testing reveals a key insight: the game is harder than it looks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;As you can guess&amp;hellip; this is more difficult than I expected.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even with a basic prototype setup, the random timing and human reaction limits quickly become apparent. This validates the original TV concept, and demonstrates the effectiveness of Mark&amp;rsquo;s implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000387.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53hq229"&gt;Reflection and future considerations&lt;/h2&gt;
&lt;p&gt;While the blog frames the build as complete, the transcript makes it clear that this is still a prototype:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Of course I will put a casing over the electronics&amp;hellip; for now it&amp;rsquo;s an experimental setup.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This suggests several natural future improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enclosing electronics for safety and durability&lt;/li&gt;
&lt;li&gt;Refining the frame structure for portability&lt;/li&gt;
&lt;li&gt;Adjusting difficulty scaling further&lt;/li&gt;
&lt;li&gt;Potentially expanding actuator count or configurability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a strong intended use case beyond personal experimentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m going to have lots of fun on this&amp;hellip; especially with the kids at my youth school.&amp;rdquo;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This positions the project as both a technical exercise and a practical interactive installation. Mark&amp;rsquo;s catch game successfully recreates a classic concept using accessible electronics and straightforward mechanical design. It balances simplicity with enough technical depth to make the build engaging, while the gameplay itself delivers genuine challenge.&lt;/p&gt;
&lt;p&gt;By combining randomness, physical interaction, and clear feedback mechanisms, the project highlights how effective even relatively simple embedded systems can be in creating engaging experiences, especially when paired with thoughtful implementation and iterative testing.&lt;/p&gt;
&lt;p&gt;Most importantly, it remains true to its roots: a simple idea, executed well, that is far more difficult than it first appears.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54rg7c3"&gt;Supporting Files and Links&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151346"&gt;Episode 715 Resources&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp54pbh70"&gt;Bill of Materials&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-58908" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,24017680,2401735,2575644~2,1457709,1848691,1201431,1201471&amp;nsku=26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X46790,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('58908'));" data-farnell="9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,2401768~10,2401735,2575644~2,1457709,1848691,1201431,1201471" data-newark="26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X4679~10,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5,,,undefined~11,undefined~11,,,,,undefined~10,,undefined~2,,,,,undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX Pin Header, Wire-to-Board, 2.5 mm, 1 Rows, 2 Contacts, Through Hole Straight, KK 5045&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-9b961" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5&amp;nsku=26M6335~5&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9b961'));" data-farnell="9730940~5" data-newark="26M6335~5" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Linear Voltage Regulator, 7808, Fixed, Positive, 10V To 35V In, 8V/1A Out, TO-220-3&lt;/td&gt;
&lt;td&gt;Onsemi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-39a69" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9666222&amp;nsku=88H4760&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('39a69'));" data-farnell="9666222" data-newark="88H4760" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KYCON DC Power Connector, Jack, 3.5 A, 2 mm, PCB Mount, Through Hole&lt;/td&gt;
&lt;td&gt;KYCON&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-697c1" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2839850&amp;nsku=49AC0350&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('697c1'));" data-farnell="2839850" data-newark="49AC0350" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Small Signal Diode, Single, 100 V, 200 mA, 1 V, 4 ns, 4 A 1n4148&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-53b36" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9843680~11&amp;nsku=62M1970~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('53b36'));" data-farnell="9843680~11" data-newark="62M1970~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transistor BC517-D74Z&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f3987" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575349~11&amp;nsku=84Y9603~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f3987'));" data-farnell="2575349~11" data-newark="84Y9603~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VISATON Speaker, Mini, 2 &amp;quot;, 500 mW, 8 ohm, 83 dB, 250 Hz to 10000 Hz&lt;/td&gt;
&lt;td&gt;Visaton&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0e5ef" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4662064&amp;nsku=15J5302&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0e5ef'));" data-farnell="4662064" data-newark="15J5302" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MENTOR LED Panel Mount Indicator, Chrome Plated, Green, 2 VDC, 8 mm, 20 mA, 20 mcd, Not Rated&lt;/td&gt;
&lt;td&gt;Mentor&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-841e0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1215781&amp;nsku=02M0051&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('841e0'));" data-farnell="1215781" data-newark="02M0051" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Pushbutton Switch, 12 mm, SPST, (On)-Off, Round Raised, Red&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-579ed" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2913862&amp;nsku=69AC6100&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('579ed'));" data-farnell="2913862" data-newark="69AC6100" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ressitor 2K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0d334" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401761&amp;nsku=45X4679&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0d334'));" data-farnell="2401761" data-newark="45X4679" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 3.9K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7abaa" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=24017680&amp;nsku=45X46790&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7abaa'));" data-farnell="2401768~10" data-newark="45X4679~10" data-comoverride="" data-cmpoverride="" data-cpc="undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 200E&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b2431" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401735&amp;nsku=45X4714&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b2431'));" data-farnell="2401735" data-newark="45X4714" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KEMET Multilayer Ceramic Capacitor, 0.1 &amp;Acirc;&amp;micro;F, 50 V, &amp;Acirc;&amp;plusmn; 10%, Radial Leaded, X7R, 5.08 mm&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d4e5c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575644~2&amp;nsku=89Y7091~2&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d4e5c'));" data-farnell="2575644~2" data-newark="89Y7091~2" data-comoverride="" data-cmpoverride="" data-cpc="undefined~2" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;330nF&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7c092" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1457709&amp;nsku=58M4572&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7c092'));" data-farnell="1457709" data-newark="58M4572" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arduino Nano&lt;/td&gt;
&lt;td&gt;Arduino&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-73066" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1848691&amp;nsku=13T9275&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('73066'));" data-farnell="1848691" data-newark="13T9275" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO 6MS1S3M1RESlide Switch, SPDT, On-On, Through Hole, Side Actuator, 100 mA, 20 V&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-63a53" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201431&amp;nsku=01M8447&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('63a53'));" data-farnell="1201431" data-newark="01M8447" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Striped prototyping pcb board&lt;/td&gt;
&lt;td&gt;CIF&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5b87f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201471&amp;nsku=96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5b87f'));" data-farnell="1201471" data-newark="96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;**BUY_KIT**&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lock mechanism 3~5V&lt;/td&gt;
&lt;td&gt;BADODO Security&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;Power adapter 12V / 1A
&lt;table width="823"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="823"&gt;Metal or wooden frame&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: arduino pwm speaker, diy stem game, diy arcade build, physical computing project, diy catch game, random drop game, reaction time game arduino, engineering project tutorial, maker electronics project, prototyping pcb project, arduino easybutton library, interactive electronics game, arduino nano project, arduino game, relay actuator project, e14presents_markdonners, friday_release&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays/revision/7</link><pubDate>Thu, 21 May 2026 13:29:40 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>cstanton</dc:creator><description>Revision 7 posted to Documents by cstanton on 5/21/2026 1:29:40 PM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54hafv0"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/yxGkHVo9bEw"&gt;https://youtu.be/yxGkHVo9bEw&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jp537b3t0"&gt;Can you Catch the Game?&lt;/h2&gt;
&lt;div&gt;
&lt;p&gt;When he was young, Mark didn&amp;rsquo;t have access to modern gaming platforms. Like many at the time, entertainment came from broadcast television, limited channels, scheduled programming, and a reliance on anticipation rather than instant access. One particular show left a lasting impression: &lt;em&gt;The Honeymoon Quiz&lt;/em&gt;. Among its many challenges was a deceptively simple game that stood out for its difficulty and tension.&lt;/p&gt;
&lt;p&gt;The concept was straightforward. A frame positioned above the player held several sticks. Without warning, they would drop at random, and the player&amp;rsquo;s only task was to catch them before they hit the ground. Simple in design, but demanding in execution.&lt;/p&gt;
&lt;p&gt;Decades later, Mark revisits this concept with a modern, electronics-driven interpretation, building a fully autonomous, microcontroller-based version of the game. As he puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It will hold several sticks that will drop down randomly one by one&amp;hellip; and you need to try to catch them. That&amp;rsquo;s the game.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/0525.schematic.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp537b3t1"&gt;The Schematic&lt;/h2&gt;
&lt;p&gt;The system is divided cleanly into four functional sections: power, control, sound, and actuation.&lt;/p&gt;
&lt;p&gt;The power design reflects Mark&amp;rsquo;s preference for simplicity and reliability over modern optimisation. While acknowledging newer approaches, he intentionally uses a linear regulator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know it&amp;#39;s not the most elegant regulator nowadays, but it&amp;#39;s analog and it&amp;#39;s proven and tested&amp;hellip; that&amp;#39;s why I use it.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;An input supply (e.g. 12V) is stepped down to 8V for the actuators. This is a deliberate choice to provide sufficient drive strength to the relay-based mechanisms responsible for releasing the sticks.&lt;/p&gt;
&lt;p&gt;The Arduino Nano operates using its onboard regulator, while also serving as the central controller. A push button connected to digital pin D2 serves dual purposes: starting the game and toggling difficulty.&lt;/p&gt;
&lt;p&gt;This behaviour is clearly implemented in the code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define StartButton 2
EasyButton button(StartButton);

void buttonPressed() {
  running = !running;
}

void sequenceEllapsed() {
  expertmode = !expertmode;
  digitalWrite(ModeLed, expertmode);
}

button.onPressed(buttonPressed);
button.onSequence(2, 1500, sequenceEllapsed);&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Here, a single press toggles the game state, while a double press (within 1500 ms) activates &amp;ldquo;expert mode&amp;rdquo; &amp;mdash; a faster-paced variant of gameplay.&lt;/p&gt;
&lt;p&gt;The sound system is implemented using a PWM-driven speaker, producing simple tones to indicate game states. Mark describes this pragmatically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only used to generate a beeping sound to indicate the start and the end of a game&amp;hellip; it will do the job quick and dirty.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Finally, the relay drivers form the core of the mechanical interaction. Each relay controls a latch mechanism holding a stick. When triggered, the latch releases, allowing gravity to do the rest.&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000368.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp538s5b2"&gt;Game logic and behaviour&lt;/h2&gt;
&lt;p&gt;The game&amp;rsquo;s operation is governed by a simple but effective state-driven loop. Once started, it progresses through a fixed lifecycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Play a start tone&lt;/li&gt;
&lt;li&gt;Sequentially drop sticks in random order&lt;/li&gt;
&lt;li&gt;Ensure no stick is dropped twice&lt;/li&gt;
&lt;li&gt;Play an end tone and reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The randomness is carefully handled to avoid repetition:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int randStick = random(3, 13);

while (valueExistsInArray(droplog, arraySize, randStick)) {
  randStick = random(3, 13);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This ensures that each actuator is triggered only once per game cycle, a detail not explicitly called out in the original blog, but critical to gameplay integrity.&lt;/p&gt;
&lt;p&gt;Timing is also adjustable based on difficulty:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (expertmode == 1) randTime = randTime * 500;
else randTime = randTime * 1000;&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;This reflects Mark&amp;rsquo;s intent to scale challenge dynamically, something he alludes to in his video breakdown&amp;nbsp;as part of creating &amp;ldquo;a more difficult game.&amp;rdquo;&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000025.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53cbpg3"&gt;Placing the components&lt;/h2&gt;
&lt;p&gt;Component placement follows a logical and structured layout, aided by the available space on the prototyping board. While the blog presents this as straightforward. Mark notes:&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know this is not the most elegant way of soldering&amp;hellip; but I have to make do with what I have at home.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This highlights a key aspect of the project: it is intentionally accessible and built using available tools rather than precision manufacturing.&lt;/p&gt;
&lt;p&gt;After soldering, the board requires manual refinement. Traces are selectively removed using a rotary tool to prevent unintended connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;If I don&amp;#39;t we will have a big short circuit&amp;hellip; so this needs to be done.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000061.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53dsku4"&gt;Baseplate&lt;/h2&gt;
&lt;p&gt;The baseplate serves as a practical integration point for the electronics. It houses the PCB, speaker, LED, and control button in a compact arrangement.&lt;/p&gt;
&lt;p&gt;Mark emphasises the importance of keeping wiring short and manageable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I made a base plate&amp;hellip; to keep wires short and compact.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;This design choice reduces noise, improves reliability, and simplifies assembly, particularly important in a system with multiple actuators.&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000378.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53eclc5"&gt;Building a Rig&lt;/h2&gt;
&lt;p&gt;The mechanical structure is deliberately flexible. While the blog suggests building a frame, the transcript shows Mark adapting available materials:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You can use some wood bars&amp;hellip; I happen to have aluminum frames laying around from an old table.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This reinforces the project&amp;rsquo;s ethos: use what you have, adapt creatively.&lt;/p&gt;
&lt;p&gt;Actuators are mounted to the horizontal bar using strong double-sided tape. Interestingly, this is not just a convenience but a considered mechanical decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Make sure you use proper double-sided tape&amp;hellip; you don&amp;rsquo;t want the actuator to fall off completely.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;The goal is controlled release, only the sticks should fall, not the mechanisms themselves.&lt;/p&gt;
&lt;p&gt;Another practical insight not present in the original write-up is wiring flexibility:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;All I need to worry about later is which wire is the common&amp;hellip; all the other wires I can just connect randomly because the actuators are controlled randomly.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Because activation is randomised in software, physical ordering is irrelevant, a useful simplification during assembly. The sticks themselves are simple wooden segments, but their preparation is essential for consistent performance.&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;Cut to approximately 25 cm and fitted with hooks, they interface directly with the latch mechanisms. While the blog presents this briefly, the transcript reinforces the intended gameplay experience, lightweight sticks that drop cleanly and predictably.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fumk7"&gt;Sketch upload&lt;/h2&gt;
&lt;p&gt;Programming the Arduino completes the system. Mark uses the Arduino IDE, selecting the correct board and port before uploading the sketch.&lt;/p&gt;
&lt;p&gt;The only dependency is the EasyButton library:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;EasyButton.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;div&gt;As highlighted in both the blog and transcript, this library simplifies input handling and enables multi-function button logic without complex interrupt handling, although the code does optionally enable interrupts if supported:&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (button.supportsInterrupt()) {
  button.enableInterrupt(buttonISR);
}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;Testing reveals a key insight: the game is harder than it looks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;As you can guess&amp;hellip; this is more difficult than I expected.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even with a basic prototype setup, the random timing and human reaction limits quickly become apparent. This validates the original TV concept, and demonstrates the effectiveness of Mark&amp;rsquo;s implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000387.png" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53hq229"&gt;Reflection and future considerations&lt;/h2&gt;
&lt;p&gt;While the blog frames the build as complete, the transcript makes it clear that this is still a prototype:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Of course I will put a casing over the electronics&amp;hellip; for now it&amp;rsquo;s an experimental setup.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This suggests several natural future improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enclosing electronics for safety and durability&lt;/li&gt;
&lt;li&gt;Refining the frame structure for portability&lt;/li&gt;
&lt;li&gt;Adjusting difficulty scaling further&lt;/li&gt;
&lt;li&gt;Potentially expanding actuator count or configurability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a strong intended use case beyond personal experimentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m going to have lots of fun on this&amp;hellip; especially with the kids at my youth school.&amp;rdquo;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This positions the project as both a technical exercise and a practical interactive installation. Mark&amp;rsquo;s catch game successfully recreates a classic concept using accessible electronics and straightforward mechanical design. It balances simplicity with enough technical depth to make the build engaging, while the gameplay itself delivers genuine challenge.&lt;/p&gt;
&lt;p&gt;By combining randomness, physical interaction, and clear feedback mechanisms, the project highlights how effective even relatively simple embedded systems can be in creating engaging experiences, especially when paired with thoughtful implementation and iterative testing.&lt;/p&gt;
&lt;p&gt;Most importantly, it remains true to its roots: a simple idea, executed well, that is far more difficult than it first appears.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54rg7c3"&gt;Supporting Files and Links&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151346"&gt;Episode 715 Resources&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp54pbh70"&gt;Bill of Materials&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-bd1f5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,24017680,2401735,2575644~2,1457709,1848691,1201431,1201471&amp;nsku=26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X46790,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('bd1f5'));" data-farnell="9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,2401768~10,2401735,2575644~2,1457709,1848691,1201431,1201471" data-newark="26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X4679~10,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5,,,undefined~11,undefined~11,,,,,undefined~10,,undefined~2,,,,,undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX Pin Header, Wire-to-Board, 2.5 mm, 1 Rows, 2 Contacts, Through Hole Straight, KK 5045&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b427e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5&amp;nsku=26M6335~5&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b427e'));" data-farnell="9730940~5" data-newark="26M6335~5" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Linear Voltage Regulator, 7808, Fixed, Positive, 10V To 35V In, 8V/1A Out, TO-220-3&lt;/td&gt;
&lt;td&gt;Onsemi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-17966" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9666222&amp;nsku=88H4760&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('17966'));" data-farnell="9666222" data-newark="88H4760" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KYCON DC Power Connector, Jack, 3.5 A, 2 mm, PCB Mount, Through Hole&lt;/td&gt;
&lt;td&gt;KYCON&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-fd4b3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2839850&amp;nsku=49AC0350&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fd4b3'));" data-farnell="2839850" data-newark="49AC0350" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Small Signal Diode, Single, 100 V, 200 mA, 1 V, 4 ns, 4 A 1n4148&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1ed35" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9843680~11&amp;nsku=62M1970~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1ed35'));" data-farnell="9843680~11" data-newark="62M1970~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transistor BC517-D74Z&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1b937" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575349~11&amp;nsku=84Y9603~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1b937'));" data-farnell="2575349~11" data-newark="84Y9603~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VISATON Speaker, Mini, 2 &amp;quot;, 500 mW, 8 ohm, 83 dB, 250 Hz to 10000 Hz&lt;/td&gt;
&lt;td&gt;Visaton&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-da241" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4662064&amp;nsku=15J5302&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('da241'));" data-farnell="4662064" data-newark="15J5302" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MENTOR LED Panel Mount Indicator, Chrome Plated, Green, 2 VDC, 8 mm, 20 mA, 20 mcd, Not Rated&lt;/td&gt;
&lt;td&gt;Mentor&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-6f69a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1215781&amp;nsku=02M0051&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6f69a'));" data-farnell="1215781" data-newark="02M0051" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Pushbutton Switch, 12 mm, SPST, (On)-Off, Round Raised, Red&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-aeb8c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2913862&amp;nsku=69AC6100&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('aeb8c'));" data-farnell="2913862" data-newark="69AC6100" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ressitor 2K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0b640" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401761&amp;nsku=45X4679&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0b640'));" data-farnell="2401761" data-newark="45X4679" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 3.9K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-85ca8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=24017680&amp;nsku=45X46790&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('85ca8'));" data-farnell="2401768~10" data-newark="45X4679~10" data-comoverride="" data-cmpoverride="" data-cpc="undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 200E&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0f054" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401735&amp;nsku=45X4714&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0f054'));" data-farnell="2401735" data-newark="45X4714" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KEMET Multilayer Ceramic Capacitor, 0.1 &amp;Acirc;&amp;micro;F, 50 V, &amp;Acirc;&amp;plusmn; 10%, Radial Leaded, X7R, 5.08 mm&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0c686" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575644~2&amp;nsku=89Y7091~2&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0c686'));" data-farnell="2575644~2" data-newark="89Y7091~2" data-comoverride="" data-cmpoverride="" data-cpc="undefined~2" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;330nF&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1db6c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1457709&amp;nsku=58M4572&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1db6c'));" data-farnell="1457709" data-newark="58M4572" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arduino Nano&lt;/td&gt;
&lt;td&gt;Arduino&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-9de92" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1848691&amp;nsku=13T9275&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9de92'));" data-farnell="1848691" data-newark="13T9275" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO 6MS1S3M1RESlide Switch, SPDT, On-On, Through Hole, Side Actuator, 100 mA, 20 V&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-31132" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201431&amp;nsku=01M8447&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('31132'));" data-farnell="1201431" data-newark="01M8447" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Striped prototyping pcb board&lt;/td&gt;
&lt;td&gt;CIF&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d8142" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201471&amp;nsku=96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d8142'));" data-farnell="1201471" data-newark="96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;**BUY_KIT**&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lock mechanism 3~5V&lt;/td&gt;
&lt;td&gt;BADODO Security&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;Power adapter 12V / 1A
&lt;table width="823"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="823"&gt;Metal or wooden frame&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: arduino pwm speaker, diy stem game, diy arcade build, physical computing project, diy catch game, random drop game, reaction time game arduino, engineering project tutorial, maker electronics project, prototyping pcb project, arduino easybutton library, interactive electronics game, arduino nano project, arduino game, relay actuator project, e14presents_markdonners, friday_release&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays/revision/6</link><pubDate>Thu, 21 May 2026 11:33:46 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>cstanton</dc:creator><description>Revision 6 posted to Documents by cstanton on 5/21/2026 11:33:46 AM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54hafv0"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/yxGkHVo9bEw"&gt;https://youtu.be/yxGkHVo9bEw&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jp537b3t0"&gt;Can you Catch the Game?&lt;/h2&gt;
&lt;div&gt;
&lt;p&gt;When he was young, Mark didn&amp;rsquo;t have access to modern gaming platforms. Like many at the time, entertainment came from broadcast television, limited channels, scheduled programming, and a reliance on anticipation rather than instant access. One particular show left a lasting impression: &lt;em&gt;The Honeymoon Quiz&lt;/em&gt;. Among its many challenges was a deceptively simple game that stood out for its difficulty and tension.&lt;/p&gt;
&lt;p&gt;The concept was straightforward. A frame positioned above the player held several sticks. Without warning, they would drop at random, and the player&amp;rsquo;s only task was to catch them before they hit the ground. Simple in design, but demanding in execution.&lt;/p&gt;
&lt;p&gt;Decades later, Mark revisits this concept with a modern, electronics-driven interpretation, building a fully autonomous, microcontroller-based version of the game. As he puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It will hold several sticks that will drop down randomly one by one&amp;hellip; and you need to try to catch them. That&amp;rsquo;s the game.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp537b3t1"&gt;The Schematic&lt;/h2&gt;
&lt;p&gt;The system is divided cleanly into four functional sections: power, control, sound, and actuation.&lt;/p&gt;
&lt;p&gt;The power design reflects Mark&amp;rsquo;s preference for simplicity and reliability over modern optimisation. While acknowledging newer approaches, he intentionally uses a linear regulator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know it&amp;#39;s not the most elegant regulator nowadays, but it&amp;#39;s analog and it&amp;#39;s proven and tested&amp;hellip; that&amp;#39;s why I use it.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;An input supply (e.g. 12V) is stepped down to 8V for the actuators. This is a deliberate choice to provide sufficient drive strength to the relay-based mechanisms responsible for releasing the sticks.&lt;/p&gt;
&lt;p&gt;The Arduino Nano operates using its onboard regulator, while also serving as the central controller. A push button connected to digital pin D2 serves dual purposes: starting the game and toggling difficulty.&lt;/p&gt;
&lt;p&gt;This behaviour is clearly implemented in the code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define StartButton 2
EasyButton button(StartButton);

void buttonPressed() {
  running = !running;
}

void sequenceEllapsed() {
  expertmode = !expertmode;
  digitalWrite(ModeLed, expertmode);
}

button.onPressed(buttonPressed);
button.onSequence(2, 1500, sequenceEllapsed);&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Here, a single press toggles the game state, while a double press (within 1500 ms) activates &amp;ldquo;expert mode&amp;rdquo; &amp;mdash; a faster-paced variant of gameplay.&lt;/p&gt;
&lt;p&gt;The sound system is implemented using a PWM-driven speaker, producing simple tones to indicate game states. Mark describes this pragmatically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only used to generate a beeping sound to indicate the start and the end of a game&amp;hellip; it will do the job quick and dirty.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Finally, the relay drivers form the core of the mechanical interaction. Each relay controls a latch mechanism holding a stick. When triggered, the latch releases, allowing gravity to do the rest.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp538s5b2"&gt;Game logic and behaviour&lt;/h2&gt;
&lt;p&gt;The game&amp;rsquo;s operation is governed by a simple but effective state-driven loop. Once started, it progresses through a fixed lifecycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Play a start tone&lt;/li&gt;
&lt;li&gt;Sequentially drop sticks in random order&lt;/li&gt;
&lt;li&gt;Ensure no stick is dropped twice&lt;/li&gt;
&lt;li&gt;Play an end tone and reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The randomness is carefully handled to avoid repetition:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int randStick = random(3, 13);

while (valueExistsInArray(droplog, arraySize, randStick)) {
  randStick = random(3, 13);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This ensures that each actuator is triggered only once per game cycle, a detail not explicitly called out in the original blog, but critical to gameplay integrity.&lt;/p&gt;
&lt;p&gt;Timing is also adjustable based on difficulty:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (expertmode == 1) randTime = randTime * 500;
else randTime = randTime * 1000;&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This reflects Mark&amp;rsquo;s intent to scale challenge dynamically, something he alludes to in his video breakdown&amp;nbsp;as part of creating &amp;ldquo;a more difficult game.&amp;rdquo;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53cbpg3"&gt;Placing the components&lt;/h2&gt;
&lt;p&gt;Component placement follows a logical and structured layout, aided by the available space on the prototyping board. While the blog presents this as straightforward. Mark notes:&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know this is not the most elegant way of soldering&amp;hellip; but I have to make do with what I have at home.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This highlights a key aspect of the project: it is intentionally accessible and built using available tools rather than precision manufacturing.&lt;/p&gt;
&lt;p&gt;After soldering, the board requires manual refinement. Traces are selectively removed using a rotary tool to prevent unintended connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;If I don&amp;#39;t we will have a big short circuit&amp;hellip; so this needs to be done.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53dsku4"&gt;Baseplate&lt;/h2&gt;
&lt;p&gt;The baseplate serves as a practical integration point for the electronics. It houses the PCB, speaker, LED, and control button in a compact arrangement.&lt;/p&gt;
&lt;p&gt;Mark emphasises the importance of keeping wiring short and manageable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I made a base plate&amp;hellip; to keep wires short and compact.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This design choice reduces noise, improves reliability, and simplifies assembly, particularly important in a system with multiple actuators.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53eclc5"&gt;Building a Rig&lt;/h2&gt;
&lt;p&gt;The mechanical structure is deliberately flexible. While the blog suggests building a frame, the transcript shows Mark adapting available materials:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You can use some wood bars&amp;hellip; I happen to have aluminum frames laying around from an old table.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This reinforces the project&amp;rsquo;s ethos: use what you have, adapt creatively.&lt;/p&gt;
&lt;p&gt;Actuators are mounted to the horizontal bar using strong double-sided tape. Interestingly, this is not just a convenience but a considered mechanical decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Make sure you use proper double-sided tape&amp;hellip; you don&amp;rsquo;t want the actuator to fall off completely.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;The goal is controlled release, only the sticks should fall, not the mechanisms themselves.&lt;/p&gt;
&lt;p&gt;Another practical insight not present in the original write-up is wiring flexibility:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;All I need to worry about later is which wire is the common&amp;hellip; all the other wires I can just connect randomly because the actuators are controlled randomly.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Because activation is randomised in software, physical ordering is irrelevant, a useful simplification during assembly.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fj0r6"&gt;Preparing the drop sticks&lt;/h2&gt;
&lt;p&gt;The sticks themselves are simple wooden segments, but their preparation is essential for consistent performance.&lt;/p&gt;
&lt;p&gt;Cut to approximately 25 cm and fitted with hooks, they interface directly with the latch mechanisms. While the blog presents this briefly, the transcript reinforces the intended gameplay experience, lightweight sticks that drop cleanly and predictably.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fumk7"&gt;Sketch upload&lt;/h2&gt;
&lt;p&gt;Programming the Arduino completes the system. Mark uses the Arduino IDE, selecting the correct board and port before uploading the sketch.&lt;/p&gt;
&lt;p&gt;The only dependency is the EasyButton library:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;EasyButton.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;As highlighted in both the blog and transcript, this library simplifies input handling and enables multi-function button logic without complex interrupt handling, although the code does optionally enable interrupts if supported:&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (button.supportsInterrupt()) {
  button.enableInterrupt(buttonISR);
}&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53h93c8"&gt;Testing and gameplay&lt;/h2&gt;
&lt;p&gt;Testing reveals a key insight: the game is harder than it looks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;As you can guess&amp;hellip; this is more difficult than I expected.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even with a basic prototype setup, the random timing and human reaction limits quickly become apparent. This validates the original TV concept, and demonstrates the effectiveness of Mark&amp;rsquo;s implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53hq229"&gt;Reflection and future considerations&lt;/h2&gt;
&lt;p&gt;While the blog frames the build as complete, the transcript makes it clear that this is still a prototype:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Of course I will put a casing over the electronics&amp;hellip; for now it&amp;rsquo;s an experimental setup.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This suggests several natural future improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enclosing electronics for safety and durability&lt;/li&gt;
&lt;li&gt;Refining the frame structure for portability&lt;/li&gt;
&lt;li&gt;Adjusting difficulty scaling further&lt;/li&gt;
&lt;li&gt;Potentially expanding actuator count or configurability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a strong intended use case beyond personal experimentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m going to have lots of fun on this&amp;hellip; especially with the kids at my youth school.&amp;rdquo;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This positions the project as both a technical exercise and a practical interactive installation.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp53hq22a"&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;Mark&amp;rsquo;s catch game successfully recreates a classic concept using accessible electronics and straightforward mechanical design. It balances simplicity with enough technical depth to make the build engaging, while the gameplay itself delivers genuine challenge.&lt;/p&gt;
&lt;p&gt;By combining randomness, physical interaction, and clear feedback mechanisms, the project highlights how effective even relatively simple embedded systems can be in creating engaging experiences, especially when paired with thoughtful implementation and iterative testing.&lt;/p&gt;
&lt;p&gt;Most importantly, it remains true to its roots: a simple idea, executed well, that is far more difficult than it first appears.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54rg7c3"&gt;Supporting Files and Links&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151346"&gt;Episode 715 Resources&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp54pbh70"&gt;Bill of Materials&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-430c8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,24017680,2401735,2575644~2,1457709,1848691,1201431,1201471&amp;nsku=26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X46790,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('430c8'));" data-farnell="9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,2401768~10,2401735,2575644~2,1457709,1848691,1201431,1201471" data-newark="26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X4679~10,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5,,,undefined~11,undefined~11,,,,,undefined~10,,undefined~2,,,,,undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX Pin Header, Wire-to-Board, 2.5 mm, 1 Rows, 2 Contacts, Through Hole Straight, KK 5045&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a521f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5&amp;nsku=26M6335~5&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a521f'));" data-farnell="9730940~5" data-newark="26M6335~5" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Linear Voltage Regulator, 7808, Fixed, Positive, 10V To 35V In, 8V/1A Out, TO-220-3&lt;/td&gt;
&lt;td&gt;Onsemi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-26544" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9666222&amp;nsku=88H4760&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('26544'));" data-farnell="9666222" data-newark="88H4760" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KYCON DC Power Connector, Jack, 3.5 A, 2 mm, PCB Mount, Through Hole&lt;/td&gt;
&lt;td&gt;KYCON&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-685c9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2839850&amp;nsku=49AC0350&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('685c9'));" data-farnell="2839850" data-newark="49AC0350" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Small Signal Diode, Single, 100 V, 200 mA, 1 V, 4 ns, 4 A 1n4148&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a4e3b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9843680~11&amp;nsku=62M1970~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a4e3b'));" data-farnell="9843680~11" data-newark="62M1970~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transistor BC517-D74Z&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-08ec6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575349~11&amp;nsku=84Y9603~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('08ec6'));" data-farnell="2575349~11" data-newark="84Y9603~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VISATON Speaker, Mini, 2 &amp;quot;, 500 mW, 8 ohm, 83 dB, 250 Hz to 10000 Hz&lt;/td&gt;
&lt;td&gt;Visaton&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-07422" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4662064&amp;nsku=15J5302&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('07422'));" data-farnell="4662064" data-newark="15J5302" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MENTOR LED Panel Mount Indicator, Chrome Plated, Green, 2 VDC, 8 mm, 20 mA, 20 mcd, Not Rated&lt;/td&gt;
&lt;td&gt;Mentor&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f7a1a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1215781&amp;nsku=02M0051&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f7a1a'));" data-farnell="1215781" data-newark="02M0051" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Pushbutton Switch, 12 mm, SPST, (On)-Off, Round Raised, Red&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-9107d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2913862&amp;nsku=69AC6100&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9107d'));" data-farnell="2913862" data-newark="69AC6100" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ressitor 2K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4a189" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401761&amp;nsku=45X4679&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4a189'));" data-farnell="2401761" data-newark="45X4679" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 3.9K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-27be8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=24017680&amp;nsku=45X46790&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('27be8'));" data-farnell="2401768~10" data-newark="45X4679~10" data-comoverride="" data-cmpoverride="" data-cpc="undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 200E&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-93a39" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401735&amp;nsku=45X4714&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('93a39'));" data-farnell="2401735" data-newark="45X4714" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KEMET Multilayer Ceramic Capacitor, 0.1 &amp;Acirc;&amp;micro;F, 50 V, &amp;Acirc;&amp;plusmn; 10%, Radial Leaded, X7R, 5.08 mm&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1913a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575644~2&amp;nsku=89Y7091~2&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1913a'));" data-farnell="2575644~2" data-newark="89Y7091~2" data-comoverride="" data-cmpoverride="" data-cpc="undefined~2" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;330nF&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-770bb" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1457709&amp;nsku=58M4572&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('770bb'));" data-farnell="1457709" data-newark="58M4572" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arduino Nano&lt;/td&gt;
&lt;td&gt;Arduino&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ba282" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1848691&amp;nsku=13T9275&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ba282'));" data-farnell="1848691" data-newark="13T9275" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO 6MS1S3M1RESlide Switch, SPDT, On-On, Through Hole, Side Actuator, 100 mA, 20 V&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-8e6ff" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201431&amp;nsku=01M8447&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8e6ff'));" data-farnell="1201431" data-newark="01M8447" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Striped prototyping pcb board&lt;/td&gt;
&lt;td&gt;CIF&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-73b1b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201471&amp;nsku=96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('73b1b'));" data-farnell="1201471" data-newark="96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;**BUY_KIT**&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lock mechanism 3~5V&lt;/td&gt;
&lt;td&gt;BADODO Security&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;Power adapter 12V / 1A
&lt;table width="823"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="823"&gt;Metal or wooden frame&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: arduino pwm speaker, diy stem game, diy arcade build, physical computing project, diy catch game, random drop game, reaction time game arduino, engineering project tutorial, maker electronics project, prototyping pcb project, arduino easybutton library, interactive electronics game, arduino nano project, arduino game, relay actuator project, e14presents_markdonners, friday_release&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays/revision/5</link><pubDate>Thu, 21 May 2026 11:31:14 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>cstanton</dc:creator><description>Revision 5 posted to Documents by cstanton on 5/21/2026 11:31:14 AM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54hafv0"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/yxGkHVo9bEw"&gt;https://youtu.be/yxGkHVo9bEw&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jp537b3t0"&gt;Can you Catch the Game?&lt;/h2&gt;
&lt;div&gt;
&lt;p&gt;When he was young, Mark didn&amp;rsquo;t have access to modern gaming platforms. Like many at the time, entertainment came from broadcast television, limited channels, scheduled programming, and a reliance on anticipation rather than instant access. One particular show left a lasting impression: &lt;em&gt;The Honeymoon Quiz&lt;/em&gt;. Among its many challenges was a deceptively simple game that stood out for its difficulty and tension.&lt;/p&gt;
&lt;p&gt;The concept was straightforward. A frame positioned above the player held several sticks. Without warning, they would drop at random, and the player&amp;rsquo;s only task was to catch them before they hit the ground. Simple in design, but demanding in execution.&lt;/p&gt;
&lt;p&gt;Decades later, Mark revisits this concept with a modern, electronics-driven interpretation, building a fully autonomous, microcontroller-based version of the game. As he puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It will hold several sticks that will drop down randomly one by one&amp;hellip; and you need to try to catch them. That&amp;rsquo;s the game.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp537b3t1"&gt;The Schematic&lt;/h2&gt;
&lt;p&gt;The system is divided cleanly into four functional sections: power, control, sound, and actuation.&lt;/p&gt;
&lt;p&gt;The power design reflects Mark&amp;rsquo;s preference for simplicity and reliability over modern optimisation. While acknowledging newer approaches, he intentionally uses a linear regulator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know it&amp;#39;s not the most elegant regulator nowadays, but it&amp;#39;s analog and it&amp;#39;s proven and tested&amp;hellip; that&amp;#39;s why I use it.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;An input supply (e.g. 12V) is stepped down to 8V for the actuators. This is a deliberate choice to provide sufficient drive strength to the relay-based mechanisms responsible for releasing the sticks.&lt;/p&gt;
&lt;p&gt;The Arduino Nano operates using its onboard regulator, while also serving as the central controller. A push button connected to digital pin D2 serves dual purposes: starting the game and toggling difficulty.&lt;/p&gt;
&lt;p&gt;This behaviour is clearly implemented in the code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define StartButton 2
EasyButton button(StartButton);

void buttonPressed() {
  running = !running;
}

void sequenceEllapsed() {
  expertmode = !expertmode;
  digitalWrite(ModeLed, expertmode);
}

button.onPressed(buttonPressed);
button.onSequence(2, 1500, sequenceEllapsed);&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Here, a single press toggles the game state, while a double press (within 1500 ms) activates &amp;ldquo;expert mode&amp;rdquo; &amp;mdash; a faster-paced variant of gameplay.&lt;/p&gt;
&lt;p&gt;The sound system is implemented using a PWM-driven speaker, producing simple tones to indicate game states. Mark describes this pragmatically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only used to generate a beeping sound to indicate the start and the end of a game&amp;hellip; it will do the job quick and dirty.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Finally, the relay drivers form the core of the mechanical interaction. Each relay controls a latch mechanism holding a stick. When triggered, the latch releases, allowing gravity to do the rest.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp538s5b2"&gt;Game logic and behaviour&lt;/h2&gt;
&lt;p&gt;The game&amp;rsquo;s operation is governed by a simple but effective state-driven loop. Once started, it progresses through a fixed lifecycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Play a start tone&lt;/li&gt;
&lt;li&gt;Sequentially drop sticks in random order&lt;/li&gt;
&lt;li&gt;Ensure no stick is dropped twice&lt;/li&gt;
&lt;li&gt;Play an end tone and reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The randomness is carefully handled to avoid repetition:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int randStick = random(3, 13);

while (valueExistsInArray(droplog, arraySize, randStick)) {
  randStick = random(3, 13);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This ensures that each actuator is triggered only once per game cycle, a detail not explicitly called out in the original blog, but critical to gameplay integrity.&lt;/p&gt;
&lt;p&gt;Timing is also adjustable based on difficulty:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (expertmode == 1) randTime = randTime * 500;
else randTime = randTime * 1000;&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This reflects Mark&amp;rsquo;s intent to scale challenge dynamically, something he alludes to in his video breakdown&amp;nbsp;as part of creating &amp;ldquo;a more difficult game.&amp;rdquo;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53cbpg3"&gt;Placing the components&lt;/h2&gt;
&lt;p&gt;Component placement follows a logical and structured layout, aided by the available space on the prototyping board. While the blog presents this as straightforward. Mark notes:&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know this is not the most elegant way of soldering&amp;hellip; but I have to make do with what I have at home.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This highlights a key aspect of the project: it is intentionally accessible and built using available tools rather than precision manufacturing.&lt;/p&gt;
&lt;p&gt;After soldering, the board requires manual refinement. Traces are selectively removed using a rotary tool to prevent unintended connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;If I don&amp;#39;t we will have a big short circuit&amp;hellip; so this needs to be done.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53dsku4"&gt;Baseplate&lt;/h2&gt;
&lt;p&gt;The baseplate serves as a practical integration point for the electronics. It houses the PCB, speaker, LED, and control button in a compact arrangement.&lt;/p&gt;
&lt;p&gt;Mark emphasises the importance of keeping wiring short and manageable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I made a base plate&amp;hellip; to keep wires short and compact.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This design choice reduces noise, improves reliability, and simplifies assembly, particularly important in a system with multiple actuators.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53eclc5"&gt;Building a Rig&lt;/h2&gt;
&lt;p&gt;The mechanical structure is deliberately flexible. While the blog suggests building a frame, the transcript shows Mark adapting available materials:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You can use some wood bars&amp;hellip; I happen to have aluminum frames laying around from an old table.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This reinforces the project&amp;rsquo;s ethos: use what you have, adapt creatively.&lt;/p&gt;
&lt;p&gt;Actuators are mounted to the horizontal bar using strong double-sided tape. Interestingly, this is not just a convenience but a considered mechanical decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Make sure you use proper double-sided tape&amp;hellip; you don&amp;rsquo;t want the actuator to fall off completely.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;The goal is controlled release, only the sticks should fall, not the mechanisms themselves.&lt;/p&gt;
&lt;p&gt;Another practical insight not present in the original write-up is wiring flexibility:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;All I need to worry about later is which wire is the common&amp;hellip; all the other wires I can just connect randomly because the actuators are controlled randomly.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Because activation is randomised in software, physical ordering is irrelevant, a useful simplification during assembly.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fj0r6"&gt;Preparing the drop sticks&lt;/h2&gt;
&lt;p&gt;The sticks themselves are simple wooden segments, but their preparation is essential for consistent performance.&lt;/p&gt;
&lt;p&gt;Cut to approximately 25 cm and fitted with hooks, they interface directly with the latch mechanisms. While the blog presents this briefly, the transcript reinforces the intended gameplay experience, lightweight sticks that drop cleanly and predictably.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fumk7"&gt;Sketch upload&lt;/h2&gt;
&lt;p&gt;Programming the Arduino completes the system. Mark uses the Arduino IDE, selecting the correct board and port before uploading the sketch.&lt;/p&gt;
&lt;p&gt;The only dependency is the EasyButton library:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;EasyButton.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;As highlighted in both the blog and transcript, this library simplifies input handling and enables multi-function button logic without complex interrupt handling, although the code does optionally enable interrupts if supported:&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (button.supportsInterrupt()) {
  button.enableInterrupt(buttonISR);
}&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53h93c8"&gt;Testing and gameplay&lt;/h2&gt;
&lt;p&gt;Testing reveals a key insight: the game is harder than it looks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;As you can guess&amp;hellip; this is more difficult than I expected.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even with a basic prototype setup, the random timing and human reaction limits quickly become apparent. This validates the original TV concept, and demonstrates the effectiveness of Mark&amp;rsquo;s implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53hq229"&gt;Reflection and future considerations&lt;/h2&gt;
&lt;p&gt;While the blog frames the build as complete, the transcript makes it clear that this is still a prototype:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Of course I will put a casing over the electronics&amp;hellip; for now it&amp;rsquo;s an experimental setup.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This suggests several natural future improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enclosing electronics for safety and durability&lt;/li&gt;
&lt;li&gt;Refining the frame structure for portability&lt;/li&gt;
&lt;li&gt;Adjusting difficulty scaling further&lt;/li&gt;
&lt;li&gt;Potentially expanding actuator count or configurability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a strong intended use case beyond personal experimentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m going to have lots of fun on this&amp;hellip; especially with the kids at my youth school.&amp;rdquo;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This positions the project as both a technical exercise and a practical interactive installation.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp53hq22a"&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;Mark&amp;rsquo;s catch game successfully recreates a classic concept using accessible electronics and straightforward mechanical design. It balances simplicity with enough technical depth to make the build engaging, while the gameplay itself delivers genuine challenge.&lt;/p&gt;
&lt;p&gt;By combining randomness, physical interaction, and clear feedback mechanisms, the project highlights how effective even relatively simple embedded systems can be in creating engaging experiences, especially when paired with thoughtful implementation and iterative testing.&lt;/p&gt;
&lt;p&gt;Most importantly, it remains true to its roots: a simple idea, executed well, that is far more difficult than it first appears.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54rg7c3"&gt;Supporting Files and Links&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp54pbh70"&gt;Bill of Materials&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-493c8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,24017680,2401735,2575644~2,1457709,1848691,1201431,1201471&amp;nsku=26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X46790,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('493c8'));" data-farnell="9730940~5,9666222,2839850,9843680~11,2575349~11,4662064,1215781,2913862,2401761,2401768~10,2401735,2575644~2,1457709,1848691,1201431,1201471" data-newark="26M6335~5,88H4760,49AC0350,62M1970~11,84Y9603~11,15J5302,02M0051,69AC6100,45X4679,45X4679~10,45X4714,89Y7091~2,58M4572,13T9275,01M8447,96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5,,,undefined~11,undefined~11,,,,,undefined~10,,undefined~2,,,,,undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX Pin Header, Wire-to-Board, 2.5 mm, 1 Rows, 2 Contacts, Through Hole Straight, KK 5045&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-cd0a8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9730940~5&amp;nsku=26M6335~5&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('cd0a8'));" data-farnell="9730940~5" data-newark="26M6335~5" data-comoverride="" data-cmpoverride="" data-cpc="undefined~5" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Linear Voltage Regulator, 7808, Fixed, Positive, 10V To 35V In, 8V/1A Out, TO-220-3&lt;/td&gt;
&lt;td&gt;Onsemi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b3088" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9666222&amp;nsku=88H4760&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b3088'));" data-farnell="9666222" data-newark="88H4760" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KYCON DC Power Connector, Jack, 3.5 A, 2 mm, PCB Mount, Through Hole&lt;/td&gt;
&lt;td&gt;KYCON&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-95d03" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2839850&amp;nsku=49AC0350&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('95d03'));" data-farnell="2839850" data-newark="49AC0350" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ONSEMI Small Signal Diode, Single, 100 V, 200 mA, 1 V, 4 ns, 4 A 1n4148&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a36c2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9843680~11&amp;nsku=62M1970~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a36c2'));" data-farnell="9843680~11" data-newark="62M1970~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transistor BC517-D74Z&lt;/td&gt;
&lt;td&gt;ONSEMI&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-79455" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575349~11&amp;nsku=84Y9603~11&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('79455'));" data-farnell="2575349~11" data-newark="84Y9603~11" data-comoverride="" data-cmpoverride="" data-cpc="undefined~11" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VISATON Speaker, Mini, 2 &amp;quot;, 500 mW, 8 ohm, 83 dB, 250 Hz to 10000 Hz&lt;/td&gt;
&lt;td&gt;Visaton&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ac891" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=4662064&amp;nsku=15J5302&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ac891'));" data-farnell="4662064" data-newark="15J5302" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MENTOR LED Panel Mount Indicator, Chrome Plated, Green, 2 VDC, 8 mm, 20 mA, 20 mcd, Not Rated&lt;/td&gt;
&lt;td&gt;Mentor&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-2a939" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1215781&amp;nsku=02M0051&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('2a939'));" data-farnell="1215781" data-newark="02M0051" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Pushbutton Switch, 12 mm, SPST, (On)-Off, Round Raised, Red&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d3368" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2913862&amp;nsku=69AC6100&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d3368'));" data-farnell="2913862" data-newark="69AC6100" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ressitor 2K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ca9b4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401761&amp;nsku=45X4679&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ca9b4'));" data-farnell="2401761" data-newark="45X4679" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 3.9K&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b1a34" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=24017680&amp;nsku=45X46790&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b1a34'));" data-farnell="2401768~10" data-newark="45X4679~10" data-comoverride="" data-cmpoverride="" data-cpc="undefined~10" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resistor 200E&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-fba61" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2401735&amp;nsku=45X4714&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fba61'));" data-farnell="2401735" data-newark="45X4714" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KEMET Multilayer Ceramic Capacitor, 0.1 &amp;Acirc;&amp;micro;F, 50 V, &amp;Acirc;&amp;plusmn; 10%, Radial Leaded, X7R, 5.08 mm&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-72e0a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2575644~2&amp;nsku=89Y7091~2&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('72e0a'));" data-farnell="2575644~2" data-newark="89Y7091~2" data-comoverride="" data-cmpoverride="" data-cpc="undefined~2" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;330nF&lt;/td&gt;
&lt;td&gt;Kemet&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-73188" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1457709&amp;nsku=58M4572&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('73188'));" data-farnell="1457709" data-newark="58M4572" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arduino Nano&lt;/td&gt;
&lt;td&gt;Arduino&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-11594" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1848691&amp;nsku=13T9275&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('11594'));" data-farnell="1848691" data-newark="13T9275" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO 6MS1S3M1RESlide Switch, SPDT, On-On, Through Hole, Side Actuator, 100 mA, 20 V&lt;/td&gt;
&lt;td&gt;Multicomp Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0a4b2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201431&amp;nsku=01M8447&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0a4b2'));" data-farnell="1201431" data-newark="01M8447" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Striped prototyping pcb board&lt;/td&gt;
&lt;td&gt;CIF&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-8f079" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1201471&amp;nsku=96K6330&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8f079'));" data-farnell="1201471" data-newark="96K6330" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;**BUY_KIT**&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lock mechanism 3~5V&lt;/td&gt;
&lt;td&gt;BADODO Security&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;Power adapter 12V / 1A
&lt;table width="823"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="823"&gt;Metal or wooden frame&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: arduino pwm speaker, diy stem game, diy arcade build, physical computing project, diy catch game, random drop game, reaction time game arduino, engineering project tutorial, maker electronics project, prototyping pcb project, arduino easybutton library, interactive electronics game, arduino nano project, arduino game, relay actuator project, e14presents_markdonners, friday_release&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays/revision/4</link><pubDate>Thu, 21 May 2026 11:25:39 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>cstanton</dc:creator><description>Revision 4 posted to Documents by cstanton on 5/21/2026 11:25:39 AM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp54hafv0"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/yxGkHVo9bEw"&gt;https://youtu.be/yxGkHVo9bEw&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jp537b3t0"&gt;Can you Catch the Game?&lt;/h2&gt;
&lt;div&gt;
&lt;p&gt;When he was young, Mark didn&amp;rsquo;t have access to modern gaming platforms. Like many at the time, entertainment came from broadcast television, limited channels, scheduled programming, and a reliance on anticipation rather than instant access. One particular show left a lasting impression: &lt;em&gt;The Honeymoon Quiz&lt;/em&gt;. Among its many challenges was a deceptively simple game that stood out for its difficulty and tension.&lt;/p&gt;
&lt;p&gt;The concept was straightforward. A frame positioned above the player held several sticks. Without warning, they would drop at random, and the player&amp;rsquo;s only task was to catch them before they hit the ground. Simple in design, but demanding in execution.&lt;/p&gt;
&lt;p&gt;Decades later, Mark revisits this concept with a modern, electronics-driven interpretation, building a fully autonomous, microcontroller-based version of the game. As he puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It will hold several sticks that will drop down randomly one by one&amp;hellip; and you need to try to catch them. That&amp;rsquo;s the game.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp537b3t1"&gt;The Schematic&lt;/h2&gt;
&lt;p&gt;The system is divided cleanly into four functional sections: power, control, sound, and actuation.&lt;/p&gt;
&lt;p&gt;The power design reflects Mark&amp;rsquo;s preference for simplicity and reliability over modern optimisation. While acknowledging newer approaches, he intentionally uses a linear regulator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know it&amp;#39;s not the most elegant regulator nowadays, but it&amp;#39;s analog and it&amp;#39;s proven and tested&amp;hellip; that&amp;#39;s why I use it.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;An input supply (e.g. 12V) is stepped down to 8V for the actuators. This is a deliberate choice to provide sufficient drive strength to the relay-based mechanisms responsible for releasing the sticks.&lt;/p&gt;
&lt;p&gt;The Arduino Nano operates using its onboard regulator, while also serving as the central controller. A push button connected to digital pin D2 serves dual purposes: starting the game and toggling difficulty.&lt;/p&gt;
&lt;p&gt;This behaviour is clearly implemented in the code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define StartButton 2
EasyButton button(StartButton);

void buttonPressed() {
  running = !running;
}

void sequenceEllapsed() {
  expertmode = !expertmode;
  digitalWrite(ModeLed, expertmode);
}

button.onPressed(buttonPressed);
button.onSequence(2, 1500, sequenceEllapsed);&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Here, a single press toggles the game state, while a double press (within 1500 ms) activates &amp;ldquo;expert mode&amp;rdquo; &amp;mdash; a faster-paced variant of gameplay.&lt;/p&gt;
&lt;p&gt;The sound system is implemented using a PWM-driven speaker, producing simple tones to indicate game states. Mark describes this pragmatically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only used to generate a beeping sound to indicate the start and the end of a game&amp;hellip; it will do the job quick and dirty.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Finally, the relay drivers form the core of the mechanical interaction. Each relay controls a latch mechanism holding a stick. When triggered, the latch releases, allowing gravity to do the rest.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp538s5b2"&gt;Game logic and behaviour&lt;/h2&gt;
&lt;p&gt;The game&amp;rsquo;s operation is governed by a simple but effective state-driven loop. Once started, it progresses through a fixed lifecycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Play a start tone&lt;/li&gt;
&lt;li&gt;Sequentially drop sticks in random order&lt;/li&gt;
&lt;li&gt;Ensure no stick is dropped twice&lt;/li&gt;
&lt;li&gt;Play an end tone and reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The randomness is carefully handled to avoid repetition:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int randStick = random(3, 13);

while (valueExistsInArray(droplog, arraySize, randStick)) {
  randStick = random(3, 13);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This ensures that each actuator is triggered only once per game cycle, a detail not explicitly called out in the original blog, but critical to gameplay integrity.&lt;/p&gt;
&lt;p&gt;Timing is also adjustable based on difficulty:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (expertmode == 1) randTime = randTime * 500;
else randTime = randTime * 1000;&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This reflects Mark&amp;rsquo;s intent to scale challenge dynamically, something he alludes to in his video breakdown&amp;nbsp;as part of creating &amp;ldquo;a more difficult game.&amp;rdquo;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53cbpg3"&gt;Placing the components&lt;/h2&gt;
&lt;p&gt;Component placement follows a logical and structured layout, aided by the available space on the prototyping board. While the blog presents this as straightforward. Mark notes:&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know this is not the most elegant way of soldering&amp;hellip; but I have to make do with what I have at home.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This highlights a key aspect of the project: it is intentionally accessible and built using available tools rather than precision manufacturing.&lt;/p&gt;
&lt;p&gt;After soldering, the board requires manual refinement. Traces are selectively removed using a rotary tool to prevent unintended connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;If I don&amp;#39;t we will have a big short circuit&amp;hellip; so this needs to be done.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53dsku4"&gt;Baseplate&lt;/h2&gt;
&lt;p&gt;The baseplate serves as a practical integration point for the electronics. It houses the PCB, speaker, LED, and control button in a compact arrangement.&lt;/p&gt;
&lt;p&gt;Mark emphasises the importance of keeping wiring short and manageable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I made a base plate&amp;hellip; to keep wires short and compact.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This design choice reduces noise, improves reliability, and simplifies assembly, particularly important in a system with multiple actuators.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53eclc5"&gt;Building a Rig&lt;/h2&gt;
&lt;p&gt;The mechanical structure is deliberately flexible. While the blog suggests building a frame, the transcript shows Mark adapting available materials:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You can use some wood bars&amp;hellip; I happen to have aluminum frames laying around from an old table.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This reinforces the project&amp;rsquo;s ethos: use what you have, adapt creatively.&lt;/p&gt;
&lt;p&gt;Actuators are mounted to the horizontal bar using strong double-sided tape. Interestingly, this is not just a convenience but a considered mechanical decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Make sure you use proper double-sided tape&amp;hellip; you don&amp;rsquo;t want the actuator to fall off completely.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;The goal is controlled release, only the sticks should fall, not the mechanisms themselves.&lt;/p&gt;
&lt;p&gt;Another practical insight not present in the original write-up is wiring flexibility:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;All I need to worry about later is which wire is the common&amp;hellip; all the other wires I can just connect randomly because the actuators are controlled randomly.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Because activation is randomised in software, physical ordering is irrelevant, a useful simplification during assembly.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fj0r6"&gt;Preparing the drop sticks&lt;/h2&gt;
&lt;p&gt;The sticks themselves are simple wooden segments, but their preparation is essential for consistent performance.&lt;/p&gt;
&lt;p&gt;Cut to approximately 25 cm and fitted with hooks, they interface directly with the latch mechanisms. While the blog presents this briefly, the transcript reinforces the intended gameplay experience, lightweight sticks that drop cleanly and predictably.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fumk7"&gt;Sketch upload&lt;/h2&gt;
&lt;p&gt;Programming the Arduino completes the system. Mark uses the Arduino IDE, selecting the correct board and port before uploading the sketch.&lt;/p&gt;
&lt;p&gt;The only dependency is the EasyButton library:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;EasyButton.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;As highlighted in both the blog and transcript, this library simplifies input handling and enables multi-function button logic without complex interrupt handling, although the code does optionally enable interrupts if supported:&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (button.supportsInterrupt()) {
  button.enableInterrupt(buttonISR);
}&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53h93c8"&gt;Testing and gameplay&lt;/h2&gt;
&lt;p&gt;Testing reveals a key insight: the game is harder than it looks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;As you can guess&amp;hellip; this is more difficult than I expected.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even with a basic prototype setup, the random timing and human reaction limits quickly become apparent. This validates the original TV concept, and demonstrates the effectiveness of Mark&amp;rsquo;s implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53hq229"&gt;Reflection and future considerations&lt;/h2&gt;
&lt;p&gt;While the blog frames the build as complete, the transcript makes it clear that this is still a prototype:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Of course I will put a casing over the electronics&amp;hellip; for now it&amp;rsquo;s an experimental setup.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This suggests several natural future improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enclosing electronics for safety and durability&lt;/li&gt;
&lt;li&gt;Refining the frame structure for portability&lt;/li&gt;
&lt;li&gt;Adjusting difficulty scaling further&lt;/li&gt;
&lt;li&gt;Potentially expanding actuator count or configurability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a strong intended use case beyond personal experimentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m going to have lots of fun on this&amp;hellip; especially with the kids at my youth school.&amp;rdquo;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This positions the project as both a technical exercise and a practical interactive installation.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp53hq22a"&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;Mark&amp;rsquo;s catch game successfully recreates a classic concept using accessible electronics and straightforward mechanical design. It balances simplicity with enough technical depth to make the build engaging, while the gameplay itself delivers genuine challenge.&lt;/p&gt;
&lt;p&gt;By combining randomness, physical interaction, and clear feedback mechanisms, the project highlights how effective even relatively simple embedded systems can be in creating engaging experiences, especially when paired with thoughtful implementation and iterative testing.&lt;/p&gt;
&lt;p&gt;Most importantly, it remains true to its roots: a simple idea, executed well, that is far more difficult than it first appears.&lt;/p&gt;
&lt;/div&gt;
Supporting Links and Files
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;-&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: arduino pwm speaker, diy stem game, diy arcade build, physical computing project, diy catch game, random drop game, reaction time game arduino, engineering project tutorial, maker electronics project, prototyping pcb project, arduino easybutton library, interactive electronics game, arduino nano project, arduino game, relay actuator project, e14presents_markdonners, friday_release&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays/revision/3</link><pubDate>Thu, 21 May 2026 11:15:33 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>cstanton</dc:creator><description>Revision 3 posted to Documents by cstanton on 5/21/2026 11:15:33 AM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;p&gt;Watch the Build&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jp537b3t0"&gt;Can you Catch the Game?&lt;/h2&gt;
&lt;div&gt;
&lt;p&gt;When he was young, Mark didn&amp;rsquo;t have access to modern gaming platforms. Like many at the time, entertainment came from broadcast television, limited channels, scheduled programming, and a reliance on anticipation rather than instant access. One particular show left a lasting impression: &lt;em&gt;The Honeymoon Quiz&lt;/em&gt;. Among its many challenges was a deceptively simple game that stood out for its difficulty and tension.&lt;/p&gt;
&lt;p&gt;The concept was straightforward. A frame positioned above the player held several sticks. Without warning, they would drop at random, and the player&amp;rsquo;s only task was to catch them before they hit the ground. Simple in design, but demanding in execution.&lt;/p&gt;
&lt;p&gt;Decades later, Mark revisits this concept with a modern, electronics-driven interpretation, building a fully autonomous, microcontroller-based version of the game. As he puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It will hold several sticks that will drop down randomly one by one&amp;hellip; and you need to try to catch them. That&amp;rsquo;s the game.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp537b3t1"&gt;The Schematic&lt;/h2&gt;
&lt;p&gt;The system is divided cleanly into four functional sections: power, control, sound, and actuation.&lt;/p&gt;
&lt;p&gt;The power design reflects Mark&amp;rsquo;s preference for simplicity and reliability over modern optimisation. While acknowledging newer approaches, he intentionally uses a linear regulator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know it&amp;#39;s not the most elegant regulator nowadays, but it&amp;#39;s analog and it&amp;#39;s proven and tested&amp;hellip; that&amp;#39;s why I use it.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;An input supply (e.g. 12V) is stepped down to 8V for the actuators. This is a deliberate choice to provide sufficient drive strength to the relay-based mechanisms responsible for releasing the sticks.&lt;/p&gt;
&lt;p&gt;The Arduino Nano operates using its onboard regulator, while also serving as the central controller. A push button connected to digital pin D2 serves dual purposes: starting the game and toggling difficulty.&lt;/p&gt;
&lt;p&gt;This behaviour is clearly implemented in the code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define StartButton 2
EasyButton button(StartButton);

void buttonPressed() {
  running = !running;
}

void sequenceEllapsed() {
  expertmode = !expertmode;
  digitalWrite(ModeLed, expertmode);
}

button.onPressed(buttonPressed);
button.onSequence(2, 1500, sequenceEllapsed);&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Here, a single press toggles the game state, while a double press (within 1500 ms) activates &amp;ldquo;expert mode&amp;rdquo; &amp;mdash; a faster-paced variant of gameplay.&lt;/p&gt;
&lt;p&gt;The sound system is implemented using a PWM-driven speaker, producing simple tones to indicate game states. Mark describes this pragmatically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only used to generate a beeping sound to indicate the start and the end of a game&amp;hellip; it will do the job quick and dirty.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Finally, the relay drivers form the core of the mechanical interaction. Each relay controls a latch mechanism holding a stick. When triggered, the latch releases, allowing gravity to do the rest.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp538s5b2"&gt;Game logic and behaviour&lt;/h2&gt;
&lt;p&gt;The game&amp;rsquo;s operation is governed by a simple but effective state-driven loop. Once started, it progresses through a fixed lifecycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Play a start tone&lt;/li&gt;
&lt;li&gt;Sequentially drop sticks in random order&lt;/li&gt;
&lt;li&gt;Ensure no stick is dropped twice&lt;/li&gt;
&lt;li&gt;Play an end tone and reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The randomness is carefully handled to avoid repetition:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int randStick = random(3, 13);

while (valueExistsInArray(droplog, arraySize, randStick)) {
  randStick = random(3, 13);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This ensures that each actuator is triggered only once per game cycle, a detail not explicitly called out in the original blog, but critical to gameplay integrity.&lt;/p&gt;
&lt;p&gt;Timing is also adjustable based on difficulty:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (expertmode == 1) randTime = randTime * 500;
else randTime = randTime * 1000;&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This reflects Mark&amp;rsquo;s intent to scale challenge dynamically, something he alludes to in his video breakdown&amp;nbsp;as part of creating &amp;ldquo;a more difficult game.&amp;rdquo;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53cbpg3"&gt;Placing the components&lt;/h2&gt;
&lt;p&gt;Component placement follows a logical and structured layout, aided by the available space on the prototyping board. While the blog presents this as straightforward. Mark notes:&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know this is not the most elegant way of soldering&amp;hellip; but I have to make do with what I have at home.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This highlights a key aspect of the project: it is intentionally accessible and built using available tools rather than precision manufacturing.&lt;/p&gt;
&lt;p&gt;After soldering, the board requires manual refinement. Traces are selectively removed using a rotary tool to prevent unintended connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;If I don&amp;#39;t we will have a big short circuit&amp;hellip; so this needs to be done.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53dsku4"&gt;Baseplate&lt;/h2&gt;
&lt;p&gt;The baseplate serves as a practical integration point for the electronics. It houses the PCB, speaker, LED, and control button in a compact arrangement.&lt;/p&gt;
&lt;p&gt;Mark emphasises the importance of keeping wiring short and manageable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I made a base plate&amp;hellip; to keep wires short and compact.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This design choice reduces noise, improves reliability, and simplifies assembly, particularly important in a system with multiple actuators.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53eclc5"&gt;Building a Rig&lt;/h2&gt;
&lt;p&gt;The mechanical structure is deliberately flexible. While the blog suggests building a frame, the transcript shows Mark adapting available materials:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You can use some wood bars&amp;hellip; I happen to have aluminum frames laying around from an old table.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This reinforces the project&amp;rsquo;s ethos: use what you have, adapt creatively.&lt;/p&gt;
&lt;p&gt;Actuators are mounted to the horizontal bar using strong double-sided tape. Interestingly, this is not just a convenience but a considered mechanical decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Make sure you use proper double-sided tape&amp;hellip; you don&amp;rsquo;t want the actuator to fall off completely.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;The goal is controlled release, only the sticks should fall, not the mechanisms themselves.&lt;/p&gt;
&lt;p&gt;Another practical insight not present in the original write-up is wiring flexibility:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;All I need to worry about later is which wire is the common&amp;hellip; all the other wires I can just connect randomly because the actuators are controlled randomly.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Because activation is randomised in software, physical ordering is irrelevant, a useful simplification during assembly.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fj0r6"&gt;Preparing the drop sticks&lt;/h2&gt;
&lt;p&gt;The sticks themselves are simple wooden segments, but their preparation is essential for consistent performance.&lt;/p&gt;
&lt;p&gt;Cut to approximately 25 cm and fitted with hooks, they interface directly with the latch mechanisms. While the blog presents this briefly, the transcript reinforces the intended gameplay experience, lightweight sticks that drop cleanly and predictably.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fumk7"&gt;Sketch upload&lt;/h2&gt;
&lt;p&gt;Programming the Arduino completes the system. Mark uses the Arduino IDE, selecting the correct board and port before uploading the sketch.&lt;/p&gt;
&lt;p&gt;The only dependency is the EasyButton library:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;EasyButton.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;As highlighted in both the blog and transcript, this library simplifies input handling and enables multi-function button logic without complex interrupt handling, although the code does optionally enable interrupts if supported:&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (button.supportsInterrupt()) {
  button.enableInterrupt(buttonISR);
}&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53h93c8"&gt;Testing and gameplay&lt;/h2&gt;
&lt;p&gt;Testing reveals a key insight: the game is harder than it looks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;As you can guess&amp;hellip; this is more difficult than I expected.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even with a basic prototype setup, the random timing and human reaction limits quickly become apparent. This validates the original TV concept, and demonstrates the effectiveness of Mark&amp;rsquo;s implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53hq229"&gt;Reflection and future considerations&lt;/h2&gt;
&lt;p&gt;While the blog frames the build as complete, the transcript makes it clear that this is still a prototype:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Of course I will put a casing over the electronics&amp;hellip; for now it&amp;rsquo;s an experimental setup.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This suggests several natural future improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enclosing electronics for safety and durability&lt;/li&gt;
&lt;li&gt;Refining the frame structure for portability&lt;/li&gt;
&lt;li&gt;Adjusting difficulty scaling further&lt;/li&gt;
&lt;li&gt;Potentially expanding actuator count or configurability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a strong intended use case beyond personal experimentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m going to have lots of fun on this&amp;hellip; especially with the kids at my youth school.&amp;rdquo;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This positions the project as both a technical exercise and a practical interactive installation.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp53hq22a"&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;Mark&amp;rsquo;s catch game successfully recreates a classic concept using accessible electronics and straightforward mechanical design. It balances simplicity with enough technical depth to make the build engaging, while the gameplay itself delivers genuine challenge.&lt;/p&gt;
&lt;p&gt;By combining randomness, physical interaction, and clear feedback mechanisms, the project highlights how effective even relatively simple embedded systems can be in creating engaging experiences, especially when paired with thoughtful implementation and iterative testing.&lt;/p&gt;
&lt;p&gt;Most importantly, it remains true to its roots: a simple idea, executed well, that is far more difficult than it first appears.&lt;/p&gt;
&lt;/div&gt;
Supporting Links and Files
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;-&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: arduino pwm speaker, diy stem game, diy arcade build, physical computing project, diy catch game, random drop game, reaction time game arduino, engineering project tutorial, maker electronics project, prototyping pcb project, arduino easybutton library, interactive electronics game, arduino nano project, arduino game, relay actuator project, e14presents_markdonners, friday_release&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays/revision/2</link><pubDate>Thu, 21 May 2026 11:11:56 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>cstanton</dc:creator><description>Revision 2 posted to Documents by cstanton on 5/21/2026 11:11:56 AM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;p&gt;Watch the Build&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jp537b3t0"&gt;Can you Catch the Game?&lt;/h2&gt;
&lt;div&gt;
&lt;p&gt;When he was young, Mark didn&amp;rsquo;t have access to modern gaming platforms. Like many at the time, entertainment came from broadcast television, limited channels, scheduled programming, and a reliance on anticipation rather than instant access. One particular show left a lasting impression: &lt;em&gt;The Honeymoon Quiz&lt;/em&gt;. Among its many challenges was a deceptively simple game that stood out for its difficulty and tension.&lt;/p&gt;
&lt;p&gt;The concept was straightforward. A frame positioned above the player held several sticks. Without warning, they would drop at random, and the player&amp;rsquo;s only task was to catch them before they hit the ground. Simple in design, but demanding in execution.&lt;/p&gt;
&lt;p&gt;Decades later, Mark revisits this concept with a modern, electronics-driven interpretation, building a fully autonomous, microcontroller-based version of the game. As he puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It will hold several sticks that will drop down randomly one by one&amp;hellip; and you need to try to catch them. That&amp;rsquo;s the game.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp537b3t1"&gt;The Schematic&lt;/h2&gt;
&lt;p&gt;The system is divided cleanly into four functional sections: power, control, sound, and actuation.&lt;/p&gt;
&lt;p&gt;The power design reflects Mark&amp;rsquo;s preference for simplicity and reliability over modern optimisation. While acknowledging newer approaches, he intentionally uses a linear regulator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know it&amp;#39;s not the most elegant regulator nowadays, but it&amp;#39;s analog and it&amp;#39;s proven and tested&amp;hellip; that&amp;#39;s why I use it.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;An input supply (e.g. 12V) is stepped down to 8V for the actuators. This is a deliberate choice to provide sufficient drive strength to the relay-based mechanisms responsible for releasing the sticks.&lt;/p&gt;
&lt;p&gt;The Arduino Nano operates using its onboard regulator, while also serving as the central controller. A push button connected to digital pin D2 serves dual purposes: starting the game and toggling difficulty.&lt;/p&gt;
&lt;p&gt;This behaviour is clearly implemented in the code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define StartButton 2
EasyButton button(StartButton);

void buttonPressed() {
  running = !running;
}

void sequenceEllapsed() {
  expertmode = !expertmode;
  digitalWrite(ModeLed, expertmode);
}

button.onPressed(buttonPressed);
button.onSequence(2, 1500, sequenceEllapsed);&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Here, a single press toggles the game state, while a double press (within 1500 ms) activates &amp;ldquo;expert mode&amp;rdquo; &amp;mdash; a faster-paced variant of gameplay.&lt;/p&gt;
&lt;p&gt;The sound system is implemented using a PWM-driven speaker, producing simple tones to indicate game states. Mark describes this pragmatically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only used to generate a beeping sound to indicate the start and the end of a game&amp;hellip; it will do the job quick and dirty.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Finally, the relay drivers form the core of the mechanical interaction. Each relay controls a latch mechanism holding a stick. When triggered, the latch releases, allowing gravity to do the rest.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp538s5b2"&gt;Game logic and behaviour&lt;/h2&gt;
&lt;p&gt;The game&amp;rsquo;s operation is governed by a simple but effective state-driven loop. Once started, it progresses through a fixed lifecycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Play a start tone&lt;/li&gt;
&lt;li&gt;Sequentially drop sticks in random order&lt;/li&gt;
&lt;li&gt;Ensure no stick is dropped twice&lt;/li&gt;
&lt;li&gt;Play an end tone and reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The randomness is carefully handled to avoid repetition:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;int randStick = random(3, 13);

while (valueExistsInArray(droplog, arraySize, randStick)) {
  randStick = random(3, 13);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This ensures that each actuator is triggered only once per game cycle, a detail not explicitly called out in the original blog, but critical to gameplay integrity.&lt;/p&gt;
&lt;p&gt;Timing is also adjustable based on difficulty:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (expertmode == 1) randTime = randTime * 500;
else randTime = randTime * 1000;&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This reflects Mark&amp;rsquo;s intent to scale challenge dynamically, something he alludes to in his video breakdown&amp;nbsp;as part of creating &amp;ldquo;a more difficult game.&amp;rdquo;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53cbpg3"&gt;Placing the components&lt;/h2&gt;
&lt;p&gt;Component placement follows a logical and structured layout, aided by the available space on the prototyping board. While the blog presents this as straightforward. Mark notes:&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I know this is not the most elegant way of soldering&amp;hellip; but I have to make do with what I have at home.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This highlights a key aspect of the project: it is intentionally accessible and built using available tools rather than precision manufacturing.&lt;/p&gt;
&lt;p&gt;After soldering, the board requires manual refinement. Traces are selectively removed using a rotary tool to prevent unintended connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;If I don&amp;#39;t we will have a big short circuit&amp;hellip; so this needs to be done.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53dsku4"&gt;Baseplate&lt;/h2&gt;
&lt;p&gt;The baseplate serves as a practical integration point for the electronics. It houses the PCB, speaker, LED, and control button in a compact arrangement.&lt;/p&gt;
&lt;p&gt;Mark emphasises the importance of keeping wiring short and manageable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I made a base plate&amp;hellip; to keep wires short and compact.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;This design choice reduces noise, improves reliability, and simplifies assembly, particularly important in a system with multiple actuators.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53eclc5"&gt;Building a Rig&lt;/h2&gt;
&lt;p&gt;The mechanical structure is deliberately flexible. While the blog suggests building a frame, the transcript shows Mark adapting available materials:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You can use some wood bars&amp;hellip; I happen to have aluminum frames laying around from an old table.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;This reinforces the project&amp;rsquo;s ethos: use what you have, adapt creatively.&lt;/p&gt;
&lt;p&gt;Actuators are mounted to the horizontal bar using strong double-sided tape. Interestingly, this is not just a convenience but a considered mechanical decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Make sure you use proper double-sided tape&amp;hellip; you don&amp;rsquo;t want the actuator to fall off completely.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;The goal is controlled release, only the sticks should fall, not the mechanisms themselves.&lt;/p&gt;
&lt;p&gt;Another practical insight not present in the original write-up is wiring flexibility:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;All I need to worry about later is which wire is the common&amp;hellip; all the other wires I can just connect randomly because the actuators are controlled randomly.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Because activation is randomised in software, physical ordering is irrelevant, a useful simplification during assembly.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fj0r6"&gt;Preparing the drop sticks&lt;/h2&gt;
&lt;p&gt;The sticks themselves are simple wooden segments, but their preparation is essential for consistent performance.&lt;/p&gt;
&lt;p&gt;Cut to approximately 25 cm and fitted with hooks, they interface directly with the latch mechanisms. While the blog presents this briefly, the transcript reinforces the intended gameplay experience, lightweight sticks that drop cleanly and predictably.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53fumk7"&gt;Sketch upload&lt;/h2&gt;
&lt;p&gt;Programming the Arduino completes the system. Mark uses the Arduino IDE, selecting the correct board and port before uploading the sketch.&lt;/p&gt;
&lt;p&gt;The only dependency is the EasyButton library:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;EasyButton.h&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;As highlighted in both the blog and transcript, this library simplifies input handling and enables multi-function button logic without complex interrupt handling, although the code does optionally enable interrupts if supported:&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (button.supportsInterrupt()) {
  button.enableInterrupt(buttonISR);
}&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53h93c8"&gt;Testing and gameplay&lt;/h2&gt;
&lt;p&gt;Testing reveals a key insight: the game is harder than it looks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;As you can guess&amp;hellip; this is more difficult than I expected.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even with a basic prototype setup, the random timing and human reaction limits quickly become apparent. This validates the original TV concept, and demonstrates the effectiveness of Mark&amp;rsquo;s implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jp53hq229"&gt;Reflection and future considerations&lt;/h2&gt;
&lt;p&gt;While the blog frames the build as complete, the transcript makes it clear that this is still a prototype:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Of course I will put a casing over the electronics&amp;hellip; for now it&amp;rsquo;s an experimental setup.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This suggests several natural future improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enclosing electronics for safety and durability&lt;/li&gt;
&lt;li&gt;Refining the frame structure for portability&lt;/li&gt;
&lt;li&gt;Adjusting difficulty scaling further&lt;/li&gt;
&lt;li&gt;Potentially expanding actuator count or configurability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a strong intended use case beyond personal experimentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m going to have lots of fun on this&amp;hellip; especially with the kids at my youth school.&amp;rdquo;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This positions the project as both a technical exercise and a practical interactive installation.&lt;/p&gt;
&lt;h2 id="mcetoc_1jp53hq22a"&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;Mark&amp;rsquo;s catch game successfully recreates a classic concept using accessible electronics and straightforward mechanical design. It balances simplicity with enough technical depth to make the build engaging, while the gameplay itself delivers genuine challenge.&lt;/p&gt;
&lt;p&gt;By combining randomness, physical interaction, and clear feedback mechanisms, the project highlights how effective even relatively simple embedded systems can be in creating engaging experiences, especially when paired with thoughtful implementation and iterative testing.&lt;/p&gt;
&lt;p&gt;Most importantly, it remains true to its roots: a simple idea, executed well, that is far more difficult than it first appears.&lt;/p&gt;
&lt;/div&gt;
Supporting Links and Files
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;-&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to Build a Reaction-Based Catch Game Using Arduino and Relays</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72063/how-to-build-a-reaction-based-catch-game-using-arduino-and-relays/revision/1</link><pubDate>Thu, 21 May 2026 10:51:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7da2de6-7f6d-45ff-b84b-bedae8c979c4</guid><dc:creator>cstanton</dc:creator><description>Revision 1 posted to Documents by cstanton on 5/21/2026 10:51:25 AM&lt;br /&gt;
&lt;p&gt;In this video, Mark builds a reaction-based catch game inspired by a classic TV challenge, using an Arduino Nano, relay-driven actuators, and a simple but effective control system. The setup drops sticks at random intervals, testing reflexes while showcasing practical electronics design, from power regulation and PCB assembly to embedded programming and mechanical integration. This project balances accessibility with clever implementation, making it ideal for makers looking to build something interactive and fun, watch the build and find the supporting code below.&lt;/p&gt;
&lt;p&gt;Watch the Build&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Project Video Release Archive</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3748/project-video-release-archive/revision/212</link><pubDate>Thu, 14 May 2026 14:06:52 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:59ab0abe-b32d-47f9-b00c-4b73b01f3bd8</guid><dc:creator>e14sbhargav</dc:creator><description>Revision 212 posted to Documents by e14sbhargav on 5/14/2026 2:06:52 PM&lt;br /&gt;
&lt;div style="background:#ffffff;border-bottom:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-icid="e14" data-e14adj="t"&gt;&lt;img alt="image"  src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;span style="font-size:18px;font-weight:bold;"&gt;Project Video Releases&lt;/span&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" style="color:#f17c0e;" href="/challengesprojects/element14-presents/" data-icid="e14" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;span style="padding-right:5px;"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" style="color:#f17c0e;" href="/challengesprojects/element14-presents/vcp-program/" data-icid="e14" data-e14adj="t"&gt;Meet the Hosts&lt;/a&gt;&lt;/span&gt;&lt;span style="padding-right:5px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a href="/challenges-projects/element14-presents/project-videos/w/documents/72062/find-emi-fast-with-a-low-cost-automated-way-to-see-where-your-pcb-radiates" data-e14adj="t"&gt;Episode 714: Find EMI Fast with a Low‑Cost, Automated Way to See Where Your PCB Radiates&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 713:" href="/challenges-projects/element14-presents/project-videos/w/documents/72061/how-to-make-an-led-sculpture-react-to-sound-with-micro-bit" data-e14adj="t"&gt;Episode 713:&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72061/how-to-make-an-led-sculpture-react-to-sound-with-micro-bit"&gt;How to Make an LED Sculpture React to Sound with micro:bit&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 712: Designing a More Capable Dual Motor Driver Beyond the L298N (What worked and what didn't)" href="/challenges-projects/element14-presents/project-videos/w/documents/72060/designing-a-more-capable-dual-motor-driver-beyond-the-l298n-what-worked-and-what-didn-t" data-e14adj="t"&gt;Episode 712: Designing a More Capable Dual Motor Driver Beyond the L298N (What worked and what didn&amp;#39;t)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 711: Modern Edge AI on Raspberry Pi 5 for an Animatronic Tracker: Vision Acceleration with AI Hat+ and AI Camera" href="/challenges-projects/element14-presents/project-videos/w/documents/72059/modern-edge-ai-on-raspberry-pi-5-for-an-animatronic-tracker-vision-acceleration-with-ai-hat-and-ai-camera" data-e14adj="t"&gt;Episode 711: Modern Edge AI on Raspberry Pi 5 for an Animatronic Tracker: Vision Acceleration with AI Hat+ and AI Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 710: Your First Real PCB in KiCad : An Arduino Compatible Board Designed from Scratch" href="/challenges-projects/element14-presents/project-videos/w/documents/72057/your-first-real-pcb-in-kicad-an-arduino-compatible-board-designed-from-scratch" data-e14adj="t"&gt;Episode 710: Your First Real PCB in KiCad : An Arduino Compatible Board Designed from Scratch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 709: Was that my Number!? Fixing Caf&amp;eacute; Order Chaos with a Raspberry Pi Announcer" href="/challenges-projects/element14-presents/project-videos/w/documents/72055/was-that-my-number-fixing-cafe-order-chaos-with-a-raspberry-pi-announcer" data-e14adj="t"&gt;Episode 709: Was that my Number!? Fixing Caf&amp;eacute; Order Chaos with a Raspberry Pi Announcer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 708: Reviving a Vintage LED Sign with Arduino and PS/2 Control" href="/challenges-projects/element14-presents/project-videos/w/documents/72042/reviving-a-vintage-led-sign-with-arduino-and-ps-2-control----episode-708" data-e14adj="t"&gt;Episode 708: Reviving a Vintage LED Sign with Arduino and PS/2 Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 707: Building a Circuit Sculpture with LED Filament" href="/challenges-projects/element14-presents/project-videos/w/documents/72038/building-a-circuit-sculpture-with-led-filament----episode-707" data-e14adj="t"&gt;Episode 707: Building a Circuit Sculpture with LED Filament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72037/esp32-rfid-smart-access-control-in-a-simple-diy-build----episode-706"&gt;Episode 706: ESP32 + RFID = Smart Access Control in a Simple DIY Build&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 705: Building a Super Smooth Z-Scale Train Controller with Arduino" href="/challenges-projects/element14-presents/project-videos/w/documents/72036/building-a-super-smooth-z-scale-train-controller-with-arduino----episode-705" data-e14adj="t"&gt;Episode 705: Building a Super Smooth Z-Scale Train Controller with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 704: Hacking an IKEA Desk into a Programmable Electric Workstation" href="/challenges-projects/element14-presents/project-videos/w/documents/72035/hacking-an-ikea-desk-into-a-programmable-electric-workstation----episode-704" data-e14adj="t"&gt;Episode 704: Hacking an IKEA Desk into a Programmable Electric Workstation&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 703: How to Set Up the Raspberry Pi 5: Complete Beginner Step-by-Step Guide" href="/challenges-projects/element14-presents/project-videos/w/documents/72034/how-to-set-up-the-raspberry-pi-5-complete-beginner-step-by-step-guide----episode-703" data-e14adj="t"&gt;Episode 703: How to Set Up the Raspberry Pi 5: Complete Beginner Step-by-Step Guide&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 702: Build Your Own USB Looper for Serial Debugging and File Transfer" href="/challenges-projects/element14-presents/project-videos/w/documents/72033/build-your-own-usb-looper-for-serial-debugging-and-file-transfer----episode-702" data-e14adj="t"&gt;Episode 702: Build Your Own USB Looper for Serial Debugging and File Transfer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)" href="/challenges-projects/element14-presents/project-videos/w/documents/72031/from-snooze-to-launch-the-arduino-powered-lego-alarm-clock-inspired-by-artemis-2----episode-701" data-e14adj="t"&gt;Episode 701: From Snooze to Launch: The Arduino-Powered LEGO Alarm Clock Inspired by Artemis 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)" href="/challenges-projects/element14-presents/project-videos/w/documents/72030/how-voice-recognition-works-on-raspberry-pi-and-why-it-s-easy-to-break----episode-700" data-e14adj="t"&gt;Episode 700: How Voice Recognition Works on Raspberry Pi (and Why It&amp;rsquo;s Easy to Break)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72021/gimmegpio-a-simple-way-to-get-gpio-on-laptops-and-desktops----episode-699" data-e14adj="t"&gt;Episode 699:&amp;nbsp;GimmeGPIO: A Simple Way to Get GPIO on Laptops and Desktops&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72020/building-a-practical-electronics-workbench-for-makers-and-engineers----episode-698" data-e14adj="t"&gt;Episode 698:&amp;nbsp;Building a Practical Electronics Workbench for Makers and Engineers&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a title="Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED" href="/challenges-projects/element14-presents/project-videos/w/documents/72009/a-smart-safe-3d-printer-cabinet-using-raspberry-pi-and-node-red----episode-697" data-e14adj="t"&gt;Episode 697:&amp;nbsp;A Smart, Safe 3D Printer Cabinet Using Raspberry Pi and Node-RED&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/72008/how-a-pulse-metal-detector-works-and-how-to-build-one" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 696: How a Pulse Metal Detector Works, and How to Build One&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/72007/a-diy-test-and-programming-rig-built-for-small-batch-electronics-production----episode-695" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 695: A DIY Test and Programming Rig Built for Small-Batch Electronics Production&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/secret-element14-presents/w/documents/72001/earn-your-fitness-reward-with-a-smart-cookie-jar-using-strava-and-esp32----episode-694" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 694: Earn Your Fitness Reward with a Smart Cookie Jar Using Strava and ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71999/open-source-multicolour-3d-printing-upgrade-clem-s-3d-chameleon-remix----episode-693" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 693: Open-Source Multicolour 3D Printing Upgrade: Clem&amp;rsquo;s 3D Chameleon Remix&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71995/build-your-own-esp32-fitness-heart-rate-monitor-tracker----episode-692" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 692: Build Your own ESP32 Fitness Heart Rate Monitor / Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71994/how-accurate-is-bluetooth-channel-sounding-a-deep-dive-with-the-nrf54l15" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 691: How Accurate Is Bluetooth Channel Sounding? A Deep Dive with the nRF54L15&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71993/meet-the-platypusbot-now-powered-by-raspberry-pi-ros----episode-690" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 690: Meet the PlatypusBot: Now Powered by Raspberry Pi &amp;amp; ROS&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71992/how-clem-built-a-handheld-sci-fi-communicator-that-really-works----episode-689" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 689: How Clem Built a Handheld Sci-Fi Communicator That Really Works&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71990/building-the-cylon-pumpkin-combining-a-larson-scanner-and-vocoder-for-halloween----episode-688" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 688: Building the Cylon Pumpkin: Combining a Larson Scanner and Vocoder for Halloween&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71989/turning-a-10-air-fryer-into-an-arduino-powered-filament-dryer----episode-687" data-icid="e14p-ep687-eplist" data-e14adj="t"&gt;Episode 687: Turning a $10 Air Fryer into an Arduino powered Filament Dryer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71988/creepy-motion-activated-painting-you-can-build-yourself----episode-686" data-icid="e14" data-e14adj="t"&gt;Episode 686: Creepy Motion-Activated Painting You Can Build Yourself&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71987/when-your-body-becomes-the-instrument-clem-builds-the-drone-synth----episode-685" data-icid="e14" data-e14adj="t"&gt;Episode 685: When Your Body Becomes the Instrument: Clem Builds the &amp;ldquo;Dr&amp;ouml;ne&amp;rdquo; Synth&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71985/building-an-audio-reactive-led-matrix-with-a-micro-bit-and-neopixels----episode-684" data-icid="e14" data-e14adj="t"&gt;Episode 684: Building an Audio Reactive LED Matrix with a micro:bit and NeoPixels&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71984/how-to-make-a-portable-emergency-radio-with-an-arduino-nano-in-a-mint-tin----episode-683" data-icid="e14" data-e14adj="t"&gt;Episode 683: How to Make a Portable Emergency Radio with an Arduino Nano in a Mint TinT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71974/diy-rf-modulator-raspberry-pi-pico-gaming-on-a-sony-watchman-fd-10a-crt----episode-682" data-icid="e14" data-e14adj="t"&gt;Episode 682: DIY RF Modulator + Raspberry Pi Pico = Gaming on a Sony Watchman FD-10A CRT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71963/turn-anything-into-an-arduino-module-reusing-everyday-electronics----episode-681" data-icid="e14" data-e14adj="t"&gt;Episode 681: Turn anything into an Arduino Module: Reusing Everyday Electronics&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71961/from-kit-to-custom-design-building-a-tube-based-fm-radio----episode-680" data-icid="e14" data-e14adj="t"&gt;Episode 680: From Kit to Custom Design: Building a Tube-Based FM Radio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71960/esp32-duolingo-owl-project-never-miss-a-lesson-again----episode-679" data-icid="e14" data-e14adj="t"&gt;Episode 679: ESP32 Duolingo Owl Project: Never Miss a Lesson Again&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71959/open-source-attiny3226-arduino-calculator-hardware-case-code-build----episode-678" data-icid="e14" data-e14adj="t"&gt;Episode 678: Open Source ATtiny3226 Arduino Calculator &amp;ndash; Hardware, Case &amp;amp; Code Build&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71955/make-your-own-vocoder-with-teensy-4-0---voice-of-a-cylon----episode-677" data-icid="e14" data-e14adj="t"&gt;Episode 677: Make Your Own Vocoder with Teensy 4.0 - Voice of a Cylon?!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71954/i-tried-building-16-attiny-robots-with-vibration-motors-it-was-a-disaster----episode-676" data-icid="e14" data-e14adj="t"&gt;Episode 676: I Tried Building 16 ATtiny Robots with Vibration Motors &amp;ndash; It Was a Disaster&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71953/avoid-conflict-with-this-esp32-defcon-task-tracker----episode-675" data-icid="e14" data-e14adj="t"&gt;Episode 675:Avoid Conflict with this ESP32 Defcon Task Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71947/building-an-open-source-blood-pressure-heart-signal-monitor----episode-674" data-icid="e14" data-e14adj="t"&gt;Episode 674: Building an Open Source Blood Pressure &amp;amp; Heart Signal Monitor&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71942/building-an-esp32-powered-warhammer-40k-rhino-with-dynamic-led-effects----episode-673" data-icid="e14" data-e14adj="t"&gt;Episode 673: Building an ESP32 Powered Warhammer 40k Rhino with Dynamic LED Effects!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71936/building-an-autonomous-lego-train-with-circuitpython-and-lidar----episode-672" data-icid="e14" data-e14adj="t"&gt;Episode 672: Building an Autonomous LEGO Train with CircuitPython and LIDAR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71934/platypusbot---scavenging-for-robotics-parts----episode-671" data-icid="e14" data-e14adj="t"&gt;Episode 671: PlatypusBot - Scavenging for Robotics Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71927/build-a-larson-scanner-with-sound-using-an-esp32----episode-670" data-icid="e14" data-e14adj="t"&gt;Episode 670: Build your own Larson Scanner&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71926/creating-an-esd-or-lightning-detector----episode-669" data-icid="e14" data-e14adj="t"&gt;Episode 669: Creating an ESD (Or Lightning!) Detector!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71925/designing-an-arduino-pid-controlled-micro-drone----episode-668" data-icid="e14" data-e14adj="t"&gt;Episode 668: Designing an Arduino PID Controlled Micro Drone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71921/emulating-a-speech-synthesis-chip-with-an-esp32----episode-667" data-icid="e14" data-e14adj="t"&gt;Episode 667: Emulating a Speech Synthesis Chip with an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71920/how-far-can-i2c-go----episode-666" data-icid="e14" data-e14adj="t"&gt;Episode 666: How Far Can I2C Go?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71919/raspberry-pi-ai-tracking-eye-of-sauron---ai-al-barad-dur---episode-665" data-icid="e14" data-e14adj="t"&gt;Episode 665: Raspberry Pi AI Tracking Eye of Sauron - AI AL Barad Dur&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71915/learn-how-to-make-a-photo-booth-with-the-esp32-and-telegram-automation----episode-664" data-icid="e14" data-e14adj="t"&gt;Episode 664: Learn how to Make a Photo Booth with the ESP32 and Telegram Automation!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71911/upcycling-a-vintage-microphone-into-an-emergency-radio-system----episode-663" data-icid="e14" data-e14adj="t"&gt;Episode 663: Upcycling a Vintage Microphone into an Emergency Radio System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/71909/making-a-stronger-affordable-diy-robot-arm-with-3d-printing-with-raspberry-pi-pico----episode-662" data-icid="e14" data-e14adj="t"&gt;Episode 662: Making a Stronger Affordable DIY Robot Arm with 3D Printing with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71904/make-your-own-led-wrist-watch----episode-661" data-icid="e14" data-e14adj="t"&gt;Episode 661: Clem makes his own LED Wristwatch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71846/lofi-beats-to-solder-to----episode-660" data-icid="e14" data-e14adj="t"&gt;Episode 660: LoFi Beats to Solder To&lt;/a&gt;&lt;/p&gt;
&lt;p style="clear:both;margin:0;padding:0px;padding-top:12px;"&gt;&lt;a title="Episode 659:&amp;nbsp;DIY Single Board Computer with ESP32 and Raspberry Pi Pico" href="/challenges-projects/element14-presents/project-videos/w/documents/71844/diy-single-board-computer-with-esp32-and-raspberry-pi-pico----episode-659" data-e14adj="t"&gt;Episode 659:&amp;nbsp;DIY Single Board Computer with ESP32 and Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71841/a-smart-youtube-counter-with-an-audio-analyzer---episode---658" data-icid="e14" data-e14adj="t"&gt;Episode 658: A Smart Youtube Counter With An Audio Analyzer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71833/how-to-control-a-lego-mindstorms-kit-with-ai-and-raspberry-pi-5----episode-657" data-icid="e14" data-e14adj="t"&gt;Episode 657: How to Control a LEGO Mindstorms kit with AI and Raspberry Pi 5&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71831/diy-jig-for-your-laser-cutter-with-custom-arduino-automation----episode-656" data-icid="e14" data-e14adj="t"&gt;Episode 656: DIY Jig for your Laser Cutter with Custom Arduino Automation&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71810/diy-hot-plate-for-smd-soldering-using-raspberry-pi-pico----episode-655" data-icid="e14" data-e14adj="t"&gt;Episode 655: DIY Hot Plate for SMD Soldering Using Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71801/how-do-battlebots-work-in-the-pit-with-hypershock----episode-654" data-icid="e14" data-e14adj="t"&gt;Episode 654: How Do BattleBots Work? In the Pit with HyperShock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71797/edge-lit-7-segment-display-clock-using-raspberry-pi-pico----episode-653" data-icid="e14" data-e14adj="t"&gt;Episode 653: Edge-lit 7-Segment Display Clock Using Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71793/smart-windows-and-blinds-with-arduino-and-raspberry-pi-pico----episode-652" data-icid="e14" data-e14adj="t"&gt;Episode 652: Smart Windows and Blinds with Arduino and Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/71784/design-for-manufacturing---project-to-product-by-modifying-off-the-shelf-cases----episode-651" data-icid="e14" data-e14adj="t"&gt;Episode 651: Design for Manufacturing - Project to Product by Modifying Off-the-Shelf Cases&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/46432/using-nordic-s-nrf7002-my-dehumidifier-tells-me-when-it-s-full----episode-650" data-icid="e14" data-e14adj="t"&gt;Episode 650: Using Nordic&amp;#39;s nRF7002, My Dehumidifier Tells Me When It&amp;#39;s Full!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29545/giant-retro-gaming-magic-mirror-with-a-raspberry-pi-5----episode-649" data-icid="e14" data-e14adj="t"&gt;Episode 649: Giant Retro Gaming Magic Mirror with a Raspberry Pi 5!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29540/home-ai-image-generation-server-with-lattepanda-and-stable-diffusion----episode-648" data-icid="e14" data-e14adj="t"&gt;Episode 648: Home AI Image Generation Server with LattePanda and Stable Diffusion&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/29537/building-an-open-source-tool-for-cave-surveying----episode-647" data-icid="e14" data-e14adj="t"&gt;Episode 647: Building an Open-Source Tool for Cave Surveying&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28802/creating-a-digital-roulette-table-with-an-esp32-devkit----episode-646" data-icid="e14" data-e14adj="t"&gt;Episode 646: Creating a Digital Roulette Table with an ESP32 DevKit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28438/practical-diy-pi-pico-current-load-circuits----episode-645" data-icid="e14" data-e14adj="t"&gt;Episode 645: Practical DIY Pi Pico Current Load Circuits&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28421/turning-a-raspberry-pi-pico-into-a-gpu----episode-644" data-icid="e14" data-e14adj="t"&gt;Episode 644: Turning a Raspberry Pi Pico into a GPU!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28418/making-a-tribble-that-detects-klingons----episode-643" data-icid="e14" data-e14adj="t"&gt;Episode 643: Making a Tribble that Detects Klingons&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28416/making-a-time-lapse-camera-with-a-raspberry-pi-5----episode-642" data-icid="e14" data-e14adj="t"&gt;Episode 642: Making a Time-lapse Camera with a Raspberry Pi 5&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28409/moon-phase-display-with-raspberry-pi-pico----episode-641" data-icid="e14" data-e14adj="t"&gt;Episode 641: Moon Phase Display with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28407/tinkering-vs-engineering-can-you-build-a-laptop-from-scratch----episode-640" data-icid="e14" data-e14adj="t"&gt;Episode 640: Tinkering vs Engineering: Can You Build a Laptop from Scratch?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28405/off-grid-remote-generator-starter----episode-639" data-icid="e14" data-e14adj="t"&gt;Episode 639: Off-Grid Remote Generator Starter?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28387/rp2040-pcb-design-turn-on-and-debug---how-hard-could-it-be----episode-638" data-icid="e14" data-e14adj="t"&gt;Episode 638: RP2040 PCB: Design, Turn-On, and Debug - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28386/making-music-with-a-lego-guitar-and-capacitive-touch----episode-637" data-icid="e14" data-e14adj="t"&gt;Episode 637: Making Music with a Lego Guitar and Capacitive Touch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28384/creating-an-imu-based-3d-mouse-with-an-esp32-s3----episode-636" data-icid="e14" data-e14adj="t"&gt;Episode 636: Creating an IMU based 3D Mouse with an ESP32-S3&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28382/vintage-electronics-exploration-with-a-bally-cypress-gardens-bingo-machine---episode-635" data-icid="e14" data-e14adj="t"&gt;Episode 635: Vintage Electronics Exploration with a Bally Cypress Gardens Bingo Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28381/craft-a-festive-led-christmas-sweater-featuring-the-attiny416----episode-634" data-icid="e14" data-e14adj="t"&gt;Episode 634: Craft a Festive LED Christmas Sweater Featuring the ATtiny416&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28376/spying-under-the-christmas-tree-with-an-arduino-powered-ornament----episode-633" data-icid="e14" data-e14adj="t"&gt;Episode 633: Spying Under the Christmas Tree with an Arduino-powered Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28374/revamping-old-school-pinball-with-an-esp32----episode-632" data-icid="e14" data-e14adj="t"&gt;Episode 632: Revamping Old School Pinball with an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28372/all-purpose-debugging-a-practical-universal-screen-with-lcd-displays----episode-631" data-icid="e14" data-e14adj="t"&gt;Episode 631: All-Purpose Debugging: A Practical Universal Screen with LCD Displays&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28370/mega-iie-first-fully-functional-computer-built-around-the-apple-mega-ii-chip----episode-630" data-icid="e14" data-e14adj="t"&gt;Episode 630: Mega IIe: First Fully Functional Computer built around the Apple Mega-II Chip&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28366/backpack-splash-mark-s-water-gun-upgrade-for-epic-outdoor-water-wars----episode-629" data-icid="e14" data-e14adj="t"&gt;Episode 629: Backpack Splash: Mark&amp;#39;s Water Gun Upgrade for Epic Outdoor Water Wars!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28361/affordable-diy-robot-arm-a-deep-dive-into-3d-printing-and-servo-motors----episode-628" data-icid="e14" data-e14adj="t"&gt;Episode 628: Affordable DIY Robot Arm - A Deep Dive into 3D Printing and Servo Motors&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28353/creating-sudostick---from-prototype-to-product----episode-627" data-icid="e14" data-e14adj="t"&gt;Episode 627: Creating sudostick - From Prototype to Product&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28351/catching-you-up-on-bonesnapper-ridge---off-grid-maker-shop----episode-626" data-icid="e14" data-e14adj="t"&gt;Episode 626: Catching you Up on Bonesnapper Ridge - Off-Grid Maker Shop&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28344/interactive-magic-creating-an-enchanted-cauldron----episode-625" data-icid="e14" data-e14adj="t"&gt;Episode 625: Interactive Magic - Creating an Enchanted Cauldron&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28342/episode-624-modding-a-smoke-machine-to-add-motion-detection" data-icid="e14" data-e14adj="t"&gt;Episode 624: Modding A Smoke Machine to Add Motion Detection&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32" data-icid="e14" data-e14adj="t"&gt;Episode 623: How to Run Linux on an ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28334/episode-622-building-spooky-fun-halloween-sound-pranks-with-nrf-5340-ble-audio" data-icid="e14" data-e14adj="t"&gt;Episode 622: Building Spooky Fun: Halloween Sound Pranks with nRF 5340 BLE Audio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28330/episode-621-color-sensor-based-water-quality-tracker-diy-environmental-monitoring" data-icid="e14" data-e14adj="t"&gt;Episode 621: Color Sensor-Based Water Quality Tracker: DIY Environmental Monitoring&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28328/episode-620-stey-by-step-guide-to-creating-your-own-speaking-animatronic-hat" data-icid="e14" data-e14adj="t"&gt;Episode 620: Stey-by-Step Guide to Creating your own Speaking Animatronic Hat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28316/episode-619-how-to-build-an-open-source-bluetooth-mechanical-keyboard" data-icid="e14" data-e14adj="t"&gt;Episode 619: How to Build an Open Source Bluetooth Mechanical Keyboard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28308/episode-618-upgrading-my-racing-sim-with-a-force-sensitive-keyboard" data-icid="e14" data-e14adj="t"&gt;Episode 618: Upgrading My Racing Sim with a Force-Sensitive Keyboard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28306/episode-617-simplify-network-monitoring-building-an-esp32-powered-solution" data-icid="e14" data-e14adj="t"&gt;Episode 617: Simplify Network Monitoring: Building an ESP32-Powered Solution&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28300/episode-616-mastering-oven-control-precision-resin-curing-with-diy-modifications---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 616: Mastering Oven Control: Precision Resin Curing with DIY Modifications - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28290/episode-615-building-a-unique-usb-card-reader-from-idea-to-prototype" data-icid="e14" data-e14adj="t"&gt;Episode 615: Building a Unique USB Card Reader: From Idea to Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28278/episode-614-using-pid-proportional-integral-derivative-in-robotics---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 614: Using PID (Proportional-Integral-Derivative) in Robotics - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28274/episode-613-building-a-magic-wand-talking-sound-board" data-icid="e14" data-e14adj="t"&gt;Episode 613: Building a Magic Wand Talking Sound Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28271/episode-612-handheld-basic-computer-in-badge-format-with-the-arduino-uno" data-icid="e14" data-e14adj="t"&gt;Episode 612: Handheld BASIC computer in Badge Format with the Arduino Uno&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28267/episode-611-how-to-run-the-distance-to-the-moon-with-strava-data-and-a-pico-w-board" data-icid="e14" data-e14adj="t"&gt;Episode 611: How to Run the Distance to the Moon with Strava Data and a Pico W Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28214/episode-610-how-to-embroider-with-circuits-and-conductive-thread" data-icid="e14" data-e14adj="t"&gt;Episode 610: How to Embroider with Circuits and Conductive Thread&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28213/episode-609-updating-a-fujitsu-n860-2500-t111-keyboard-to-work-with-a-ps2-standard" data-icid="e14" data-e14adj="t"&gt;Episode 609: Updating a Fujitsu N860-2500-T111 Keyboard to Work with a PS2 Standard&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28200/episode-608-making-the-simplest-diy-wind-energy-generator---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 608: Making the Simplest DIY Wind Energy Generator - How Hard Could it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28198/episode-607-from-strava-to-motion-creating-an-arduino-powered-arcade-game-with-running-data" data-icid="e14" data-e14adj="t"&gt;Episode 607: From Strava to Motion: Creating an Arduino-Powered Arcade Game with Running Data&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28184/episode-606-how-to-use-lorawan-to-launch-model-rockets-wirelessly" data-icid="e14" data-e14adj="t"&gt;Episode 606: How to Use LoRaWAN to Launch Model Rockets Wirelessly&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28152/episode-605-arduino-and-leds-make-solitaire-easier-to-solve" data-icid="e14" data-e14adj="t"&gt;Episode 605: Arduino and LEDs Make Solitaire Easier to Solve&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28140/episode-604-charlieplexing-buttons-and-leds-at-the-same-time---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 604: Charlieplexing Buttons and LEDs at the Same Time - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28138/episode-603-create-your-own-air-hockey-table-with-arduino-scoring" data-icid="e14" data-e14adj="t"&gt;Episode 603: Create Your Own Air Hockey Table with Arduino Scoring&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28133/episode-602-diy-ac-dimmer-circuit-control-your-lights-with-a-raspberry-pi-pico" data-icid="e14" data-e14adj="t"&gt;Episode 602: DIY AC Dimmer Circuit: Control Your Lights with a Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28131/episode-601-how-to-reverse-engineer-electronics-building-a-developer-board-for-a-coding-class" data-icid="e14" data-e14adj="t"&gt;Episode 601: How to Reverse Engineer Electronics: Building a Developer Board for a Coding Class&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28126/episode-600-building-my-dream-digital-clock-diy-7-segment-display-with-a-cute-robot-twist" data-icid="e14" data-e14adj="t"&gt;Episode 600: Building My Dream Digital Clock: DIY 7 Segment Display with a Cute Robot Twist!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28117/episode-599-how-to-build-a-spectrum-analyzer-with-lego-bricks-discrete-electronics" data-icid="e14" data-e14adj="t"&gt;Episode 599: How to Build a Spectrum Analyzer with Lego Bricks &amp;amp; Discrete Electronics&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28102/episode-598-how-to-build-a-portable-solar-charged-off-grid-power-station" data-icid="e14" data-e14adj="t"&gt;Episode 598: How To Build a Portable, Solar-Charged Off-Grid Power Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28097/episode-597-how-to-build-a-robot-that-celebrates-good-grades-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 597: How to Build a Robot that Celebrates Good Grades with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28084/episode-596-how-to-build-your-own-voice-assistant-with-mycroft-ai---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 596: How to Build Your Own Voice Assistant with MyCroft AI - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28082/episode-595-member-challenge-accepted---universal-lanc-controller-for-dslr-cameras" data-icid="e14" data-e14adj="t"&gt;Episode 595: Member Challenge Accepted - Universal LANC Controller for DSLR cameras&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28059/episode-594-repairing-a-neewer-660-studio-light---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 594: Repairing a Neewer 660 Studio light - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28057/episode-593-playing-3d-famicom-games-wirelessly-on-the-nes---how-hard-could-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 593: Playing 3D Famicom Games Wirelessly on the NES - How Hard Could It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28050/episode-592-lamptopus-spinning-led-desk-lamp" data-icid="e14" data-e14adj="t"&gt;Episode 592: Lamptopus: Spinning LED Desk Lamp&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28036/episode-591-building-a-bluetooth-speaker-in-5-minutes---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 591: Building A Bluetooth Speaker in 5 Minutes - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28033/episode-590-seven-kingdoms-open-source-bartop-arcade" data-icid="e14" data-e14adj="t"&gt;Episode 590: Seven Kingdoms Open Source Bartop Arcade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28024/episode-589-upgrading-the-imac-g4-with-a-nuc" data-icid="e14" data-e14adj="t"&gt;Episode 589: Upgrading the iMac G4 With a NUC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/28020/episode-588-highlights-from-element14-presents-2022" data-icid="e14" data-e14adj="t"&gt;Episode 588: Highlights from element14 presents 2022&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27982/episode-587-create-your-own-talking-stress-indicator" data-icid="e14" data-e14adj="t"&gt;Episode 587: Create Your Own Talking Stress Indicator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27965/episode-586-diy-open-source-bluetooth-headphones" data-icid="e14" data-e14adj="t"&gt;Episode 586: DIY Open Source Bluetooth Headphones&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27960/episode-585-enhancing-a-magnifying-headband-with-auto-sensing-light" data-icid="e14" data-e14adj="t"&gt;Episode 585: Enhancing a Magnifying Headband with Auto Sensing Light&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27952/episode-584-going-beyond-periodic-wakes-using-wifi-to-revive-a-sleeping-device" data-icid="e14" data-e14adj="t"&gt;Episode 584: Going Beyond Periodic Wakes: Using WiFi to Revive a Sleeping Device&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27934/episode-583-epic-neopixel-birthday-cake" data-icid="e14" data-e14adj="t"&gt;Episode 583: Epic Neopixel Birthday Cake&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27917/episode-582-smart-christmas-decoration-with-raspberry-pi-pico-and-mqtt" data-icid="e14" data-e14adj="t"&gt;Episode 582: Smart Christmas Decoration with Raspberry Pi Pico and MQTT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27900/episode-581-bee-saving-electronics-prototype" data-icid="e14" data-e14adj="t"&gt;Episode 581: Bee-Saving Electronics Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27894/episode-580-diy-low-cost-capacitance-meter-using-a-555-timer" data-icid="e14" data-e14adj="t"&gt;Episode 580: DIY Low Cost Capacitance Meter Using a 555 Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27881/episode-579-how-to-make-a-basketball-auto-score-keeper-using-colour-sensing" data-icid="e14" data-e14adj="t"&gt;Episode 579: How to Make a Basketball Auto Score Keeper Using Colour Sensing&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27879/episode-578-build-your-own-bat-detector-with-analog-parts" data-icid="e14" data-e14adj="t"&gt;Episode 578: Build your Own Bat Detector with Analog Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27862/episode-577-the-game-guy-mini-upgrading-the-unportable-game-boy" data-icid="e14" data-e14adj="t"&gt;Episode 577: The Game Guy Mini, Upgrading the Unportable Game Boy!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27861/episode-576-build-your-own-underwater-drone-with-3d-printed-parts" data-icid="e14" data-e14adj="t"&gt;Episode 576: Build your own Underwater Drone with 3D Printed Parts&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27855/episode-575-how-to-make-a-secured-parcel-pickup-box-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 575: How to Make a Secured Parcel Pickup Box with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27846/episode-574-ghost-rider-halloween-costume" data-icid="e14" data-e14adj="t"&gt;Episode 574: Ghost Rider Halloween Costume&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27836/episode-573-using-a-pi-pico-to-convert-keyboard-input-to-morse-code" data-icid="e14" data-e14adj="t"&gt;Episode 573: Using a Pi Pico to Convert Keyboard Input to Morse Code&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27824/episode-572-how-to-use-an-esp32-camera-to-know-you-ve-got-mail" data-icid="e14" data-e14adj="t"&gt;Episode 572: How to Use an ESP32 &amp;amp; Camera to Know You&amp;#39;ve Got Mail!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27807/episode-571-using-dead-batteries-to-test-for-dead-batteries" data-icid="e14" data-e14adj="t"&gt;Episode 571: Using Dead Batteries to Test for Dead Batteries&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27805/episode-570-making-a-wifi-connected-audio-spectrum-analyzer-with-esp32" data-icid="e14" data-e14adj="t"&gt;Episode 570: Making a WiFi Connected Audio Spectrum Analyzer with ESP32&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27803/episode-569-multi-spectrum-uv-resin-curing-station-with-wurth-leds" data-icid="e14" data-e14adj="t"&gt;Episode 569: Multi-Spectrum UV Resin Curing Station with W&amp;uuml;rth LEDs&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27787/episode-568-how-to-make-a-custom-soundboard-with-the-stm32f4-using-freecad" data-icid="e14" data-e14adj="t"&gt;Episode 568: How to Make a Custom Soundboard with the STM32F4 using FreeCAD&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27785/episode-567-synced-neopixel-mickey-mouse-ears" data-icid="e14" data-e14adj="t"&gt;Episode 567: Synced NeoPixel Mickey Mouse Ears&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27760/episode-566-how-to-automate-industrial-welding-positioners-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 566: How to Automate Industrial Welding Positioners with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27758/episode-565-measuring-destructive-testing-force-with-a-20-ton-hydraulic-press" data-icid="e14" data-e14adj="t"&gt;Episode 565: Measuring Destructive Testing Force with a 20 Ton Hydraulic Press&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27734/episode-564-build-a-vu-meter-with-led-pixelated-nixie-tubes" data-icid="e14" data-e14adj="t"&gt;Episode 564: Build a VU Meter with LED Pixelated Nixie Tubes&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27732/episode-563-creating-augmented-reality-circuits-with-meta-quest-2-and-unity" data-icid="e14" data-e14adj="t"&gt;Episode 563: Creating Augmented Reality Circuits with Meta Quest 2 and Unity&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27730/episode-562-pi-home-temperature-monitoring-system" data-icid="e14" data-e14adj="t"&gt;Episode 562: Pi Home Temperature Monitoring System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27728/episode-561-wifi-to-parallel-port-ascii-art-dot-matrix-printer" data-icid="e14" data-e14adj="t"&gt;Episode 561: WiFi to Parallel Port Ascii Art Dot-Matrix Printer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27727/episode-560-raspberry-pi-controlled-lego-train-with-build-hat" data-icid="e14" data-e14adj="t"&gt;Episode 560: Raspberry Pi Controlled Lego Train with Build HAT&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27706/episode-559-create-a-magic-makeup-mirror-with-pose-detection" data-icid="e14" data-e14adj="t"&gt;Episode 559: Create a Magic Makeup Mirror with Pose Detection&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27700/episode-558-3d-object-rendering-using-an-fpga" data-icid="e14" data-e14adj="t"&gt;Episode 558: 3D Object Rendering Using an FPGA&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27694/episode-557-create-your-own-handheld-serial-monitor-for-project-debugging" data-icid="e14" data-e14adj="t"&gt;Episode 557: Create your own Handheld Serial Monitor for Project Debugging&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27666/episode-556-hacking-a-hotel-pos-tablet---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 556: Hacking a Hotel POS Tablet - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27664/episode-555-dance-central-pose-estimation-game-with-tensorflow-and-raspberry-pi" data-icid="e14" data-e14adj="t"&gt;Episode 555: Dance Central Pose Estimation Game with Tensorflow and Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27647/episode-554-arduino-uno-mini-limited-edition-led-necklace" data-icid="e14" data-e14adj="t"&gt;Episode 554: Arduino Uno Mini Limited Edition LED Necklace&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27645/episode-553-adding-a-parallel-printer-port-to-an-android-phone" data-icid="e14" data-e14adj="t"&gt;Episode 553: Adding a Parallel Printer Port to an Android Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27616/episode-552---magical-potion-bottle-rack" data-icid="e14" data-e14adj="t"&gt;Episode 552: Magical Potion Bottle Rack&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27614/episode-551-can-we-rebuild-a-1930s-accounting-machine" data-icid="e14" data-e14adj="t"&gt;Episode 551: Can We Rebuild a 1930s Accounting Machine?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27608/episode-550-diy-electronic-controlled-motorized-wheelchair" data-icid="e14" data-e14adj="t"&gt;Episode 550: DIY Electronic Controlled Motorized Wheelchair&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27606/episode-549-using-a-teletype-machine-as-a-usb-printer-with-arduino" data-icid="e14" data-e14adj="t"&gt;Episode 549: Using a Teletype Machine as a USB Printer with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27597/episode-548-electronic-fidget-cube-building-your-ideas" data-icid="e14" data-e14adj="t"&gt;Episode 548: Electronic Fidget Cube, Building Your Ideas!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27577/episode-547-creating-a-mummy-wake-word-detector-with-raspberry-pi-and-edge-impulse" data-icid="e14" data-e14adj="t"&gt;Episode 547: Creating a &amp;ldquo;Mummy&amp;rdquo; Wake Word Detector with Raspberry Pi and Edge Impulse&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27567/episode-546-mapping-the-outputs-of-a-1960s-teletype-machine---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 546: Mapping the Outputs of a 1960s Teletype Machine - How Hard Can it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27576/episode-545-designing-a-custom-pcb-for-microsoft-jacdac" data-icid="e14" data-e14adj="t"&gt;Episode 545: Designing a Custom PCB for Microsoft Jacdac&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27548/episode-544-reviving-the-1984-ibm-5155---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 544: Reviving the 1984 IBM 5155 - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27522/episode-543-lego-spike-prime-weather-station-with-raspberry-pi" data-icid="e14" data-e14adj="t"&gt;Episode 543: Lego Spike Prime Weather Station with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27520/episode-542-a-noise-free-diy-switching-power-supply---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 542: A Noise-Free DIY Switching Power Supply - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27495/episode-541-vintage-laptop-battery-replaced-with-usb-power---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 541: Vintage Laptop Battery Replaced with USB Power - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27493/episode-540-object-detection-for-smart-recycling" data-icid="e14" data-e14adj="t"&gt;Episode 540: Object Detection for Smart Recycling&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27484/episode-539-training-a-machine-to-recognize-objects---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 539: Training a Machine to Recognize Objects - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27483/episode-538-how-to-build-a-quadruped-robot---no-math" data-icid="e14" data-e14adj="t"&gt;Episode 538: How to Build a Quadruped Robot - NO MATH!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27460/episode-537-build-a-phonograph-preamplifier---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 537: Build a Phonograph Preamplifier - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27458/episode-536-interactive-light-up-window-with-pose-detection-using-a-raspberry-pi-and-micro-bit" data-icid="e14" data-e14adj="t"&gt;Episode 536: Interactive Light-Up Window with Pose Detection using a Raspberry Pi and micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27441/episode-535-repair-a-sega-game-gear---how-hard-can-it-be" data-icid="e14" data-e14adj="t"&gt;Episode 535: Repair a Sega Game Gear - How Hard Can It Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27435/episode-534-open-source-inventory-warehousing-system" data-icid="e14" data-e14adj="t"&gt;Episode 534: Open Source Inventory Warehousing System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27432/episode-533-jumbo-diy-led" data-icid="e14" data-e14adj="t"&gt;Episode 533: Jumbo DIY LED&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27412/episode-532-world-s-first-single-chip-apple-ii-boots" data-icid="e14" data-e14adj="t"&gt;Episode 532: World&amp;rsquo;s First Single-Chip Apple II Boots!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27407/episode-531-game-guy---the-unportable-game-boy" data-icid="e14" data-e14adj="t"&gt;Episode 531: Game Guy - The Unportable Game Boy&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27399/episode-530-mqtt-controlled-led-christmas-baubles-with-raspberry-pi-pico" data-icid="e14" data-e14adj="t"&gt;Episode 530: MQTT controlled LED Christmas Baubles with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27392/episode-529-updi-program-for-new-attiny" data-icid="e14" data-e14adj="t"&gt;Episode 529: UPDI Program for new ATTiny&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27383/episode-528-let-s-build-an-electronic-fidget-cube" data-icid="e14" data-e14adj="t"&gt;Episode 528: Let&amp;#39;s Build an Electronic Fidget Cube!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27375/episode-527---interactive-light-up-window-using-a-raspberry-pi-and-micro-bit" data-icid="e14" data-e14adj="t"&gt;Episode 527: Interactive Light Up Window using a Raspberry Pi and micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27366/episode-526-cnc-router-remote-control" data-icid="e14" data-e14adj="t"&gt;Episode 526: CNC Router Remote Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/w/documents/27338/episode-525-demonstrating-magnetic-fields-with-helmholtz-coils-in-a-snow-globe" data-icid="e14" data-e14adj="t"&gt;Episode 525: DIY Helmholtz Snow Globe&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/27287/episode-524-arduino-iot-cloud-weather-station" data-e14adj="t"&gt;Episode 524: Arduino IoT Cloud Weather Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/27276/episode-523-make-your-own-auto-sensing-solder-fume-extractor" data-e14adj="t"&gt;Episode 523: Make your Own Auto-Sensing Solder Fume Extractor&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23245/episode-522-siren-head-halloween-wearable-costume" data-e14adj="t"&gt;Episode 522: Siren Head Halloween Wearable Costume&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23240/episode-521-diy-static-grass-applicator" data-e14adj="t"&gt;Episode 521: DIY Static Grass Applicator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23232/episode-520-adding-android-auto-as-non-permanent-add-on-with-raspberry-pi" data-e14adj="t"&gt;Episode 520: Adding Android Auto as Non-Permanent Add-On with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23225/episode-519-make-your-own-ye-olde-book-nook-diorama-with-arduino" data-e14adj="t"&gt;Episode 519: Make Your Own Ye Olde Book Nook Diorama with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23212/episode-518-guitar-vacuum-tube-distortion-pedal" data-e14adj="t"&gt;Episode 518: Guitar Vacuum Tube Distortion Pedal&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/secret-element14-presents/w/documents/4141/episode-517-emulate-an-eprom---how-hard-could-it-be" data-e14adj="t"&gt;Episode 517: Emulate an EPROM - How Hard Could it Be?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23199/episode-516-modding-a-wireless-doorbell-with-raspberry-pi-and-esp8266" data-e14adj="t"&gt;Episode 516: Modding a Wireless Doorbell with Raspberry Pi and ESP8266&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23190/episode-515-upcycling-a-lenovo-pc-into-a-raspberry-pi-wifi-access-point" data-e14adj="t"&gt;Episode 515: Upcycling a Lenovo PC into a Raspberry Pi WiFi Access Point&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/23183/episode-514-making-a-3d-graphics-card-for-the-atari-800-xl" data-e14adj="t"&gt;Episode 514: Making a 3D Graphics Card for the Atari 800 XL&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5429/episode-513-bike-speedometer-with-arduino-and-gps" data-e14adj="t"&gt;Episode 513: Bike Speedometer with Arduino and GPS&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5422/episode-512-you-cannot-buy-this-vacuum-tube-tester-you-build-it" data-e14adj="t"&gt;Episode 512: You Cannot Buy This Vacuum Tube Tester. You Build It!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5418/episode-511-face-tracking-cheeseball-launcher" data-e14adj="t"&gt;Episode 511:&amp;nbsp; Raspberry Pi Powered Cheeseball Launcher&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5407/episode-510-laser-cutter-command-station" data-e14adj="t"&gt;Episode 510: Laser Cutter Command Station&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5402/episode-509-diy-discrete-logic-led-countdown-timer" data-e14adj="t"&gt;Episode 509: DIY Discrete Logic LED Countdown Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5397/episode-508-raspberry-pi-fpv-rover-easy-robot-arm-upgrade" data-e14adj="t"&gt;Episode 508: Raspberry Pi FPV Rover Easy Robot Arm Upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5391/episode-507-massive-raspberry-pi" data-e14adj="t"&gt;Episode 507: Massive Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5377/episode-506-diy-star-trek-tricorder-from-build-inside-the-box" data-e14adj="t"&gt;Episode 506: DIY Star Trek Tricorder from Build Inside the Box&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5374/episode-505-super-8-camera-digitizer" data-e14adj="t"&gt;Episode 505: Super 8 Camera Digitizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5369/episode-504-diy-sump-pump-alarm" data-e14adj="t"&gt;Episode 504: DIY Sump Pump Alarm&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5360/episode-503-meet-cheesoid---the-robot-that-smells" data-e14adj="t"&gt;Episode 503: Meet Cheesoid - The Robot That Smells!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5352/episode-502-make-your-bike-a-pokebike" data-e14adj="t"&gt;Episode 502: Make Your Bike a Pokebike!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5033/episode-501-raspberry-pi-nfc-button-free-music-player" data-e14adj="t"&gt;Episode 501: Raspberry Pi NFC Button-Free Music Player&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/20721/episode-500-build-inside-the-box-challenge" data-e14adj="t"&gt;Episode 500:&amp;nbsp; Build Inside The Box Challenge!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5332/episode-499-diy-four-channel-arduino-servo-tester" data-e14adj="t"&gt;Episode 499: DIY Four Channel Arduino Servo Tester&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8706/episode-498-raspberry-pi-smart-water-dispenser" data-e14adj="t"&gt;Episode 498: Raspberry Pi Smart Water Dispenser&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5318/episode-497-raspberry-pi-rfid-pocket-money-keeper" data-e14adj="t"&gt;Episode 497: RFID Pocket Money Keeper&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8705/episode-496-compute-module-4-powered-3d-printer-board" data-e14adj="t"&gt;Episode 496: Compute Module 4 Powered 3D Printer Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5308/episode-495-magic-gif-ball-powered-by-raspberry-pi" data-e14adj="t"&gt;Episode 495: Magic GIF Ball Powered By Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5299/episode-494-keyboard-shortcuts-keypad-with-raspberry-pi-pico" data-e14adj="t"&gt;Episode 494: Keyboard Shortcuts Keypad with Raspberry Pi Pico&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5290/episode-493-neopixel-7-segment-display-clock-update" data-e14adj="t"&gt;Episode 493: NeoPixel 7 Segment Display Clock Update&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5275/episode-492-arduino-vs-555-timer---tiny-slot-car-racers" data-e14adj="t"&gt;Episode 492: Arduino vs 555 Timer - Tiny Slot Car Racers&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5273/episode-491-arduino-single-wheel-balancing-robot" data-e14adj="t"&gt;Episode 491: Arduino Single-Wheel Balancing Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5256/episode-490-diy-raspberry-pi-pico-fizz-buzz-multiplication-game" data-e14adj="t"&gt;Episode 490: DIY Raspberry Pi Pico Fizz Buzz Multiplication Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5254/episode-489-build-an-fpv-rover-with-raspberry-pi" data-e14adj="t"&gt;Episode 489: Build An FPV Rover with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5233/episode-488-diy-raspberry-pi-cyberdeck" data-e14adj="t"&gt;Episode 488: DIY Raspberry Pi Cyberdeck&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5232/episode-487-diy-magsafe-battery-charger" data-e14adj="t"&gt;Episode 487: DIY MagSafe Battery Charger&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5229/episode-486-make-the-ultimate-phone-charging-camping-flashlight" data-e14adj="t"&gt;Episode 486: Make The Ultimate Phone Charging Camping Flashlight&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5213/episode-485-how-to-make-a-custom-pcb-from-design-to-assembly" data-e14adj="t"&gt;Episode 485: How To Make A Custom PCB From Design To Assembly&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5211/episode-484-raspberry-pi-bird-watching-camera" data-e14adj="t"&gt;Episode 484: Raspberry Pi Bird Watching Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5201/episode-483-diy-miniature-multimeter" data-e14adj="t"&gt;Episode 483: DIY Miniature Multimeter&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5196/episode-482-gigantic-3d-printed-7-segment-display-clock" data-e14adj="t"&gt;Episode 482: Gigantic 3D Printed 7 Segment Display Clock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5188/episode-481-diy-lost-swan-station-split-flap-display-timer" data-e14adj="t"&gt;Episode 481: DIY LOST Swan Station Split Flap Display Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5181/episode-480-diy-toothbrush-timer" data-e14adj="t"&gt;Episode 480: DIY Toothbrush Timer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5179/episode-479-raspberry-pi-2xl-robot-assistant-part-2" data-e14adj="t"&gt;Episode 479: Raspberry Pi 2XL Robot Assistant Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5171/episode-478-upgrading-a-christmas-train-with-python-and-raspberry-pi" data-e14adj="t"&gt;Episode 478: Upgrading A Christmas Train&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5169/episode-477-metal-plate-your-3d-prints-with-a-diy-galvanizing-machine" data-e14adj="t"&gt;Episode 477: Metal Plate Your 3D Prints with a DIY Galvanizing Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5160/episode-476-iot-arduino-ntp-world-clock-with-spi-display" data-e14adj="t"&gt;Episode 476: IoT Arduino NTP World Clock with SPI Display&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5147/episode-475-diy-wall-mounted-arduino-barometer" data-e14adj="t"&gt;Episode 475: DIY Wall Mounted Arduino Barometer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5144/episode-474-continuum-robot-tentacle-prototype" data-e14adj="t"&gt;Episode 474: Continuum Robot Tentacle Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8680/episode-473-mendel-3d-printer-upgrade-and-maintenance" data-e14adj="t"&gt;Episode 473: Mendel 3D Printer Upgrade and Maintenance&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5120/episode-472-diy-hydration-reminder-system" data-e14adj="t"&gt;Episode 472: DIY Hydration Reminder System&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5113/episode-471-diy-dance-dance-revolution-mat" data-e14adj="t"&gt;Episode 471: DIY Dance Dance Revolution Mat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5102/episode-470-voice-activated-inspector-gadget-hat" data-e14adj="t"&gt;Episode 470: Voice Activated Inspector Gadget Hat&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5063/episode-469-nintendo-super-scope-modded-for-modern-televisions" data-e14adj="t"&gt;Episode 469: Nintendo Super Scope Modded For Modern Televisions&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5092/episode-468-socially-distanced-halloween-candy-dispenser" data-e14adj="t"&gt;Episode 468: Socially Distanced Halloween Candy Dispenser&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5077/episode-467-repairing-the-world-s-first-laptop-epson-hx-20" data-e14adj="t"&gt;Episode 467: Repairing the World&amp;#39;s First Laptop! (Epson HX-20)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5061/episode-466-arduino-powered-hexadecimal-color-code-clock" data-e14adj="t"&gt;Episode 466: Arduino-powered Hexadecimal Color Code Clock&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5034/episode-465-lego-raspberry-pi-hq-camera" data-e14adj="t"&gt;Episode 465: Lego Raspberry Pi HQ Camera&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5031/episode-464-particle-voice-recognition-for-home-appliances" data-e14adj="t"&gt;Episode 464: Particle Voice Recognition for Home Appliances&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5002/episode-463-raspberry-pi-speech-to-text-led-face-mask" data-e14adj="t"&gt;Episode 463: Raspberry Pi Speech to Text LED Face Mask&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/5012/episode-462-joycon-controlled-electronic-rock-em-sock-em-robots" data-e14adj="t"&gt;Episode 462: Joycon Controlled Electronic Rock&amp;#39;Em Sock&amp;#39;Em Robots&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4980/episode-461-portal-2-security-camera-with-raspberry-pi-2" data-e14adj="t"&gt;Episode 461: Portal 2 Security Camera with Raspberry Pi 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4985/episode-460-trinamic-open-source-ventilator-tosv-teardown" data-e14adj="t"&gt;Episode 460: Trinamic Open Source Ventilator (TOSV) Teardown&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4961/episode-459-raspberry-pi-4-vr-conference-call-assistant" data-e14adj="t"&gt;Episode 459: Raspberry Pi 4 VR Conference Call Assistant&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4971/episode-458-diy-arduino-automated-metal-bending-machine" data-e14adj="t"&gt;Episode 458: DIY Arduino Automated Metal Bending Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4966/episode-457-arduino-mkr-zero-animatronic-rosie-the-robot-from-the-jetsons" data-e14adj="t"&gt;Episode 457: Raspberry Pi 4 Animatronic Rosie the Robot from the Jetsons&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8665/episode-456-unhackable-arduino-switch-matrix" data-e14adj="t"&gt;Episode 456: Unhackable Arduino Switch Matrix&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8664/episode-455-arduino-unit-conversion-calculator" data-e14adj="t"&gt;Episode 455: Arduino Unit Conversion Calculator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4942/episode-454-soldering-up-the-rc2014-homebrew-z80-computer-kit" data-e14adj="t"&gt;Episode 454: Soldering Up the rc2014 Homebrew Z80 Computer Kit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4937/episode-453-build-an-anti-troll-bot-using-tensorflow-and-arduino" data-e14adj="t"&gt;Episode 453: Build an Anti-Troll Bot Using TensorFlow and Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4914/episode-452-raspberry-pi-4-experimental-resin-3d-printer-updated" data-e14adj="t"&gt;Episode 452: Raspberry Pi 4 Experimental Resin 3D Printer Updated!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4913/episode-451-build-an-off-grid-wikipedia-with-raspberry-pi" data-e14adj="t"&gt;Episode 451: Build an Off Grid Wikipedia with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4906/episode-450-sega-gamegear-rebuild-with-leds" data-e14adj="t"&gt;Episode 450: Sega GameGear Rebuild with LEDs&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8657/episode-449-diy-tamagotchi---build-a-virtual-pet" data-e14adj="t"&gt;Episode 449: DIY Tamagotchi - Build a Virtual Pet&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4895/episode-448-diy-raspberry-pi-4-boxing-game" data-e14adj="t"&gt;Episode 448: DIY Raspberry Pi 4 Boxing Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4873/episode-447-diy-stop-motion-rig-with-lattepanda" data-e14adj="t"&gt;Episode 447: DIY Stop Motion Rig with LattePanda&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4871/episode-446-raspberry-pi-2xl-robot-assistant-part-1" data-e14adj="t"&gt;Episode 446: Raspberry Pi 2XL Robot Assistant Part 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8652/episode-445-raspberry-pi-4-animatronic-bd-1-companion-robot" data-e14adj="t"&gt;Episode 445: Raspberry Pi 4 Animatronic BD-1 Companion Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4848/episode-444-raspberry-pi-4-dvr" data-e14adj="t"&gt;Episode 444: Raspberry Pi 4 DVR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4836/episode-443-arduino-uno-rc-remote---can-it-be-done" data-e14adj="t"&gt;Episode 443: Arduino Uno RC Remote - Can It Be Done?&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4834/episode-442-make-your-own-giant-servo" data-e14adj="t"&gt;Episode 442: Make Your Own Giant Servo&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4818/episode-441-raspberry-pi-4-international-space-station-tracker" data-e14adj="t"&gt;Episode 441: Raspberry Pi 4 International Space Station Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4810/episode-440-diy-arduino-helicopter-collective-joystick-control" data-e14adj="t"&gt;Episode 440: DIY Arduino Helicopter Collective Joystick Control&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4796/episode-439---mechanical-arcade-game-with-barebones-arduino" data-e14adj="t"&gt;Episode 439 - Mechanical Arcade Game with Barebones Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4787/episode-438-smartphone-controlled-diy-rover-using-websockets" data-e14adj="t"&gt;Episode 438: Smartphone Controlled DIY Rover Using Websockets&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4771/episode-437-diy-motorized-zoom-for-your-dslr" data-e14adj="t"&gt;Episode 437: DIY Motorized Zoom for Your DSLR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4767/episode-436-automated-raspberry-pi-planet-tracking-goto-telescope" data-e14adj="t"&gt;Episode 436: Automated Raspberry Pi Planet Tracking GOTO Telescope&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4756/episode-435-raspberry-pi-4-music-player-w-analog-controls" data-e14adj="t"&gt;Episode 435: Raspberry Pi 4 Music Player w/Analog Controls&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8637/episode-434-infineon-smart-city-model" data-e14adj="t"&gt;Episode 434: Infineon Smart City Model&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4742/episode-433---arduino-based-love-tester" data-e14adj="t"&gt;Episode 433: Arduino Based Love Tester&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4728/episode-432-super-fx-sword-using-the-bbc-micro-bit" data-e14adj="t"&gt;Episode 432: Super FX Sword using the BBC micro:bit&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4726/episode-431-room-sized-studio-light-speakers-combo" data-e14adj="t"&gt;Episode 431: Room-Sized Studio Light Speakers Combo&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4692/episode-430-flaming-xylophone-rubens-tube" data-e14adj="t"&gt;Episode 430: Flaming Xylophone Rubens&amp;#39; Tube&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4670/episode-429-youtuber-on-air-light-with-particle-mesh-network" data-e14adj="t"&gt;Episode 429: YouTuber &amp;quot;On Air&amp;quot; Light with Particle Mesh Network&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4668/episode-428-raspberry-pi-4-crt-based-vr-headset" data-e14adj="t"&gt;Episode 428: Raspberry Pi 4 CRT-based VR Headset&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4657/episode-427-diy-retro-gaming-portable-on-a-budget" data-e14adj="t"&gt; Episode 427: DIY Retro Gaming Portable on a Budget!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4142/episode-426-retro-tv-ads-holiday-ornament" data-e14adj="t"&gt; Episode 426: Retro TV Ads Holiday Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4651/episode-425-make-your-own-raspberry-pi-4-photobooth" data-e14adj="t"&gt; Episode 425: Make Your Own Raspberry Pi 4 Photobooth!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4646/episode-424-diy-escape-room-puzzle" data-e14adj="t"&gt; Episode 424: DIY Escape Room Puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4644/episode-423-programmable-arduino-synthesizer-watch" data-e14adj="t"&gt; Episode 423: Programmable Arduino Synthesizer Watch&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4628/episode-422-raspberry-pi-e-ink-task-organizer" data-e14adj="t"&gt; Episode 422: Raspberry Pi E-Ink Task Organizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4627/episode-421-raspberry-pi-4-commodore-sx-64-inspired-portable-computer" data-e14adj="t"&gt; Episode 421: Raspberry Pi 4 Commodore SX-64 Inspired Portable Computer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4616/episode-420-diy-shapeoko-cnc-pendant" data-e14adj="t"&gt; Episode 420: DIY Shapeoko CNC Pendant&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4607/episode-419-altair-8800-laptop" data-e14adj="t"&gt; Episode 419: Altair 8800 Laptop &lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4604/episode-418-animatronic-terminator-skull-with-beaglebone-ai-and-giveaway" data-e14adj="t"&gt;&amp;nbsp;Episode 418: Animatronic Terminator Skull with BeagleBone&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/00ae.svg" title="Registered"&gt;&amp;#x00ae;&lt;/span&gt;&amp;nbsp;AI&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8619/episode-417-pipboy-2000-mk-ii" data-e14adj="t"&gt;Episode 417: #Pipboy 2000 Mk II&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4596/episode-416---diy-3dprinted-label-spooler" data-e14adj="t"&gt;Episode 416: DIY #3DPrinted Label Spooler&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4588/episode-415-iron-man-helmet-heads-up-display" data-e14adj="t"&gt;Episode 415: Iron Man Helmet Heads Up Display&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4580/episode-414-raspberry-pi-4-experimental-resin-3d-printer" data-e14adj="t"&gt;Episode 414: Raspberry Pi 4 Experimental Resin 3D Printer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8610/episode-413-animatronic-claptrap-case-mod-part-2" data-e14adj="t"&gt;Episode 413: Animatronic Claptrap Case Mod Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4558/episode-412-get-to-know-your-adc-with-a-diy-temperature-probe" data-e14adj="t"&gt;Episode 412: Get to Know Your ADC with a DIY Temperature Probe&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4531/episode-411-animatronic-claptrap-computer-case---part-1" data-e14adj="t"&gt;Episode 411: Animatronic Claptrap Computer Case - Part 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4537/episode-410-macpro-g5-cheese-grater-with-raspberry-pi-4" data-e14adj="t"&gt;Episode 410: MacPro G5 Cheese Grater with Raspberry Pi 4&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4522/episode-409-commodore-sx-64-restoration" data-e14adj="t"&gt;Episode 409: Commodore SX-64 Restoration&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4516/episode-408-hand-soldered-led-oscilloscope" data-e14adj="t"&gt;Episode 408: Hand Soldered LED Oscilloscope&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4514/episode-407-the-ultimate-raspberry-pi-4-laptop" data-e14adj="t"&gt;Episode 407: The Ultimate Raspberry Pi 4 Laptop&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4507/episode-406-automated-robot-artist" data-e14adj="t"&gt;Episode 406: Automated Robot Artist&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4493/episode-405-rc-ornithopter-concept" data-e14adj="t"&gt;Episode 405: RC Ornithopter Concept&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4488/episode-404-arduino-powered-close-encounters-midi-light-board" data-e14adj="t"&gt;Episode 404: Arduino Powered Close Encounters Midi Light Board&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4459/episode-403-upcycled-iot-coffee-pot-ramen-maker" data-e14adj="t"&gt;Episode 403: Upcycled IoT Coffee Pot Ramen Maker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4422/episode-402-piphone-the-giant-raspberry-pi-flip-phone" data-e14adj="t"&gt;Episode 402: PiPhone++ The Giant Raspberry Pi Flip Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4128/episode-401-matrix-voice-controlled-robot" data-e14adj="t"&gt;Episode 401: Matrix Voice Controlled Robot&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4127/episode-400-the-ultimate-raspberry-pi-stress-test" data-e14adj="t"&gt;Episode 400: The Ultimate Raspberry Pi Stress Test&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4129/episode-399-candle-powered-robot" data-e14adj="t"&gt;Episode 399: Candle-Powered Robotl&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4044/episode-398-let-me-out-hooman-bluetooth-dog-doorbell" data-e14adj="t"&gt;Episode 398: Let Me Out Hooman! Bluetooth Dog Doorbell&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4126/episode-397-steam-powered-retropie-console" data-e14adj="t"&gt;Episode 397: Steam Powered Retropie Console&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4043/episode-396-arduino-retro-led-matrix-handheld" data-e14adj="t"&gt;Episode 396: Arduino Retro LED Matrix Handheld&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4042/episode-395-raspberry-pi-stop-motion-machine" data-e14adj="t"&gt;Episode 395: Raspberry Pi Stop Motion Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8531/episode-394-animatronic-glados-head-with-raspberry-pi" data-e14adj="t"&gt;Episode 394: Animatronic GLaDOS Head with Raspberry Pi&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4125/episode-393-gameboy-walkman" data-e14adj="t"&gt;Episode 393: GameBoy Walkman&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4191/episode-392-multi-line-telephone-intercom" data-e14adj="t"&gt;Episode 392: Multi-Line Telephone Intercom&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4124/episode-391-first-person-view-rc-car-with-ps1-steering-wheel" data-e14adj="t"&gt;Episode 391: First Person View RC Car with PS2 Steering Wheel&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4122/episode-390-retro-texting-smart-watch-of-the-future" data-e14adj="t"&gt;Episode 390: Retro Texting Smart Watch of the Future!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4120/episode-389-playstation-classic-portable-prototype" data-e14adj="t"&gt;Episode 389: PlayStation Classic Portable Prototype&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8519/episode-388-fpga-midi-music-synthesizer" data-e14adj="t"&gt;Episode 388: FPGA MIDI Music Synthesizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4057/episode-387-rotocell---the-rotary-cell-phone-of-the-future" data-e14adj="t"&gt;Episode 387: Rotocell - The Rotary Cell Phone of the Future!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4038/episode-386-xybernaut-wearable-pc" data-e14adj="t"&gt;Episode 386: Xybernaut Wearable PC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4117/episode-385-20-pcb-design-pitfalls" data-e14adj="t"&gt;Episode 385: 20 PCB Design Pitfalls&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4035/episode-384-retro-gaming-handheld-without-a-pcb" data-e14adj="t"&gt;Episode 384: Retro Gaming Handheld Without a PCB&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4058/episode-383-gameboy-wireless-link-cable-dmg1" data-e14adj="t"&gt;Episode 383: Gameboy Wireless Link Cable (DMG1)&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8501/episode-382-modding-a-super-8-camera-into-a-digital" data-e14adj="t"&gt;Episode 382: Modding a Super 8 Camera into a Digital&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4067/episode-381-reverse-music-box" data-e14adj="t"&gt;Episode 381: Reverse Music Box&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4039/episode-380-nes-zapper-on-retropie" data-e14adj="t"&gt;Episode 380: NES Zapper on RetroPie&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4036/episode-379-macroscope-soldering-tool" data-e14adj="t"&gt;Episode 379: Macroscope Soldering Tool&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8500/episode-378-invader-zim-animatronic-gir" data-e14adj="t"&gt;Episode 378: Invader ZIM Animatronic GIR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4034/episode-377-altair-8800-replica" data-e14adj="t"&gt;Episode 377: Altair 8800 Replica&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4028/episode-376-4d-gaming-with-the-matrix-creator" data-e14adj="t"&gt;Episode 376: 4D Gaming with the Matrix Creator&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4025/episode-375-hacked-fetal-detector-music-synthesizer" data-e14adj="t"&gt;Episode 375: Hacked Fetal Detector Music Synthesizer&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/4008/episode-374-raspberry-pi-donkey-kong-holiday-ornament" data-e14adj="t"&gt;Episode 374: Raspberry Pi Donkey Kong Holiday Ornament&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3992/episode-373-raspberry-pi-fallout-terminal-pc" data-e14adj="t"&gt;Episode 373: Raspberry Pi Fallout Terminal PC&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8497/episode-372-raspberry-pi-auto-etch-a-sketch" data-e14adj="t"&gt;Episode 372: Raspberry Pi Auto Etch A Sketch&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3990/episode-371-fpga-game-genie-for-atari-2600" data-e14adj="t"&gt;Episode 371: FPGA &amp;quot;Game Genie&amp;quot; for Atari 2600&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3989/episode-370-raspberry-pi-noaa-satellite-receiver" data-e14adj="t"&gt;Episode 370: Raspberry Pi NOAA Satellite Receiver&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3979/episode-369-recreating-the-atari-portfolio" data-e14adj="t"&gt;Episode 369: Recreating the Atari Portfolio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3977/episode-368-arduino-automatic-wire-cutter-and-stripper" data-e14adj="t"&gt;Episode 368: Arduino Automatic Wire Cutter and Stripper&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3968/episode-367-most-useless-iot-device-ever---part-2" data-e14adj="t"&gt;Episode 367: Most Useless IoT Device Ever - Part 2&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3960/episode-366-infinity-icosahedron" data-e14adj="t"&gt;Episode 366: Infinity Icosahedron&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3949/episode-365-twilight-zone-fortune-telling-machine" data-e14adj="t"&gt;Episode 365: Twilight Zone Fortune Telling Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3934/episode-364-raspberry-pi-virtual-reality-arcade" data-e14adj="t"&gt;Episode 364: Raspberry Pi Virtual Reality Arcade #VR&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3920/episode-363-add-a-motor-to-your-bike-with-arduino" data-e14adj="t"&gt;Episode 363 - Add a Motor to your Bike with Arduino&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3912/episode-362-most-worthless-iot-device-ever---part-1" data-e14adj="t"&gt;Episode 362: Most Worthless IoT Device Ever Pt. 1&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3903/episode-361-r-o-b-rebuild-and-upgrade" data-e14adj="t"&gt;Episode 361: R.O.B Rebuild and Upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3887/episode-360-make-your-own-raspberry-pi-cell-phone" data-e14adj="t"&gt;Episode 360: Make Your Own Raspberry Pi Cell Phone&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3875/episode-359-make-your-own-cnc-pyrography-wood-burner" data-e14adj="t"&gt;Episode 359: Make Your Own CNC Pyrography Wood Burner&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3863/episode-358-the-shrimp-of-terror" data-e14adj="t"&gt;Episode 358: The Shrimp of Terror!&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3848/episode-357-raspberry-pi-asteroid-tracker" data-e14adj="t"&gt;Episode 357: Raspberry Pi Asteroid Tracker&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/8491/episode-356-bank-to-the-future-with-arduino-ti" data-e14adj="t"&gt;Episode 356: Bank to the Future with Arduino &amp;amp; TI&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3826/episode-355-raspberry-pi-pirate-radio" data-e14adj="t"&gt;Episode 355: Raspberry Pi Pirate Radio&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3816/episode-354-tiny-vacuum-forming-machine" data-e14adj="t"&gt;Episode 354: Tiny Vacuum Forming Machine&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3809/episode-353-program-your-own-fpga-video-game" data-e14adj="t"&gt;Episode 353: Program Your Own FPGA Video Game&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3784/episode-352-pripyat---diy-geiger-counter" data-e14adj="t"&gt;Episode 352: Pripyat - DIY Geiger Counter&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/project-videos/w/documents/3747/episode-349-raspberry-pi-selfie-rocket" data-e14adj="t"&gt;Episode 349: Raspberry Pi Selfie Rocket&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;padding-top:12px;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/9678/the-ben-heck-show-episode-archive" data-e14adj="t"&gt;See All Previous Episodes&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: episode releases, friday_release_archive, element14 presents, project videos, episodes, friday releases, episode release archive, episode archive, friday release archive, project_videos&lt;/div&gt;
</description></item><item><title>Find EMI Fast with a Low‑Cost, Automated Way to See Where Your PCB Radiates</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72062/find-emi-fast-with-a-low-cost-automated-way-to-see-where-your-pcb-radiates/revision/5</link><pubDate>Thu, 14 May 2026 12:48:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:275ee3d2-d4d7-4986-9692-52a8acf84394</guid><dc:creator>e14phil</dc:creator><description>Revision 5 posted to Documents by e14phil on 5/14/2026 12:48:29 PM&lt;br /&gt;
&lt;p&gt;Join Clem as he builds an automated CNC‑style EMI heatmapping scanner to remove guesswork from near‑field probing during pre‑compliance testing. Using an Arduino Uno with GRBL, professional near‑field probes, and a low‑cost RTL‑SDR, the system scans a PCB in a controlled grid and turns raw measurements into clear EMI heatmaps. Along the way, Clem highlights real engineering challenges, including firmware choices, SDR software limitations, and the critical importance of lowering the noise floor through proper shielding, showing how automation and good measurement practice work together.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q40"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/Vh7laroqxZ0"&gt;https://youtu.be/Vh7laroqxZ0&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q41"&gt;Automating Near‑Field Probing&lt;/h2&gt;
&lt;p&gt;In this element14 presents project, Clem tackles one of the most frustrating and experience‑dependent problems in electronics design: locating EMI emission sources before they turn into expensive compliance failures. Anyone who has been through pre‑compliance testing will recognize the situation immediately. A specific frequency spike, or a narrow band, appears uncomfortably close to the regulatory limit. The test setup shows it clearly, but physically locating where that emission originates on the PCB is a very different challenge.&lt;/p&gt;
&lt;p&gt;Traditionally, this process involves manually sweeping a near‑field probe across a powered board while watching a spectrum analyzer. It is slow, requires significant experience, and is highly sensitive to probe orientation and positioning. Small changes in angle or height can produce noticeably different results, making repeatability difficult.&lt;/p&gt;
&lt;p&gt;Clem&amp;rsquo;s goal was to remove as much subjectivity from this process as possible. Rather than relying on careful hand movements and interpretation, he wanted a system that could probe a PCB in a controlled, repeatable way and generate structured data automatically.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I want to make this process a lot more controllable, repeatable and less dependent on actual expert usage to find the culprit.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;The result is a dedicated EMC heatmapping scanner that behaves more like a CNC machine than a traditional test setup. Using Multicomp Pro near‑field probes and a precisely controlled motion system, the machine scans a PCB in a defined grid pattern, producing consistent measurements that can be directly compared across frequencies and design revisions.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000035.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000043.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q42"&gt;Standing on Shoulders Then Starting Fresh&lt;/h2&gt;
&lt;p&gt;Clem is clear that the core idea behind the project is not new. Several years ago, other engineers demonstrated that an RTL‑SDR could be used as a low‑cost EMI receiver for comparative near‑field measurements. Inspired by this earlier work, Clem initially attempted to reproduce one of those implementations.&lt;/p&gt;
&lt;p&gt;In practice, this proved difficult. Software libraries had evolved, dependencies had changed, and the original code no longer worked reliably. Even more importantly, the older project did not align with Clem&amp;rsquo;s vision for automation, flexibility, and structured scanning.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I tried to get this to run. It&amp;rsquo;s dependent on some software that since had updates, so it doesn&amp;rsquo;t work as expected anymore, at least not in my setup.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Rather than patching an aging codebase, Clem made the decision to start over completely. This allowed him to redesign both the hardware control and the software architecture around his own requirements, rather than being constrained by assumptions baked into someone else&amp;rsquo;s workflow.&lt;/p&gt;
&lt;p&gt;The result is a system built cleanly and modularly from the ground up. Each part of the workflow, motion control, scan definition, data acquisition, and visualisation, is implemented as a distinct software component, making the overall system easier to understand, debug, and extend.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000063.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000066.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q43"&gt;Smart Recycling, Smart Engineering&lt;/h2&gt;
&lt;p&gt;Mechanically, the scanner reflects a pragmatic engineering mindset. Clem reused components from previous projects wherever possible. The frame of an old 3D printer forms the mechanical base, with salvaged stepper motors and drivers handling motion. This approach keeps costs low and reinforces that the project is a functional tool rather than a polished commercial product.&lt;/p&gt;
&lt;p&gt;The probe itself only moves in X and Y. The Z height is set manually once and remains fixed for the duration of a scan. This simplification reduces mechanical complexity and removes another variable that could affect measurement repeatability.&lt;/p&gt;
&lt;p&gt;Once the user interactively defines the scan area by jogging the probe to the lower‑left and upper‑right corners of the region of interest, GRBL dynamically generates the zig‑zag toolpath. Clem deliberately chose GRBL 1.1 running on an Arduino Uno because it provides CNC‑style control without imposing the assumptions typical of modern 3D printer firmware.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;What I need is not homing and then executing a job. What I need is total control during the process, like a CNC where it can start and stop and resume.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;This design choice is reflected in the software as well. The system does not rely on homing at all. If position is lost, the user simply redefines the scan area. For EMI debugging, where scans often focus on specific subsections of a board, this flexibility is more valuable than absolute positioning.&lt;/p&gt;
&lt;p&gt;A small camera is mounted above the device under test, but it is not used for alignment or vision‑based scanning. Instead, it serves a documentation role, capturing an image of the DUT after a scan so that measurement data can be visually associated with the physical board.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000177.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000105.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q44"&gt;SDR Instead of Spectrum Analyzer&lt;/h2&gt;
&lt;p&gt;One of the most notable aspects of the project is Clem&amp;rsquo;s decision to use a low‑cost RTL‑SDR instead of a traditional spectrum analyzer. This is not positioned as a replacement for lab‑grade equipment, but as a practical alternative for comparative analysis and source localisation.&lt;/p&gt;
&lt;p&gt;Clem explicitly warns against poor‑quality SDR clones, noting that unstable hardware can introduce measurement artifacts and waste debugging time. When paired with professional near‑field probes, however, a reliable RTL‑SDR proves more than capable of revealing relative emission hotspots across a PCB.&lt;/p&gt;
&lt;p&gt;The software is designed to scan multiple frequencies in a single run. At each X‑Y coordinate, the system measures all selected frequencies before moving on to the next point. This approach is reflected in the scanner module, which parses the generated G‑code and interleaves motion with data acquisition.&lt;/p&gt;
&lt;p&gt;Each scan produces a plain text file per frequency containing X and Y coordinates along with received power in dBm. A secondary script converts this data into heatmap images. This separation allows raw data to be preserved for further analysis while still producing visuals that are easy for humans to interpret.&lt;/p&gt;
&lt;p&gt;Clem designed the Python code as a collection of reusable modules rather than a single monolithic script. While AI assistance helped with some of the repetitive coding, SDR‑specific functionality required significant manual correction, particularly where libraries had changed since earlier projects.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000083.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000147.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q45"&gt;Lowering the Noise Floor&lt;/h2&gt;
&lt;p&gt;In the final section of the video, Clem turns his attention to a topic that is often misunderstood: noise floor reduction. He emphasises that meaningful EMI localisation is only possible if the measurement environment itself is properly controlled.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;If the noise doesn&amp;rsquo;t get any lower, you basically will always measure just a guess.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Simply enclosing the system in a metal box is not sufficient. Effective shielding requires continuous conductive paths, low‑impedance connections between panels, and careful treatment of seams, gaps, and cable pass‑throughs. Clem demonstrates how improper bonding can allow high‑frequency energy to leak through even seemingly solid enclosures.&lt;/p&gt;
&lt;p&gt;Using conductive tape, proper grounding techniques, and purpose‑built EMI gaskets, Clem shows how reducing the noise floor dramatically improves scan clarity. Once background noise is sufficiently suppressed, subtle emission sources become visible in the heatmaps, allowing engineers to draw much more confident conclusions.&lt;/p&gt;
&lt;p&gt;This focus on shielding and attenuation reinforces one of the project&amp;rsquo;s key themes: automation alone is not enough. Reliable results depend on understanding EMI fundamentals and applying good measurement practice alongside clever tooling.&lt;/p&gt;
&lt;p&gt;Taken as a whole, the automated EMI heatmapping scanner demonstrates a practical, fitness‑for‑purpose approach to a complex engineering problem. It does not claim to replace formal compliance testing, but it provides engineers with a powerful tool for understanding where emissions originate, how they change under different operating conditions, and whether design changes are having the desired effect before committing to expensive laboratory testing.&lt;/p&gt;
&lt;p&gt;By combining controlled motion, repeatable measurements, and careful attention to the measurement environment itself, Clem shows that EMI debugging does not have to remain an opaque or purely experience‑driven exercise. Instead, it can be approached systematically, with data that supports informed design decisions earlier in the development process, and with some hardware that you have available.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1ti4l88"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151296"&gt;Episode 714 Resources&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://github.com/OpenCommunityLicence/OpenCommunityLicence" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;software license&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp; &lt;a title="EMI Mapper on github" href="https://github.com/CGrassin/EMI_mapper" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;EMI Mapper on github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;RTL SDR&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1te0nj7"&gt;Parts and Products Used&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-8712e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382,3335878&amp;nsku=78T1601,69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8712e'));" data-farnell="2075382,3335878" data-newark="78T1601,69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="," data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ardunio Uno R3&lt;/td&gt;
&lt;td&gt;ARDUINO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3892e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382&amp;nsku=78T1601&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3892e'));" data-farnell="2075382" data-newark="78T1601" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Equipment Kit, 4x Near Field Probe, 1m Cable, N-SMA Adaptor, Case&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-99caf" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3335878&amp;nsku=69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('99caf'));" data-farnell="3335878" data-newark="69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: RTL SDR EMI testing, emi heatmap scanner, e14presents_mayermakes, ARduino GRBL CNC project, EMC heatmap visualisation, pcb emission testing, CNC near field probing, emc debugging tools, near field probe PCB scanning, EMI source localisation, software defined radio emi, automated EMI debugging, diy emc scanner, PCB emi troubleshooting, electronics compliance engineering, EMC pre compliance testing, friday_release&lt;/div&gt;
</description></item><item><title>Find EMI Fast with a Low‑Cost, Automated Way to See Where Your PCB Radiates</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72062/find-emi-fast-with-a-low-cost-automated-way-to-see-where-your-pcb-radiates</link><pubDate>Thu, 14 May 2026 12:48:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:275ee3d2-d4d7-4986-9692-52a8acf84394</guid><dc:creator>e14sbhargav</dc:creator><description>Current Revision posted to Documents by e14sbhargav on 5/14/2026 12:48:29 PM&lt;br /&gt;
&lt;p&gt;Join Clem as he builds an automated CNC‑style EMI heatmapping scanner to remove guesswork from near‑field probing during pre‑compliance testing. Using an Arduino Uno with GRBL, professional near‑field probes, and a low‑cost RTL‑SDR, the system scans a PCB in a controlled grid and turns raw measurements into clear EMI heatmaps. Along the way, Clem highlights real engineering challenges, including firmware choices, SDR software limitations, and the critical importance of lowering the noise floor through proper shielding, showing how automation and good measurement practice work together.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q40"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://youtu.be/Vh7laroqxZ0"&gt;https://youtu.be/Vh7laroqxZ0&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q41"&gt;Automating Near‑Field Probing&lt;/h2&gt;
&lt;p&gt;In this element14 presents project, Clem tackles one of the most frustrating and experience‑dependent problems in electronics design: locating EMI emission sources before they turn into expensive compliance failures. Anyone who has been through pre‑compliance testing will recognize the situation immediately. A specific frequency spike, or a narrow band, appears uncomfortably close to the regulatory limit. The test setup shows it clearly, but physically locating where that emission originates on the PCB is a very different challenge.&lt;/p&gt;
&lt;p&gt;Traditionally, this process involves manually sweeping a near‑field probe across a powered board while watching a spectrum analyzer. It is slow, requires significant experience, and is highly sensitive to probe orientation and positioning. Small changes in angle or height can produce noticeably different results, making repeatability difficult.&lt;/p&gt;
&lt;p&gt;Clem&amp;rsquo;s goal was to remove as much subjectivity from this process as possible. Rather than relying on careful hand movements and interpretation, he wanted a system that could probe a PCB in a controlled, repeatable way and generate structured data automatically.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I want to make this process a lot more controllable, repeatable and less dependent on actual expert usage to find the culprit.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;The result is a dedicated EMC heatmapping scanner that behaves more like a CNC machine than a traditional test setup. Using Multicomp Pro near‑field probes and a precisely controlled motion system, the machine scans a PCB in a defined grid pattern, producing consistent measurements that can be directly compared across frequencies and design revisions.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000035.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000043.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q42"&gt;Standing on Shoulders Then Starting Fresh&lt;/h2&gt;
&lt;p&gt;Clem is clear that the core idea behind the project is not new. Several years ago, other engineers demonstrated that an RTL‑SDR could be used as a low‑cost EMI receiver for comparative near‑field measurements. Inspired by this earlier work, Clem initially attempted to reproduce one of those implementations.&lt;/p&gt;
&lt;p&gt;In practice, this proved difficult. Software libraries had evolved, dependencies had changed, and the original code no longer worked reliably. Even more importantly, the older project did not align with Clem&amp;rsquo;s vision for automation, flexibility, and structured scanning.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I tried to get this to run. It&amp;rsquo;s dependent on some software that since had updates, so it doesn&amp;rsquo;t work as expected anymore, at least not in my setup.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Rather than patching an aging codebase, Clem made the decision to start over completely. This allowed him to redesign both the hardware control and the software architecture around his own requirements, rather than being constrained by assumptions baked into someone else&amp;rsquo;s workflow.&lt;/p&gt;
&lt;p&gt;The result is a system built cleanly and modularly from the ground up. Each part of the workflow, motion control, scan definition, data acquisition, and visualisation, is implemented as a distinct software component, making the overall system easier to understand, debug, and extend.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000063.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000066.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q43"&gt;Smart Recycling, Smart Engineering&lt;/h2&gt;
&lt;p&gt;Mechanically, the scanner reflects a pragmatic engineering mindset. Clem reused components from previous projects wherever possible. The frame of an old 3D printer forms the mechanical base, with salvaged stepper motors and drivers handling motion. This approach keeps costs low and reinforces that the project is a functional tool rather than a polished commercial product.&lt;/p&gt;
&lt;p&gt;The probe itself only moves in X and Y. The Z height is set manually once and remains fixed for the duration of a scan. This simplification reduces mechanical complexity and removes another variable that could affect measurement repeatability.&lt;/p&gt;
&lt;p&gt;Once the user interactively defines the scan area by jogging the probe to the lower‑left and upper‑right corners of the region of interest, GRBL dynamically generates the zig‑zag toolpath. Clem deliberately chose GRBL 1.1 running on an Arduino Uno because it provides CNC‑style control without imposing the assumptions typical of modern 3D printer firmware.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;What I need is not homing and then executing a job. What I need is total control during the process, like a CNC where it can start and stop and resume.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;This design choice is reflected in the software as well. The system does not rely on homing at all. If position is lost, the user simply redefines the scan area. For EMI debugging, where scans often focus on specific subsections of a board, this flexibility is more valuable than absolute positioning.&lt;/p&gt;
&lt;p&gt;A small camera is mounted above the device under test, but it is not used for alignment or vision‑based scanning. Instead, it serves a documentation role, capturing an image of the DUT after a scan so that measurement data can be visually associated with the physical board.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000177.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000105.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q44"&gt;SDR Instead of Spectrum Analyzer&lt;/h2&gt;
&lt;p&gt;One of the most notable aspects of the project is Clem&amp;rsquo;s decision to use a low‑cost RTL‑SDR instead of a traditional spectrum analyzer. This is not positioned as a replacement for lab‑grade equipment, but as a practical alternative for comparative analysis and source localisation.&lt;/p&gt;
&lt;p&gt;Clem explicitly warns against poor‑quality SDR clones, noting that unstable hardware can introduce measurement artifacts and waste debugging time. When paired with professional near‑field probes, however, a reliable RTL‑SDR proves more than capable of revealing relative emission hotspots across a PCB.&lt;/p&gt;
&lt;p&gt;The software is designed to scan multiple frequencies in a single run. At each X‑Y coordinate, the system measures all selected frequencies before moving on to the next point. This approach is reflected in the scanner module, which parses the generated G‑code and interleaves motion with data acquisition.&lt;/p&gt;
&lt;p&gt;Each scan produces a plain text file per frequency containing X and Y coordinates along with received power in dBm. A secondary script converts this data into heatmap images. This separation allows raw data to be preserved for further analysis while still producing visuals that are easy for humans to interpret.&lt;/p&gt;
&lt;p&gt;Clem designed the Python code as a collection of reusable modules rather than a single monolithic script. While AI assistance helped with some of the repetitive coding, SDR‑specific functionality required significant manual correction, particularly where libraries had changed since earlier projects.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000083.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/frame_5F00_000147.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q45"&gt;Lowering the Noise Floor&lt;/h2&gt;
&lt;p&gt;In the final section of the video, Clem turns his attention to a topic that is often misunderstood: noise floor reduction. He emphasises that meaningful EMI localisation is only possible if the measurement environment itself is properly controlled.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;If the noise doesn&amp;rsquo;t get any lower, you basically will always measure just a guess.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Simply enclosing the system in a metal box is not sufficient. Effective shielding requires continuous conductive paths, low‑impedance connections between panels, and careful treatment of seams, gaps, and cable pass‑throughs. Clem demonstrates how improper bonding can allow high‑frequency energy to leak through even seemingly solid enclosures.&lt;/p&gt;
&lt;p&gt;Using conductive tape, proper grounding techniques, and purpose‑built EMI gaskets, Clem shows how reducing the noise floor dramatically improves scan clarity. Once background noise is sufficiently suppressed, subtle emission sources become visible in the heatmaps, allowing engineers to draw much more confident conclusions.&lt;/p&gt;
&lt;p&gt;This focus on shielding and attenuation reinforces one of the project&amp;rsquo;s key themes: automation alone is not enough. Reliable results depend on understanding EMI fundamentals and applying good measurement practice alongside clever tooling.&lt;/p&gt;
&lt;p&gt;Taken as a whole, the automated EMI heatmapping scanner demonstrates a practical, fitness‑for‑purpose approach to a complex engineering problem. It does not claim to replace formal compliance testing, but it provides engineers with a powerful tool for understanding where emissions originate, how they change under different operating conditions, and whether design changes are having the desired effect before committing to expensive laboratory testing.&lt;/p&gt;
&lt;p&gt;By combining controlled motion, repeatable measurements, and careful attention to the measurement environment itself, Clem shows that EMI debugging does not have to remain an opaque or purely experience‑driven exercise. Instead, it can be approached systematically, with data that supports informed design decisions earlier in the development process, and with some hardware that you have available.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1ti4l88"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151296"&gt;Episode 714 Resources&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://github.com/OpenCommunityLicence/OpenCommunityLicence" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;software license&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp; &lt;a title="EMI Mapper on github" href="https://github.com/CGrassin/EMI_mapper" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;EMI Mapper on github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;RTL SDR&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1te0nj7"&gt;Parts and Products Used&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-9a788" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382,3335878&amp;nsku=78T1601,69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9a788'));" data-farnell="2075382,3335878" data-newark="78T1601,69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="," data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ardunio Uno R3&lt;/td&gt;
&lt;td&gt;ARDUINO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d863c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382&amp;nsku=78T1601&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d863c'));" data-farnell="2075382" data-newark="78T1601" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Equipment Kit, 4x Near Field Probe, 1m Cable, N-SMA Adaptor, Case&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-8d961" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3335878&amp;nsku=69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8d961'));" data-farnell="3335878" data-newark="69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: RTL SDR EMI testing, emi heatmap scanner, e14presents_mayermakes, ARduino GRBL CNC project, EMC heatmap visualisation, pcb emission testing, CNC near field probing, emc debugging tools, near field probe PCB scanning, EMI source localisation, software defined radio emi, automated EMI debugging, diy emc scanner, PCB emi troubleshooting, electronics compliance engineering, EMC pre compliance testing, friday_release&lt;/div&gt;
</description></item><item><title>Find EMI Fast with a Low‑Cost, Automated Way to See Where Your PCB Radiates</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72062/find-emi-fast-with-a-low-cost-automated-way-to-see-where-your-pcb-radiates/revision/4</link><pubDate>Thu, 07 May 2026 19:34:32 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:275ee3d2-d4d7-4986-9692-52a8acf84394</guid><dc:creator>cstanton</dc:creator><description>Revision 4 posted to Documents by cstanton on 5/7/2026 7:34:32 PM&lt;br /&gt;
&lt;p&gt;Join Clem as he builds an automated CNC‑style EMI heatmapping scanner to remove guesswork from near‑field probing during pre‑compliance testing. Using an Arduino Uno with GRBL, professional near‑field probes, and a low‑cost RTL‑SDR, the system scans a PCB in a controlled grid and turns raw measurements into clear EMI heatmaps. Along the way, Clem highlights real engineering challenges, including firmware choices, SDR software limitations, and the critical importance of lowering the noise floor through proper shielding, showing how automation and good measurement practice work together.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q40"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&amp;lt;replace with video embed&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q41"&gt;Automating Near‑Field Probing&lt;/h2&gt;
&lt;p&gt;In this element14 presents project, Clem tackles one of the most frustrating and experience‑dependent problems in electronics design: locating EMI emission sources before they turn into expensive compliance failures. Anyone who has been through pre‑compliance testing will recognize the situation immediately. A specific frequency spike, or a narrow band, appears uncomfortably close to the regulatory limit. The test setup shows it clearly, but physically locating where that emission originates on the PCB is a very different challenge.&lt;/p&gt;
&lt;p&gt;Traditionally, this process involves manually sweeping a near‑field probe across a powered board while watching a spectrum analyzer. It is slow, requires significant experience, and is highly sensitive to probe orientation and positioning. Small changes in angle or height can produce noticeably different results, making repeatability difficult.&lt;/p&gt;
&lt;p&gt;Clem&amp;rsquo;s goal was to remove as much subjectivity from this process as possible. Rather than relying on careful hand movements and interpretation, he wanted a system that could probe a PCB in a controlled, repeatable way and generate structured data automatically.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I want to make this process a lot more controllable, repeatable and less dependent on actual expert usage to find the culprit.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;The result is a dedicated EMC heatmapping scanner that behaves more like a CNC machine than a traditional test setup. Using Multicomp Pro near‑field probes and a precisely controlled motion system, the machine scans a PCB in a defined grid pattern, producing consistent measurements that can be directly compared across frequencies and design revisions.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000035.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000043.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q42"&gt;Standing on Shoulders Then Starting Fresh&lt;/h2&gt;
&lt;p&gt;Clem is clear that the core idea behind the project is not new. Several years ago, other engineers demonstrated that an RTL‑SDR could be used as a low‑cost EMI receiver for comparative near‑field measurements. Inspired by this earlier work, Clem initially attempted to reproduce one of those implementations.&lt;/p&gt;
&lt;p&gt;In practice, this proved difficult. Software libraries had evolved, dependencies had changed, and the original code no longer worked reliably. Even more importantly, the older project did not align with Clem&amp;rsquo;s vision for automation, flexibility, and structured scanning.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I tried to get this to run. It&amp;rsquo;s dependent on some software that since had updates, so it doesn&amp;rsquo;t work as expected anymore, at least not in my setup.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Rather than patching an aging codebase, Clem made the decision to start over completely. This allowed him to redesign both the hardware control and the software architecture around his own requirements, rather than being constrained by assumptions baked into someone else&amp;rsquo;s workflow.&lt;/p&gt;
&lt;p&gt;The result is a system built cleanly and modularly from the ground up. Each part of the workflow, motion control, scan definition, data acquisition, and visualisation, is implemented as a distinct software component, making the overall system easier to understand, debug, and extend.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000063.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000066.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q43"&gt;Smart Recycling, Smart Engineering&lt;/h2&gt;
&lt;p&gt;Mechanically, the scanner reflects a pragmatic engineering mindset. Clem reused components from previous projects wherever possible. The frame of an old 3D printer forms the mechanical base, with salvaged stepper motors and drivers handling motion. This approach keeps costs low and reinforces that the project is a functional tool rather than a polished commercial product.&lt;/p&gt;
&lt;p&gt;The probe itself only moves in X and Y. The Z height is set manually once and remains fixed for the duration of a scan. This simplification reduces mechanical complexity and removes another variable that could affect measurement repeatability.&lt;/p&gt;
&lt;p&gt;Once the user interactively defines the scan area by jogging the probe to the lower‑left and upper‑right corners of the region of interest, GRBL dynamically generates the zig‑zag toolpath. Clem deliberately chose GRBL 1.1 running on an Arduino Uno because it provides CNC‑style control without imposing the assumptions typical of modern 3D printer firmware.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;What I need is not homing and then executing a job. What I need is total control during the process, like a CNC where it can start and stop and resume.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;This design choice is reflected in the software as well. The system does not rely on homing at all. If position is lost, the user simply redefines the scan area. For EMI debugging, where scans often focus on specific subsections of a board, this flexibility is more valuable than absolute positioning.&lt;/p&gt;
&lt;p&gt;A small camera is mounted above the device under test, but it is not used for alignment or vision‑based scanning. Instead, it serves a documentation role, capturing an image of the DUT after a scan so that measurement data can be visually associated with the physical board.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000177.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000105.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q44"&gt;SDR Instead of Spectrum Analyzer&lt;/h2&gt;
&lt;p&gt;One of the most notable aspects of the project is Clem&amp;rsquo;s decision to use a low‑cost RTL‑SDR instead of a traditional spectrum analyzer. This is not positioned as a replacement for lab‑grade equipment, but as a practical alternative for comparative analysis and source localisation.&lt;/p&gt;
&lt;p&gt;Clem explicitly warns against poor‑quality SDR clones, noting that unstable hardware can introduce measurement artifacts and waste debugging time. When paired with professional near‑field probes, however, a reliable RTL‑SDR proves more than capable of revealing relative emission hotspots across a PCB.&lt;/p&gt;
&lt;p&gt;The software is designed to scan multiple frequencies in a single run. At each X‑Y coordinate, the system measures all selected frequencies before moving on to the next point. This approach is reflected in the scanner module, which parses the generated G‑code and interleaves motion with data acquisition.&lt;/p&gt;
&lt;p&gt;Each scan produces a plain text file per frequency containing X and Y coordinates along with received power in dBm. A secondary script converts this data into heatmap images. This separation allows raw data to be preserved for further analysis while still producing visuals that are easy for humans to interpret.&lt;/p&gt;
&lt;p&gt;Clem designed the Python code as a collection of reusable modules rather than a single monolithic script. While AI assistance helped with some of the repetitive coding, SDR‑specific functionality required significant manual correction, particularly where libraries had changed since earlier projects.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000083.png" /&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/frame_5F00_000147.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q45"&gt;Lowering the Noise Floor&lt;/h2&gt;
&lt;p&gt;In the final section of the video, Clem turns his attention to a topic that is often misunderstood: noise floor reduction. He emphasises that meaningful EMI localisation is only possible if the measurement environment itself is properly controlled.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;If the noise doesn&amp;rsquo;t get any lower, you basically will always measure just a guess.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Simply enclosing the system in a metal box is not sufficient. Effective shielding requires continuous conductive paths, low‑impedance connections between panels, and careful treatment of seams, gaps, and cable pass‑throughs. Clem demonstrates how improper bonding can allow high‑frequency energy to leak through even seemingly solid enclosures.&lt;/p&gt;
&lt;p&gt;Using conductive tape, proper grounding techniques, and purpose‑built EMI gaskets, Clem shows how reducing the noise floor dramatically improves scan clarity. Once background noise is sufficiently suppressed, subtle emission sources become visible in the heatmaps, allowing engineers to draw much more confident conclusions.&lt;/p&gt;
&lt;p&gt;This focus on shielding and attenuation reinforces one of the project&amp;rsquo;s key themes: automation alone is not enough. Reliable results depend on understanding EMI fundamentals and applying good measurement practice alongside clever tooling.&lt;/p&gt;
&lt;p&gt;Taken as a whole, the automated EMI heatmapping scanner demonstrates a practical, fitness‑for‑purpose approach to a complex engineering problem. It does not claim to replace formal compliance testing, but it provides engineers with a powerful tool for understanding where emissions originate, how they change under different operating conditions, and whether design changes are having the desired effect before committing to expensive laboratory testing.&lt;/p&gt;
&lt;p&gt;By combining controlled motion, repeatable measurements, and careful attention to the measurement environment itself, Clem shows that EMI debugging does not have to remain an opaque or purely experience‑driven exercise. Instead, it can be approached systematically, with data that supports informed design decisions earlier in the development process, and with some hardware that you have available.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1ti4l88"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151296"&gt;Episode 714 Resources&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://github.com/OpenCommunityLicence/OpenCommunityLicence" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;software license&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp; &lt;a title="EMI Mapper on github" href="https://github.com/CGrassin/EMI_mapper" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;EMI Mapper on github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;RTL SDR&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1te0nj7"&gt;Parts and Products Used&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-c0ff2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382,3335878&amp;nsku=78T1601,69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c0ff2'));" data-farnell="2075382,3335878" data-newark="78T1601,69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="," data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ardunio Uno R3&lt;/td&gt;
&lt;td&gt;ARDUINO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-df187" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382&amp;nsku=78T1601&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('df187'));" data-farnell="2075382" data-newark="78T1601" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Equipment Kit, 4x Near Field Probe, 1m Cable, N-SMA Adaptor, Case&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7d59d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3335878&amp;nsku=69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7d59d'));" data-farnell="3335878" data-newark="69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: RTL SDR EMI testing, emi heatmap scanner, e14presents_mayermakes, ARduino GRBL CNC project, EMC heatmap visualisation, pcb emission testing, CNC near field probing, emc debugging tools, near field probe PCB scanning, EMI source localisation, software defined radio emi, automated EMI debugging, diy emc scanner, PCB emi troubleshooting, electronics compliance engineering, EMC pre compliance testing, friday_release&lt;/div&gt;
</description></item><item><title>Find EMI Fast with a Low‑Cost, Automated Way to See Where Your PCB Radiates</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/72062/find-emi-fast-with-a-low-cost-automated-way-to-see-where-your-pcb-radiates/revision/3</link><pubDate>Thu, 07 May 2026 19:16:31 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:275ee3d2-d4d7-4986-9692-52a8acf84394</guid><dc:creator>cstanton</dc:creator><description>Revision 3 posted to Documents by cstanton on 5/7/2026 7:16:31 PM&lt;br /&gt;
&lt;p&gt;Join Clem as he builds an automated CNC‑style EMI heatmapping scanner to remove guesswork from near‑field probing during pre‑compliance testing. Using an Arduino Uno with GRBL, professional near‑field probes, and a low‑cost RTL‑SDR, the system scans a PCB in a controlled grid and turns raw measurements into clear EMI heatmaps. Along the way, Clem highlights real engineering challenges, including firmware choices, SDR software limitations, and the critical importance of lowering the noise floor through proper shielding, showing how automation and good measurement practice work together.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q40"&gt;Watch the Build&lt;/h2&gt;
&lt;p&gt;&amp;lt;replace with video embed&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q41"&gt;Automating Near‑Field Probing&lt;/h2&gt;
&lt;p&gt;In this element14 presents project, Clem tackles one of the most frustrating and experience‑dependent problems in electronics design: locating EMI emission sources before they turn into expensive compliance failures. Anyone who has been through pre‑compliance testing will recognize the situation immediately. A specific frequency spike, or a narrow band, appears uncomfortably close to the regulatory limit. The test setup shows it clearly, but physically locating where that emission originates on the PCB is a very different challenge.&lt;/p&gt;
&lt;p&gt;Traditionally, this process involves manually sweeping a near‑field probe across a powered board while watching a spectrum analyzer. It is slow, requires significant experience, and is highly sensitive to probe orientation and positioning. Small changes in angle or height can produce noticeably different results, making repeatability difficult.&lt;/p&gt;
&lt;p&gt;Clem&amp;rsquo;s goal was to remove as much subjectivity from this process as possible. Rather than relying on careful hand movements and interpretation, he wanted a system that could probe a PCB in a controlled, repeatable way and generate structured data automatically.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I want to make this process a lot more controllable, repeatable and less dependent on actual expert usage to find the culprit.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;The result is a dedicated EMC heatmapping scanner that behaves more like a CNC machine than a traditional test setup. Using professional Multicomp near‑field probes and a precisely controlled motion system, the machine scans a PCB in a defined grid pattern, producing consistent measurements that can be directly compared across frequencies and design revisions.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q42"&gt;Standing on Shoulders Then Starting Fresh&lt;/h2&gt;
&lt;p&gt;Clem is clear that the core idea behind the project is not new. Several years ago, other engineers demonstrated that an RTL‑SDR could be used as a low‑cost EMI receiver for comparative near‑field measurements. Inspired by this earlier work, Clem initially attempted to reproduce one of those implementations.&lt;/p&gt;
&lt;p&gt;In practice, this proved difficult. Software libraries had evolved, dependencies had changed, and the original code no longer worked reliably. Even more importantly, the older project did not align with Clem&amp;rsquo;s vision for automation, flexibility, and structured scanning.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;I tried to get this to run. It&amp;rsquo;s dependent on some software that since had updates, so it doesn&amp;rsquo;t work as expected anymore, at least not in my setup.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Rather than patching an aging codebase, Clem made the decision to start over completely. This allowed him to redesign both the hardware control and the software architecture around his own requirements, rather than being constrained by assumptions baked into someone else&amp;rsquo;s workflow.&lt;/p&gt;
&lt;p&gt;The result is a system built cleanly and modularly from the ground up. Each part of the workflow, motion control, scan definition, data acquisition, and visualization, is implemented as a distinct software component, making the overall system easier to understand, debug, and extend.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q43"&gt;Smart Recycling, Smart Engineering&lt;/h2&gt;
&lt;p&gt;Mechanically, the scanner reflects a pragmatic engineering mindset. Clem reused components from previous projects wherever possible. The frame of an old 3D printer forms the mechanical base, with salvaged stepper motors and drivers handling motion. This approach keeps costs low and reinforces that the project is a functional tool rather than a polished commercial product.&lt;/p&gt;
&lt;p&gt;The probe itself only moves in X and Y. The Z height is set manually once and remains fixed for the duration of a scan. This simplification reduces mechanical complexity and removes another variable that could affect measurement repeatability.&lt;/p&gt;
&lt;p&gt;Once the user interactively defines the scan area by jogging the probe to the lower‑left and upper‑right corners of the region of interest, GRBL dynamically generates the zig‑zag toolpath. Clem deliberately chose GRBL 1.1 running on an Arduino Uno because it provides CNC‑style control without imposing the assumptions typical of modern 3D printer firmware.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;What I need is not homing and then executing a job. What I need is total control during the process, like a CNC where it can start and stop and resume.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;This design choice is reflected in the software as well. The system does not rely on homing at all. If position is lost, the user simply redefines the scan area. For EMI debugging, where scans often focus on specific subsections of a board, this flexibility is more valuable than absolute positioning.&lt;/p&gt;
&lt;p&gt;A small camera is mounted above the device under test, but it is not used for alignment or vision‑based scanning. Instead, it serves a documentation role, capturing an image of the DUT after a scan so that measurement data can be visually associated with the physical board.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q44"&gt;SDR Instead of Spectrum Analyzer&lt;/h2&gt;
&lt;p&gt;One of the most notable aspects of the project is Clem&amp;rsquo;s decision to use a low‑cost RTL‑SDR instead of a traditional spectrum analyzer. This is not positioned as a replacement for lab‑grade equipment, but as a practical alternative for comparative analysis and source localization.&lt;/p&gt;
&lt;p&gt;Clem explicitly warns against poor‑quality SDR clones, noting that unstable hardware can introduce measurement artifacts and waste debugging time. When paired with professional near‑field probes, however, a reliable RTL‑SDR proves more than capable of revealing relative emission hotspots across a PCB.&lt;/p&gt;
&lt;p&gt;The software is designed to scan multiple frequencies in a single run. At each X‑Y coordinate, the system measures all selected frequencies before moving on to the next point. This approach is reflected in the scanner module, which parses the generated G‑code and interleaves motion with data acquisition.&lt;/p&gt;
&lt;p&gt;Each scan produces a plain text file per frequency containing X and Y coordinates along with received power in dBm. A secondary script converts this data into heatmap images. This separation allows raw data to be preserved for further analysis while still producing visuals that are easy for humans to interpret.&lt;/p&gt;
&lt;p&gt;Clem designed the Python code as a collection of reusable modules rather than a single monolithic script. While AI assistance helped with some of the repetitive coding, SDR‑specific functionality required significant manual correction, particularly where libraries had changed since earlier projects.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1td7q45"&gt;Lowering the Noise Floor&lt;/h2&gt;
&lt;p&gt;In the final section of the project, Clem turns his attention to a topic that is often misunderstood: noise floor reduction. He emphasises that meaningful EMI localisation is only possible if the measurement environment itself is properly controlled.&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;If the noise doesn&amp;rsquo;t get any lower, you basically will always measure just a guess.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;Simply enclosing the system in a metal box is not sufficient. Effective shielding requires continuous conductive paths, low‑impedance connections between panels, and careful treatment of seams, gaps, and cable pass‑throughs. Clem demonstrates how improper bonding can allow high‑frequency energy to leak through even seemingly solid enclosures.&lt;/p&gt;
&lt;p&gt;Using conductive tape, proper grounding techniques, and purpose‑built EMI gaskets, Clem shows how reducing the noise floor dramatically improves scan clarity. Once background noise is sufficiently suppressed, subtle emission sources become visible in the heatmaps, allowing engineers to draw much more confident conclusions.&lt;/p&gt;
&lt;p&gt;This focus on shielding and attenuation reinforces one of the project&amp;rsquo;s key themes: automation alone is not enough. Reliable results depend on understanding EMI fundamentals and applying good measurement practice alongside clever tooling.&lt;/p&gt;
&lt;p&gt;Taken as a whole, the automated EMI heatmapping scanner demonstrates a practical, fitness‑for‑purpose approach to a complex engineering problem. It does not claim to replace formal compliance testing, but it provides engineers with a powerful tool for understanding where emissions originate, how they change under different operating conditions, and whether design changes are having the desired effect before committing to expensive laboratory testing.&lt;/p&gt;
&lt;p&gt;By combining controlled motion, repeatable measurements, and careful attention to the measurement environment itself, Clem shows that EMI debugging does not have to remain an opaque or purely experience‑driven exercise. Instead, it can be approached systematically, with data that supports informed design decisions earlier in the development process, and with some hardware that you have available.&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1ti4l88"&gt;Supporting Links and Files&lt;/h2&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/challenges-projects/element14-presents/m/files/151296"&gt;Episode 714 Resources&lt;/a&gt;&amp;nbsp;- &lt;a href="https://github.com/OpenCommunityLicence/OpenCommunityLicence" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;software license&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp; &lt;a title="EMI Mapper on github" href="https://github.com/CGrassin/EMI_mapper" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;EMI Mapper on github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;RTL SDR&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jo1te0nj7"&gt;Parts and Products Used&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-a000a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382,3335878&amp;nsku=78T1601,69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a000a'));" data-farnell="2075382,3335878" data-newark="78T1601,69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="," data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ardunio Uno R3&lt;/td&gt;
&lt;td&gt;ARDUINO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-00a5a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2075382&amp;nsku=78T1601&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('00a5a'));" data-farnell="2075382" data-newark="78T1601" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Equipment Kit, 4x Near Field Probe, 1m Cable, N-SMA Adaptor, Case&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-cc9df" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3335878&amp;nsku=69AH8823&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('cc9df'));" data-farnell="3335878" data-newark="69AH8823" data-comoverride="" data-cmpoverride="" data-cpc="undefined" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: RTL SDR EMI testing, emi heatmap scanner, e14presents_mayermakes, ARduino GRBL CNC project, EMC heatmap visualisation, pcb emission testing, CNC near field probing, emc debugging tools, near field probe PCB scanning, EMI source localisation, software defined radio emi, automated EMI debugging, diy emc scanner, PCB emi troubleshooting, electronics compliance engineering, EMC pre compliance testing, friday_release&lt;/div&gt;
</description></item></channel></rss>