Technologia Bluetooth Low Energy w Delphi

Podobne dokumenty
Bluetooth LE. Antoni Kędracki. Not your father s

Bluetooth 4.0 Szerokopasmowy ibeacon

Programowanie RAD Delphi

Tworzenie własnych komponentów

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

Sterownik LED RGB 2.4G RF 12V, 24V 24A + pilot dotykowy

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Wstęp do programowania. Różne różności

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone

BIG-I Auto. Samochodowy lokalizator GPS. Instrukcja użytkownika

COMMAX CDV-70UX - USTAWIENIE PRACY URZĄDZEŃ MOBILNYCH

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Kurs Certyfikowany Inżynier Sieci PROFIBUS DP. Spis treści. Dzień 1

Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

Specyfikacja techniczna:

NAZWA PRODUKTU: Ukryta Kamera Podsłuch w Ładowarce FullHD WiFi USB MicroSD S160 Cechy produktu

Instrukcja obsługi aplikacji

Programowanie w Turbo Pascal

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Android i Bluetooth Low Energy. Laboratorium 4 Niestacjonarne

INSTRUKCJA OBSŁUGI K3-3. Czytnik kart i zamek kodowy z kontrolerem dostępu i interfejsem Wiegand. Copyright Domster T. Szydłowski

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

F&F Filipowski Sp. J Pabianice, ul. Konstantynowska 79/81 tel KARTA KATALOGOWA

DIGA Object Dictionary opis

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Kod produktu: MP01105

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Opis techniczny koncentratora wejść impulsowych KWI-1. APATOR SA,

Opis czytnika TRD-FLAT 2LN ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

Język programowania PASCAL

Delphi Laboratorium 3

Podstawy programowania

Wykład 3. Interfejsy CAN, USB

ForPascal Interpreter języka Pascal

Rozproszony system zbierania danych.

NAZWA PRODUKTU: Ukryta Mini Kamera IP WiFi FullHD Android ios Detekcja Ruchu S163

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Dokumentacja techniczna

Pomoc do programu ISO Manager

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

E300 - Wielofunkcyjne zabezpieczenie silnikowe. Copyright 2013 Rockwell Automation, Inc. All Rights Reserved.

SP-1101W/SP-2101W Instrukcja Szybkiej Instalacji

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

Paweł Cieśla. Dokumentacja projektu

CENTRALA STERUJĄCA SMART CONTROL

inode Control Point UART instrukcja użytkownika

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

Informatyka 1. Przetwarzanie tekstów

Wprowadzenie do języka Pascal

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Systemy wbudowane - wykład 8. Dla zabicia czasu Notes. I 2 C aka IIC aka TWI. Notes. Notes. Notes. Przemek Błaśkiewicz.

Kurs Projektowanie i programowanie z Distributed Safety. Spis treści. Dzień 1. I Bezpieczeństwo funkcjonalne - wprowadzenie (wersja 1212)

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Industrial Ethernet Dokumentacja techniczna połączenia Sterowniki S7-400(300) firmy Siemens - System PRO-2000 firmy MikroB

LSB MSB dwu bajtową sumą kontrolną CRC. Ramka transmitowana jest jako pojedynczy blok danych.

Delphi podstawy programowania. Pliki INI

NAZWA PRODUKTU: UKRYTA KAMERA PODSŁUCH H8 WiFi PowerBank LED 5000mAh S150

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Temat 1: Bluetooth. stoper lub 3 telefon z możliwością zliczania czasu z dokładnością do 0.1 sek

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres

LOOKO2(v3) Twój osobisty czujnik jakości powietrza v0.9.4

komunikator na platformę Android wspierający protokół GG

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Systemy Rozproszone Technologia ICE

Pascal - wprowadzenie

2. Architektura mikrokontrolerów PIC16F8x... 13

LOOKO2(v3) Twój osobisty czujnik jakości powietrza v0.9.4

Instrukcja obsługi czytnika MM-R32

Sterownik LED WIFI RGB 12V, 24V 12A + pilot dotykowy

Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30

Server setup. #include <SPI.h> #include <Ethernet.h> boolean incoming = 0;

Każde urządzenie w zasięgu ręki! getproxi.com

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Instrukcja obsługi SmartVent. SmartVent moduł sterowania dla central VUT PW, PE, VB EC A11 VUT H EC ECO, VUT EH EC ECO

1.2. Architektura rdzenia ARM Cortex-M3...16

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

1W-H0-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID MHz Mifare. Karta produktu

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

CouchDB. Michał Nowikowski

inode Beacon instrukcja użytkownika

