{"id":284,"date":"2017-10-04T14:30:15","date_gmt":"2017-10-04T21:30:15","guid":{"rendered":"https:\/\/www.andersknelson.com\/blog\/?p=284"},"modified":"2020-05-07T12:59:30","modified_gmt":"2020-05-07T16:59:30","slug":"knobswitch","status":"publish","type":"post","link":"https:\/\/www.andersknelson.com\/blog\/?p=284","title":{"rendered":"KnobSwitch"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What it is<\/h2>\n\n\n\n<p>KnobSwitch is a minimal entertainment center controller. One big-ass knob for volume control and one selector switch for input source.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What it does<\/h2>\n\n\n\n<p>Gives you instant, simple selection of your input source and volume control. Communicates to your equipment via BLE and RS-232.<\/p>\n\n\n\n<p>I have a Marantz <del>SR8500<\/del> SR5010 with a serial port. Yes, you <em>could<\/em> use IR but I want this thing to be reliable, i.e. closing the control loop with feedback from the equipment.<\/p>\n\n\n\n<p>The Marantz receiver is lovely but scrolling through all the inputs using the big knob on the front is maddening and slow. Using the remote is even&nbsp;<em>more maddening<\/em> because <del>it has a thousand tiny buttons<\/del> I dont&#8217; have one anymore, and I recently installed the receiver into a rack so it&#8217;s no longer in the line of sight.<\/p>\n\n\n\n<p>I&#8217;d like to have one place to control both the audio volume and the overall input source. This requires fusion of audio and video source switching.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What it&#8217;s made of<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/amzn.to\/2MMpTUY\">Espressif ESP32 (WROOM32) WiFi\/BT\/BLE Module <\/a>&nbsp;(BLE server &#8211; AV receiver and TV)<\/li><li><a href=\"https:\/\/www.adafruit.com\/product\/4062\">Nordic nRF52840 BLE module<\/a> (BLE client &#8211; knobSwitch controller)<\/li><li><a href=\"https:\/\/amzn.to\/2Llgel6\">Rotary encoder<\/a> without detents<\/li><li>Rotary switch with stiff detents<\/li><li>Simple indication of input source:\n<ul>\n<li>LEDs next to static labels<\/li>\n<li><a href=\"https:\/\/amzn.to\/2ZGqwkP\">Illuminated pushbuttons<\/a> with insert labels<\/li>\n<li>Illuminated <a href=\"https:\/\/www.aliexpress.com\/item\/32812931535.html\">ePaper<\/a> labels<\/li>\n<\/ul>\n<\/li><li>Metal enclosure with smooth top\n<ul>\n<li>Walnut top<\/li>\n<li>Aluminum bottom<\/li>\n<\/ul>\n<\/li><li>Lithium-ion battery<\/li><li>PCB designed in EAGLE and fabricated at OSH Park<\/li><li><a href=\"https:\/\/github.com\/ufanders\/knobSwitch\">Custom Firmware<\/a> compiled via the Arduino IDE<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Documents<\/h2>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.andersknelson.com\/blog\/wp-content\/uploads\/2020\/03\/Marantz-2015-NR_SR_AV-IP-232-Protocol.xls.zip\">Marantz 2015 SR* \/ NR* \/ AV* IP and RS232 Spec<\/a><a href=\"https:\/\/www.andersknelson.com\/blog\/wp-content\/uploads\/2020\/03\/Marantz-2015-NR_SR_AV-IP-232-Protocol.xls.zip\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.andersknelson.com\/blog\/wp-content\/uploads\/2020\/03\/Marantz-2015-NR_SR_AV-IR-Command-Chart.xls.zip\">Marantz 2015 SR* \/ NR* \/ AV* IR Spec<\/a><a href=\"https:\/\/www.andersknelson.com\/blog\/wp-content\/uploads\/2020\/03\/Marantz-2015-NR_SR_AV-IR-Command-Chart.xls.zip\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.andersknelson.com\/blog\/wp-content\/uploads\/2020\/03\/MFL69707602_1.1MFL696484021.1RS.pdf\">LG OLED[55,65][B,C,E]7P Spec<\/a><a href=\"https:\/\/www.andersknelson.com\/blog\/wp-content\/uploads\/2020\/03\/MFL69707602_1.1MFL696484021.1RS.pdf\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Gallery<\/h2>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Resources<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.mouser.com\/ProductDetail\/Alpha-Taiwan\/SR2511F-0304-19R0B-E9-N-W-159?qs=%2Fha2pyFadug%252BQuwdkO8X8wgRml%252Bpy5G%2FhMyIxA2NIUF%252Bn7QxvaX6wojD2ccKJb9%252BAiaOMZ8Tn0k%3D\">http:\/\/www.mouser.com\/ProductDetail\/Alpha-Taiwan\/SR2511F-0304-19R0B-E9-N-W-159\/<\/a><\/li><li><a href=\"https:\/\/www.parts-express.com\/large-aluminum-tapered-receiver---amp-knob-11-matte--240-2222\">https:\/\/www.parts-express.com\/large-aluminum-tapered-receiver&#8212;amp-knob-11-matte&#8211;240-2222<\/a><\/li><li><a href=\"https:\/\/www.parts-express.com\/large-aluminum-receiver---amplifier-knob-158-matte--240-2218\">https:\/\/www.parts-express.com\/large-aluminum-receiver&#8212;amplifier-knob-158-matte&#8211;240-2218<\/a><\/li><li><a href=\"https:\/\/www.digikey.com\/product-detail\/en\/cui-inc\/C14N32P-C3\/102-1918-ND\/2037018\">https:\/\/www.digikey.com\/product-detail\/en\/cui-inc\/C14N32P-C3\/102-1918-ND\/2037018<\/a><\/li><li><a href=\"https:\/\/www.eevblog.com\/forum\/projects\/smooth-rotary-encoder\/\">https:\/\/www.eevblog.com\/forum\/projects\/smooth-rotary-encoder\/<\/a><\/li><li><a href=\"http:\/\/www.ebay.com\/itm\/Silver-Aluminum-PCB-instrument-Box-Enclosure-Case-Project-DIY-110-110-40mm\/112121491662\">http:\/\/www.ebay.com\/itm\/Silver-Aluminum-PCB-instrument-Box-Enclosure-Case-Project-DIY-110-110-40mm\/112121491662<\/a><\/li><li><a href=\"http:\/\/www.ebay.com\/itm\/New-Aluminum-Box-Enclosure-Case-Project-electronic-DIY-110-74-22MM-L-W-H\/171447382317\">http:\/\/www.ebay.com\/itm\/New-Aluminum-Box-Enclosure-Case-Project-electronic-DIY-110-74-22MM-L-W-H\/171447382317<\/a><\/li><li><a href=\"http:\/\/www.ebay.com\/itm\/Aluminum-Box-Circuit-Board-Enclosure-Case-Project-Electronic-for-DIY-100x74x29MM\/131656807607\">http:\/\/www.ebay.com\/itm\/Aluminum-Box-Circuit-Board-Enclosure-Case-Project-Electronic-for-DIY-100x74x29MM\/131656807607<\/a><\/li><li><a href=\"http:\/\/runawaybrainz.blogspot.com\/2013\/08\/avr-attiny-2313-v-usb-media-volume.html\">http:\/\/runawaybrainz.blogspot.com\/2013\/08\/avr-attiny-2313-v-usb-media-volume.html<\/a><\/li><li><a href=\"http:\/\/www.nkkswitches.com\/products\/illuminated-pushbutton\/\">http:\/\/www.nkkswitches.com\/products\/illuminated-pushbutton\/<\/a><\/li><li><a href=\"https:\/\/www.digikey.com\/product-detail\/en\/KB15RKW01B-5C-JB\/360-2943-ND\/4289569\/\">https:\/\/www.digikey.com\/product-detail\/en\/KB15RKW01B-5C-JB\/360-2943-ND\/4289569\/<\/a><\/li><li><a href=\"https:\/\/github.com\/hobbyquaker\/lgtv2\">https:\/\/github.com\/hobbyquaker\/lgtv2<\/a><\/li><li><a href=\"https:\/\/www.npmjs.com\/package\/lgtv\">https:\/\/www.npmjs.com\/package\/lgtv<\/a><\/li><li><a href=\"https:\/\/github.com\/igorantolic\/ai-esp32-rotary-encoder\">https:\/\/github.com\/igorantolic\/ai-esp32-rotary-encoder<\/a><\/li><li><a href=\"https:\/\/github.com\/espressif\/esptool\/wiki\/ESP32-Boot-Mode-Selection\">https:\/\/github.com\/espressif\/esptool\/wiki\/ESP32-Boot-Mode-Selection<\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/solved-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header\/\">https:\/\/randomnerdtutorials.com\/solved-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header\/<\/a><\/li><li><a href=\"https:\/\/lastminuteengineers.com\/esp32-sleep-modes-power-consumption\/\">https:\/\/lastminuteengineers.com\/esp32-sleep-modes-power-consumption\/<\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-pinout-reference-gpios\/\">https:\/\/randomnerdtutorials.com\/esp32-pinout-reference-gpios\/<\/a><\/li><li><a href=\"http:\/\/www.ti.com\/product\/TRS3122E\">http:\/\/www.ti.com\/product\/TRS3122E<\/a><\/li><li><a href=\"https:\/\/github.com\/wakwak-koba\/arduino-esp32\">https:\/\/github.com\/wakwak-koba\/arduino-esp32<\/a><\/li><li><a href=\"https:\/\/www.esp32.com\/viewtopic.php?t=7452\">https:\/\/www.esp32.com\/viewtopic.php?t=7452<\/a><\/li><li><a href=\"https:\/\/github.com\/nkolban\/ESP32_BLE_Arduino\/blob\/master\/src\/BLEServer.h\">https:\/\/github.com\/nkolban\/ESP32_BLE_Arduino\/blob\/master\/src\/BLEServer.h<\/a><\/li><li><a href=\"https:\/\/www.onethesis.com\/2015\/11\/21\/ble-introduction-notify-or-indicate\/\">https:\/\/www.onethesis.com\/2015\/11\/21\/ble-introduction-notify-or-indicate\/<\/a><\/li><li><a href=\"https:\/\/github.com\/nkolban\/esp32-snippets\/issues\/874\">https:\/\/github.com\/nkolban\/esp32-snippets\/issues\/874<\/a><\/li><li><a href=\"https:\/\/github.com\/nkolban\/esp32-snippets\/issues\/628\">https:\/\/github.com\/nkolban\/esp32-snippets\/issues\/628<\/a><\/li><li><a href=\"https:\/\/docs.m5stack.com\/#\/en\/api\/lcd\">https:\/\/docs.m5stack.com\/#\/en\/api\/lcd<\/a><\/li><li><a href=\"https:\/\/github.com\/m5stack\/M5Stack\/blob\/master\/examples\/Advanced\/Display\/TFT_Terminal\/TFT_Terminal.ino\">https:\/\/github.com\/m5stack\/M5Stack\/blob\/master\/examples\/Advanced\/<\/a><a href=\"https:\/\/github.com\/m5stack\/M5Stack\/blob\/master\/examples\/Advanced\/Display\/TFT_Terminal\/TFT_Terminal.inohttps:\/\/www.reddit.com\/r\/esp32\/comments\/bg3992\/reading_ble_characteristic_only_when_notified\/https:\/\/www.acecontrols.com\/us\/products\/motion-control\/rotary-dampers.htmlhttps:\/\/www.mcmaster.com\/spur-gears\/component~gear\/for-shaft-diameter~1-2f4-\/pitch-diameter~0-5-\/material~plastic\/https:\/\/www.digikey.com\/short\/zp4tfbhttps:\/\/www.amazon.com\/Twidec-Flexible-Coupling-Connector-Coupler-BU-6-35-6-35\/dp\/B07TTH1S8Phttps:\/\/www.digikey.com\/short\/zp4pnp\">Display\/TFT_Terminal\/TFT_Terminal.ino<\/a><\/li><li><a href=\"https:\/\/github.com\/m5stack\/M5Stack\/blob\/master\/examples\/Advanced\/Display\/TFT_Terminal\/TFT_Terminal.inohttps:\/\/www.reddit.com\/r\/esp32\/comments\/bg3992\/reading_ble_characteristic_only_when_notified\/https:\/\/www.acecontrols.com\/us\/products\/motion-control\/rotary-dampers.htmlhttps:\/\/www.mcmaster.com\/spur-gears\/component~gear\/for-shaft-diameter~1-2f4-\/pitch-diameter~0-5-\/material~plastic\/https:\/\/www.digikey.com\/short\/zp4tfbhttps:\/\/www.amazon.com\/Twidec-Flexible-Coupling-Connector-Coupler-BU-6-35-6-35\/dp\/B07TTH1S8Phttps:\/\/www.digikey.com\/short\/zp4pnp\">https:\/\/www.reddit.com\/r\/esp32\/comments\/bg3992\/reading_ble_characteristic_only_when_notified\/<\/a><\/li><li><a href=\"https:\/\/www.acecontrols.com\/us\/products\/motion-control\/rotary-dampers.html\">https:\/\/www.acecontrols.com\/us\/products\/motion-control\/rotary-dampers.html<\/a><\/li><li><a href=\"https:\/\/www.mcmaster.com\/spur-gears\/component~gear\/for-shaft-diameter~1-2f4-\/pitch-diameter~0-5-\/material~plastic\/\">https:\/\/www.mcmaster.com\/spur-gears\/component~gear\/for-shaft-diameter~1-2f4-\/pitch-diameter~0-5-\/material~plastic\/<\/a><\/li><li><a href=\"https:\/\/www.digikey.com\/short\/zp4tfb\">https:\/\/www.digikey.com\/short\/zp4tfb<\/a><\/li><li><a href=\"https:\/\/www.amazon.com\/Twidec-Flexible-Coupling-Connector-Coupler-BU-6-35-6-35\/dp\/B07TTH1S8P\">https:\/\/www.amazon.com\/Twidec-Flexible-Coupling-Connector-Coupler-BU-6-35-6-35\/dp\/B07TTH1S8P<\/a><\/li><li><a href=\"https:\/\/www.digikey.com\/short\/zp4pnp\">https:\/\/www.digikey.com\/short\/zp4pnp<\/a><\/li><li><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What it is KnobSwitch is a minimal entertainment center controller. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":903,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,37],"tags":[],"class_list":["post-284","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects","category-unfinished"],"_links":{"self":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284"}],"version-history":[{"count":26,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/284\/revisions"}],"predecessor-version":[{"id":905,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/284\/revisions\/905"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/903"}],"wp:attachment":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}