Innehållsförteckning:
- Tillbehör
- Steg 1: Designa anpassade tjänster och egenskaper
- Steg 2: Arduino -kod
- Steg 3: Android Studio Code
- Steg 4: Slutlig ansökan
Video: Bygg en bärbar rörelsetracker (BLE från Arduino till en anpassad Android Studio App): 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
Bluetooth Low Energy (BLE) är en form av lågeffekts Bluetooth -kommunikation. Bärbara enheter, precis som de smarta plaggen jag hjälper till att designa på Predictive Wear, måste begränsa energiförbrukningen när det är möjligt för att förlänga batteriets livslängd och ofta använda BLE. Bluetooth Special Interest Group (SIG) definierar flera specifikationer som en enhet bör implementera för att interagera med en Bluetooth -enhet, som de kallar "profiler". De flesta applikationsprofiler använder General Attribute Profile (GATT) för att skicka data via en BLE -länk. Det finns tre grundläggande begrepp i BLE: profiler, tjänster och attribut.
Bluetooth SIG har standardiserat många vanliga profiler, tjänster och attribut. Men när du skapar anpassad maskinvara finns det ofta ett behov av att skapa anpassade tjänster och attribut och det finns inte många självstudier tillgängliga. För att göra saken svårare ger Adafruit ingen vägledning om hur man utformar mobilapplikationer för att para ihop med sina BLE -moduler och källkoden för deras applikationer är svår att omvandla.
Denna handledning syftar till att förklara:
- Hur man utformar anpassade GATT -tjänster och egenskaper
- Hur man programmerar Adafruit Bluefruit LE SPI Friend för att fungera som en GATT -server för dessa anpassade tjänster och egenskaper
- Hur man programmerar en Android -enhet för att fungera som GATT -klienten för att läsa data från GATT -servern
Denna handledning är inte avsedd att översättas till en produktionsklar applikation - detta är helt enkelt en introduktion till BLE.
Bakgrundsläsning:
- Adafruit Bluefruit LE SPI Friend -dokumentation
- Om du inte är bekant med GATT eller BLE
Tillbehör
- 1x - En Arduino -enhet (jag använder UNO för denna handledning)
- 1x - Adafruit Bluefruit LE SPI Friend
- 8x - han- till han -tröjor
- Grundläggande lödutrustning (till lödhuvudstiften på SPI Friend)
- En dator (för att programmera Arduino -enheten och Android -enheten)
Steg 1: Designa anpassade tjänster och egenskaper
INTRODUKTION
Denna artikel gör ett bra jobb med att förklara hur man utformar anpassade tjänster och egenskaper. Jag rekommenderar starkt att läsa igenom denna artikel. Jag ger en mycket enkel översikt nedan som försummar subtiliteterna till förmån för enkelhet.
GATT -tjänster är en samling egenskaper.
GATT -egenskaper innehåller en egenskap, ett värde och noll eller fler beskrivningar.
- Egendom: hur uppgifterna ska hanteras av klienten (Android App) t.ex. läs, skriv, skriv utan svar, meddela och ange.
- Värde: det verkliga värdet på karaktäristiken t.ex. 1089
- Beskrivare: detta är information om värdet t.ex. enheten, millisekunder
DESIGN
Okej, nu vet du vad tjänster och egenskaper är, vi måste ta reda på hur vi utformar vissa tjänster och egenskaper för att få våra anpassade data och skicka den från vår GATT -server (Arduino) till klienten (Android App). Låt oss överväga en Arduino-enhet som samlar in data från en accelerometer-gyroskopmodul (AGM). Vi vill samla gyroskop- och accelerationsmätningar från tre rumsliga axlar och den tid dessa mätningar togs och överföra dessa data till vår mobilapplikation. Vi vill också veta när vi behöver ladda enheten, så vi vill läsa batterinivån och överföra det till vår mobilapplikation.
1. Kan vi använda någon av standardtjänsterna och egenskaperna?
Bluetooth SIG har standardiserat många vanliga tjänster och egenskaper. Kontrollera först dessa för att se om du kan välja någon av de standardiserade tjänsterna och egenskaperna. Standardtjänsterna och egenskaperna kan använda mycket mindre datapaket eftersom UUID (Universally Unique Identifier) är 16 bitar medan anpassade tjänster och egenskaper måste använda 128 bitar för sina UUID: er. Mer om UUID senare. Från vår sökning hittade vi en standardiserad "batteritjänst" som innehåller en karakteristisk "batterinivå".
2. Separera alla datavärden som du vill skicka över BLE i egenskaper och tjänster
Vi kan dela upp våra anpassade datapunkter i sju anpassade egenskaper inom en anpassad tjänst. Vi kommer att kalla denna tjänst för "AGM -tjänsten". Den kommer att innehålla 7 egenskaper: x-acceleration, y-acceleration, z-acceleration, x-gyroskop, y-gyroskop, z-gyroskop och en tidsreferens.
3. Bestäm de egenskaper som behövs för varje egenskap
Det finns flera egenskaper en egenskap kan ha.
- Läs: Klienten (Android -appen) kan läsa ett värde från GATT -servern (Arduino)
- Skriv: Klienten kan ändra ett värde från GATT -servern
- Ange: Kunden kommer att meddelas om ett värde ändras från GATT -servern och klienten förväntas skicka bekräftelse till GATT -servern
- Meddela: klienten meddelas om ett värde ändras från GATT -servern och klienten inte förväntas skicka bekräftelse till GATT -servern
För denna handledning kommer vi att ställa in alla våra egenskaper för att läsa, med undantag för batterinivån som kommer att ha både meddelande- och läsegenskaper.
4. Skapa UUID för anpassade tjänster och egenskaper och hitta standard UUID
Som jag tidigare nämnde tidigare använder Bluetooth SIG -standardiserade tjänster och egenskaper en 16 -bitars UUID medan anpassade tjänster och egenskaper använder 128 -bitars UUID. Se till exempel det tilldelade numret för batteritjänsten på Bluetooth SIG. Det tilldelade numret 0x180F representerar 128-bitars UUID "0000180F-0000-1000-8000-00805F9B34FB". De fyra siffrorna (16 bitar) i fetstil är unika för den specifika standardiserade tjänsten eller egenskapen medan de andra tecknen bevaras mellan alla standardiserade tjänster och egenskaper. Eftersom både klienten och GATT -servern vet att standardiserade tjänster och egenskaper endast varierar med fetstil, kan paketstorlekarna för data minskas väsentligt. Anpassade tjänster och egenskaper kan dock inte fungera under samma antagande.
Istället måste anpassade tjänster och egenskaper använda oförkortade 128 -bitars UUID. Här är en online UUID -generator. Alla andra UUID än standardiserade UUID är acceptabla för ett anpassat UUID. En typisk namngivningskonvention är dock att beteckna en anpassad tjänst 00000001-… och egenskaper inom den anpassade tjänsten 00000002-…
Här är ett sammanfattande kalkylblad över de tjänster och egenskaper vi kommer att implementera tillsammans med deras UUID: er
Steg 2: Arduino -kod
UPPDATERA BLUEFRUIT LE SPI -VÄNNEN
Anslut först Adafruit Bluefruit LE SPI Friend som de anger i sin anslutningsguide och slå på Arduino -enheten. Se till att du kan hitta Adafruit Bluefruit LE SPI Friend på din Android -enhet när du söker efter Bluetooth -enheter. Ladda ner Bluefruit Connect -appen, anslut till Adafruit Bluefruit LE SPI Friend och låt den uppdatera firmware på enheten. Detta steg är viktigt. Om du inte uppdaterar den inbyggda programvaran kommer kommandon du ger ut via Arduino sannolikt att misslyckas och det kommer inte att finnas ett uppenbart fel för dig att upptäcka vad problemet är.
Här är min repo för detta projekt. Du kan se hela Arduino -koden här.
ÖVERSIKT
Några viktiga saker att notera:
- I setup () -metoden måste alla anpassade UUID: er innehålla "-" mellan varannan tecken. Till exempel fungerar "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66". "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" fungerar inte.
- Observera att i setup () -metoden, "battery.begin (true);" anropar "ble.reset ();" automatiskt. Om du inte använder batteritjänsten som jag har måste du återställa ble -modulen (använd "ble.reset ();") där jag har kommandot "battery.begin (true);".
- I metoden setup () ändrar du "if (! Ble.begin (false))" till "if (! Ble.begin (true))" "om du vill felsöka.
Denna kod är ganska självförklarande. Jag inkluderade beskrivningar av varje anpassad metod. Installationsmetoden gör BLE -modulen redo att fungera som GATT -servern. Loopmetoden går igenom en falsk svepning av accelerometerns gyroskopmodul (AGM) och genererar ett slumpmässigt tal från 1 till 100 för dessa värden. Batteriet dräneras med 1% för att simulera batterianvändning. Du kan enkelt ersätta denna kod med de verkliga sensorvärdena. Den här koden förutsätter att du kommer att överföra en rad AGM -data, 6 mätningar långa, snarare än en enda mätning, eftersom analysering av ett fönster med AGM -data sannolikt är mer användbar än en enda datapunkt. Om du ändrar matrisstorleken, observera att det kommer att krävas ändringar i android studiokoden. För att fånga en mängd data måste du skicka en räknare tillsammans med de data du tänker skicka. Med denna räknare kan du hitta var du befinner dig i fönstret från Android Studio -applikationen så att du kan vänta med att lyssna på de saknade datapunkterna i fönstret. Utan räknaren eller med en annan storlek kommer Android -studioprojektet antingen att sakna datapunkter eller fastna i en slinga i väntan på de återstående datapunkterna som de förväntar sig.
Steg 3: Android Studio Code
Här är min repo för det här projektet. Du kan se hela Android Studio -koden här.
ÖVERSIKT
Jag kommer att uppdatera detta med en mer ingående översikt över hur arduino- och androidkoden fungerar i detalj … Appen är fullt fungerande så titta gärna på koden själv under tiden.
Steg 4: Slutlig ansökan
Grattis! Din ansökan laddas ner till din telefon och din bärbara enhet laddas och överför data.
Lansera appen
För att komma igång, klicka på startikonen för programmet.
BIDRAGSTILLÅTELSER
Du måste godkänna användningen av vissa behörigheter för att appen ska fungera korrekt.
SKANNA PÅ ENHETER
Klicka sedan på knappen "Skanna" i det övre vänstra hörnet av appen.
VÄLJ DIN BÄRBARA ENHET
Välj sedan din bärbara enhet från listan över tillgängliga BLE -enheter. Dess namn är "BLE Arduino Hardware". FÅ DATA Vänta medan appen hämtar AGM -data och avgör var användaren är stilla eller rör sig. SE DINA RESULTAT Kolla in resultaten på skärmen! Klicka på synkroniseringsknappen för att läsa ytterligare data.
Rekommenderad:
Från gammal bärbar dator till extern bildskärm med digital -TV: 6 steg
Från gammal bärbar dator till extern bildskärm med digital -TV: Har du någonsin undrat vad du ska göra med din gamla bärbara dator eller bildskärm liggande? I den här instruktören kommer jag att visa dig hur du gör din gamla bärbara dator eller gamla skärm som inte har HDMI -portar till en extern bildskärm med HDMI, AV, komposit
Lägg till anpassad Alexa -kontroll till Raspberry Pi -projektet: 5 steg
Lägg till anpassad Alexa -kontroll till Raspberry Pi -projektet: Detta projekt är avsett för alla som har ett Raspberry Pi -projekt som använder Python som vill lägga till röststyrning via sina befintliga Amazon Echo -enheter. Du behöver inte vara en erfaren programmerare, men du bör vara bekväm med att använda
Uppgradering av bärbar dator från HDD till SSD: 8 steg
Uppgradering av bärbar dator från HDD till SSD: Har du en gammal bärbar dator som du vill uppgradera och göra användbar. Om du byter en gammal hårddisk på en bärbar dator till en SSD kan du förbättra din bärbara dators hastighet avsevärt. En hårddisk är ett minnessystem som använder en fysisk hårddisk för att spara data. Byter till SSD
Bygg en anpassad display i LCD Studio (för G15 -tangentbord och LCD -skärmar).: 7 steg
Bygg en anpassad bildskärm i LCD Studio (för G15 -tangentbord och LCD -skärmar).: Ok, om du precis har fått ditt G15 -tangentbord och inte är imponerad av de grundläggande skärmarna som följde med det, tar jag dig igenom grunderna för att använda LCD Studio att göra din egen. Detta exempel är att göra en display som bara visar basen
Bygg en hemmabio -dator från en trasig bärbar dator och en Tivo: 10 steg
Bygg en hemmabio -dator från en trasig bärbar dator och en Tivo: I den här instruktören visar jag dig hur du gör en hemmabio -dator av en (något) trasig bärbar dator och ett mestadels tomt Tivo -chassi. Detta är ett bra sätt att göra en hemmabio -dator (eller förlängare) som ser bra ut och fungerar bättre än en