All Projects → wolfeidau → esp32-hid-joystick

wolfeidau / esp32-hid-joystick

Licence: Apache-2.0 License
No description or website provided.

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to esp32-hid-joystick

Esp32 ble wedo
A library to control LEGO wedo 2.0 with the ESP32 through Bluetooth low energy
Stars: ✭ 16 (-72.88%)
Mutual labels:  esp32, bluetooth-low-energy
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (+5501.69%)
Mutual labels:  esp32, bluetooth-low-energy
Arduino-BLE-MIDI
MIDI over Bluetooth Low Energy (BLE-MIDI) 1.0 for Arduino
Stars: ✭ 133 (+125.42%)
Mutual labels:  esp32, bluetooth-low-energy
Watchy
Watchy - An Open Source E-Ink Smartwatch
Stars: ✭ 469 (+694.92%)
Mutual labels:  esp32, bluetooth-low-energy
Nimble Arduino
A fork of the NimBLE library structured for compilation with Ardruino, designed for use with ESP32.
Stars: ✭ 108 (+83.05%)
Mutual labels:  esp32, bluetooth-low-energy
ESP32BleAdvertise
Simple library for BLE advertise using ESP32 in Arduino
Stars: ✭ 39 (-33.9%)
Mutual labels:  esp32, bluetooth-low-energy
ESP32 BLE OTA Arduino
OTA update on ESP32 via BLE
Stars: ✭ 41 (-30.51%)
Mutual labels:  esp32, bluetooth-low-energy
MicroDNSSrv
A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32)
Stars: ✭ 43 (-27.12%)
Mutual labels:  esp32
RFLink
RFLink for ESP, with MQTT client
Stars: ✭ 52 (-11.86%)
Mutual labels:  esp32
esp32-weather-google-sheets
Weather station based on ESP32 and MicroPython with sending data to Google Sheets
Stars: ✭ 48 (-18.64%)
Mutual labels:  esp32
deskbluez
Connects to a low energy actuator system via bluetooth and allows remote control via command line or internal managed interface.
Stars: ✭ 56 (-5.08%)
Mutual labels:  bluetooth-low-energy
rpi3-bluetooth
Raspberry Pi 3 on-board Bluetooth example
Stars: ✭ 17 (-71.19%)
Mutual labels:  bluetooth-low-energy
NMEA2000WifiGateway-with-ESP32
This repository shows how to build a NMEA2000 WiFi Gateway with voltage and temperature alarms.
Stars: ✭ 38 (-35.59%)
Mutual labels:  esp32
csrmesh
Reverse engineered bridge implementation of the CSRMesh BTLE protocol
Stars: ✭ 65 (+10.17%)
Mutual labels:  bluetooth-low-energy
switchmate
A python-based command line utility for controlling Switchmate switches
Stars: ✭ 34 (-42.37%)
Mutual labels:  bluetooth-low-energy
pitaya-go
An Open-Source IoT Development Platform with Multiprotocol Wireless Connectivity
Stars: ✭ 58 (-1.69%)
Mutual labels:  bluetooth-low-energy
cannon-bluetooth-remote
Python script to emulate Canon's BR-E1 remote
Stars: ✭ 22 (-62.71%)
Mutual labels:  bluetooth-low-energy
IoT-iBeacon
An Ionic app for indoor localization and navigation using BLE iBeacons.
Stars: ✭ 39 (-33.9%)
Mutual labels:  bluetooth-low-energy
Farm-Data-Relay-System
A system that uses ESP-NOW, LoRa, and other protocols to transport sensor data in remote areas without relying on WiFi.
Stars: ✭ 97 (+64.41%)
Mutual labels:  esp32
ESPecial
ESP32 automation with web interface and telegram bot
Stars: ✭ 77 (+30.51%)
Mutual labels:  esp32

esp32-hid-joystick

This is a Bluetooth Low Energy (BLE) HID joystick I put together using a WEMOS D32PRO and an Adafruit joystick.

Why?

The aim of this project is build a functional, cheap and open Joystick/Gamepad device using off the shelf parts, which is battery powered and connects to any PC/Mac/Phone using BLE.

This project currently uses ESP32 micro controller because:

  1. It is cheap and widely available.
  2. It has an open source SDK which is based on FreeRTOS.
  3. Has great out of the box examples of BLE HID devices, which I used as the basis for this project.
  4. All the peripherals I needed to make magic happen.

How?

The core of this software is its HID report, and esp_hidd_send_joystick_value which transmits the current state of the joystick.

To read the analogue joystick x and y values I am using the adc driver.

Building

This project uses esp-idf and requires a recent version with support for CMake.

Usage

The below image shows this joystick detected by chrome after being paired.

Gamepad Detected In Chrome

Handy gamepad tester used is located at http://luser.github.io/gamepadtest/

Assembly

TODO Circuit diagram.

J1 connector.

P6 3v3 P5 Sw01 GPIO_14 P4 Sw02 GPIO_25 P3 Sw03 GPIO_26 P2 Sw04 GPIO_27 P1 GND

J2 connector

P1 Sw10 GPIO_19 P2 Sw09 GPIO_18 P3 Sw08 GPIO_17 P4 Sw07 GPIO_16 P5 Sw06 GPIO_05 P6 Sw05 GPIO_04

LEFT_X GPIO_32 LEFT_Y GPIO_33 RIGHT_X GPIO_34 RIGHT_Y GPIO_35

TODO

  • Make a simple case and wire up a 1S battery
  • Cleanup demo code once I have done some integration testing.
  • Extend it to add a screen, this requires more HID stuff which is challenging.
  • Add add an identify option using an RGB LED so the user knows which is theirs. There is already an LED setup in the HID code.

Dependencies

References

License

This project is copyright Mark Wolfe and Espressif Systems (Shanghai) PTE LTD and is released under Apache 2.0 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].