Coder Social home page Coder Social logo

ble-app's Introduction

BLE app

Aplicação que conecta dispositivos mobile no coletor de dados da GalileoSky

projeto Aplicação BLE

🚀 Tecnologias

Esse projeto foi desenvolvido com as seguintes tecnologias:

  • React Native
  • Expo
  • EAS
  • BLE PLX (Bluetooth Low Energy)

💻 Projeto

A demanda surgiu como uma ideia de desenvolver uma aplicação nativa de identificação de agentes via BLE (Bluetooth Low-Energy). Dessa forma, o usuário com o aplicativo instalado no seu celular Android conseguirá se conectar via BLE com dispositivos GATT, sendo estes responsáveis por enviar pacotes de dados ao celular e apresentá-los em uma interface. A priori, a aplicação deve se conectar com dispositivos da Galileosky.

  • Versão BETA da aplicação: Link
  • Documentação Galileosky sobre BLE: Link
  • Documentação protocolo Galileosky: Link
  • Github lib React-Native-BLE-plx: Link
  • Documentação lib React-Native-BLE-plx: Link

🔖 Layout

O Layout pode ser encontrado no Figma por meio do seguinte Link

⏯️ Testes

  • Versão da documentação: 5 (Lollipop)
  • Versão Android testada: 7.1.1 (Nougat) e 13 (Android 13)
  • Versão API: 25 e 33
  • Versão Expo: 49
  • Versão react-Native: 72
  • Firmware Galileosky: 38

🧮 Execução

🧰 Configurações

Novo projeto

Utilizando Expo

npx create-expo-app -t expo-template-blank-typescript expo-ble-darwin
npx expo install react-native-ble-plx @config-plugins/react-native-ble-plx
npx expo install expo-device react-native-base64

Instalando o EAS para build

npx npm install eas-cli
npx expo install expo-dev-client

Adicionar o seguinte plugin no arquivo app.json

"plugins": [
      [
        "@config-plugins/react-native-ble-plx",
        {
          "isBackgroundEnabled": true,
          "modes": [
            "peripheral",
            "central"
          ],
          "bluetoothAlwaysPermission": "Allow $(PRODUCT_NAME) to connect to bluetooth devices"
        }
      ],
],

Adicionar o seguinte snippet no arquivo eas.json

{
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  }
}

Gerar as pastas nativas Android e IOS e validar os plugins. Dessa forma, as permissões são inseridas no AndroidManifest.xml e info.plist.

npx expo prebuild

Gerar uma versão de build de desenvolvimento para ser usada em emuladores ou dispositivos físicos. Retorna o QRCode para leitura.

npx expo run:android
ou
npx expo run:ios

Gerar um servidor de desenvolvimento para ser baixado em dispositivos físicos. Assim é possível rodar a build de desenvolvimento gerada e ler o QRCode.

eas build --profile development --platform android
ou
eas build --profile development --platform ios

Anotações

  • Características e UUID
Serviço (Retorna da conexão BLE): 0000a441-0000-1000-8000-00805f9b34fb
SPS ou Read (Documentação): 0783b03e-8535-b5a0-7140-a304d2495cb7
Server_TX ou Notify (Documentação): 0783b03e-8535-b5a0-7140-a304d2495cb8
Server_RX ou WriteNoResponse (Documentação): 0783b03e-8535-b5a0-7140-a304d2495cba
Flow_CTRL ou WriteNoResponse_Notify (Documentação): 0783b03e-8535-b5a0-7140-a304d2495cb9
  • Formato de mensagem
/****** Formato da mensagem / 250 bytes *******
| Byte nº | Length | Value |    Descrição     |
-----------------------------------------------
|   1     |    1   | 0x41  |                  |
|   2     |    1   | 0xA4  | Cabeçalho da     |
|   3     |    1   | 0x12  | Mensagem         |
|   4     |    1   | 0x21  |                  |
|  ...    |   ...  |       | Pacote principal |
|   n     |   15   | 0x03  |    IMEI          |
|  ...    |   ...  |       | Pacote principal |
-----------------------------------------------
  • Exemplo de mensagem
Cabeçalho retornando: QaQSIQ==
https://cryptii.com/pipes/base64-to-binary

QaQSIQ==
AR4AAzg2MjM=
MTEwNjEzMTU=
MjQ2EAAAQEI=
K0GYXkKADkMmIMA=

Pacote: 
Header BLE:         41 A4 12 21 
Header PCT:         01 
Length:             1e 00 
IMEI:               03 38 36 32 33 31 31 30 36 31 33 31 35 32 34 36 
Number of record:   10 00 00 
Status device:      40 42 2B 
Supply Voltage:     41 98 5e 
Battery Voltage:    42 80 0e 
Inside temperature: 43 26
CRC:                20 c0

A mensagem é enviada em partes que devem ser juntadas posteriormente

ble-app's People

Contributors

lgustta13 avatar

Watchers

 avatar  avatar

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.