Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Matěj Zelenka:11.2.2023 23:49

Potřeboval bych pomoci s Bluetooth Web Api. Konkrétně potřebuji zprovoznit jednoduchou komunikaci s BLE. Jen najít všechna dostupná zařízení, připojit, zapnout příjem, odeslat a odpojit. Bude to komunikace s Arduino nano (a později ATMEGA). Pro ukázku přikládám pouze základ mého Arduino kódu:

#include <SoftwareSerial.h>
SoftwareSerial BLE(2, 3); // RX, TX

void setup() {
  Serial.begin(9600);
  BLE.begin(38400);
}

void loop() {
  if (BLE.available() > 0) {
    char inChar = BLE.read();
    Serial.println(inChar);
    if (inChar == '1') {
      BLE.write("Hello from Arduino!");
    }
  }
}

Případně, pokud by někdo našel jinou knihovnu pro Arduino, nebo JavaScript jsem otevřen novým nápadům, ale tohle mi přišlo nejlepší (a také jediné funkční).

Zkusil jsem: Jsem v BLE nový. Zkoušel jsem i jiné knihovny pro arduino (např.: ArduinoBLE), ale nefungovaly mi.

Zkoušel jsem např. kód níže, a podobné, ale vždy se naskytla nějaká chyba. A i po vyřešení všech chyb si JS „vymýšlel“ hodnoty a arduino nejevilo známky komunikace.
Do konzole mi vypisoval např.:

Name: BT05
Id: bP+XzEL8lapoqVzWBlxVXQ==
Connected: false
Getting Service...
Getting Characteristic...
Reading Value...
Value: 100
    navigator.bluetooth.requestDevice({ filters: [{ services: [0xFFE0] }] })
      .then(device => {
        console.log('Connecting to GATT Server...');
        return device.gatt.connect();
      })
      .then(server => {
        console.log('Getting Service 0xFFE0 - Battery Level...');
        return server.getPrimaryService(0xFFE0);
      })
      .then(service => {
        console.log('Getting Characteristic 0xFFE1 - Battery Level...');
        return service.getCharacteristic(0xFFE1);
      })
      .then(characteristic => {
        console.log('Reading Battery Level...');
        return characteristic.readValue();
      })
      .then(value => {
        console.log('Battery Percentage is ' + value.getUint8(0));
      })
      .catch(error => {
        console.error('Connection failed!', error);
      });


characteristic.writeValue(new Uint8Array([100]))
  .then(_ => {
    console.log('Data written!');
  })
  .catch(error => {
    console.error('Write failed!', error);
  });


characteristic.startNotifications()
  .then(characteristic => {
    console.log('Notifications started');
    characteristic.addEventListener('characteristicvaluechanged', handleBatteryLevelChanged);
  })
  .catch(error => {
    console.error('Notifications not started!', error);
  });

function handleBatteryLevelChanged(event) {
  let batteryLevel = event.target.value.getUint8(0);
  console.log('Battery Percentage is ' + batteryLevel);
}

Chci docílit: Snažím se komunikovat mezi Arduino a webovou stránkou (popřípadě android alikací, ale myslel jsem, že web bude univerzálnější a jednodušší).

 
Odpovědět
11.2.2023 23:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.