This app was mentioned in 9 comments, with an average of 1.44 upvotes
This is a loaded question. What do you have experience with? As to the app inventor that looks neat, but it also looks like you program it with scratch. You might try a Arduino + Bluetooth specific android app like this or this if you sole goal is to get something working on the phone with bluetooth and arduino quickly. I'm sure they have similar apps for iPhone.
It is not exactly a game controller, but I found an Android App that allow you to design your bluetooth controller, it can read and write to the ESP over bluetooth and get infos from your phone sensor like accelero. It even generate the arduino code for the controls you set !
https://play.google.com/store/apps/details?id=com.keuwl.arduinobluetooth&hl=fr
Has the controls are super easy to setup, this app is a great developpement tools: no need to plug buttons or potentiometers when you want test something.
Only 2 little cons :
- need to reconnect when you leave panel screen
- using phone screen drains phone batterie
Ohhh cool! I did a similar thing before I had a 3D printer and made it out of cardboard and it didn't have any tracks, but it used the same electronics. I recommend using this app to control it https://play.google.com/store/apps/details?id=com.keuwl.arduinobluetooth you can add your own button layout and stuff with it.
If you're using android, I highly recommend using https://play.google.com/store/apps/details?id=com.keuwl.arduinobluetooth it's an amazing app, allowing you to make your own digital buttons that send code over bluetooth to your hc-05/6
It's called Bluetooth Electronics. I don't know so many apps but this one is very good for a free app, for quickly creating basic buttons, graphs, etc.
I'm not really familiar with micropython but it looks like it should be achievable fairly easily with the current release.
There's several routes you could go. Probably the easiest is to use a second esp32 as your controller and have them communicate over ble or even Bluetooth classic.
It looks like micropython can run a web server, so hosting a small webapp with a touch joystick that you can access from a smartphone should be doable. Websockets would be my go-to for sending the control messages. Looks like websocket server support is lacking but someone's done one here that seems to work.
Alternatively a native smartphone app communicating over ble would be ideal if you've done mobile development before.
If not then an easy option might be to use something like this app which seems to be designed for hc-05 / hc-06 Bluetooth modules, but getting it to work with an esp32 shouldn't be too hard.
https://play.google.com/store/apps/details?id=com.keuwl.arduinobluetooth&hl=en
You can make your own display using drag and drop components, and select what serial data they output. (limited to start string, Value, end string)
The value is an ASCII encoded value, which is a bit wasteful - so instead of start-string, byte, end-string: the byte is converted to ASCII which means as soon as you go higher than 9 it starts using 2 bytes, then 3 bytes when you hit 100.
I balked at programming an Android interface, so this was perfect.
This one is for Android. They even show a humidity/temperature demo. https://play.google.com/store/apps/details?id=com.keuwl.arduinobluetooth
I use the "Bluetooth Electronics" app for android it has a library for displaying weather type sensors. https://play.google.com/store/apps/details?id=com.keuwl.arduinobluetooth