Exemplo de Medidor de Temperatura Bluetooth com Arduino UNO R4 WiFi - Tutorial de Exibição de Temperatura via BLE

Visão Geral

O exemplo de Temperatura Bluetooth oferece um medidor visual de temperatura pelo app DIYables Bluetooth STEM. Feito para o Arduino UNO R4 WiFi usando BLE (Bluetooth Low Energy) para exibir leituras de temperatura no seu smartphone, com faixa e unidade configuráveis. Perfeito para monitoramento de temperatura, estações meteorológicas, projetos de climatização (HVAC) e sensoriamento ambiental.

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.

Exemplo de Medidor de Temperatura Bluetooth com Arduino UNO R4 WiFi - Tutorial de Exibição de Temperatura via BLE

Recursos

  • Medidor Visual: um belo medidor de temperatura no smartphone
  • Faixa Configurável: defina os valores mínimo e máximo de temperatura
  • Unidade Personalizada: exiba °C, °F ou qualquer unidade personalizada
  • Atualizações em Tempo Real: envie as mudanças de temperatura em intervalos configuráveis
  • Solicitação Sob Demanda: o app pode pedir a temperatura atual
  • Funciona no Android e no iOS: o BLE é suportado nas duas plataformas
  • Sem Necessidade de Pareamento: o BLE conecta automaticamente, sem pareamento manual

Código Arduino UNO R4 WiFi

Passos Rápidos

Siga estas instruções passo a passo:

  • Se esta é a primeira vez que você usa o Arduino UNO R4 WiFi, consulte o guia de primeiros passos do Arduino UNO R4 WiFi.
  • 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.
Arduino UNO R4 DIYables Bluetooth library
  • 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.
Arduino UNO R4 DIYables Bluetooth dependency

Código BLE

  • No Arduino IDE, vá em File Examples DIYables Bluetooth ArduinoBLE_Temperature para abrir o exemplo, ou copie o código acima e cole no editor do Arduino IDE
