Exemplo de Vários Apps Bluetooth com ESP32 - Tutorial para Combinar Todos os Apps Bluetooth em um Só Projeto
Visão Geral
O exemplo Multiple Bluetooth Apps mostra como combinar várias interfaces de apps Bluetooth em um único projeto ESP32. Execute Monitor, Chat, Slider, Joystick, Temperature, Plotter, Table, Analog Gauge e Rotator todos ao mesmo tempo — acessíveis pelo app DIYables Bluetooth STEM. Projetado para placas ESP32, com suporte a conexões BLE (Bluetooth Low Energy) e Bluetooth Clássico. É ideal para projetos complexos que precisam de várias interfaces de controle e exibição ao mesmo tempo.
Este exemplo oferece suporte a dois modos de Bluetooth:
ESP32 BLE (Bluetooth Low Energy): Funciona no Android e no iOS
ESP32 Bluetooth Clássico: Funciona somente no Android. O iOS não oferece suporte ao Bluetooth Clássico. Use o BLE se precisar de suporte ao iOS.
Recursos
9 Apps em Um: Monitor, Chat, Slider, Joystick, Temperature, Plotter, Table, Analog Gauge e Rotator rodando ao mesmo tempo
Callbacks Independentes: Cada app tem seus próprios tratadores de eventos
Temporização Independente: Intervalos de atualização diferentes para cada app
Troca de Apps: Alterne livremente entre os apps no aplicativo do celular
BLE e Bluetooth Clássico: Escolha o modo Bluetooth que melhor atende ao seu projeto
Multiplataforma: O modo BLE funciona no Android e no iOS; o Bluetooth Clássico funciona no Android
Opção de Baixo Consumo: O modo BLE consome menos energia que o Bluetooth Clássico
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Conecte a placa ESP32 ao seu computador usando um cabo USB.
Abra o Arduino IDE no seu computador.
Selecione a placa ESP32 e a porta COM apropriadas.
Acesse o ícone Libraries na barra à esquerda do Arduino IDE.
Pesquise "DIYables Bluetooth" e encontre a biblioteca DIYables Bluetooth, da DIYables
Clique no botão Install para instalar a biblioteca.
Será solicitado que você instale outras dependências da biblioteca
Clique no botão Install All para instalar todas as dependências da biblioteca.
> Importante: Como este exemplo inclui muitas bibliotecas de apps Bluetooth, o sketch compilado é maior que o normal. Você precisa selecionar o esquema de partição correto (veja abaixo).
Escolha um dos dois modos de Bluetooth abaixo, de acordo com a sua necessidade:
Código ESP32 Bluetooth Clássico (funciona com o app somente no Android)
Observação: O Bluetooth Clássico NÃO é compatível com o iOS. Se você precisa de suporte ao iOS, use o código BLE abaixo.
No Arduino IDE, vá em File Examples DIYables Bluetooth Esp32Bluetooth_MultipleApps, ou copie o código acima e cole no editor do Arduino IDE
Importante: Vá em Tools > Partition Scheme e selecione "Huge APP (3MB No OTA/1MB SPIFFS)". Isso é obrigatório, porque o exemplo de vários apps usa bem mais espaço de flash.
Clique no botão Upload do Arduino IDE para carregar o código no ESP32
Abra o Serial Monitor
Confira o resultado no Serial Monitor. Ele deve ficar como abaixo:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - ESP32 Multiple Apps Example
Waiting for Bluetooth connection...
Ln 11, Col 1
ESP32 Dev Module on COM15
2
Código ESP32 BLE (funciona com o app no Android e no iOS)
No Arduino IDE, vá em File Examples DIYables Bluetooth Esp32BLE_MultipleApps, ou copie o código acima e cole no editor do Arduino IDE
Importante: Vá em Tools > Partition Scheme e selecione "Huge APP (3MB No OTA/1MB SPIFFS)". Isso é obrigatório, porque o exemplo de vários apps usa bem mais espaço de flash.
Clique no botão Upload do Arduino IDE para carregar o código no ESP32
Abra o Serial Monitor
Confira o resultado no Serial Monitor. Ele deve ficar como abaixo:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - ESP32 BLE Multiple Apps Example
Waiting for Bluetooth connection...
Ln 11, Col 1
ESP32 Dev Module on COM15
2
App para Celular
Instale o app DIYables Bluetooth no seu smartphone: Android | iOS
Se você estiver usando o código ESP32 Bluetooth Clássico, é preciso parear o ESP32 com o seu celular Android antes de abrir o app:
Vá em Configurações > Bluetooth do seu celular
Verifique se o Bluetooth está ligado
Seu celular vai procurar os dispositivos disponíveis
Encontre e toque em "ESP32 Multi-App" na lista de dispositivos disponíveis
Confirme a solicitação de pareamento (não é necessário PIN)
Aguarde até aparecer "Paired" abaixo do nome do dispositivo
Se você estiver usando o código ESP32 BLE, não é necessário parear. Basta ir para o próximo passo.
Abra o app DIYables Bluetooth
Ao abrir o app pela primeira vez, ele vai pedir permissões. Conceda as seguintes:
Permissão de Dispositivos Próximos (Android 12+) / permissão de Bluetooth (iOS) - necessária para procurar e conectar a dispositivos Bluetooth
Permissão de Localização (somente Android 11 e anteriores) - exigida por versões mais antigas do Android para procurar dispositivos BLE
Verifique se o Bluetooth está ligado no seu celular
Na tela inicial, toque no botão Connect. O app vai procurar dispositivos BLE e Bluetooth Clássico.
Encontre e toque no seu dispositivo nos resultados da busca para conectar:
Para Bluetooth Clássico: toque em "ESP32 Multi-App"
Para BLE: toque em "ESP32BLE Multi-App"
Depois de conectado, o app volta automaticamente para a tela inicial. A tela inicial mostra todos os apps disponíveis. Os 9 apps inicializados no código Arduino vão responder e funcionar — os outros apps da tela inicial vão aparecer, mas não vão funcionar com este sketch.
Observação: Você pode tocar no ícone de configurações na tela inicial para ocultar/mostrar apps. Para mais detalhes, consulte o Manual do Usuário do DIYables Bluetooth App.
Toque em alguns dos seguintes apps para abri-los e interagir com o ESP32: Monitor, Chat, Slider, Joystick, Temperature, Plotter, Table, Analog Gauge, Rotator
Alterne livremente entre os apps — todos compartilham a mesma conexão Bluetooth
Agora olhe de volta para o Serial Monitor no Arduino IDE. Você verá:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
Personalização Criativa - Adapte o Código ao Seu Projeto
Como Funcionam Vários Apps
Cada app é criado como um objeto separado e registrado no mesmo servidor Bluetooth. Eles compartilham a única conexão Bluetooth, mas funcionam de forma independente:
// Include all app headers#include <DIYables_BluetoothMonitor.h>#include <DIYables_BluetoothChat.h>#include <DIYables_BluetoothSlider.h>#include <DIYables_BluetoothJoystick.h>#include <DIYables_BluetoothTemperature.h>#include <DIYables_BluetoothPlotter.h>#include <DIYables_BluetoothTable.h>#include <DIYables_BluetoothAnalogGauge.h>#include <DIYables_BluetoothRotator.h>// Create app instancesDIYables_BluetoothMonitor bluetoothMonitor;DIYables_BluetoothChat bluetoothChat;DIYables_BluetoothSlider bluetoothSlider(0, 100, 1);DIYables_BluetoothJoystick bluetoothJoystick;DIYables_BluetoothTemperature bluetoothTemperature(-10.0, 50.0, "°C");DIYables_BluetoothPlotter bluetoothPlotter;DIYables_BluetoothTable bluetoothTable;DIYables_BluetoothAnalogGauge bluetoothGauge(0.0, 100.0, "km/h");DIYables_BluetoothRotator bluetoothRotator(ROTATOR_MODE_LIMITED, 0, 180);// Register all apps with the Bluetooth serverbluetoothServer.addApp(bluetoothMonitor);bluetoothServer.addApp(bluetoothChat);bluetoothServer.addApp(bluetoothSlider);bluetoothServer.addApp(bluetoothJoystick);bluetoothServer.addApp(bluetoothTemperature);bluetoothServer.addApp(bluetoothPlotter);bluetoothServer.addApp(bluetoothTable);bluetoothServer.addApp(bluetoothGauge);bluetoothServer.addApp(bluetoothRotator);
Você não precisa incluir todos os 9 apps. Escolha apenas os que você precisa:
// Example: Only Monitor + Slider + Temperature#include <DIYables_BluetoothMonitor.h>#include <DIYables_BluetoothSlider.h>#include <DIYables_BluetoothTemperature.h>DIYables_BluetoothMonitor bluetoothMonitor;DIYables_BluetoothSlider bluetoothSlider(0, 100, 1);DIYables_BluetoothTemperature bluetoothTemperature(-10.0, 50.0, "°C");voidsetup() {// ... Bluetooth server setup ... bluetoothServer.addApp(bluetoothMonitor); bluetoothServer.addApp(bluetoothSlider); bluetoothServer.addApp(bluetoothTemperature);// Only these 3 apps will appear in the mobile app}
Tratar Eventos de Conexão
bluetoothServer.setOnConnected([]() {Serial.println("Bluetooth connected!");// Send initial values for all apps bluetoothTemperature.send(currentTemperature); bluetoothGauge.send(currentGaugeValue); bluetoothRotator.send(currentAngle);});bluetoothServer.setOnDisconnected([]() {Serial.println("Bluetooth disconnected!");});
Como Usar Vários Apps
Troca de Apps
No app DIYables Bluetooth:
A tela inicial mostra todos os apps registrados como botões
Toque em qualquer app para abri-lo
Use o botão voltar ou o botão início para retornar e alternar para outro app
Todos os apps continuam rodando no ESP32, independentemente de qual app esteja sendo exibido
Fluxo de Dados
Apps de Entrada (Slider, Joystick, Rotator, Chat): Enviam dados do celular para o ESP32
Apps de Saída (Monitor, Temperature, Plotter, Table, Gauge): Enviam dados do ESP32 para o celular
Apps Bidirecionais (Chat, Monitor): Podem enviar e receber dados
> Observação para Vários Apps: Como vários apps enviam dados ao mesmo tempo, a maior taxa de dados do Bluetooth Clássico pode ser vantajosa se você tiver muitos apps com atualização rápida (por exemplo, o plotter a 100ms). Para projetos alimentados por bateria, o BLE ainda é recomendado.
Solução de Problemas
Problemas Comuns
1. Não consigo encontrar o dispositivo no app
Verifique se o ESP32 está ligado e se o sketch foi carregado
Para BLE: verifique se o Bluetooth e a Localização do seu celular estão ativados
Para Bluetooth Clássico: pareie o dispositivo primeiro nas configurações de Bluetooth do celular
Verifique se o esquema de partição correto está selecionado (Huge APP) — isso é crítico para exemplos com vários apps
2. Sketch grande demais / espaço insuficiente
No Arduino IDE, vá em Tools > Partition Scheme e selecione "Huge APP (3MB No OTA/1MB SPIFFS)" ou "No OTA (Large APP)"
O esquema de partição padrão oferece apenas ~1,2MB para o código do app, o que não é suficiente para o exemplo de vários apps
Essa configuração oferece ~3MB ao sacrificar a partição de OTA (atualização over-the-air)
Se ainda ficar grande demais, remova os apps de que você não precisa
3. Alguns apps não aparecem no app do celular
Garanta que cada app esteja registrado com bluetoothServer.addApp()
Verifique se os headers incluídos correspondem aos objetos de app criados
Confirme que todos os apps foram registrados antes de bluetoothServer.begin()
4. As atualizações de dados estão lentas ou atrasadas
Reduza o número de apps enviando dados ao mesmo tempo
Aumente os intervalos de atualização dos apps menos críticos
O BLE tem largura de banda limitada — escalone as atualizações ao longo do tempo
5. O ESP32 trava ou reinicia
Verifique a memória heap disponível com ESP.getFreeHeap()
Reduza o número de linhas da tabela ou de amostras do plotter
Garanta que a fonte de alimentação seja adequada (USB 3.0 ou fonte externa)
6. A conexão cai com frequência
Chegue mais perto do ESP32 (reduza a distância)
Reduza a quantidade total de dados enviados
Escalone os intervalos de atualização para que os apps não enviem todos ao mesmo tempo
Controlador de aquário (Temperature + Slider + Table + Monitor)
Rastreador solar (Rotator + Gauge + Plotter + Table)
Monitor de energia (Gauge + Plotter + Table + Monitor)
Próximos Passos
Agora que você dominou a combinação de vários apps Bluetooth, você tem todas as ferramentas para criar projetos complexos com ESP32 e interfaces ricas para celular. Explore o tutorial de cada app individual para um conhecimento mais profundo da API:
Bluetooth Monitor - Serial monitor baseado em texto
Bluetooth Chat - Mensagens de duas vias
Bluetooth Slider - Controle de valores com sliders
Bluetooth Joystick - Entrada direcional 2D
Bluetooth Temperature - Exibição de medidor de temperatura
Bluetooth Plotter - Gráfico de dados em tempo real
Bluetooth Table - Exibição de dados estruturados
Bluetooth Analog Gauge - Exibição de medidor analógico
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!