Zasady Programowania Strukturalnego

Laboratorium Systemów SCADA

CR232.S v2 KONWERTER CAN / RS232

SPECYFIKACJA HTC-VR, HTC-VVR-RH, HTC-VVR-T, HTCVVVR, HTC-VR-P, HTC-VVR-RH-P

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Gate.

Stacja pogodowa, internetowa Archos Europa, dla urządzeń Apple iphone/ipad/ipod i Android

Politechnika Śląska w Gliwicach Instytut Automatyki 2005/2006

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

Transkrypt:

Technologia Bluetooth Low Energy w Delphi

WITAM! Mateusz Gancarczyk gancarczyk.mateusz@gmail.com www.mattpro.pl Pierwsze PCB i zamruganie diodą LED 2008 rok Delphi od 2009 roku Pierwsza aplikacja mobilna - 2014 rok.

Plan prezentacji 1. O technologii Bluetooth Low Energy 2. Beacon - Smart Flower Pot 3. Urządzenie Bluetooth Low Energy Led Conroller 4. Podsumowanie

1. O technologii Bluetooth LE 1. Wersje standardów 2. Warstwa fizyczna 3. GAP Generic Access Profile 4. GATT - Generic Attribute Profile 5. Kilka słów o Bluetooth 5

Wersje standardu Bluetooth Clasic 1.0., 2.0, 3.0 Bluetooth Low Energy 4.0, 4.1, 4.2 Bluetooth 5

Bluetooth Low Energy Wersje standardu - porównanie Specyfikacja techniczna Bluetooth Classic Bluetooth Low Energy Bluetooth 5 Zasięg 100 m >100 m ~1km Prędkość transmisji 1 3 Mbit/s 1 Mbit/s 125kbs-2Mbit/s Przepustowość 0,7 40 Mbit/s 0,27 Mbit/s 1,4 Mbit/s Opóźnienie ~100 ms 6 ms 6 ms Minimalny czas do wysłania ramki 100 ms 3 ms 3 ms

Bluetooth Low Energy Warstwa fizyczna

Rodzaje urządzeń: 1) Peripheral 2) Central Bluetooth Low Energy Rodzaje urządzeń

Bluetooth Low Energy Advertising Każde peripheral posiada unikalny 6 bajtowy MAC Address Periodyczne wysyłanie do 31 bajtów danych Scan response na żądanie centrali

Bluetooth Low Energy Broadcasting Tryb advertising wysłanie danych do nieograniczonej ilości urządzeń typu central będących w zasięgu.

Bluetooth Low Energy Profile, serwisy i charakterystyki Charakterystyki pojedyncze dane. Serwisy logiczny zbiór charakterystyk. Profile predefiniowanie kolekcje serwisów i charakterystyk zatwierdzone przez Bluetooth SIG.

Bluetooth Low Energy Profil GAP Generic Access Profile Kontroluje connections i advertising in Bluetooth LE, Determinuje jak dwa urządzenia oddziałowują między sobą.

Bluetooth Low Energy Profil GATT - Generic Attribute Profile Definiuje sposób w jaki dwa połączone ze sobą urządzenia (central i peripheral ) przesyłają dane używając koncepcji serwisów i charakterystyk. W jednym czasie peripheral może połączyć się tylko z jednym urządzeniem typu central ( połączenie wiąże się ze zatrzymaniem advertisingu ). Urządzenie typu central może w jednym czasie połączyć się z wieloma peripheral.

Bluetooth Low Energy Profil GATT architektura client/server Peripheral GATT Server ( trzyma definicje charakterystyk i serwisów ) Central GATT Client ( wysyła żądania do serwera ) W Peripheral zapisany jest tz. - Connection Interval

Bluetooth Low Energy Bluetooth Mesh

Bluetooth Low Energy Bluetooth 5 Dwa typy advertisingu: 1) Cała ramka na kanałach advertisingu 2) Header na kanałach advertisingu a reszta na jednym kanale

Bluetooth Low Energy Wsparcie Bluetooth LE Platforma Wsparcie od wersji Windows 8+ (10+) OS X 10.7+ ios 5+ Android 4.3+

2. Beacon - Smart Flower Pot 1. Opis urządzenia 2. Opis działania format Eddystone 3. Implementacja: 3.1 Android Studio Java 3.2 Delphi ( Android Firemonkey )

Beacony Tryb tylko advertising - analogia z latarnią morską. Wykrywanie odległości za pomocą pomiaru RSSI ( ref 1 m ). Różne typy Eddystone, ibeacon, altbeacon. Identyfikator: UUID, Major, Minor (ibeacon)

