Exemplo de Monitor Bluetooth com Arduino UNO R4 WiFi - Tutorial de Monitor Serial Sem Fio via BLE
Visão Geral
O exemplo de Monitor Bluetooth oferece um monitor serial sem fio, acessível pelo app DIYables Bluetooth STEM. Feito para o Arduino UNO R4 WiFi usando BLE (Bluetooth Low Energy) para enviar, sem fio e em tempo real, mensagens de status, saída de depuração e leituras de sensores para o seu smartphone. Ele também recebe comandos de texto enviados pelo app. Perfeito para depuração sem fio, monitoramento remoto e registro de eventos do sistema.
Nota: O Arduino UNO R4 WiFi só suporta BLE (Bluetooth Low Energy). Ele não suporta Bluetooth Clássico. O app DIYables Bluetooth suporta BLE e Bluetooth Clássico no Android, e BLE no iOS. Como esta placa usa BLE, o app funciona no Android e no iOS.
Recursos
Monitor Serial Sem Fio: envie mensagens de texto para o seu celular
Comunicação nos Dois Sentidos: envie comandos do app para o Arduino
Transmissão em Tempo Real: saída contínua, como no Serial Monitor
Tratamento de Comandos: processe comandos de texto vindos do app
Funciona no Android e no iOS: o BLE é suportado nas duas plataformas
Sem Necessidade de Pareamento: o BLE conecta automaticamente, sem pareamento manual
Baixo Consumo: o 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 Arduino UNO R4 WiFi ao seu computador usando um cabo USB.
Abra o Arduino IDE no seu computador.
Selecione a placa Arduino UNO R4 WiFi e a porta COM apropriada.
Vá até o ícone Libraries na barra lateral 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á pedido que você instale algumas outras dependências da biblioteca
Clique no botão Install All para instalar todas as dependências da biblioteca.
Código BLE
No Arduino IDE, vá em File Examples DIYables Bluetooth ArduinoBLE_Monitor para abrir o exemplo, ou copie o código acima e cole no editor do Arduino IDE
/* * DIYables Bluetooth Library - Bluetooth Monitor Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Monitor feature: * - Send real-time status messages to the mobile app * - Display system information and sensor readings * - Receive and process commands from the app * - Perfect for debugging and system monitoring * * Compatible Boards: * - Arduino UNO R4 WiFi * - Arduino Nano 33 BLE / BLE Sense * - Arduino Nano 33 IoT * - Arduino MKR WiFi 1010 * - Arduino Nano RP2040 Connect * - Any board supporting the ArduinoBLE library * * Setup: * 1. Upload the sketch to your Arduino * 2. Open Serial Monitor to see connection status * 3. Use DIYables Bluetooth App to connect and view monitor output * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */#include <DIYables_BluetoothServer.h>#include <DIYables_BluetoothMonitor.h>#include <platforms/DIYables_ArduinoBLE.h>// BLE Configurationconst char* DEVICE_NAME = "Arduino_Monitor";const char* SERVICE_UUID = "19B10000-E8F2-537E-4F6C-D104768A1214";const char* TX_UUID = "19B10001-E8F2-537E-4F6C-D104768A1214";const char* RX_UUID = "19B10002-E8F2-537E-4F6C-D104768A1214";// Create Bluetooth instancesDIYables_ArduinoBLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID);DIYables_BluetoothServer bluetoothServer(bluetooth);// Create Monitor app instanceDIYables_BluetoothMonitor bluetoothMonitor;// Variables for demounsignedlong lastUpdate = 0;constunsignedlong UPDATE_INTERVAL = 3000; // Send update every 3 secondsint messageCount = 0;bool ledState = false;voidsetup() {Serial.begin(9600);while (!Serial);Serial.println("DIYables Bluetooth - Monitor Example");// Initialize built-in LEDpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, LOW);// Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin();// Add monitor app to server bluetoothServer.addApp(&bluetoothMonitor);// Set up connection event callbacks bluetoothServer.setOnConnected([]() {Serial.println("Bluetooth connected!"); bluetoothMonitor.send("=== Arduino Monitor Connected ==="); bluetoothMonitor.send("System Ready"); bluetoothMonitor.send("Type HELP for available commands"); bluetoothMonitor.send(""); }); bluetoothServer.setOnDisconnected([]() {Serial.println("Bluetooth disconnected!"); });// Set up message handler for incoming commands bluetoothMonitor.onMonitorMessage([](const String& message) {Serial.print("Received command: ");Serial.println(message); handleCommand(message); });Serial.println("Waiting for Bluetooth connection...");}void handleCommand(const String& cmd) {if (cmd == "HELP") { bluetoothMonitor.send("Available Commands:"); bluetoothMonitor.send(" LED_ON - Turn LED on"); bluetoothMonitor.send(" LED_OFF - Turn LED off"); bluetoothMonitor.send(" STATUS - Show system status"); bluetoothMonitor.send(" CLEAR - Clear monitor (if supported)"); bluetoothMonitor.send(" HELP - Show this help"); }elseif (cmd == "LED_ON") {digitalWrite(LED_BUILTIN, HIGH); ledState = true; bluetoothMonitor.send("✓ LED turned ON"); }elseif (cmd == "LED_OFF") {digitalWrite(LED_BUILTIN, LOW); ledState = false; bluetoothMonitor.send("✓ LED turned OFF"); }elseif (cmd == "STATUS") { showStatus(); }elseif (cmd == "CLEAR") {// App should handle clearing the display bluetoothMonitor.send(""); }else { bluetoothMonitor.send("✗ Unknown command: " + cmd); bluetoothMonitor.send("Type HELP for available commands"); }}void showStatus() { bluetoothMonitor.send("=== System Status ===");// LED Status bluetoothMonitor.send("LED State: " + String(ledState ? "ON" : "OFF"));// Uptimeunsignedlong uptime = millis() / 1000; bluetoothMonitor.send("Uptime: " + String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s");// Free Memory (approximate for AVR) #ifdef __AVR__externint __heap_start, *__brkval;int freeMemory = (int) &freeMemory - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); bluetoothMonitor.send("Free Memory: " + String(freeMemory) + " bytes"); #endif// Messages sent bluetoothMonitor.send("Messages Sent: " + String(messageCount)); bluetoothMonitor.send("====================");}void sendPeriodicUpdate() { messageCount++;// Example of different message typesif (messageCount % 3 == 0) {// Send status update bluetoothMonitor.send("[INFO] Heartbeat #" + String(messageCount)); } elseif (messageCount % 5 == 0) {// Send simulated sensor readingint sensorValue = random(0, 1024); bluetoothMonitor.send("[SENSOR] Reading: " + String(sensorValue) + " (random demo value)"); }else {// Send timestamp bluetoothMonitor.send("[TIME] Uptime: " + String(millis() / 1000) + "s"); }// Optionally log to Serial as wellSerial.print("Sent update #");Serial.println(messageCount);}voidloop() {// Handle Bluetooth server communications bluetoothServer.loop();// Send periodic updates (only when connected)if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); sendPeriodicUpdate(); }delay(10);}
Clique no botão Upload no Arduino IDE para carregar o código no Arduino UNO R4 WiFi
Abra o Serial Monitor
Veja o resultado no Serial Monitor. Ele deve ficar parecido com o abaixo:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - Monitor Example
Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2
App para Celular
Instale o app DIYables Bluetooth no seu smartphone: Android | iOS
Nota: O app DIYables Bluetooth suporta BLE e Bluetooth Clássico no Android, e BLE no iOS. Como o Arduino UNO R4 WiFi usa BLE, o app funciona no Android e no iOS. Não é preciso pareamento manual para o BLE — basta procurar e conectar.
Abra o app DIYables Bluetooth
Ao abrir o app pela primeira vez, ele vai pedir permissões. Conceda as seguintes:
Permissão de Dispositivos por Perto (Android 12+) / permissão de Bluetooth (iOS) - necessária para procurar e conectar 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.
Encontre e toque em "Arduino_Monitor" nos resultados da busca para conectar.
Depois de conectado, o app volta automaticamente para a tela inicial. Selecione o app Monitor no menu de apps.
Nota: Você pode tocar no ícone de configurações na tela inicial para ocultar/mostrar apps na tela inicial. Para mais detalhes, veja o Manual do Usuário do DIYables Bluetooth App.
Você verá mensagens de status chegando na tela do monitor
Digite LED_ON no campo de entrada e toque em Send — o LED embutido do Arduino UNO R4 WiFi vai ACENDER, e o monitor vai exibir uma mensagem de confirmação
Agora volte ao Serial Monitor no Arduino IDE. Você verá:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
Bluetooth connected!
Sent update #1
Sent update #2
Sent update #3
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2
Personalização Criativa - Adapte o Código ao Seu Projeto
Enviar Mensagens
// Send text messages to the appbluetoothMonitor.send("System started");bluetoothMonitor.send("Temperature: " + String(temp, 1) + " °C");bluetoothMonitor.send("[ERROR] Sensor disconnected!");
Tratar os Comandos Recebidos
Use o callback onMonitorMessage() para receber os comandos digitados no app Monitor e reagir a eles:
Você pode adicionar quantos comandos personalizados precisar, incluindo mais blocos elseif. Por exemplo, adicione RELAY_ON / RELAY_OFF para controlar um relé, ou READ para disparar a leitura de um sensor — qualquer palavra que você digitar no app vira um comando.
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!