Povezava Android - lasten HW - Bluetooth

programski jeziki in programiranje

Moderator: tilz0R

Povezava Android - lasten HW - Bluetooth

OdgovorNapisal/-a VolkD » 05 Dec 2018, 11:05

MocnikG je napisal/-a:1. Varianta - direkt preko povezave Bluetooth, ta varianta je bolj primerna za telefone z Androidiom, ker za Apple rabiš BL (E) modul, ki ima nekakše key generator v sebi, da se med vzpostavljanjem povezave s telefonom ta key izmenja. Sam BL se ponavadi obnaša tako da kar prejme na eno stran BL potem to pošlje. V večini primerov je narejno tako. Imaš tudi defacto BLE 5.0, ki pa vsebuje določene tipe stavkov na katere pišeš in načine komunikacije, ampak je to stvar aplikacije.
Tule sem odprl novo temo, da se ne prepleta z WiFi.
O tem pa res ne vem prav ničesar.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 34838
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 6945 krat
Prejel zahvalo: 4296 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Povezava Android - lasten HW - Bluetooth

OdgovorNapisal/-a igo » 05 Dec 2018, 14:16

Tukaj se samo priklopi poceni BT modulček in iz guglplaja zvleče dol eno BT to Arduino aplikacijo.
Ni nujno, da je dejansko uporabljen Arduino, saj je modul treba priključiti samo na napajanje, pina RX in TX pa se navzkrižno poveže s pinoma TX oziroma RX na MCU-ju.

V Android aplikaciji se nastavi, kaj posamezna tipka pošlje. Paketek je velik 8 ali n-krat 8 bitov in z njim se napolni sprejemni buffer v MCU.

Interpretacija paketka je čista klasika serijske komunikacije.
Lahko s switch-case ali z if, elseif, else stavki ali kako drugače primerjaš, če je sprejelo kaj uporabnega, nakar se preostanek programa ustrezno odzove.

Nekatere aplikacije zmorejo tudi sprejemati paketke, da prikazujejo vrednosti spremenljivk. V tem primeru v aplikaciji nastaviš kombinacijo [naslov][8ali16bitov], ki se bo prikazovala, medtem ko mora MCU napolniti oddajni buffer in sprožiti oddajanje.
Kar MCU odda skozi TX pin, BT modulček sprejme na RX pinu. Kako se modulček in telefon potem zmenita med seboj, v fazi igranja in raziskovanja ni pomembno, dokler se ne lotiš pisanja svoje aplikacije.
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
igo
 
Prispevkov: 1388
Pridružen: 11 Apr 2015, 13:38
Kraj: Krško
Zahvalil se je: 164 krat
Prejel zahvalo: 330 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 32

Re: Povezava Android - lasten HW - Bluetooth

OdgovorNapisal/-a MocnikG » 05 Dec 2018, 14:34

Tako kot je napisal igo, je.
*Sent*from*my* iPhone.
*Sent*from*my* Linux.
*Sent*from*my* room.
Uporabniški avatar
MocnikG
 
Prispevkov: 447
Pridružen: 18 Maj 2015, 18:56
Kraj: Koroška - MB - CE
Zahvalil se je: 40 krat
Prejel zahvalo: 65 krat
Uporabnika povabil: s55ei
Število neizkoriščenih povabil: 6

Re: Povezava Android - lasten HW - Bluetooth

OdgovorNapisal/-a Kroko » 05 Dec 2018, 18:24

http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4375
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 635 krat
Prejel zahvalo: 1424 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Povezava Android - lasten HW - Bluetooth

OdgovorNapisal/-a MocnikG » 11 Apr 2019, 08:46

Kot je bilo obljubljeno bom napisal nekaj tudi na to temo.

Glede na to, da je v tem trenutko stanje tehnike Bluetooth 5.0 menim, da je pametno, da začnemo pisanje od Bluetooth 4.0 naprej, ki vključuje vsem poznani BLE. Med njima je malenkostna razlika.

Bluetooth Low Energy (BLE), ali včasih imenovan tudi "Bluetooth Smart", je light-weight implementacija klasičnega Bluetootha in je bil predstavljen kot del specifikacije jedra Bluetooth 4.0. Čeprav obstaja nekaj prekrivanja s klasično Bluetooth tehnologijo, ima BLE dejansko povsem drugačen način delovanja. Prve verzije BLE je razvila Nokia, pod imenom “Wibree”. Nato je prevzel Wibree Bluetooth SIG.

