Introduction: MicroCARE

About: Hackathon Sao Carlos

MicroCARE é um sistema de rastreamento de equipamentos em ambiente hospitalar.

Este projeto é motivado pela necessidade de conhecer a localização em tempo real de equipamentos importantes, pois em um hospital, tempo é vida. Além desta motivação principal, temos algumas outras, como por exemplo, o mapeamento do trânsito de ativos, podendo ser utilizado para a melhoria dos processos do hospital.

Para implementar tal solução, utilizamos a DragonBoard, como central,e os Beacons, como elementos rastreáveis.

=================================================================

MicroCARE is a medical equipment tracking system.

This project is motivated by the need to know real-time location of important equipment, seeing that in a hospital:, time is life. Besides the main motivation, we are instigated by some other topics, such as the mapping of asset traffic, which can be used to improve hospital processes.

To implement this a solution, we use DragonBoard, as a central, and the Beacons as the traceable elements.

Step 1: Arquitetura Do Sistema

O sistema funciona da seguinte maneira:

  • Existe uma DragonBoard em cada sala do Hospital
  • Existe um Beacon em cada equipamento a ser rastreado
  • Existe um servidor na nuvem (AWS) com um broker MQTT em python, um sistema web e um banco de dados. Os dois últimos implementados através do framework Django.

Considerando esta estrutura:

  1. O beacon no equipamento é visível para um ou mais DragonBoards
  2. Cada DragonBoard verifica quais beacons ela consegue "ver" e envia ao broker MQTT a potência do sinal que ela vê cada beacon
  3. Dentro do servidor, um programa irá ler estas informações publicadas no broker MQTT, analisará qual DragonBoard vê cada beacon com a maior potência e atribuirá, no banco de dados, este equipamento à sala em que esta DragonBoard se encontra.
  4. O sistema web permite o acompanhamento em tempo real da localização dos componenetes

Acima é apresentada uma visão geral da arquitetura do sistema.

Step 2: Configurando a DragonBoard

Para que a DragonBoard possa detectar os beacons e enviar ao broker MQTT é preciso instalar alguns pacotes.

  1. sudo apt-get install python3-pip: para que possamos instalar algumas biliotecas do python
  2. sudo pip3 install --upgrade setuptools: para evitar erros na instalação das próximas bibliotecas
  3. sudo pip3 install wheel: também para evitar erros na instalação das próximas bibliotecas
  4. sudo apt-get install libglib2.0-dev: dependência da biblioteca bluepy
  5. sudo pip3 install bluepy: para que se possa ler o sinal dos beacons
  6. sudo pip3 install paho-mqtt: utilizada para enviar os dados ao broker MQTT

Considerando que a DragonBoard deve realizar o monitoramento dos beacons assim que ligada na tomada, temos que inicar o script em python que realiza este monitoramento. Para isso, devemos ir nas configurações do sistema, configurações da sessão e auto inicialização de programa. Nesta aba deve-se adicionar o comando sudo python3 /caminho/para/script.py.

Step 3: Detector De Beacon

O código completo está no GitHub, mas descreverei brevemente como é a lógica do programa.

  1. É feita uma leitura de todos os dispositivos bluetooth visiveis
  2. Os dispositivos com que tem um campo específico ("Short Local Name") com um valor específico ("ADA#00011") tem a intensidade do sinal e o Time Stamp da detecção armazenados
  3. É criado um tópico MQTT para publicação das informações a respeito do dispositivo detectado.
  4. O tópico em que essas informações são publicadas é formatado da seguinte maneira: <MAC do dispositivo>/<Local da placa>/RSSI
  5. Nesse tópico, as informações de intensidade do sinal (RSSI) e o Time Stamp da detecção são adicionadas ao payload da mensagem na seguinte formatação: <RSSI>;<Time Stamp>
  6. Publica-se o tópico com as imformações do dispositivo detectado
  7. Volta-se ao passo 1

Step 4: Recebimento De Tópicos (Subscriber MQTT)

O código completo também está no GitHub, mas descreverei brevemente seu funcionamento.

  1. O programa inscreve-se em qualquer tópico [subscribe(("#", 0)]
  2. Ocorrendo uma publicação em algum tópico, um evento é acionado
  3. Esse evento trata as informações recebidas tanto no tópico da publucação como no payload da mensagem publicada
  4. O tópico da publicação contém informações de identificador de equipamento e localização de equipamento
  5. O payload da mensagem contém informações de intensidade do sinal e time stamp da detecção
  6. Assim coletamos todas as informações necessárias para identificar a movimentação do equipamento

Step 5: Equipe

Este projeto foi desenvolvido por:

Bruno Andrade Stefano - bruno.stefano@usp.br

Guilherme Andriotti Momesso - guianm@outlook.com

Guilherme Prearo - guiprearo@gmail.com

Patrick Oliveira Feitosa - patrickof@usp.br

Pedro Virgilio Basilio Jeronymo - pedrovbj@gmail.com

durante participação no SancaThon 2018.