Giter Site home page Giter Site logo

projectecho's Introduction

Project Echo

  1. Over dit verslag
  2. Ultrasoon geluid
  3. Bluetooh Low Energy
  4. Ultra Wide Band
  5. Technische details
  6. Samenvatting

0. Historie

2023-09-24: Document aangemaakt.

1. Over deze repository

Die code in deze repository i.c.m. met dit verslag is het resultaat van een kort onderzoekstraject naar een mobiele applicatie (app) die detecteert in welke ruimte de gebruiker zich bevindt.

Dit onderzoek is uitgevoerd namems pierreCode door Edwin Veger.

2. Ultrasoon geluid

Eén van de onderzoeksrichtingen is het Arduino platform, voor een kleine beacon die zijn ID uitzendt in ultrasoon geluid. Een kleine piëzo speaker Het voordeel van zo’n oplossing is dat de beacons zeer lichtgewicht zijn. Daarnaast is de gebruiker niet afhankelijk van de ondersteuning en/of het voortbestaan van een derde partij. Het nadeel is dat er een stuk meer onderzoek nodig is voor het komen tot een praktische uitvoering.

Het werd snel duidelijk dat het niet haalbaar was om binnen de beschikbare tijd een functionerend prototype o.b.v. ultrasoon geluid op te zetten. Hieronder volgt een rudimentair en beknopt verslag.

Ontwerp Arduino

Voor het prototype is een Arduino Uno gebruikt i.c.m. een actieve piëzo speaker. De Arduino code zendt met tussenpozen een 4-bits signaal uit op 2kHz. Een potentiometer kan de frequentie aanpassen tussen 2kHz en 4kHz.

Het signaal wordt opgevangen in de app via de microfoon en de relevantie frequentie worden gemeten via FFT. De sample rate van de ontvanger bepaalt de maximum detecteerbare frequentie (zie Nyquist). Afhankelijk van de bitrate van de zender en de sample rate van de ontvanger (44.1kHz) zal de ontvanger moeten synchronizeren.

Op onderstaande foto's is het prototype te zien. De twee knoppen kunnen worden gebruikt om het signaal in en uit te schakelen.

Ontwerp app

De app bevat een FFT scherm waarop geluid van de microfoon wordt weergegeven in een amplitude- en frequentiegrafiek. Er wordt geluisterd naar een 2kHz frequentie waarbij de drempelwaarde (instelbaar met een schuif) bepaald of het signaal wordt geinterpreteerd als 0 of 1. Dit binaire signaal wordt getoond met een rolling window.

Bevindingen

De mate van signaaloverdracht is sterk afhankelijk van:

  • Specificaties piëzo
  • Gebruikte frequentie
  • Golfvorm (blok of sinus)
  • Omgevingsgeluid

Het produceren van een sinus-golf vereist een sample rate aan de kant van de zender die correleert met de frequentie. Hiervoor kan bijvoorbeeld een losse DAC worden ingezet i.c.m. een passieve piëzo.

Het is duidelijk dat een dergelijke oplossing veel technieken en heuristieken zou vereisen die "gratis" komen met BLE/UWB.

Zie ook

3. Bluetooth Low Energy

Voor simpele tracking op basis van Received Signal Strength Indictator (RSSI) is een beacon nodig die een constant, uniek ID uitzendt. Na onderzoek naar trackers van ZFINDER en Tile bleek dat het sneller zou zijn om zelf een Arduino beacon te programmeren, daar men dan volledige controle heeft.

Software

Link naar Arduino code voor een simpele BLE beacon.

Hardware

  • Arduino Nano ESP32 (of een andere Arduino microcontroller met Bluetooth)
  • (optioneel) LED met 220Ω weerstand van pin D2 naar GND voor indicatie connectie
  • (optioneel) breadboard + stroommodule voor het aansluiten van een batterij

Drie BLE beacons o.b.v. Arduino Nano

Aanbeveling

In de praktijk technieken als fingerprinting en trilateration toegepast om de onnauwkeurigheid van RSSI tegen te gaan.

4. Ultra Wide Band

Apple introduceerde in 2019 een UWB chip voor nauwkeurig afstandsbepaling tussen apparaten. Deze technologie heeft ook zijn weg gevonden naar Android telefoons. In documentatie noemt Apple het ook wel Nearby Interaction with UWB.

Via een datakanaal (BLE, lokaal netwerk of internet) wordt UWB configuratie uitgewisseld, waarna de client en de beacon een connectie opzetten. Het opstellen van een protocol voor het opzetten van een UWB connectie is low-level valt buiten de scope van dit verslag. In het kader van de vraagstelling beveel ik aan om bestaande oplossingen verder te onderzoeken.

Ten behoeve daarvan kijk ik naar Estimote. Dit is een derde partij die zowel beacons met UWB als een SDK aanbieden in de vorm van de Estimote UWB DevKit. Dit lijkt een goede off-the-shelf oplossing voor dit onderzoek naar de nauwkeurigheid/betrouwbaarheid van de UWB technologie.

Andere producten

5. Technische details

Deze repository bevat een iOS applicatie die compatibel is met beide richtingen. De gebruiker kan kiezen welk systeem hij wenst te testen. De app draait op iOS, iPadOS en macOS (Apple Silicon).

Tech stack

Wat betreft architectuur/frameworks is gekozen voor industry standards.

Daarnaast wordt de closed-source Estimote SDK (beta) gebruikt.

De Swift code is onderverdeeld in een aantal packages die o.a. het gebruik van Swift Previews robuuster maakt en zodoende de ontwikkelcyclus van UI versnelt.

Algoritme

De ruimtebepaling kijkt simpelweg naar welke beacon er het dichtste bij is. Dit geldt voor zowel BLE als UWB. Men kan uiteraard complexiteit toevoegen door rekening te houden met:

  • een drempelwaarde o.b.v. het specifieke beacon
  • afstand to andere beacons
  • wanden, deuren, etc.
  • een hybride vorm waarmee de UWB afstand en BLE RSSI gecombineerd worden

6. Samenvatting

Een reeks testen op locatie gaven de indruk dat een combinatie van zowel BLE + UWB de hoogste kans van slagen heeft. UWB was redelijk precies binnen een afstand van <4 meter, al zagen we af en toe onnauwkeurigheden en uitschieters als gevolg van aluminium blokkades waar bij de connectie werd verbroken. BLE bleef een verbinding behouden over langere afstanden (10-20 meter) waarbij de RSSI frequent kon worden bijgewerkt, maar is minder precies op kleine afstanden.

Merk op dat de onderzochte richtingen uitgaan van client-side tracking: de app bepaalt zelf waar hij meent te zijn. Doorgaans bieden beacon leveranciers ook diensten aan waarmee een centraal punt clients/devices kan volgen.

7. Zie ook

projectecho's People

Contributors

edwinveger avatar

Watchers

 avatar  avatar

Forkers

foundation-zero

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.