Obstaja veliko brezžičnih protokolov za povezavoanje naprav ali produktov, toda tisto, kar naredi BLE tako zanimivo, je, da je skoraj zagotovo najlažji način za oblikovanje komunikacijske naprave, ki lahko govori s katero koli sodobno mobilno platformo (iOS, Android, Windows telefoni itd.) in še posebej v primeru naprav Apple je edina možnost oblikovanja strojne opreme, ki ne zahteva, da je razvoj strojne opreme pogojen s preverjanjem za kompatibilnost z Apple izdelki.

Podpora za Bluetooth 4.0 in BLE, je na voljo na večini navedenih platform:
  1. iOS5+ (iOS7+ preferred)
  2. Android 4.3+ (numerous bug fixes in 4.4+)
  3. Apple OS X 10.6+
  4. Windows 8 in novejši (XP, Vista and 7 only support Bluetooth 2.1)
  5. GNU/Linux Vanilla BlueZ 4.93+

GAP
GAP je kratica za Generic Access Profile, profil generičnega dostopa in nadzoruje povezave in oglaševanje v Bluetoothu. GAP je tisto, zaradi česar je naprava vidna zunanjemu svetu, in določa, kako lahko dve napravi medsebojno sodelujeta (ali ne moreta).
Vloge naprave

GAP opredeljuje različne vloge za naprave, vendar sta ključna koncepta, ki ju je treba upoštevati, osrednja naprava in periferna naprava.
  1. Periferne naprave so naprave z nizko porabo energije, ki se lahko priklopijo na veliko zmogljivejšo osrednjo napravo. Periferne naprave so stvari, kot so monitor srčnega utripa, značka, ki omogoča določanje bližine.
  2. Osrednje naprave so običajno mobilni telefon ali tablični računalnik, s katerim se poveže periferna naprava. Osrednja naprava ima ponavadi večjo procesorsko zmogljivost, več pomnilnika.

Vrste nosilcev podatkov glede na način komunikacije

Poznamo dve vrsti nosilcev podatkov in sicer Advertising payload in Scan response payload. Oba nosilca podatkov sta enaka in lahko vsebujejo do 31 bajtov podatkov, vendar je obvezen samo Advertising payload, saj je to koristnost, ki jo bo naprava nenehno prenašala, da bi osrednje naprave v dosegu vedele, da periferna naprava obstaja. Scan response nosilec podatkov je neobvezni sekundarni koristni podatek, ki ga lahko zahtevajo osrednje naprave, in oblikovalcem naprav omogoča, da v Advertising vsebino prilagodijo nekaj več informacij, kot so nizi za ime naprave itd.

Proces oglaševanja

Periferna naprava bo določila poseben oglaševalski (Advertising) interval, in vsakič, ko bo ta interval prešel, bo ponovno poslal glavni oglaševalski paket. Daljši intervali prihranijo energijo, vendar se periferna naprava obnaša manj odzivno, v primeru 2 sekundnega intervala oglaševanja, kot v primeru 20 ms intervala.
Če se naprava poslušalec zanima za Scan response nosilce podatkov (in je na voljo na perifernih napravah), lahko po želji zahteva Scan response nosilec podatkov, periferni naprava pa se bo odzvala z dodatnimi podatki. Kot kaže naslednja slika:

001_ble.png


Topologija omrežja razpršene oddaje

Medtem ko se večina perifernih naprav oglašuje tako, da je mogoče vzpostaviti povezavo in uporabiti storitve in značilnosti GATT (kar omogoča izmenjavo več podatkov v obeh smereh), obstajajo situacije, ko želite oglaševati le podatke. Glavni primer uporabe je, če želite, da periferna naprava pošilja podatke na več kot eno napravo naenkrat. To je mogoče le z uporabo oglaševalnega paketa (advertising payload), saj lahko podatke, ki so poslani in prejeti v povezanem načinu, vidijo le dve medseboj povezani napravi.

Če se vključi majhna količina podatkov v oglaševlaski podatkovni nosilec (advertising payload) z 31 bajti ali v Scan reponse nosilec podatkov, se lahko uporabi nizkocenovna periferno naprava BLE za enosmerno pošiljanje podatkov do vseh naprav v območju poslušanja, kot je prikazano na spodnji sliki. To je znano kot razpršeno oddajanje v BLE.

Takšen pristop uporabljajo iBeacon naprave podjetja Apple, ki vstavi podatek v oglaševalski nosilec podatkov (advertising payload) in sicer z uporabo polja Manufacturer Specific Data (Specifični podatki proizvajalca).