Smart Flower Pot Opis urządzenia Pomiar wilgotności ziemi w doniczce, Pomiar temperatury ziemi, Pomiar temperatury powietrza, Pomiar nasłonecznienia, Zasilanie z baterii CR2032 ( 230mAh ), Czas działania na baterii 2 lata ( pomiar i wysłanie danych co 10 sekund ), Mikrokontroler nrf52832

Smart Flower Pot Opis urządzenia

Format beacon - Eddystone Bluetooth LE beacon profile UUID 0xFEAA 4 rodzaje ramek: Nazwa ramki UID EID URL TLM Opis Wysyła stałe ID pomiar odległości. Wysyła kodowane, zmienne ID. Wysyła adres URL. Wysyła dane telemetryczne temperatura, napięcie baterii, licznik ramek.

Format beacon - Eddystone Ramka TLM - oryginalna Ramka TLM Smart Flower Pot Numer bajtu Opis Numer bajtu Opis 0 Typ ramki TLM 0x20 1 Wersja 2, 3 Napięcie na baterii w mv 4, 5 Temperatura 6, 7, 8, 9 Licznik 10, 11, 12, 13 Czas od włączenia 0 Typ ramki TLM 0x20 1, 2, 3 Kod 0xDE2981 4, 5 Temperatura doniczki w o C 6, 7 Temperatura powietrza w o C 8 Nawodnienie w % 9 Nasłonecznienie w % 10 Stan baterii w %

Implementacja Android Studio Aplikacja wyświetlająca dane z beacon ów Smart Flower Pot Place your screenshot here

Implementacja Android Studio struktura projektu Android manifest Adapter widoku do ListView Dane Widok Główny plik Definicja klasy SmartFlowerPot Layout główny Layout elementu ListView

SmartFlowerPot Scaner Demo Android Studio

Implementacja Firemonkey Aplikacja wyświetlająca dane z beacon ów Smart Flower Pot Place your screenshot here

Komponent TBeacon Implementacja Firemonkey

Implementacja Typ generyczny - słownik Deklarowanie: SmartFlowerPotDeviceList: TDictionary<String, TSmartFlowerPot>; Inicjalizacja: procedure TForm1.FormCreate(Sender: TObject); begin SmartFlowerPotDeviceList := TDictionary<String, TSmartFlowerPot>.Create; end; Operacje: SmartFlowerPotDeviceList.ContainsKey(ABeacon.DeviceIdentifier)); SmartFlowerPotDeviceList.AddOrSetValue(ABeacon.DeviceIdentifier, currentbeacon); SmartFlowerPot := SmartFlowerPotDeviceList.Items[ABeacon.DeviceIdentifier];

Implementacja Klasa TSmartFlowerPot function TSmartFlowerPot.getTemp( const data :array of byte ): real; var temp: real; tempword: word; begin tempword := Word(( ((Word(data[1]) and $FF ) shl 8 ) or ((Word(data[2]) and $FF ) ) ) ); temp := tempword / 10. ; result := temp; end;

Implementacja Desing i projektant ListView Toolbar ListView

SmartFlowerPot Scaner Demo Firemonkey

Dalszy rozwój projektu Aplikacja działająca w tle + powiadomienia Wysyłanie wyników do chmury strona WWW z danymi pomiarowymi z doniczek Raspberry Pi 3 jako koncentrator danych.

Beacony Dlaczego Low Power? Idź spać ;) 10 s Zmierz jak najszybciej ~ 900μs Czas potrzebny na wysłanie = 2,2 ms Prąd potrzebny na wysłanie = 10mA Wyślij jak najszybciej ~2,2ms Czas w uśpieniu = 10 s Prąd w uśpieniu = 7,9 ua Średni prąd = 11,6 ua Bateria CR2032 = 230mAh Life Time = 0,8*230mAh /0,06 ua = 2 lata!

Beacony w górnictwie Pomiar temperatury noża podczas urabiania

3. Urządzenie BLE Led Conroller 1. Opis urządzenia 2. Opis działania 3. Implementacja: 3.1 Android Studio Java 3.2 Delphi ( Android Firemonkey )

LED Controller Opis urządzenia Sterowanie diodami LED typu WS2812, WS2811, SK6812 Zasilanie z 5V DC Mikrokontroler nrf52832

LED Controller Podział na serwisy i charakterystyki Serwis Led Controller Charakterystyka control Kolor czerwony Kolor zielony Kolor niebieski Kolor biały Jasność Prędkość efektu Typ efektu 0x00 stały kolor 0x01 stała tęcza 0x02 ruchoma tęcza Wartości od 0-255 Wartości od 0-15 Wartości od 0-255

