Arduino Nano ESP32 Bluetooth Analoges Gauge Beispiel - Gauge-Anzeige via BLE Tutorial

Übersicht

Dieses Beispiel demonstriert eine analoge Gauge-Anzeige auf dem Arduino Nano ESP32 mit BLE (Bluetooth Low Energy) über die DIYables Bluetooth STEM App. Zeigen Sie einen beliebigen Wert auf einem Zeigerinstrument mit konfigurierbarem Bereich und Einheit auf Ihrem Smartphone an. Geeignet für Tachometer, Druckmesser, Drehzahlanzeigen und ähnliche Anwendungen.

Hinweis: Der Arduino Nano ESP32 unterstützt nur BLE — klassisches Bluetooth wird nicht unterstützt. Die DIYables Bluetooth App funktioniert auf Android und iOS mit BLE.

Arduino Nano ESP32 Bluetooth Analog Gauge Example - Gauge Display via BLE Tutorial

Eigenschaften

  • Analoge Gauge-Anzeige: Zeigerinstrument auf Ihrem Smartphone
  • Konfigurierbarer Bereich: Setzen Sie Mindest- und Höchstwerte
  • Benutzerdefinierte Einheit: Zeigen Sie km/h, U/min, PSI oder eine benutzerdefinierte Einheit an
  • Schnelle Aktualisierungen: Bis zu 5 Aktualisierungen pro Sekunde (200 ms Intervall)
  • Anforderung auf Abruf: Die App kann den aktuellen Wert jederzeit anfordern
  • Android & iOS Unterstützung: BLE ist mit beiden Plattformen kompatibel
  • Keine Kopplung erforderlich: BLE verbindet sich ohne manuelle Kopplung

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-C
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Arduino Nano ESP32 Code

Schnellschritte

  • Neu beim Arduino Nano ESP32? Beginnen Sie mit dem Arduino Nano ESP32 Einstiegsleitfaden.
  • Verbinden Sie den Arduino Nano ESP32 über USB mit Ihrem Computer.
  • Öffnen Sie die Arduino IDE.
  • Wählen Sie das Arduino Nano ESP32 Board und den richtigen COM-Port.
  • Klicken Sie auf das Symbol Bibliotheken in der linken Seitenleiste.
  • Suchen Sie nach "DIYables Bluetooth" und wählen Sie die DIYables Bluetooth-Bibliothek von DIYables.
  • Klicken Sie auf Installieren.
Arduino Nano ESP32 DIYables Bluetooth-Bibliothek
  • Wenn Sie aufgefordert werden, Abhängigkeiten zu installieren, klicken Sie auf Alle installieren.
Arduino Nano ESP32 DIYables Bluetooth-Abhängigkeit

BLE Code

  • Öffnen Sie in der Arduino IDE Datei Beispiele DIYables Bluetooth ArduinoBLE_AnalogGauge, oder fügen Sie den Code in den Editor ein.