002_ble.png
002_ble.png (8.06 KiB) Videno 177 krat


Ko se vzpostavi povezava med periferno in osrednjo napravo, se oglaševalski proces ustavi. V tem primeru se preneha prenašanje podatkov v oglaševalskih podatkovnih nosilcev, zato se v tem primeru uporablja t.i. GATT storitve, tovrstna povezava je dvosmerna.

GATT

GATT je kratica za Generic Attribute Profile in definira način, kako dve napravi BLE prenašata podatke naprej in nazaj s pomočjo konceptov, imenovanih Storitve in Značilnosti. Uporablja generični podatkovni protokol, imenovan Atributni protokol (ATT), ki se uporablja za shranjevanje storitev, značilnosti in povezanih podatkov v preprosto pregledno tabelo z uporabo 16-bitnih ID-jev za vsak vnos v tabeli.
 
GATT se začne uporabljati, ko je vzpostavljena povezava med dvema napravama, kar pomeni, da je že opravljen postopek oglaševanja, ki ga ureja GAP.

Pri GATT-u in povezavah je najpomembnejše, da so povezave eksluzivne. To pomeni, da je periferno napravo BLE mogoče povezati le na eno centralno napravo (mobilni telefon itd.) naenkrat. Takoj, ko se zunanja enota poveže s centralno napravo, bo prenehala z oglaševanjem, druge naprave pa je ne bodo več mogle videti ali povezati, dokler obstoječa povezava ni prekinjena.

Vzpostavitev povezave je tudi edini način za omogočanje dvosmerne komunikacije, pri čemer lahko centralna naprava pošilja pomembne podatke v periferno in obratno.

Topologija povezanega omrežja

Naslednji diagram predstavi način delovanja naprav BLE v povezanem okolju. Periferna naprave je lahko povezana le na eno centralno napravo (na primer mobilni telefon) naenkrat, centralna naprava pa je lahko priključena na več zunanjih naprav.

003_ble.png
003_ble.png (8.41 KiB) Videno 177 krat


Če je treba podatke izmenjati med dvema perifernima napravama, je treba na osrednji napravi implementirati lasten sistem tipa mailbox, kjer vsa sporočila prehajajo skozi centralno napravo (passthrough).

Ko je vzpostavljena povezava med periferno napravo in osrednjo napravo, lahko komunikacija poteka v obeh smereh, kar se razlikuje od enosmernega oddajnega pristopa z uporabo samo oglaševalskih podatkov in GAP.

GATT prenos

Za razumevanje storitve GATT je pomembno poznati odnos med strežnikom in klientom.

Periferna naprava je znana kot strežnik GATT, ki vsebuje podatke za definirane kot iskanje, storitve in definicije karakteristik tipa ATT (Attribute protocol) in klienta GATT (telefon/tablični računalnik itd.), ki pošilja zahteve po podatkih strežniku. Vsi prenosi se zaženejo z glavno napravo, klientom GATT, ki prejme odgovor od druge naprave, strežnika GATT (ki se v tem primeru imenuje suženjska naprava).

Ko se povezava vzpostavi, bo periferna naprava osrednji napravi predlagala »Interval povezave«, osrednja naprava pa se bo skušala ponovno povezati na določen interval povezavovanja, da bi videla, ali so na voljo novi podatki itd. Tovrstni interval povezovanja je lahko samo predlog in ni nujna niti za implementacijo. Osrednja naprava morda ne bo mogla izpolniti zahteve, ker je zasedena s prenosom podatkov z drugo zunanjo napravo ali pa zahtevana procesorska sredstva niso na voljo.

Naslednji diagram ponazarja proces izmenjave podatkov med periferno (strežnikom GATT) in centralno napravo (klientom GATT), pri čemer glavna naprava sproži vsako transakcijo:

004_ble.png


Profili, Storitve in Značilnosti

Prenos GATT v BLE temelj na ugnezdenih objektih na visoki ravni, imenovanih Profili, Storitve in Značilnosti, kar je prikazano na spodnji sliki:

005_ble.png
005_ble.png (4.61 KiB) Videno 177 krat

006_ble.png


Profili

Enak seznam profilov ne obstaja na vseh napravah BLE, ampak je vnaprej določena zbirka storitev, ki jo je zbral bodisi Bluetooth SIG bodisi razvojni inženir periferne naprave. Na primer profil srčnega utripa združuje storitev za merjenje srčnega utripa in storitev za informacije o napravi. Celoten seznam uradno sprejetih GATT profilov si lahko ogledate tukaj: Pregled profilov.

