{"id":9961,"date":"2024-01-04T17:55:43","date_gmt":"2024-01-04T17:55:43","guid":{"rendered":"https:\/\/www.fambach.net\/?p=9961"},"modified":"2026-10-08T15:02:53","modified_gmt":"2026-10-08T15:02:53","slug":"esp32-bluetooth-gamepad-2","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/esp32-bluetooth-gamepad-2\/","title":{"rendered":"ESP32 Bluetooth Gamepad"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Contents\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Fakten\" >Facts<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Benotigte_Hardware\" >Required hardware<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Benotigte_Software\" >Required Software<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Anwendungsbereiche\" >Areas of application<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Ansichten\" >Views<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Programmierung\" >Programming<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Bibliotheken\" >Libraries<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Verbindungstest\" >Connection test<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Peripherietest\" >Periphery test<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Versuchsaufbau\" >Experimental setup<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Pinbelegung\" >Pin assignment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Quellcode\" >Source code<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Alles_zusammen\" >All together<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Probleme\" >Problems<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Sonstiges\" >Miscellaneous<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Controller_unter_Windows_einbinden\" >Connect controllers on Windows<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Controller_unter_Linux_einbinden\" >Integrating controllers under Linux<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Fazit\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Verwandte_Beitrage\" >Related Posts<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Quellen\" >Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">Manchmal braucht es eine Fernbedienung oder einen Joystick, um ein Projekt zu testen oder einfach Spa\u00df zu haben. Im Folgenden wird die Anbindung eines ESP32 \u00fcber BlueTooth beschrieben. Zur Steuerung werden ein kleiner analoger Joystick und zwei Potis angeschlossen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fakten\"><span class=\"ez-toc-section\" id=\"Fakten\"><\/span>Facts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"benoetigte-hardware\"><span class=\"ez-toc-section\" id=\"Benotigte_Hardware\"><\/span>Required hardware<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ESP32 BLE Board (ESP32, ESP32C3, ESP32S3)<\/li>\n\n\n\n<li>Taster, Joysticks, Potis \u2026 <\/li>\n\n\n\n<li>Kabel zum Verdrahten<\/li>\n\n\n\n<li>(Optional) Breadboard<\/li>\n\n\n\n<li>(Optional) I\u00b2C Expansion Board<\/li>\n\n\n\n<li>(Optional) USB dongle for the computer<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"benoetigte-software\"><span class=\"ez-toc-section\" id=\"Benotigte_Software\"><\/span>Required Software<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Arduino GUI<\/li>\n\n\n\n<li>https:\/\/github.com\/h2zero\/NimBLE-Arduino<\/li>\n\n\n\n<li>https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad<\/li>\n\n\n\n<li>(Optional) Custom Keyboard Library<\/li>\n\n\n\n<li>(Optional for Linux) bluez<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"anwendungsbereiche\"><span class=\"ez-toc-section\" id=\"Anwendungsbereiche\"><\/span>Areas of application<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Remote control<\/li>\n\n\n\n<li>RC control<\/li>\n\n\n\n<li>Joystick for games<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ansichten\"><span class=\"ez-toc-section\" id=\"Ansichten\"><\/span>Views<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/20240104_102733.jpg\" alt=\"\" class=\"wp-image-9957\" style=\"width:840px;height:auto\"><figcaption class=\"wp-element-caption\">Joystick Versuchsaufbau \u2013 Verdrahtung wird unten noch n\u00e4her beschrieben<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"programmierung\"><span class=\"ez-toc-section\" id=\"Programmierung\"><\/span>Programming<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"bibliotheken\"><span class=\"ez-toc-section\" id=\"Bibliotheken\"><\/span>Libraries<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgenden beiden Bibliotheken werden ben\u00f6tigt. Dies kann \u00fcber den Download des Zips von Git oder direkt in der Arduino GUI geschehen. Die dritte ist nicht n\u00f6tig f\u00fcr den BlueTooth Betrieb, wird aber in meinen Beispielen verwendet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/h2zero\/NimBLE-Arduino\" class=\"ub-content-link__anchor\">NimBLE-Arduino<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\" class=\"ub-content-link__anchor\">ESP32 BLE Gamepad<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/sfambach\/CustomKeyboard\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ub-content-link__anchor\">CustomKeyboard<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Verbindungstest\"><span class=\"ez-toc-section\" id=\"Verbindungstest\"><\/span>Connection test<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der erste Test soll zeigen, ob eine Verbindung mit dem PC m\u00f6glich ist. Hierf\u00fcr habe ich einen USB-Dongle an den PC angeschlossen und mir einen ESP32 Wroom geschnappt. Das Testprogramm wird bei der <span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\" class=\"ub-content-link__anchor\">ESP32 BLE Gamepad<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span> Bibliothek mitgeliefert und hei\u00dft <span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\/tree\/c8ee9fcb901852e65505dbe321dffb0b593976d7\/examples\/Gamepad\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ub-content-link__anchor\">Gamepad<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span>. Das Programm simuliert in Abst\u00e4nden von einer halben Sekunde das Dr\u00fccken und L\u00f6sen der Taste 5 (bzw. 4) sowie das Setzen der Achsenwerte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compile and upload the sketch for the Arduino. How the controller in <span class=\"ub-content-link ub-content-link--unknown ub-content-link--status-after\"><a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/\" data-type=\"post\" data-id=\"9960\" class=\"ub-content-link__anchor\">Windows <\/a><span class=\"ub-status ub-status--unknown\" title=\"Link status: Unknown\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: Unknown<\/span><\/span><\/span>or in <span class=\"ub-content-link ub-content-link--unknown ub-content-link--status-after\"><a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04\/\" data-type=\"post\" data-id=\"9932\" class=\"ub-content-link__anchor\">Linux <\/a><span class=\"ub-status ub-status--unknown\" title=\"Link status: Unknown\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: Unknown<\/span><\/span><\/span>can be found in the linked posts. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is how the simulator should look in the respective operating system.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"396\" height=\"453\" data-id=\"9943\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_51_45.jpg\" alt=\"\" class=\"wp-image-9943\" srcset=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_51_45.jpg 396w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_51_45-262x300.jpg 262w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_51_45-10x12.jpg 10w\" sizes=\"auto, (max-width: 599px) calc(100vw - 50px), (max-width: 767px) calc(100vw - 70px), (max-width: 991px) 429px, (max-width: 1199px) 637px, 354px\"><figcaption class=\"wp-element-caption\">Windows Gamecontroller Eigenschaften \u2013 Alle Achsen und Taste 5 im Ausgangszustand.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"397\" height=\"457\" data-id=\"9955\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_52_02-1.jpg\" alt=\"\" class=\"wp-image-9955\" srcset=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_52_02-1.jpg 397w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_52_02-1-261x300.jpg 261w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-12_52_02-1-10x12.jpg 10w\" sizes=\"auto, (max-width: 599px) calc(100vw - 50px), (max-width: 767px) calc(100vw - 70px), (max-width: 991px) 429px, (max-width: 1199px) 637px, 354px\"><figcaption class=\"wp-element-caption\">Windows Gamecontroller Eigenschaften \u2013 Alle Achsen und Taste 5 bet\u00e4tigt.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"327\" height=\"595\" data-id=\"9953\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_14.jpg\" alt=\"\" class=\"wp-image-9953\" srcset=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_14.jpg 327w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_14-165x300.jpg 165w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_14-7x12.jpg 7w\" sizes=\"auto, (max-width: 599px) calc(100vw - 50px), (max-width: 767px) calc(100vw - 70px), (max-width: 991px) 429px, (max-width: 1199px) 637px, 354px\"><figcaption class=\"wp-element-caption\">Linux jstest-gtk \u2013 Achsen und Taster in Ruhestellung<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"329\" height=\"596\" data-id=\"9954\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_37.jpg\" alt=\"\" class=\"wp-image-9954\" srcset=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_37.jpg 329w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_37-166x300.jpg 166w, https:\/\/www.fambach.net\/wp-content\/uploads\/2024-01-03-13_47_37-7x12.jpg 7w\" sizes=\"auto, (max-width: 599px) calc(100vw - 50px), (max-width: 767px) calc(100vw - 70px), (max-width: 991px) 429px, (max-width: 1199px) 637px, 354px\"><figcaption class=\"wp-element-caption\">Linux jstest-gtk \u2013 Achsen und Taster aktiviert<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"peripherietest\"><span class=\"ez-toc-section\" id=\"Peripherietest\"><\/span>Periphery test<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um vorab zu \u00fcberpr\u00fcfen, ob die Potis und der Joystick auch funktionieren, habe ich einen Peripherietest erstellt, der einfach die entsprechenden Ports abfragt und auf der Konsole ausgibt. Er basiert auf meiner <span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/www.fambach.net\/en\/customkeyboard\/\" data-type=\"post\" data-id=\"9739\" class=\"ub-content-link__anchor\">CustomKeyboard <\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span>Bibliothek. Mein Versuchsaufbau sieht wie folgt aus.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"versuchsaufbau\"><span class=\"ez-toc-section\" id=\"Versuchsaufbau\"><\/span>Experimental setup<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/sfambach\/esp32\/blob\/master\/project\/ESP32BLE-Joystick\/img\/PinoutJoystickPrototype.jpg?raw=true\" alt=\"\"><figcaption class=\"wp-element-caption\">Connection diagram<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"pinbelegung\"><span class=\"ez-toc-section\" id=\"Pinbelegung\"><\/span>Pin assignment<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Hier die verwendeten Pins. Diese sind im Grunde frei w\u00e4hlbar. F\u00fcr die Potis und die Achsen werden analoge Input Pins ben\u00f6tigt, und da der AD-Wandler 1 nicht funktioniert, wenn Wifi oder BLE aktiv ist, habe ich Pins des ADC2 verwendet.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table id=\"wpls-table-1\"><thead><tr><th>Periphery<\/th><th>ESP GPIO<\/th><\/tr><\/thead><tbody><tr><td>Pot 1 Middle pin<\/td><td>25<\/td><\/tr><tr><td>Pot 2 Middle Pin<\/td><td>26<\/td><\/tr><tr><td>Joystick X-axis<\/td><td>14<\/td><\/tr><tr><td>Joystick Y-axis<\/td><td>27<\/td><\/tr><tr><td>Joystick button<\/td><td>12<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Pin configuration on the ESP32 Wroom<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ATTENTION<\/strong> nicht vergessen, die beiden anderen Pins der Potis mit der Versorgungsspannung und Masse zu verbinden und auch an die Stromversorgung f\u00fcr den Joystick denken. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"quellcode\"><span class=\"ez-toc-section\" id=\"Quellcode\"><\/span>Source code<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Der Sourcecode f\u00fcr den Test ist unter folgendem Link zu finden:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/sfambach\/esp32\/tree\/6e8ab27afbf1394bf51c2333cddb67b81479e9fd\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_InputTest\" class=\"ub-content-link__anchor\">https:\/\/github.com\/sfambach\/esp32\/tree\/6e8ab27afbf1394bf51c2333cddb67b81479e9fd\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_InputTest<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The output should look like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/sfambach\/esp32\/blob\/master\/project\/ESP32BLE-Joystick\/img\/OutputPeripheryTest.jpg?raw=true\" alt=\"\"><figcaption class=\"wp-element-caption\">Peripheral test output<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"alles-zusammen\"><span class=\"ez-toc-section\" id=\"Alles_zusammen\"><\/span>All together<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nun bleibt nicht viel mehr als die beiden Tests zusammenzuf\u00fcgen und die von der Physik gelesenen Werte mit BlueTooth zu \u00fcbermitteln. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The example code can be found here:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/sfambach\/esp32\/tree\/e442fb75d588c93a59c3316685182d3358aa51df\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_FinalTest\" class=\"ub-content-link__anchor\">https:\/\/github.com\/sfambach\/esp32\/tree\/e442fb75d588c93a59c3316685182d3358aa51df\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_FinalTest<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Three axes X, Y, RX and RY, as well as button 0 are transmitted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Getestet werden kann das Ganze wieder in Windows in der \u201eGameController Einrichtung\u201c und unter Linux mit dem Tool jstest.gtk (siehe Kapitel <a href=\"#Verbindungstest\" data-type=\"internal\" data-id=\"#Verbindungstest\">Connection test<\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"probleme\"><span class=\"ez-toc-section\" id=\"Probleme\"><\/span>Problems<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Not yet<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sonstiges\"><span class=\"ez-toc-section\" id=\"Sonstiges\"><\/span>Miscellaneous<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"controller-unter-windows-einbinden\"><span class=\"ez-toc-section\" id=\"Controller_unter_Windows_einbinden\"><\/span>Connect controllers on Windows<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-stefan-039-s-webblog wp-block-embed-stefan-039-s-webblog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"id98W7kVe3\"><span class=\"ub-content-link ub-content-link--unknown ub-content-link--status-after\"><a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/\" class=\"ub-content-link__anchor\">Bluetooth game controllers on Windows 10<\/a><span class=\"ub-status ub-status--unknown\" title=\"Link status: Unknown\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: Unknown<\/span><\/span><\/span><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201eBluetooth Game Controllers on Windows 10 \u2014 Stefan&#039;s WebBlog\" src=\"https:\/\/www.fambach.net\/bluetooth-gamecontroller-unter-windows-10\/embed\/#?secret=KTM2Qd3h1X#?secret=id98W7kVe3\" data-secret=\"id98W7kVe3\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"controller-unter-linux-einbinden\"><span class=\"ez-toc-section\" id=\"Controller_unter_Linux_einbinden\"><\/span>Integrating controllers under Linux<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"xQmAZx0SVK\"><span class=\"ub-content-link ub-content-link--unknown ub-content-link--status-after\"><a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04\/\" class=\"ub-content-link__anchor\">PS3 controller under Ubuntu 2x.04<\/a><span class=\"ub-status ub-status--unknown\" title=\"Link status: Unknown\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: Unknown<\/span><\/span><\/span><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201ePS3 Controller under Ubuntu 2x.04 - Stefan&#039;s WebBlog\" src=\"https:\/\/www.fambach.net\/bluetooth-gamecontroller-unter-ubuntu-22-04\/embed\/#?secret=sFEnPHvPyA#?secret=xQmAZx0SVK\" data-secret=\"xQmAZx0SVK\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fazit\"><span class=\"ez-toc-section\" id=\"Fazit\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wie immer Schritt f\u00fcr Schritt zum Ziel. Zuerst die Bluetooth Funktionalit\u00e4t herstellen, danach die Peripherie anschlie\u00dfen und zum Schluss beides kombinieren. So fiel die Implementierung leicht. Die Bluetooth Funktionalit\u00e4t des ESP erscheint ausgereift. Die schlechte Analog-\/Digitalwandlung muss durch Mittelwertbildung verbessert werden, aber zum Spielen sollte es ausreichen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"verwandte-beitraege\"><span class=\"ez-toc-section\" id=\"Verwandte_Beitrage\"><\/span>Related Posts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<ul class=\"display-posts-listing\"><li class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04\/\">PS3 controller under Ubuntu 2x.04<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/li><li class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04-2\/\">PS3 controller on Windows 10<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/li><li class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/esp32-bluetooth-gamepad-2\/\">ESP32 Bluetooth Gamepad<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/li><li class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04-3\/\">Bluetooth game controller on Ubuntu 20.04<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/li><li class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/\">Bluetooth game controllers on Windows 10<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quellen\"><span class=\"ez-toc-section\" id=\"Quellen\"><\/span>Sources<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/h2zero\/NimBLE-Arduino\" class=\"ub-content-link__anchor\">NimBLE-Arduino<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/h2zero\/NimBLE-Arduino\/blob\/e46123a084e0aa336e4cbdd52bf001dac71e5afb\/docs\/New_user_guide.md\" class=\"ub-content-link__anchor\">NimBLE-Arduino New User Guide<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/h2zero.github.io\/NimBLE-Arduino\/\" class=\"ub-content-link__anchor\">NimBLE-Arduino API <\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\" class=\"ub-content-link__anchor\">https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_Bluetooth_profiles\" class=\"ub-content-link__anchor\">https:\/\/en.wikipedia.org\/wiki\/List_of_Bluetooth_profiles<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/USB_human_interface_device_class\" class=\"ub-content-link__anchor\">https:\/\/en.wikipedia.org\/wiki\/USB_human_interface_device_class<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/www.usb.org\/sites\/default\/files\/documents\/hid1_11.pdf\" class=\"ub-content-link__anchor\">https:\/\/www.usb.org\/sites\/default\/files\/documents\/hid1_11.pdf<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/nilutpolkashyap\/esp32_microros_joystick\/blob\/main\/cmd_vel_publisher_udp\/cmd_vel_publisher_udp.ino\" class=\"ub-content-link__anchor\">https:\/\/github.com\/nilutpolkashyap\/esp32_microros_joystick\/blob\/main\/cmd_vel_publisher_udp\/cmd_vel_publisher_udp.ino<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Sometimes a remote control or a joystick is needed to test a project or just have fun. The following describes how to connect an ESP32 via Bluetooth. <\/p>\n<a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/\" class=\"read-more-link\">Carry on reading <span class=\"screen-reader-text\">\"Bluetooth Gamecontroller unter Windows 10\"<\/span> <span class=\"meta-nav\">\u2192<\/span><\/a>","protected":false},"author":1,"featured_media":9957,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[216,742,745,256,169,255],"tags":[285,145,741,33,148,131,264,352],"class_list":["post-9961","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bluetooth","category-controller","category-esp32-projekt","category-linux","category-taster-potentiometer","category-windows","tag-ble","tag-bluetooth","tag-controller","tag-esp","tag-esp32","tag-joystick","tag-linux","tag-windows","penguin-post","penguin-post-not-sticky"],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/9961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/comments?post=9961"}],"version-history":[{"count":10,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/9961\/revisions"}],"predecessor-version":[{"id":18411,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/9961\/revisions\/18411"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media\/9957"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=9961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=9961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=9961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}