/* * DIYables Bluetooth Library - ESP32 BLE Analog Gauge Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Analog Gauge feature: * - Display values on an analog meter/gauge * - Configurable range and unit * - Perfect for sensor monitoring (speed, pressure, voltage, etc.) * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothAnalogGauge.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Gauge"; 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_Esp32BLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Analog Gauge app instance (min=0, max=100, unit="km/h") DIYables_BluetoothAnalogGauge bluetoothGauge(0.0, 100.0, "km/h"); // Variables for gauge value float currentValue = 0.0; unsigned long lastUpdate = 0; const unsigned long UPDATE_INTERVAL = 200; // Update every 200ms // Optional: Analog input pin for sensor const int ANALOG_PIN = A0; // ESP32 ADC pin // Function to read sensor value float readSensorValue() { // TODO: Replace with actual sensor reading // Option 1: Read from analog pin and map to gauge range // int rawValue = analogRead(ANALOG_PIN); // return map(rawValue, 0, 4095, 0, 100); // ESP32 has 12-bit ADC // Option 2: Simulated data (sine wave) static float phase = 0; phase += 0.05; if (phase > 2 * PI) phase = 0; return 50 + 50 * sin(phase); // Oscillates between 0-100 } void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Analog Gauge Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add gauge app to server bluetoothServer.addApp(&bluetoothGauge); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); currentValue = readSensorValue(); bluetoothGauge.send(currentValue); Serial.print("Initial value sent: "); Serial.print(currentValue); Serial.print(" "); Serial.println(bluetoothGauge.getUnit()); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); bluetoothGauge.onValueRequest([]() { currentValue = readSensorValue(); bluetoothGauge.send(currentValue); Serial.print("Value requested - Sent: "); Serial.print(currentValue); Serial.print(" "); Serial.println(bluetoothGauge.getUnit()); }); Serial.println("Waiting for Bluetooth connection..."); Serial.print("Gauge range: "); Serial.print(bluetoothGauge.getMin()); Serial.print(" - "); Serial.print(bluetoothGauge.getMax()); Serial.print(" "); Serial.println(bluetoothGauge.getUnit()); } void loop() { bluetoothServer.loop(); if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); currentValue = readSensorValue(); bluetoothGauge.send(currentValue); Serial.print("Gauge: "); Serial.print(currentValue, 1); Serial.print(" "); Serial.println(bluetoothGauge.getUnit()); } delay(10); }
  • Klicken Sie auf Upload, um die Skizze auf das Board hochzuladen.
  • Öffnen Sie den Serial Monitor.
  • Die Serial Monitor-Ausgabe sollte folgendermaßen aussehen:
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - Analog Gauge Example Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Mobile App

  • Installieren Sie die DIYables Bluetooth App auf Ihrem Smartphone: Android | iOS

Hinweis: Die DIYables Bluetooth App funktioniert auf Android und iOS mit BLE. Keine manuelle Kopplung erforderlich.

  • Starten Sie die DIYables Bluetooth App.
  • Erteilen Sie beim ersten Start die folgenden Berechtigungen:
    • Nahegelegene Geräte (Android 12+) / Bluetooth (iOS) — erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Standort (nur Android 11 und älter) — erforderlich von älteren Android-Versionen zum Scannen von BLE
  • Stellen Sie sicher, dass Bluetooth auf Ihrem Gerät aktiviert ist.
  • Tippen Sie auf Verbinden auf dem Startbildschirm. Die App scannt nach BLE-Geräten.
DIYables Bluetooth App - Startbildschirm mit Scan-Schaltfläche
  • Tippen Sie auf "Arduino_Gauge" in den Scan-Ergebnissen.
  • Kehren Sie nach der Verbindung zum Startbildschirm zurück und öffnen Sie die Analog Gauge App.
DIYables Bluetooth App - Startbildschirm mit Analog Gauge App

Tippen Sie auf das Einstellungssymbol auf dem Startbildschirm, um Apps anzuzeigen oder auszublenden. Weitere Informationen finden Sie im DIYables Bluetooth App Benutzerhandbuch.

  • Das analoge Gauge zeigt Werte mit sanfter Nadelbewegung an und simuliert einen Tachometer.
DIYables Bluetooth App - Analog Gauge Screen

Sehen Sie sich jetzt den Serial Monitor in der Arduino IDE an. Sie werden sehen:

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Bluetooth connected! Gauge value: 50.00 km/h Gauge value: 59.76 km/h Gauge value: 68.78 km/h
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Kreative Anpassung - Passen Sie den Code an Ihr Projekt an

Gauge Bereich und Einheit konfigurieren

// Speedometer: 0-200 km/h DIYables_BluetoothAnalogGauge bluetoothGauge(bluetoothServer, 0.0, 200.0, "km/h"); // Pressure gauge: 0-100 PSI DIYables_BluetoothAnalogGauge bluetoothGauge(bluetoothServer, 0.0, 100.0, "PSI"); // RPM gauge: 0-8000 RPM DIYables_BluetoothAnalogGauge bluetoothGauge(bluetoothServer, 0.0, 8000.0, "RPM"); // Percentage: 0-100% DIYables_BluetoothAnalogGauge bluetoothGauge(bluetoothServer, 0.0, 100.0, "%");

Gauge-Werte senden

// Send a value to the gauge bluetoothGauge.send(75.5); // Read from sensor and send float sensorValue = analogRead(A0) * (100.0 / 1023.0); bluetoothGauge.send(sensorValue);

Wertanforderungen verarbeiten

bluetoothGauge.onValueRequest([]() { float value = readSensor(); bluetoothGauge.send(value); Serial.print("Requested: "); Serial.println(value); });

Programmierbeispiele

Potentiometer Gauge

DIYables_BluetoothAnalogGauge bluetoothGauge(bluetoothServer, 0.0, 100.0, "%"); void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 200) { lastTime = millis(); float percent = analogRead(A0) * (100.0 / 1023.0); bluetoothGauge.send(percent); } }

Batteriestand-Monitor

DIYables_BluetoothAnalogGauge bluetoothGauge(bluetoothServer, 0.0, 100.0, "%"); float readBatteryLevel() { float voltage = analogRead(A0) * (5.0 / 1023.0) * 2; // voltage divider float percent = map(voltage * 100, 300, 420, 0, 100); return constrain(percent, 0, 100); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 1000) { lastTime = millis(); bluetoothGauge.send(readBatteryLevel()); } }

Fehlerbehebung

Häufige Probleme

1. Gerät nicht in der App sichtbar

  • Bestätigen Sie, dass das Board eingeschaltet ist und die Skizze hochgeladen wurde
  • Überprüfen Sie, ob Bluetooth auf Ihrem Telefon aktiviert ist
  • Aktivieren Sie bei Android 11 und älter auch die Standortdienste

2. Gauge wird nicht aktualisiert

  • Überprüfen Sie, ob send() innerhalb der Schleife aufgerufen wird
  • Überprüfen Sie die Timing des Aktualisierungsintervalls
  • Bestätigen Sie, dass bluetoothServer.loop() bei jeder Iteration aufgerufen wird

3. Gauge zeigt falschen Bereich an

  • Überprüfen Sie die Min/Max-Werte im Konstruktor
  • Bestätigen Sie, dass die Einheitenzeichenfolge korrekt ist
  • Werte außerhalb des konfigurierten Bereichs werden geklemmt

4. Nadel springt unregelmäßig

  • Wenden Sie Glättung oder Mittelwertbildung auf Sensormessungen an
  • Reduzieren Sie die Aktualisierungsfrequenz, falls erforderlich
  • Überprüfen Sie auf verrauschte analoge Eingänge

5. Upload schlägt fehl oder Board wird nicht erkannt

  • Installieren Sie das neueste Arduino Nano ESP32 Board Package über Board Manager
  • Versuchen Sie ein anderes USB-Kabel oder einen anderen Port

Projektideen

  • Tachometer für RC-Auto
  • Druckmesser für pneumatische Systeme
  • Batteriestand-Anzeige
  • U/min-Anzeige für Motoren
  • Signalstärkemesser

Nächste Schritte

Nach Abschluss des Bluetooth Analog Gauge Beispiels erkunden Sie:

  1. Bluetooth Temperatur — Temperaturspezifische Gauge-Anzeige
  2. Bluetooth Plotter — Daten über die Zeit visualisieren
  3. Bluetooth Schieberegler — Werte an Arduino zurück senden
  4. Mehrere Bluetooth Apps — Gauge mit anderen App-Widgets kombinieren

Unterstützung

Für zusätzliche Hilfe:

  • Überprüfen Sie die API Reference Dokumentation
  • Besuchen Sie DIYables Tutorials
  • Arduino Community Foren

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!