Implementacja Android Studio Aplikacja do sterowania listwą LED SK6812 Place your screenshot here

LED Controller Demo Android Studio

Implementacja Firemonkey Aplikacja do sterowania listwą LED SK6812 Place your screenshot here

Implementacja Klasa TLedController TLedController = class strict private FDevice : TBluetoothLEDevice; FControl : TControlCharacteristic; FName: string; FSignalPercent: integer; FActive : boolean; FBonded : boolean; FInicjalizacja : boolean; FAutoConnect: boolean; public constructor Create(const ADevice: TBluetoothLEDevice); end; property device: TBluetoothLEDevice read FDevice write FDevice; property control: TControlCharacteristic read FControl write FControl; property name: string read Fname write Fname; property signalpercent: integer read FsignalPercent write FsignalPercent; property active : boolean read Factive write Factive; property bonded : boolean read Fbonded write Fbonded; property autoconnect : boolean read FAutoConnect write FAutoConnect; property inicjalizacja: boolean read FInicjalizacja write FInicjalizacja; procedure updaterssipercent;

Implementacja Firemonkey Komponent TBluetoothLE

Implementacja Połączenie z urządzeniem Rozpoczęcie skanowania: BluetoothLE1.DiscoverDevices(100); Lista wyszukanych urządzeń: procedure TForm1.BluetoothLE1EndDiscoverDevices(const Sender: TObject; const ADeviceList: TBluetoothLEDeviceList); Zapis do słownika: BlueLedConnectedDevice := TLedController.Create( LDevice ); BlueLedActiveDeviceList: TDictionary<String, TLedController>; Łączenie się z konkretny urządzeniem BlueLedConnectedDevice.device.Connect; Odkrywanie serwisów i charakterystyk BluetoothLE1.DiscoverServices(BlueLedConnectedDevice.device);

Zapis charakterystyk Implementacja Zapis charakterystyk function TForm1.bluetoothSendControl: Boolean; var datatosend: TBytes; begin SetLength(dataToSend, 13); datatosend[0] := $AB; datatosend[1] := $CD; datatosend[2] := BlueLedConnectedDevice.control.red;... try CharacteristicControl.SetValue(dataToSend); BluetoothLE1.WriteCharacteristic(BlueLedConnectedDevice.device,CharacteristicControl); Result := true; except Result := false; end; end;

Implementacja Odczyt charakterystyk Odczyt charakterystyk BluetoothLE1.ReadCharacteristic(BlueLedConnectedDevice.device, CharacteristicControl); procedure TForm1.BluetoothLE1CharacteristicRead(const Sender: TObject; const ACharacteristic: TBluetoothGattCharacteristic; AGattStatus:TBluetoothGattStatus); begin if ACharacteristic.UUID.ToString.Contains(CONTROL_CHAR.ToUpper) then begin BlueLedConnectedDevice.control.red := ACharacteristic.GetValueAsUInt8(2);... tbred.value := BlueLedConnectedDevice.control.red;... lbieffectstype.itemdata.detail :=EffectsTypeName[BlueLedConnectedDevice.control.effectType]; end; end;

Implementacja Trick Tip: Łatwe debugowanie w Androidzie Android Monitor z pakietu Android SDK 1) Tools->SDK Manager->SDK base path 2) C:\Users\Public\Documents\Embarcadero\Studio\19.0\CatalogRepository\AndroidSDK-2433_19.0.27659.1188 3) Katalog tools/monitor.bat Przykład: Log.d('Nowe dane z ' + ABeacon.DeviceIdentifier);

LED Controller Demo Firemonkey

Want big impact? USE BIG IMAGE.

4. Podsumowanie 1. Porównanie Android Studio vs Firemonkey 2. Dlaczego wybrałem Delphi?

Podsumowanie Porównanie Parametr Android Studio Firemonkey Rozmiar aplikacji Smart Flower Pot Scaner 1,64 MB 50,28 MB Rozmiar aplikacji Led Controller 2,09 MB 46,44 MB Szybkość działania i stabilność działania Taka sama Możliwości Brak ograniczeń Ograniczone Czas pomiędzy startem kompilacji a uruchomieniem aplikacji na SmartPhonie Krótszy Dłuższy

Jeden projekt/kod wiele platform naraz Delphi jest po prostu fajne Dlaczego wybrałem Delphi?

Podsumowanie github.com/mattpro M. Gancarczyk

Dziękuję za uwagę! Pytania?