{"id":4015,"date":"2024-09-23T10:20:29","date_gmt":"2024-09-23T15:20:29","guid":{"rendered":"https:\/\/lab.rapternet.us\/?p=4015"},"modified":"2024-09-23T10:15:32","modified_gmt":"2024-09-23T15:15:32","slug":"custom-squeezelite-esp32-a1s-speaker","status":"publish","type":"post","link":"https:\/\/lab.rapternet.us\/?p=4015","title":{"rendered":"Custom Squeezelite ESP32-A1S Speaker"},"content":{"rendered":"\n<p>Since I found the ESP32 audio kit and it&#8217;s support for squeezelite, I decided to try making 2 small 3w speakers with it. One of them I&#8217;d use an existing speaker as the base and the second I&#8217;d custom build. This is my little custom built squeezelite speaker unit with its two built in 3w speakers.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>I decided this time around to use Ondsel to make my CAD models. It&#8217;s based on FreeCad which I&#8217;ve been wanting to learn a bit more, and this case is fairly simple shapes so it should be a great test subject. I also wanted to make use of heat set inserts in the design as I only just started using them in my designs with the NFC Deck (and I haven&#8217;t really designed anything that would need them since then).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.amazon.com\/dp\/B0B5XKG5NK?psc=1&amp;ref=ppx_yo2ov_dt_b_product_details\">ESP32-A1S Audio Kit<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.amazon.com\/dp\/B00QSJ1HA4?psc=1&amp;ref=ppx_yo2ov_dt_b_product_details\">Adafruit Stero Speaker Set 3W 4 Ohm<\/a><\/li>\n\n\n\n<li>M3 x 6mm screws, 8 (for speakers)<\/li>\n\n\n\n<li>M3 H4 heat set inserts, 8 (for speakers)<\/li>\n\n\n\n<li>M2 H4 heat set inserts, 4 (case half assembly)<\/li>\n\n\n\n<li>M2 H2 or H4 heat set inserts, 4 (circuit board)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Design<\/h2>\n\n\n\n<p>While plugging and unplugging the USB cable into the original case I printed, I ended up breaking all the plastic pins that went through the circuit board in that design. Due to this, I wanted my design to use heat set inserts for those mount points.<\/p>\n\n\n\n<p>The original case design screwed the lid into the base just straight into the plastic, luckily though these holes were big enough already for m2 heat set inserts, so I just kept that part the same.<\/p>\n\n\n\n<p>I also modeled in mount points to the speakers using heat set inserts, and threw a little music logo on the lid to give it a bit of flair and some fun when printing with different colors for the first layer vs the rest of the print.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Assembly<\/h2>\n\n\n\n<p>The lid gets 8 m3 heat set inserts added for mounting the speakers, while the base gets 8 m2 heat set inserts for mounting the ESP board and for assembling the two cases halves.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"771\" src=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240821_2353027675048921983514411061-1024x771.jpg\" alt=\"\" class=\"wp-image-4050\" srcset=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240821_2353027675048921983514411061-1024x771.jpg 1024w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240821_2353027675048921983514411061-300x226.jpg 300w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240821_2353027675048921983514411061-768x578.jpg 768w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240821_2353027675048921983514411061-1536x1157.jpg 1536w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240821_2353027675048921983514411061.jpg 2000w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">All the parts<\/figcaption><\/figure>\n\n\n\n<p>Once the heat set inserts are installed, mount the speakers and ESP, then mount the two case halves together.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"771\" src=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021459338270425578837117539-1024x771.jpg\" alt=\"\" class=\"wp-image-4049\" srcset=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021459338270425578837117539-1024x771.jpg 1024w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021459338270425578837117539-300x226.jpg 300w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021459338270425578837117539-768x578.jpg 768w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021459338270425578837117539-1536x1157.jpg 1536w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021459338270425578837117539.jpg 2000w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">Assembled case<\/figcaption><\/figure>\n\n\n\n<p>While test fitting the case I did find that the speakers intersected the GPIO pins at the top of the ESP board. I didn&#8217;t take into account the mild height offset of the speakers to fit the heat set inserts in when I added the speaker height to the case. For this Gen 1 that I assembled then, I bent the pins a few degrees and called it good. I&#8217;ll update the case design before I make it public though.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"771\" src=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021545056905703533079740097-1024x771.jpg\" alt=\"\" class=\"wp-image-4048\" srcset=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021545056905703533079740097-1024x771.jpg 1024w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021545056905703533079740097-300x226.jpg 300w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021545056905703533079740097-768x578.jpg 768w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021545056905703533079740097-1536x1157.jpg 1536w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240822_0021545056905703533079740097.jpg 2000w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">Button access is minimal right now<\/figcaption><\/figure>\n\n\n\n<p>One quick modification and a quick print later to make sure sizes look about right, and it looks good to go. <\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"1024\" data-id=\"4069\" src=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240823_1339149983891531008852694422-771x1024.jpg\" alt=\"\" class=\"wp-image-4069\" srcset=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240823_1339149983891531008852694422-771x1024.jpg 771w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240823_1339149983891531008852694422-226x300.jpg 226w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240823_1339149983891531008852694422-768x1020.jpg 768w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240823_1339149983891531008852694422-1157x1536.jpg 1157w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240823_1339149983891531008852694422.jpg 1506w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">Final adjusted case<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1506\" height=\"2000\" data-id=\"4084\" src=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240824_0336476838101455517469195989.jpg\" alt=\"\" class=\"wp-image-4084\" srcset=\"https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240824_0336476838101455517469195989.jpg 1506w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240824_0336476838101455517469195989-226x300.jpg 226w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240824_0336476838101455517469195989-771x1024.jpg 771w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240824_0336476838101455517469195989-768x1020.jpg 768w, https:\/\/lab.rapternet.us\/wp-content\/uploads\/2024\/08\/pxl_20240824_0336476838101455517469195989-1157x1536.jpg 1157w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">The whole family of prototypes<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>I&#8217;ll be keeping both iterations of the case as the slightly squished version is still perfectly fine to use even if it has some bent GPIO pins. I&#8217;m glad the case turned out well and gave me a bit more experience using Ondsel too. The entire unit feels robust, and well built, so it should hold up to some abuse. The <a href=\"https:\/\/www.printables.com\/model\/979071-esp32-a1s-speaker-case\" target=\"_blank\" rel=\"noreferrer noopener\">model is also available here on printables<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since I found the ESP32 audio kit and it&#8217;s support for squeezelite, I decided to try making 2 small 3w speakers with it. One of them I&#8217;d use an existing speaker as the base and the second I&#8217;d custom build. This is my little custom built squeezelite speaker unit with its two built in 3w &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/lab.rapternet.us\/?p=4015\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Custom Squeezelite ESP32-A1S Speaker&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":4049,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[56],"tags":[18,105,49,106],"class_list":["post-4015","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-making","tag-3d-printing","tag-audio","tag-smart-home","tag-squeezelite"],"_links":{"self":[{"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=\/wp\/v2\/posts\/4015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4015"}],"version-history":[{"count":16,"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=\/wp\/v2\/posts\/4015\/revisions"}],"predecessor-version":[{"id":4266,"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=\/wp\/v2\/posts\/4015\/revisions\/4266"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=\/wp\/v2\/media\/4049"}],"wp:attachment":[{"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lab.rapternet.us\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}