Using ESP32S3 with Bluetooth for Camera Control - NO commands work #894
Replies: 1 comment 1 reply
-
|
Hola, no se si te podrá servir, pero yo tuve problemas para obtener el ssid y la contraseña de la wifi de mi gopro 10, no habia manera siguiendo la api de gopro. Al final lo conseguí creando un archivo de consulta de parametros a la misma gopro, ahi pude ver como obtener la ssid y la contraseña, el caso es que eran unos parametros distintos (era mas como entrar por otra puerta) y así lo pude hacer funcionar. Se que no es el mismo caso, pero hacer una consulta con codigo a la gopro puede que te diga lo que tienes que poner exactamente. Google transalte: |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I've spent the better part of 4 full days trying to get my ESP32S3 device to connect and issue the simplest commands; shutter commands. I've read all of the bluetooth online docs and went through as many tutorials as I can find, as well as many many online searches. I've tried using AdruinoBLE, straight BLE, and NimBLE libraries. I can scan, see, and connect (pair) to the GoPro ServiceUUID "fea6" and then poll the different UUID's for communicating the GoPro.
I'm using a GoPro Hero 13 Black. Running firmware v02.10.00
I'm using using a SparkFun ESP32-S3 with 2.4GHz Wifi and BLE 5 capabilities
I am using latest BLE libraries built into Arduino and AurduioBLE, NimBLE.
I ran the .net C# version of the demo project with my Windows11 computer and it connects and issues the shutter commands fine.
I ran the LightBlue app on my iPhone, selected Big Endian, 4byte max and set to Hex and wrote the value 03010101 followed by 03010100 to the "b5f90072-aa8d-11e3-9046-0002a5d5c51b" characteristic and it turns on/off the camera just fine.
If I run my Arduino code and send a characteristic->writeValue() command using any of the combinations below, nothing works. The camera doesn't respond and the command 'appears' to be successful. No failures, but no responses either with the notify property "b5f90073-aa8d-11e3-9046-0002a5d5c51b"
This the reference;
https://gopro.github.io/OpenGoPro/ble/protocol/data_protocol.html
(yes, i realize some of these aren't really valid, but i was grasping for straws)
uint8_t data[4] = { 0x03, 0x01, 0x01, 0x01 };
uint8_t data[4] = { 0x01, 0x01, 0x01, 0x03 };
uint8_t data[4] = { 0x3, 0x1, 0x1, 0x1 };
uint8_t data[4] = { 0x1, 0x1, 0x1, 0x3 };
uint8_t data[4] = { 3, 1, 1, 1 };
uint8_t data[4] = { 1, 1, 1, 3 };
uint8_t data = 0x3111;
uint8_t data = 0x1113;
The list above is hardly all of the different variations and attempts I made to issue a command. Including using other characteristics for other commands as well. I also tries creating a uint32_t string and doing a big-endian conversion of it to uint8_t and either i wasn't doing it right or
From all of my research, the Open GoPro documentation indicates that you should send Big Endian data unless otherwise specified. The ESP32-S3 libraries (from my research) indicate they they use Little Endian. So I'm at a complete loss here. I can normally figure this kind of problem out, but I think its time to ask for some help. I typically code in other languages, so it's been a while since i did a lot of c/c++ dev work, so forgive my mess. At this point, I'm just building the skills/framework in test projects.
Below is the code I'm using, which is an example sketch that comes with Arduino. Most of it doesn't apply. I just commented out what i wasn't using for testing. After it creates a BLE connection to the GoPro, it simply tries to write a shutter on command every 5 seconds inside the loop. Any help on how to properly send these commands would be GREATLY appreciated!
Beta Was this translation helpful? Give feedback.
All reactions