Storitve

Storitve se uporabljajo za razbitje podatkov v logične entitete in vsebujejo posebne dele podatkov, imenovane značilnosti. Storitev ima lahko eno ali več značilnosti in vsaka storitev se razlikuje od drugih storitev s pomočjo edinstvenega številskega ID-ja, imenovanega UUID, ki je lahko 16-bitni (za uradno sprejete storitve BLE) ali 128-bitni (za storitve po meri).

Celoten seznam uradno sprejetih storitev BLE je dostopen na strani Services portala za razvijalce Bluetooth. V primeru storitev srčnega utripa, je razvidno, da ima ta uradno sprejeta storitev 16-bitno UUID: 0x180D in vsebuje do 3 značilnosti, čeprav je obvezen samo prvi: merjenje srčnega utripa, lokacija senzorja na telesu in kontrolna točka srčnega utripa.

Značilnosti

Koncept najnižje ravni v prenosih GATT je Značilnost, ki povzema eno podatkovno točko (čeprav lahko vsebuje niz povezanih podatkov, kot so vrednosti X/Y/Z iz 3-osnega merilnika pospeška itd.).

Podobno kot pri storitvah se vsaka značilnost razlikuje po vnaprej določenem 16-bitnem ali 128-bitnem UUID-u lahko se uporabljajo standardne značilnosti, ki jih določa Bluetooth SIG (ki zagotavlja interoperabilnost preko BLE HW / SW) ali se določijo lastne značilnosti po meri, ki jih razume le lastna periferna naprava in SW.

Primer značilnosti merjenje srčnega utripa je obvezna za storitev srčnega utripa in uporablja UUID 0x2A37. Začne se z eno 8-bitno vrednostjo, ki opisuje obliko podatkov HRM (ne glede na to, ali so podatki UINT8 ali UINT16 itd.), in vključi podatke merjenja srčnega utripa, ki se ujemajo s tem konfiguracijskim nizom.

Značilnosti so glavna točka sodelovanja s periferno napravo BLE, zato je pomembno razumeti koncept. Uporabljajo se tudi za pošiljanje podatkov nazaj v periferno enoto BLE, saj lahko tudi zapisujete na značilnost. Mogoča je tudi izvedba preprostega vmesnika tipa UART s prilagojeno storitvijo UART in dve značilnosti, ena za kanal TX in ena za kanal RX, kjer je lahko ena značilnost konfigurirana kot samo za branje, druga pa ima dovoljenja za pisanje.

Več informacij

  1. Bluetooth Core Specification
  2. Bluetooth Developer Portal
  3. Uradno sprejeti BLE Profili and Storitve
  4. Uardno sprejete BLE Značilnosti
*Sent*from*my* iPhone.
*Sent*from*my* Linux.
*Sent*from*my* room.
Uporabniški avatar
MocnikG
 
Prispevkov: 447
Pridružen: 18 Maj 2015, 18:56
Kraj: Koroška - MB - CE
Zahvalil se je: 40 krat
Prejel zahvalo: 65 krat
Uporabnika povabil: s55ei
Število neizkoriščenih povabil: 6

Re: Povezava Android - lasten HW - Bluetooth

OdgovorNapisal/-a MocnikG » 11 Apr 2019, 09:00

V nadaljevanju, ko bo čas dopuščal sledi simple implementacija.
*Sent*from*my* iPhone.
*Sent*from*my* Linux.
*Sent*from*my* room.
Uporabniški avatar
MocnikG
 
Prispevkov: 447
Pridružen: 18 Maj 2015, 18:56
Kraj: Koroška - MB - CE
Zahvalil se je: 40 krat
Prejel zahvalo: 65 krat
Uporabnika povabil: s55ei
Število neizkoriščenih povabil: 6

Re: Povezava Android - lasten HW - Bluetooth

OdgovorNapisal/-a MarkoM » 11 Apr 2019, 10:53

Tukaj je eden od primerov izvorne kode za android BT terminal, ki se poveže preko SPP profila. Vse kar potrebuješ je android studio, ki je zastonj, opcijsko lahko naložiš USB driverje za telefon, da lahko debugiraš direktno na telefonu aplikacijo. Brez znanja jave (ali kotlina), brez težav predelaš ta terminal po svojih potrebah.
MarkoM
 
Prispevkov: 859
Pridružen: 29 Jan 2015, 13:11
Kraj: Pohorje (Maribor)
Zahvalil se je: 102 krat
Prejel zahvalo: 167 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 13


Vrni se na Software

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost