{"id":9961,"date":"2024-01-04T17:55:43","date_gmt":"2024-01-04T17:55:43","guid":{"rendered":"https:\/\/www.fambach.net\/?p=9961"},"modified":"2024-02-09T21:15:09","modified_gmt":"2024-02-09T21:15:09","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_85 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-1'><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-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Benotigte_Hardware\" >Ben&ouml;tigte Hardware<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Benotigte_Software\" >Ben&ouml;tigte Software<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><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-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Konfiguration\" >Configuration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" 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-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/#Verwandte_Beitrage\" >Verwandte Beitr&auml;ge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-8\" 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&szlig; zu haben. Im Folgenden wird die Anbindung eines ESP32 &uuml;ber BlueTooth beschrieben. Zur Steuerung werden ein kleiner analog Joystick und zwei Potis angeschlossen<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fakten\"><\/span>Facts<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Benotigte_Hardware\"><\/span>Ben&ouml;tigte Hardware<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ESP32 BLE Board (ESP32, ESP32C3, ESP32S3)<\/li>\n\n\n\n<li>Sensors, Joysticks, Potentiometers \u2026 <\/li>\n\n\n\n<li>Cable for wiring<\/li>\n\n\n\n<li>(Optional) Breadboard<\/li>\n\n\n\n<li>(Optional) I&sup2;C Expansion Board<\/li>\n\n\n\n<li>(Optional) USB Dongle f&uuml;r den Rechner<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Benotigte_Software\"><\/span>Ben&ouml;tigte Software<span class=\"ez-toc-section-end\"><\/span><\/h2>\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 f&uuml;r Linux) bluez<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Anwendungsbereiche\"><\/span>Areas of application<span class=\"ez-toc-section-end\"><\/span><\/h1>\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 f&uuml;r Spiele<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Views<\/h1>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"4222\" height=\"2759\" 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 &#8211; Verdrahtung wird unten noch n&auml;her beschrieben<\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Programming<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Libraries<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgenden beiden Bibliotheken werden ben&ouml;tigt. Dies k&ouml;nnen &uuml;ber den download des Zips von Git oder direkt in der Arduino GUI geschehen. Die dritte ist nicht n&ouml;tig f&uuml;r den BlueTooth Betrieb wird aber in meinen Beispielen verwendet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/h2zero\/NimBLE-Arduino\">NimBLE-Arduino<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\">ESP32 BLE Gamepad<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/sfambach\/CustomKeyboard\" target=\"_blank\" rel=\"noreferrer noopener\">CustomKeyboard<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Verbindungstest\">Connection test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der erste Test soll zeigen ob eine Verbindung mit dem PC m&ouml;glich ist. Hierf&uuml;r habe ich einen USB-Dongel an den PC angelschossen umd mir einen ESP32 Wroom geschnappt. Das Testprogramm wird bei der <a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\">ESP32 BLE Gamepad<\/a> Bibliothek mit geliefert und hei&szlig;t <a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\/tree\/c8ee9fcb901852e65505dbe321dffb0b593976d7\/examples\/Gamepad\" target=\"_blank\" rel=\"noreferrer noopener\">Gamepad<\/a>. Das Programm simuliert in Abst&auml;nden von einer halben Sekunde das Dr&uuml;cken und L&ouml;sen der Taste 5 (bzw 4) sowie das Setzen der Achsenwerte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Den Sketch f&uuml;r den Arduino compilieren und aufspielen. Wie der Controller in <a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/\" data-type=\"post\" data-id=\"9960\">Windows <\/a>or in <a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04\/\" data-type=\"post\" data-id=\"9932\">Linux <\/a>eingebunden wird, kann in den gelinkten Beitr&auml;gen nachgesehen werden. <\/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\"><figcaption class=\"wp-element-caption\">Windows Game Controller Properties \u2013 All axes and button 5 in their default state.<\/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\"><figcaption class=\"wp-element-caption\">Windows Gamecontroller Eigenschaften &#8211; Alle Achsen und Taste 5 bet&auml;tigt.<\/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\"><figcaption class=\"wp-element-caption\">Linux jstest-gtk \u2013 Axes and buttons in their default positions<\/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\"><figcaption class=\"wp-element-caption\">Linux jstest-gtk \u2013 Axes and buttons enabled<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Periphery test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um vorab zu &uuml;berpr&uuml;fen ob die Potis und der Joystick auch funktionieren, habe ich einen Peripheriestest erstellt, der einfach die entsprechenden Ports abfragt und auf der Konsole ausgibt. Er basiert auf meiner <a href=\"https:\/\/www.fambach.net\/en\/customkeyboard\/\" data-type=\"post\" data-id=\"9739\">CustomKeyboard <\/a>Library. My experimental setup is as follows.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Experimental setup<\/h3>\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<h3 class=\"wp-block-heading\">Pin assignment<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Hier die verwendeten Pins. Diese sind im Grunde frei w&auml;hlbar. F&uuml;r die Potis und die Achsen werden Analoge Input Pins ben&ouml;tigt 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&uuml;r den Joystick denken. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Source code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Sourcecode f&uuml;r den Test ist unter folgenden Link zu finden:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/sfambach\/esp32\/tree\/6e8ab27afbf1394bf51c2333cddb67b81479e9fd\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_InputTest\">https:\/\/github.com\/sfambach\/esp32\/tree\/6e8ab27afbf1394bf51c2333cddb67b81479e9fd\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_InputTest<\/a><\/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<h2 class=\"wp-block-heading\">All together<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nun bleibt nicht viel mehr als die beiden Test zusammen zu f&uuml;gen und die von der Physik gelesenen Werte mit BlueTooth zu &uuml;bermitteln. <\/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\"><a href=\"https:\/\/github.com\/sfambach\/esp32\/tree\/e442fb75d588c93a59c3316685182d3358aa51df\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_FinalTest\">https:\/\/github.com\/sfambach\/esp32\/tree\/e442fb75d588c93a59c3316685182d3358aa51df\/project\/ESP32BLE-Joystick\/src\/ESP32-BLE-Gamepad_FinalTest<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es werden drei Achsen X,Y, RX und RY sowie der Knopf 0 &uuml;bertragen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The whole thing can be tested again in Windows in the \u201eGame Controller Setup\u201c and under Linux with the jstest.gtk tool (see chapter <a href=\"#Verbindungstest\" data-type=\"internal\" data-id=\"#Verbindungstest\">Connection test<\/a>).<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Problems<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Not yet<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Miscellaneous<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Connect controllers on Windows<\/h2>\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\"><a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/\">Bluetooth game controllers on Windows 10<\/a><\/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<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Integrating controllers under Linux<\/h2>\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\"><a href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04\/\">PS3 controller under Ubuntu 2x.04<\/a><\/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<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fazit\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Wie immer Schritt f&uuml;r Schritt zum Ziel. Zuerst die Blutooth Funktionalit&auml;t herstellen, danach die Peripherie anschliessen und zum Schlu&szlig; beides kombinieren. So fiel die Implementierung leicht. Die Bluetooth Funktionalit&auml;t des ESP erscheint ausgereift. Die schlechte Analog-\/Digitalwandlung muss durch mittelwertbildung verbessert werden aber zum Spielen sollte es ausreichen.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verwandte_Beitrage\"><\/span>Verwandte Beitr&auml;ge<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n<ul class=\"display-posts-listing\">\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04\/\">PS3 controller under Ubuntu 2x.04<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04-2\/\">PS3 controller on Windows 10<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp32-bluetooth-gamepad-2\/\">ESP32 Bluetooth Gamepad<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-ubuntu-22-04-3\/\">Bluetooth game controller on Ubuntu 20.04<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/bluetooth-gamecontroller-unter-windows-10\/\">Bluetooth game controllers on Windows 10<\/a><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Quellen\"><\/span>Sources<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/h2zero\/NimBLE-Arduino\">NimBLE-Arduino<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/h2zero\/NimBLE-Arduino\/blob\/e46123a084e0aa336e4cbdd52bf001dac71e5afb\/docs\/New_user_guide.md\">NimBLE-Arduino New User Guide<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/h2zero.github.io\/NimBLE-Arduino\/\">NimBLE-Arduino API <\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad\">https:\/\/github.com\/lemmingDev\/ESP32-BLE-Gamepad<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_Bluetooth_profiles\">https:\/\/en.wikipedia.org\/wiki\/List_of_Bluetooth_profiles<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/USB_human_interface_device_class\">https:\/\/en.wikipedia.org\/wiki\/USB_human_interface_device_class<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.usb.org\/sites\/default\/files\/documents\/hid1_11.pdf\">https:\/\/www.usb.org\/sites\/default\/files\/documents\/hid1_11.pdf<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/nilutpolkashyap\/esp32_microros_joystick\/blob\/main\/cmd_vel_publisher_udp\/cmd_vel_publisher_udp.ino\">https:\/\/github.com\/nilutpolkashyap\/esp32_microros_joystick\/blob\/main\/cmd_vel_publisher_udp\/cmd_vel_publisher_udp.ino<\/a><\/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":7,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/9961\/revisions"}],"predecessor-version":[{"id":10492,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/9961\/revisions\/10492"}],"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}]}}