У меня есть проект, в котором я хочу прочитать данные датчика из ESP32C6 с помощью BLE 5.0
и я действительно запутался и не знаю, как кодировать настоящий BLE 5.0, но это мое задание. Не могли бы вы мне с этим помочь?
Проблема:
Я хочу прочитать данные датчика моего ESP32C6, но код Android Studio не подключается. с моим устройством и поэтому не обмениваюсь нужными мне данными и не отображаю их в моем приложении. Не могли бы вы мне с этим помочь?
Код Arduino
Я уже пытался спросить Клода или ChatGpt, потому что я ничего не знаю о протоколе BLE и у меня нет на это много времени из-за других моих занятий, пожалуйста, помогите мне
У меня есть проект, в котором я хочу прочитать данные датчика из ESP32C6 с помощью BLE 5.0 и я действительно запутался и не знаю, как кодировать настоящий BLE 5.0, но это мое задание. Не могли бы вы мне с этим помочь? Проблема: Я хочу прочитать данные датчика моего ESP32C6, но код Android Studio не подключается. с моим устройством и поэтому не обмениваюсь нужными мне данными и не отображаю их в моем приложении. Не могли бы вы мне с этим помочь? Код Arduino [code]#include #include #include #include #include #include #include "MAX30105.h" // Korrigierte Bibliothek #include "heartRate.h" // Zusätzliche Bibliothek für Herzfrequenzberechnung
// BLE UUIDs #define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" #define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
// Pin Definitions #define OPA344_PIN A0
// Task handles for core management TaskHandle_t Task1; TaskHandle_t Task2;
// Variables für Herzfrequenzberechnung const byte RATE_SIZE = 4; // Größe des Arrays für die Mittelwertbildung byte rates[RATE_SIZE]; // Array zur Speicherung der letzten Herzfrequenzen byte rateSpot = 0; long lastBeat = 0; // Zeit seit dem letzten Herzschlag float beatsPerMinute; int beatAvg;
// Initialize MPU6050 if (!mpu.begin()) { Serial.println("MPU6050 not found!"); while (1) delay(10); } mpu.setAccelerometerRange(MPU6050_RANGE_8_G); mpu.setGyroRange(MPU6050_RANGE_500_DEG); mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
// Initialize MAX30102 if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) { Serial.println("MAX30102 not found!"); while (1) delay(10); }
// Konfiguration für den MAX30102 particleSensor.setup(); particleSensor.setPulseAmplitudeRed(0x0A); particleSensor.setPulseAmplitudeGreen(0); particleSensor.setPulseAmplitudeIR(0x0A); particleSensor.setSampleRate(200); // Setzt die Sample Rate auf 200Hz particleSensor.setFIFOAverage(4); // Setzt den Durchschnitt auf 4 Samples
// Initialize BLE BLEDevice::init("ESP32C6"); pServer = BLEDevice::createServer(); pServer->setCallbacks(new MyServerCallbacks());
void loop() { // Empty loop as tasks handle all the work vTaskDelay(pdMS_TO_TICKS(1000)); } [/code] Код Android Studio: [code]package com.example.project;
public class MainActivity extends AppCompatActivity { private static final int PERMISSION_REQUEST_CODE = 1; private static final String DEVICE_NAME = "ESP32C6"; private static final UUID SERVICE_UUID = UUID.fromString("4fafc201-1fb5-459e-8fcc-c5c9c331914b"); private static final UUID CHARACTERISTIC_UUID = UUID.fromString("beb5483e-36e1-4688-b7f5-ea07361b26a8");
private final BluetoothGattCallback gattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { if (status == BluetoothGatt.GATT_SUCCESS) { if (newState == BluetoothGatt.STATE_CONNECTED) { runOnUiThread(() -> tvConnectionStatus.setText("Status: Connected")); if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { return; } bluetoothGatt.discoverServices(); } else if (newState == BluetoothGatt.STATE_DISCONNECTED) { runOnUiThread(() -> tvConnectionStatus.setText("Status: Disconnected")); } } }
@Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { if (status == BluetoothGatt.GATT_SUCCESS) { BluetoothGattService service = gatt.getService(SERVICE_UUID); if (service != null) { BluetoothGattCharacteristic characteristic = service.getCharacteristic(CHARACTERISTIC_UUID); if (characteristic != null) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { return; } gatt.setCharacteristicNotification(characteristic, true); } } } }
@Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { if (CHARACTERISTIC_UUID.equals(characteristic.getUuid())) { final String data = new String(characteristic.getValue()); parseAndUpdateUI(data); } } };
private void parseAndUpdateUI(final String data) { runOnUiThread(() -> { try { String[] sections = data.split(";"); for (String section : sections) { String[] parts = section.split(":"); if (parts.length == 2) { String type = parts[0]; String values = parts[1];
@Override protected void onDestroy() { super.onDestroy(); if (bluetoothGatt != null) { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { return; } bluetoothGatt.close(); } } } [/code] Манифест: Это также есть в моем манифесте: [code]
[/code] Я уже пытался спросить Клода или ChatGpt, потому что я ничего не знаю о протоколе BLE и у меня нет на это много времени из-за других моих занятий, пожалуйста, помогите мне
У меня есть проект, в котором я хочу прочитать данные датчика из ESP32C6 с помощью BLE 5.0
и я действительно запутался и не знаю, как кодировать настоящий BLE 5.0, но это мое задание. Не могли бы вы мне с этим помочь?
Проблема:
Я хочу прочитать...
Я разрабатываю мобильное приложение на основе Bluetooth с низкой энергией (BLE) в Android Studio для связи с устройством ESP32. ESP32 выступает в качестве сервера BLE (периферийная), а мое приложение для Android действует как клиент (центральный)....
Я работаю над проектом по обнаружению событий кражи и заправки топлива на основе зашумленных данных датчиков с использованием ML.NET. Данные датчика включают в себя показания уровня топлива и скорости с отметкой времени, но они часто содержат шум,...
Я работаю над проектом по обнаружению событий кражи и заправки топлива на основе зашумленных данных датчиков с использованием ML.NET. Данные датчика включают в себя показания уровня топлива и скорости с отметкой времени, но они часто содержат шум,...
Я работаю над проектом по обнаружению событий кражи и заправки топлива на основе зашумленных данных датчиков с использованием ML.NET. Данные датчика включают в себя показания уровня топлива и скорости с отметкой времени, но они часто содержат шум,...