{"id":26537017,"url":"https://github.com/mark-mdo47/duelwithbanjos","last_synced_at":"2026-04-12T21:42:29.503Z","repository":{"id":282251874,"uuid":"947975414","full_name":"Mark-MDO47/DuelWithBanjos","owner":"Mark-MDO47","description":"Just for fun - tiny scarecrows playing banjo music, placed under the control of the UniRemote!","archived":false,"fork":false,"pushed_at":"2025-03-20T20:11:47.000Z","size":364,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-20T20:13:26.951Z","etag":null,"topics":["arduino","c-language","c-plus-plus","esp32","esp32-now","yx5200"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mark-MDO47.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-13T14:45:35.000Z","updated_at":"2025-03-20T20:11:50.000Z","dependencies_parsed_at":"2025-03-13T15:47:09.721Z","dependency_job_id":null,"html_url":"https://github.com/Mark-MDO47/DuelWithBanjos","commit_stats":null,"previous_names":["mark-mdo47/duelwithbanjos"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mark-MDO47%2FDuelWithBanjos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mark-MDO47%2FDuelWithBanjos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mark-MDO47%2FDuelWithBanjos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mark-MDO47%2FDuelWithBanjos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mark-MDO47","download_url":"https://codeload.github.com/Mark-MDO47/DuelWithBanjos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244875043,"owners_count":20524591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","c-language","c-plus-plus","esp32","esp32-now","yx5200"],"created_at":"2025-03-21T22:17:59.306Z","updated_at":"2026-04-12T21:42:29.497Z","avatar_url":"https://github.com/Mark-MDO47.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DuelWithBanjos\nJust for fun - tiny scarecrow skeletons playing banjo music, placed under the control of the UniRemote!\n- https://github.com/Mark-MDO47/UniRemote\n- DuelWithBanjos now at version V1.0!\n\nA quick 38-second video demonstration:\n- https://youtu.be/nwAhtAX-E6E\n\nA story-line showing how to do Over-The-Air (OTA) Web updates to the Banjo Player ESP32.\n- https://github.com/Mark-MDO47/DuelWithBanjos/blob/master/code/DuelWithBanjos/OTA_story.md\n\n| My two little banjo players - BEFORE | My two little banjo players - AFTER\u003cbr\u003ewith new electronics and sound |\n| --- | --- |\n| \u003cimg src=\"https://github.com/Mark-MDO47/DuelWithBanjos/blob/master/resources/images/banjo_players_1024_768.jpg\" width=\"300\" alt=\"My Banjo Players BEFORE\"\u003e | \u003cimg src=\"https://github.com/Mark-MDO47/DuelWithBanjos/blob/master/resources/images/banjo_players_after.jpg\" width=\"300\" alt=\"My Banjo Players AFTER upgrade\"\u003e |\n| **The new electronics on a prototype board** | **The new electronics inside the cardboard box** |\n| \u003cimg src=\"https://github.com/Mark-MDO47/DuelWithBanjos/blob/master/resources/images/Duel_ProtoBoard.png\" width=\"300\" alt=\"My ProtoBoard Banjo Player electronics\"\u003e | \u003cimg src=\"https://github.com/Mark-MDO47/DuelWithBanjos/blob/master/resources/images/BanjoBox_inside.png\" width=\"300\" alt=\"Banjo Player electronics inside cardboard box\"\u003e |\n\n**Table Of Contents**\n* [Top](#duelwithbanjos \"Top\")\n* [Introduction](#introduction \"Introduction\")\n* [Schematic](#schematic \"Schematic\")\n  * [Do-It-Yourself Layout Creator](#do\\-it\\-yourself-layout-creator \"Do-It-Yourself Layout Creator\")\n* [Code](#code \"Code\")\n* [Parts List](#parts-list \"Parts List\")\n* [License](#license \"License\")\n\n## Introduction\n[Top](#duelwithbanjos \"Top\")\u003cbr\u003e\nI have two country style skeleton banjo players approximately 14 inches tall ordered from Amazon.com but apparently that exact model is no longer available there.\nI think they might be similar to this one:\n- https://www.amazon.com/XINANDHAO-Halloween-Animated-Skeletons-Musicians/dp/B0DC56RL1F\n\nVersion V1.0 includes the following capabilities:\n- respond to controls from my UniRemote remote controller via ESP-NOW\n  - https://github.com/Mark-MDO47/UniRemote\n- play music using a YX5200 Audio Player which reads sound files from a MicroSD card\n  - https://github.com/Mark-MDO47/AudioPlayer-YX5200\n- blink LED \"eyes\" using Pulse Width Modulation (PWM)\n  - https://github.com/Mark-MDO47/DuelWithBanjos/tree/master/code/LEDPinsPwmTemplate\n- Have volume control for the sound\n  - Fixed my bug; this now seems to work! I may make it more elaborate later.\n- support Over-The-Air (OTA) re-programming\n  - https://github.com/Mark-MDO47/DuelWithBanjos/blob/master/code/DuelWithBanjos/OTA_story.md\n  - https://github.com/Mark-MDO47/UniRemote/blob/master/code/mdo_use_ota_webupdater/README.md\n\nThe future plan is to make them\n- support OTA debugging via the extension \"Visual Micro\" for Visual Studio Code\n  - I am still working on it - getting ESP-NOW, ota_webupdater, and OTA debugging to play together\n  - https://www.visualmicro.com/\n  - https://code.visualstudio.com/\n\n## Schematic\n[Top](#duelwithbanjos \"Top\")\u003cbr\u003e\nThis is the schematic of the interesting part of the design, including the ESP32 module, sound control, and LED control.\u003cbr\u003e\n- The ESP32 of course has I/O at the 3.3V rail. The YX5200 uses 5V power and TTL voltage levels, which could be up to 5V.\n  -  I use resistor networks to drop the YX5200 output voltages from 5V to 3.3V to be compatible with the ESP32 inputs. The ESP32 is **NOT** 5V tolerant on its inputs.\n  -  The YX5200 is nominally able to work with TTL-level inputs (and 3.3V should be fine), but I use a SN74HCT125N quadruple bus buffer to raise voltages from 3.3V to 5V. I have had some issues with ESP32 outputs to WS2812B in the past and just like to beef the signal up to avoid problems.\n- The 1K resistor in the path to the YX5200 RX line prevents coupling of digital noise into the sound output.\n- I had to move to ESP32 pin D26 because of my horrible soldering.\n\u003cimg src=\"https://github.com/Mark-MDO47/DuelWithBanjos/blob/master/resources/KiCad/Duel_schematic_01.png\" width=\"800\" alt=\"Schematic of ESP32 module, sound control, and LED control\"\u003e\n\n### Do-It-Yourself Layout Creator\n[Top](#uniremote-\\--one-remote-to-rule-them-all \"Top\")\u003cbr\u003e\nI didn't know about this when I did my perfboard design for Dueling with Banjos but I wish I had used DIYLC instead of hacking away at my perfboard!\n- https://github.com/bancika/diy-layout-creator\n- https://github.com/bancika/diy-layout-creator/releases\n\nHere is a nice YouTube showing how to use it\n- Design Circuits on Stripboard or Veroboard for FREE with DIY Layout Creator by TekSparkz - https://www.youtube.com/watch?v=mzje3eHqi2E\n\n## Code\n[Top](#duelwithbanjos \"Top\")\u003cbr\u003e\nThe code is starting to take shape; you can find it here\n- https://github.com/Mark-MDO47/DuelWithBanjos/tree/master/code/DuelWithBanjos\n\nI wanted my PWM LED control to be automatic in between commands but also to respond to commands. I made some code to do this. Once everything is initialized, you only need to call **led_pins_pwm()** periodically from loop() to have the LED eyes follow the requested time pattern.\n- https://github.com/Mark-MDO47/DuelWithBanjos/tree/master/code/LEDPinsPwmTemplate\n\n## Parts List\n[Top](#duelwithbanjos \"Top\")\u003cbr\u003e\nWork In Progress...\n\n| Title | Descrip | URL | each |\n| --- | --- | --- | --- |\n| Skeletons | 2 @ Pose-able banjo playing skeletons | https://www.amazon.com/XINANDHAO-Halloween-Animated-Skeletons-Musicians/dp/B0DC56RL1F | $10.00 |\n| ESP32 | 1 @ ESP32 Devkit V1 ESP-WROOM-32 | https://www.amazon.com/Hosyond-ESP-WROOM-32-Development-Microcontroller-Compatible/dp/B0C7C2HQ7P/ref=sr_1_4 | $3.50 |\n| YX5200 | 1 @ Sound Module with MicroSD (TF) card socket | https://www.amazon.com/Organizer-YX5200-DFPlayer-Supporting-Arduino/dp/B07XXYQBNS/ref=sr_1_1 | $2.00 |\n| SN74HCT125N | 1 @ Non-inverting 5.5V buffer 14-pin DIP | https://www.digikey.com/en/products/detail/texas-instruments/SN74HCT125N/376860 | $0.63 |\n| Proto Board | 1 @ 3.125\" x 2.25\" Prototype Board | from deep in my closet | $ who-knows? |\n| speaker |  Metal Shell Round Internal Magnet Speaker 2W 8 Ohm approx 1 inch | https://www.amazon.com/dp/B0177ABRQ6 | $2.80 |\n| JST SM 2.5mm | 2 @ pair JST SM 2.5mm 3-pin Male/Female connectors and cables for banjo players | https://www.amazon.com/mxuteuk-Connectors-Connector-Adapter-Electrical/dp/B0DHKC3ZSF/ref=sr_1_2?th=1 | $0.45 |\n| resistors | 4 @ 200-Ohm 1/4 watt through-hole resistors | https://www.digikey.com/en/products/filter/through-hole-resistors/53?s=N4IgTCBcDaIE4FMDOBLJAXA9nEBdAvkA | $0.10 |\n| resistors | 1 @ 1.0-KOhm 1/4 watt through-hole resistors | https://www.digikey.com/en/products/detail/stackpole-electronics-inc/CF14JT1K00/1741314 | $0.10 |\n| resistors | 2 @ 3.3-KOhm 1/4 watt through-hole resistors | https://www.digikey.com/en/products/detail/stackpole-electronics-inc/CF14JT3K30/1741376 | $0.10 |\n| resistors | 2 @ 6.65-KOhm 1/4 watt through-hole resistors | https://www.digikey.com/en/products/detail/stackpole-electronics-inc/RNF14FTD6K65/1682364 | $0.10 |\n| on/off latch button | 1 @ ON/Off Switch Self-Lock Micro Push Button Switch DC 30V 1A | https://www.amazon.com/gp/product/B086L2GPGX | $0.20 |\n| UBEC 5V | 1 @ 5V/6V HOBBYWING 3A UBEC | https://www.aliexpress.us/item/3256805502614547.html | $1.50 |\n| 18650 Battery | 2 @ 3.7V 18650 \u0026 charger\u003cbr\u003eURL has 4 batteries plus charger so price each is inflated | https://www.amazon.com/dp/B0CP6V26QX | $5.00 |\n| 18650 2-slot holder | 18650 Battery Holder 2 Slot 3.7V 18650 Battery | https://www.amazon.com/dp/B09LC13D9P | $2.60 |\n| JST SM 2.5mm | 1 @ pair JST SM 2.5mm 3-pin Male/Female connectors and cables for power connection | https://www.amazon.com/mxuteuk-Connectors-Connector-Adapter-Electrical/dp/B0DHKC3ZSF/ref=sr_1_2?th=1 | $0.45 |\n\n## License\n[Top](#duelwithbanjos \"Top\")\u003cbr\u003e\nThis repository has a LICENSE file for the Apache 2.0 License. There may be code included that I have modified from other open sources (such as Arduino, Espressif, SparkFun, Seeed Studio, DFRobot, RandomNerds, etc.). These other sources may possibly be licensed using a different license model. In such a case I will include some notation of this. Typically I will include verbatim the license in the included/modified source code, but alternatively there might be a LICENSE file in the source code area that points out exceptions to the Apache 2.0 License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmark-mdo47%2Fduelwithbanjos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmark-mdo47%2Fduelwithbanjos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmark-mdo47%2Fduelwithbanjos/lists"}