Nærhedsfølere kan beskrives som en enestående kontakt, der registrerer et nærliggende objekt ved hjælp af lys, elektromagnetisk felt eller lyd. Typisk er disse typer enheder designet til at registrere motiver i nærheden, og ofte er det den praktiske anvendelse, som de fleste af disse sensorer skal bruges i. Men der er omstændigheder, hvor motivet er langt væk fra sensoren, eller motivet er blokeret af en forhindring, i disse typer situationer kan vi bruge BLE-enheder (Bluetooth Low Energy) til at registrere og føle objektets nærhed. ESP32-udviklingskortet har indbygget BLE, som vi har brugt i mange andre projekter. Hvis du er helt ny i BLE, så tjek ESP32 BLE-klient- og ESP32 BLE Server-projekterne, som vi har bygget tidligere. Vi har også tidligere bygget en Bluetooth iBeacon ved hjælp af ESP32.
I denne artikel vil jeg vise dig, hvordan du laver en simpel BLE-tilstedeværelsesdetektor ved hjælp af en ESP32 og Arduino, og til sidst vil vi teste disse enheder ved hjælp af BLE på min smartphone og en smartwatch.
Hvad er Bluetooth Low Energy (BLE)?
BLE står for Bluetooth Low Energy, og det kom til vores hverdag i 2011, for på den tid af året begyndte alle større producenter at integrere BLE-teknologi på deres enheder. BLE er en trådløs kommunikationsteknologi med lav effekt, der blev udviklet til applikationer med batteristrøm, som kan bruges til at kommunikere mellem enheder over en kort afstand. Nogle af de enheder, du bruger hver dag, har Bluetooth indbygget i det som din smartphone, dit smartwatch, trådløse ørepropper, trådløse højttalere, smart home- enheder, og mere integreret Bluetooth til at kommunikere eller for at få placeringsdata.
BLE er en relativt ny teknologi, og BLE-protokollen blev udviklet af Bluetooth Special Interest Group (SIG) med det primære mål at gøre enheder med lav effekt til en realitet. Selvom navnet på den nyoprettede protokol var den samme, var den nyudviklede BLE-protokol ikke bagudkompatibel, hvilket betyder, at vores Bluetooth Classic- enheder ikke kan tale med BLE-enhederne, på trods af ulempen ved denne teknologi, gjorde det det muligt for udviklere at producere meget lav energi -effektive enheder, der kan vare i flere måneder, selv år, på et lille møntcellebatteri.
Hvordan fungerer BLE-kommunikation?
BLE bruger en hierarkisk datastruktur til at sende og modtage information. En BLE-enhed, der fungerer som en server, vil annoncere for tjenester og karakteristika, der kan detekteres af en klient, og når informationsudvekslingen er vellykket, kan BLE-enheder kommunikere med hinanden samtidigt. I tekniske termer er denne informationsstabel alt sammen kendt som en attribut for en BLE-enhed. Og det er defineret og implementeret ved hjælp af GATT-profilen (Generiske attributter). I disse profiler har vi service, egenskaber og værdier i en hierarkisk rækkefølge. Tjenester indeholder egenskaber, og karakteristikken indeholder værdien, ved at læse karakteristikken kan vi læse værdierne og værdierne ændres over tid.
Karakteristika kan behandles for at inkludere læse- eller skriveinformation. Enheder, der indeholder læste komponenter, kan offentliggøre oplysninger, og enheder, der indeholder skriveegenskaber, kan modtage data fra en klient.
Den GATT profil hvorunder de tjenester og karakteristika defineres, er kendt som et universelt entydigt id (UUID). Der er nogle standardtjenester og karakteristika, der er defineret og reserveret af SIG-selskabet, hvis vi læser UUID for en BLE-enhed, kan vi straks fortælle, hvilken type enhed det er.