/* * DIYables Bluetooth Library - Bluetooth Temperature Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Temperature feature: * - Display temperature sensor readings * - Configurable temperature range and unit * - Real-time temperature updates * * 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 * * Optional: Temperature sensor (DHT22, DS18B20, or analog thermistor) * * 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 temperature * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothTemperature.h> #include <platforms/DIYables_ArduinoBLE.h> // BLE Configuration const char* DEVICE_NAME = "Arduino_Temp"; 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 instances DIYables_ArduinoBLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Temperature app instance (min=-10°C, max=50°C, unit="°C") DIYables_BluetoothTemperature bluetoothTemperature(-10.0, 50.0, "°C"); // Variables for temperature simulation float currentTemperature = 25.0; unsigned long lastTempUpdate = 0; const unsigned long TEMP_UPDATE_INTERVAL = 2000; // Update every 2 seconds // Simulated temperature sensor reading float readTemperature() { // TODO: Replace with actual sensor reading // Examples: // - DHT22: dht.readTemperature() // - DS18B20: sensors.getTempCByIndex(0) // - Analog thermistor: analogToTemperature(analogRead(A0)) // Simulate temperature changes static float offset = 0; offset += random(-10, 11) / 10.0; // Random walk if (offset > 5.0) offset = 5.0; if (offset < -5.0) offset = -5.0; return 25.0 + offset; // Base temperature 25°C with variation } void setup() { Serial.begin(9600); while (!Serial); Serial.println("DIYables Bluetooth - Temperature Example"); // TODO: Initialize your temperature sensor here // Examples: // dht.begin(); // sensors.begin(); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add temperature app to server bluetoothServer.addApp(&bluetoothTemperature); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); // Send initial temperature reading float temp = readTemperature(); bluetoothTemperature.send(temp); Serial.print("Initial temperature sent: "); Serial.print(temp); Serial.println("°C"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Optional: Handle requests for temperature value bluetoothTemperature.onTemperatureRequest([]() { float temp = readTemperature(); bluetoothTemperature.send(temp); Serial.print("Temperature requested - Sent: "); Serial.print(temp); Serial.println("°C"); }); // You can change temperature configuration at runtime: // bluetoothTemperature.setRange(-40.0, 125.0); // Wide range for industrial sensors // bluetoothTemperature.setUnit("°F"); // Change to Fahrenheit Serial.println("Waiting for Bluetooth connection..."); } void loop() { // Handle Bluetooth server communications bluetoothServer.loop(); // Send temperature updates periodically (only when connected) if (bluetooth.isConnected() && millis() - lastTempUpdate >= TEMP_UPDATE_INTERVAL) { lastTempUpdate = millis(); // Read temperature from sensor currentTemperature = readTemperature(); // Send to Bluetooth app bluetoothTemperature.send(currentTemperature); // Print to Serial Monitor Serial.print("Temperature: "); Serial.print(currentTemperature); Serial.println("°C"); } 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
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - Temperature 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.
DIYables Bluetooth App - Home Screen with Scan Button
  • Encontre e toque em "Arduino_Temp" nos resultados da busca para conectar.
  • Depois de conectado, o app volta automaticamente para a tela inicial. Selecione o app Temperature no menu de apps.
DIYables Bluetooth App - Home Screen with Temperature App

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á um medidor de temperatura exibindo a leitura atual, com a faixa e a unidade configuradas
DIYables Bluetooth App - Temperature Gauge Screen

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
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
Bluetooth connected! Temperature: 24.50 °C Temperature: 24.80 °C Temperature: 25.10 °C
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Personalização Criativa - Adapte o Código ao Seu Projeto

Configurar a Faixa e a Unidade de Temperatura

// Celsius: -10 to 50 DIYables_BluetoothTemperature bluetoothTemp(bluetoothServer, -10.0, 50.0, "°C"); // Fahrenheit: 0 to 120 DIYables_BluetoothTemperature bluetoothTemp(bluetoothServer, 0.0, 120.0, "°F"); // Custom range for industrial use DIYables_BluetoothTemperature bluetoothTemp(bluetoothServer, -40.0, 200.0, "°C");

Enviar Atualizações de Temperatura

// Send temperature value to the app bluetoothTemp.send(25.5); // Read from a real sensor and send float temp = readTemperatureSensor(); bluetoothTemp.send(temp);

Tratar as Solicitações de Temperatura

bluetoothTemp.onTemperatureRequest([]() { float temp = readTemperatureSensor(); bluetoothTemp.send(temp); Serial.print("Requested: "); Serial.println(temp); });

Exemplos de Programação

Sensor de Temperatura DS18B20

#include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(2); DallasTemperature sensors(&oneWire); DIYables_BluetoothTemperature bluetoothTemp(bluetoothServer, -10.0, 50.0, "°C"); void setup() { sensors.begin(); bluetoothTemp.onTemperatureRequest([]() { sensors.requestTemperatures(); float temp = sensors.getTempCByIndex(0); bluetoothTemp.send(temp); }); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 2000) { lastTime = millis(); sensors.requestTemperatures(); float temp = sensors.getTempCByIndex(0); bluetoothTemp.send(temp); } }

Sensor DHT22 com Fahrenheit

#include <DHT.h> DHT dht(2, DHT22); DIYables_BluetoothTemperature bluetoothTemp(bluetoothServer, 0.0, 120.0, "°F"); void setup() { dht.begin(); bluetoothTemp.onTemperatureRequest([]() { float temp = dht.readTemperature(true); // Fahrenheit if (!isnan(temp)) { bluetoothTemp.send(temp); } }); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 2000) { lastTime = millis(); float temp = dht.readTemperature(true); if (!isnan(temp)) { bluetoothTemp.send(temp); } } }

Solução de Problemas

Problemas Comuns

1. Não consigo encontrar o dispositivo no app

  • Verifique se o Arduino UNO R4 WiFi está ligado e se o sketch foi carregado
  • Verifique se o Bluetooth do seu celular está ativado
  • No Android 11 e anteriores, ative também os serviços de Localização

2. A temperatura não atualiza

  • Verifique se send() está sendo chamado no loop
  • Confirme a temporização do intervalo de atualização
  • Garanta que bluetoothServer.loop() seja chamado

3. A temperatura mostra a faixa errada

  • Verifique os valores mín./máx. no construtor
  • Confirme que o texto da unidade está correto
  • O valor da temperatura precisa estar dentro da faixa configurada

4. A leitura do sensor é NaN

  • Confirme as conexões da ligação do sensor
  • Verifique a alimentação do sensor
  • Adicione uma verificação com isnan() antes de enviar

5. O upload falha ou a placa não é reconhecida

  • Instale o pacote de placas Arduino UNO R4 mais recente pelo Board Manager
  • Tente outro cabo ou outra porta USB

Ideias de Projetos

  • Monitor de temperatura ambiente
  • Controlador de clima para estufa
  • Termômetro de geladeira/freezer
  • Display de estação meteorológica
  • Monitor de temperatura de aquário

Próximos Passos

Depois de dominar o exemplo de Temperatura Bluetooth, experimente:

  1. Bluetooth Analog Gauge - Para exibição em medidor de uso geral
  2. Bluetooth Plotter - Para registrar a temperatura ao longo do tempo
  3. Bluetooth Table - Para exibir vários sensores
  4. Multiple Bluetooth Apps - Combinando a temperatura com outros apps

Suporte

Para ajuda adicional:

  • Consulte a documentação de Referência da API
  • Fóruns da comunidade Arduino

※ NOSSAS MENSAGENS

  • 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!