Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/insighio/esp32-microgamepad-ble
Dual analog joystick on ESP32 over BLE (Nordic UART Service - NUS) using micropython
https://github.com/insighio/esp32-microgamepad-ble
analog-joystick ble micropython micropython-esp32 nus
Last synced: about 1 month ago
JSON representation
Dual analog joystick on ESP32 over BLE (Nordic UART Service - NUS) using micropython
- Host: GitHub
- URL: https://github.com/insighio/esp32-microgamepad-ble
- Owner: insighio
- License: mit
- Created: 2020-11-30T13:51:50.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2020-12-03T10:59:33.000Z (about 4 years ago)
- Last Synced: 2024-04-22T12:35:04.236Z (8 months ago)
- Topics: analog-joystick, ble, micropython, micropython-esp32, nus
- Language: Python
- Homepage:
- Size: 2 MB
- Stars: 16
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-micropython - esp32-microgamepad-ble - Dual analog joystick on ESP32 over BLE (Nordic UART Service - NUS) using MicroPython. (Libraries / IO)
README
# esp32-microgamepad-ble
Dual analog joystick on ESP32 over BLE (Nordic UART Service - NUS) using micropythonThe purpose of this project is to create a dual-joystick analog gamepad that will be transmitting over BLE the values using an ESP32 device.
It is an ideal controller for robot projects. Joystick 1 is used for steering and Joystick 2 is used for controlling camera movement.# Components
* ESP32 with micropython firmware
* ideally use one of the latest firmwares as BLE was recently supported. Tested with: esp32-idf4-20200902-v1.13.bin
* Breadboard / Prototyping board
* Resistor 10κΩ x2
* Analog Joystick 5-Pin x2![img](https://github.com/insighio/esp32-microgamepad-ble/blob/main/analog_joystick.jpeg)
# Wiring
Allthough the analog joysticks label the input as 5V, they perfectly work with 3.3V which will be used in our schematic. Also J1, J2 will be abreviations for Joystick 1 and Joystick 2.To enable the digital input of the button click when the joystick is pressed, a resistor of 10kΩ is connected to the 3.3V of the ESP32 one the one hand, and to the respective GPIO where the SW pins of the joystics are connected (GPIO25, GPIO26)
| Component PIN | ESP PIN |
| ------------- | ------- |
| J1 5V | 3.3V |
| J2 5V | 3.3V |
| Resistor 1 | 3.3V |
| Resistor 2 | 3.3V |
| J2 GND | GND |
| J1 GND | GND |
| J1 VRx | GPIO34 |
| J1 VRy | GPIO35 |
| J1 SW | GPIO25 |
| J2 VRx | GPIO32 |
| J2 VRy | GPIO33 |
| J2 SW | GPIO26 |
| Resistor 1 | GPIO25 |
| Resistor 2 | GPIO26 |![complete schematic](https://github.com/insighio/esp32-microgamepad-ble/blob/main/schematics.png)
# On Raspberri Pi
An interesting alternative on how to read the analog values of the Joysticks is the use of a Raspberry Pi with an MCP3008 analog-to-digital converter.link: https://tutorials-raspberrypi.com/raspberry-pi-joystick-with-mcp3008/
# references
* https://medium.com/@codeyourventurefree/diy-iot-joytick-to-play-online-claw-machines-175206679fc9
* https://esp32.com/viewtopic.php?t=14803
* https://docs.micropython.org/en/latest/library/ubluetooth.html
* https://github.com/micropython/micropython/tree/master/examples/bluetooth