Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Um sistema de detecção de queda baseado em Arduino, Windows e Azure

Componentes e suprimentos

Arduino UNO
× 1
Microsoft Windows 10 IoT Core
Microsoft Azure
Microsoft Visual Studio 2015
Arduino IDE

Sobre este projeto


Introdução :

Quedas que levam a lesões fatais se tornaram um grande desafio que não pode ser negligenciado pelos idosos. Nos últimos anos, diferentes tipos de abordagens têm sido propostas na área de detecção de quedas, as quais podem ser explicadas e categorizadas em três tipos:baseada em dispositivo vestível, baseada em sensor de ambiente e baseada em visão [1]. Em primeiro lugar, os dispositivos vestíveis geralmente aproveitam as vantagens dos sensores embutidos para detectar o movimento e a localização do corpo, como acelerômetro, magnetômetro e giroscópio [2, 3]. E o custo da abordagem baseada em dispositivo vestível é bastante baixo, assim como a instalação e operação não são complicadas para os idosos. Em segundo lugar, a abordagem baseada no ambiente sempre usa sensores de pressão para detectar e rastrear o corpo. Esta solução também é econômica e fácil de implementar [4, 5]. No entanto, a possibilidade de detectar objetos que não sejam corpos humanos representa um desafio notável para a precisão de detecção dessa abordagem. Por último, mas não menos importante, a solução baseada em visão faz pleno uso de câmeras implantadas para monitorar todos os objetos dentro do alcance, incluindo corpos humanos [6, 7]. Há menos intrusão na vida diária das pessoas do que as duas abordagens acima, enquanto o espaço de observação é limitado e o monitoramento onipresente não pode ser alcançado.

Neste projeto, é proposto um sistema de vigilância baseado em Arduino, Windows 10 e Microsoft Azure para detecção de quedas em tempo real. Os dados brutos do acelerômetro tridimensional são fornecidos pelo Arduino com ADXL345. O dispositivo Windows 10 usa essas informações para obter a orientação do sujeito por meio de fusão de dados eficiente e algoritmos de detecção de queda. Os serviços do Microsoft Azure e o aplicativo Mobile / PC também são projetados para obter um processamento de dados perfeito, analisando, armazenando e adquirindo a qualquer momento e em qualquer lugar, desde que tenham acesso à Internet. A arquitetura do sistema é mostrada na Fig. 1 a seguir.

Referências

[1] L. Jian e T. E. Lockhart, "Development and Evaluation of a Prior-to-Impact Fall Event Detection Algorithm", Biomedical Engineering, IEEE Transactions on, vol. 61, pp. 2135-2140, 2014.

[2] P. Pierleoni, A. Belli, L. Palma, M. Pellegrini, L. Pernini e S. Valenti, "A High Reliability Wearable Device for Elderly Fall Detection," Sensors Journal, IEEE, vol. 15, pp. 4544-4553, 2015.

[3] R. Freitas, M. Terroso, M. Marques, J. Gabriel, A. Torres Marques e R. Simoes, "Redes de sensores portáteis suportadas por dispositivos móveis para detecção de queda," em SENSORS, 2014 IEEE, 2014, pp. 2246-2249.

[4] Z. Xiaodan, H. Jing, G. Potamianos e M. Hasegawa-Johnson, "Detecção acústica de queda usando modelos de mistura gaussiana e supervetores GMM", em Acoustics, Speech and Signal Processing, 2009. ICASSP 2009. IEEE International Conferência de, 2009, pp. 69-72.

[5] L. Yun, K. C. Ho e M. Popescu, "Efficient Source Separation Algorithms for Acoustic Fall Detection Using a Microsoft Kinect," Biomedical Engineering, IEEE Transactions on, vol. 61, pp. 745-755, 2014.

[6] M. Yu, S. M. Naqvi, A. Rhuma e J. Chambers, "Classificadores de método de limite de uma classe para aplicação em um sistema de detecção de queda baseado em vídeo", Computer Vision, IET, vol. 6, pp. 90-100, 2012.

[7] E. E. Stone e M. Skubic, "Fall Detection in Homes of Older Adults Using the Microsoft Kinect," Biomedical and Health Informatics, IEEE Journal of, vol. 19, pp. 290-301, 2015.

Princípio de detecção de quedas com reconhecimento de postura

Neste projeto, o algoritmo de detecção de queda é projetado de acordo com a detecção de queda em Android de Bharadwaj Sreenivasan. Existem dois módulos no algoritmo, reconhecimento de postura e detecção de queda. Em primeiro lugar, lemos os valores x, y e z do acelerômetro. Em seguida, calculamos a norma L2 de x, y e z. Isso é usado pelo módulo de reconhecimento de postura e detecção de queda.

No módulo de reconhecimento de postura, as posturas do usuário são classificadas em três posturas básicas:sentado, em pé e caminhando. Os valores de “y” são aplicados a um limite para descobrir a orientação. Usando a taxa de variação da aceleração média da norma L2 w.r.t devido à gravidade (9.8), classificamos os dados em caminhada ou apenas transição entre estados.

O módulo de detecção de queda procura um padrão particular no sinal. A Fig.2 representa um padrão típico na norma L2 durante um evento de queda.

Se a diferença entre mínimos e máximos consecutivos for maior que 2g, a saída é decidida como uma queda. A decisão final sobre o evento de uma queda é baseada na saída do reconhecimento de postura e do módulo de decisão de queda. Quando uma queda é detectada, a decisão do módulo de reconhecimento de postura nos diz se é um alarme falso. Se o estado ainda estiver caminhando, a decisão do evento de queda pode ser descartada. A Tabela 1 resume a decisão final.

Pré-requisitos

Neste projeto, para o dispositivo Arduino, a comunicação Bluetooth é alcançada pelo HC-06, que é um módulo pequeno e barato. Para dispositivos Windows 10, se você usar o Surface Pro e o Lumia 1520, não precisará do módulo Bluetooth. No entanto, se você usar Raspberry Pi ou MBM como dispositivos IoT do Windows 10, precisará de um dongle Bluetooth. Consulte o Bluetooth serial genérico do MVP David Jones com Win 10 IoT-Core RPI2 para configurar o ambiente.

Observação:levará de 2 a 3 horas para concluir os pré-requisitos se você não tiver o Windows 10 e o Visual Studio 2015 já configurados, mas a maior parte do tempo estiver autônomo.





O que você precisa


Partes:

1. Arduino Uno e cabo USB A / B padrão

2. Módulo Bluetooth HC-06

3. Módulo acelerômetro ADXL345

4. Fios de ligação macho-macho e macho-fêmea

5. Mini-breadboard

6. Lumia 1520 ou outro dispositivo compatível com Windows Phone 10

7. Módulo ORICO Bluetooth





Instruções do projeto


Etapa 1:Conecte o módulo acelerômetro ADXL345 ao Arduino

Tempo :5 minutos

Peças :Arduino Uno R3, ADXL345, fios de jumper, mini placa de ensaio

Ferramentas :N / D

O ADXL345 é um acelerômetro MEMS de 3 eixos pequeno, fino e de baixa potência com medição de alta resolução (13 bits) de até + -16 g. Os dados de saída digital são formatados como complemento de dois de 16 bits e podem ser acessados ​​por meio de uma interface digital SPI (3 ou 4 fios) ou I2C.

O ADXL345 suporta SPI e I2C, vamos falar apenas sobre I2C aqui neste projeto. I2C é uma conexão serial de 2 fios, portanto, precisamos conectar as linhas SDA (Dados) e SCL (Relógio) ao Arduino UNO para comunicação. No Arduino UNO, o SDA está no pino 4 analógico e o SCL está no pino 5 analógico. Certifique-se de que os pinos VCC e CS no sensor estejam conectados a 3,3v. Conectamos o CS a 3,3 V para informar ao sensor que o usaremos como um dispositivo I2C, e não como um dispositivo SPI.

Etapa 2:conectar o módulo Bluetooth

Tempo :5 minutos

Peças :Módulo Bluetooth, fios de jumper

Ferramentas :N / D

Neste projeto, usamos HC-06 como módulo Bluetooth - é muito mais barato do que o módulo BlueSMiRF Silver da SparkFun. Além disso, o HC-05 tem o firmware 'completo' nele, muitos comandos AT e pode ser módulo mestre e escravo. O firmware HC-06, por outro lado, só pode ser um dispositivo escravo, com comandos AT muito limitados. A tabela abaixo mostra todos os comandos de firmware HC-06 com a resposta:

Em primeiro lugar, conecte o módulo Bluetooth na placa de ensaio para tornar as conexões mais fáceis. Para alimentar o módulo, execute um jumper do barramento de alimentação de 5 V do Arduino para o pino Vcc do módulo. E execute um jumper macho-macho do pino GND do módulo para qualquer um dos pinos GND no Arduino. Para estabelecer as comunicações seriais, conecte um jumper macho-macho do pino TX do módulo Bluetooth ao pino RX do Arduino (pino digital 0) e outro do pino RX do módulo ao pino TX do Arduino (pino digital 1).

Nota:Você não poderá fazer upload de esboços do IDE do Arduino para o Arduino quando tiver os pinos TX e RX do Bluetooth conectados ao Arduino. Desconecte-os quando precisar carregar um esboço e reconecte-os quando o esboço tiver sido carregado com sucesso. No desenho abaixo, é mostrado que o HC-05 é utilizado. Na verdade, conforme explicado acima, tanto o HC-05 quanto o HC-06 estão OK.

Após a conexão do Bluetooth e do acelerômetro, a coisa real é mostrada assim:

Etapa 3:Emparelhar o módulo Bluetooth com o dispositivo Windows 10

Tempo :5 minutos

Peças :Módulo Bluetooth, dispositivo Windows 10, módulo ORICO Bluetooth (opcional)

Ferramentas :N / D

O módulo Bluetooth executa o protocolo SPP (Serial Protocol over Bluetooth). Portanto, qualquer dispositivo com suporte para SPP pode se conectar a ele. Em um dispositivo Windows 10, isso se parece com uma porta COM virtual. Antes de conectar, certifique-se de que o módulo está ligado e pronto para o emparelhamento. O LED vermelho no módulo indica o status:piscando significa “pronto para emparelhar”, enquanto aceso constante significa “emparelhado”.

No Windows 10 para PC, navegue até Configurações-> Dispositivos-> Bluetooth, abra o Bluetooth e o módulo “HC-06” será mostrado na tela. Toque para emparelhar o dispositivo e insira o código de emparelhamento do dispositivo. Lembre-se de que o código de emparelhamento padrão é 1234 e a velocidade da porta serial padrão é 9600 Baud. Então, a página Bluetooth é mostrada assim:

Para o Windows 10 for Mobile, navegue até Configurações-> Dispositivos-> Bluetooth e execute as mesmas etapas descritas na seção acima. E a página do dispositivo emparelhado é mostrada assim:

Para o dispositivo Windows 10 IoT Core, por exemplo Raspberry Pi 2, MBM e Dragon Board 410c, o processo de emparelhamento é muito diferente. Em primeiro lugar, para Raspberry Pi 2 e MBM que não têm módulo Bluetooth integrado, devemos comprar um dongle USB Bluetooth e conectá-lo. Basta consultar a lista de compatibilidade de hardware e escolher um dongle USB Bluetooth verificado.

Neste projeto, escolhemos um módulo ORICO BTA-403.

Se você tentar este projeto no Dragon Board 410c, não precisará de um dongle Bluetooth porque o Dragon Board 410c tem um módulo Bluetooth integrado.

Conecte o dongle USB ORICO BTA-403 Bluetooth na interface USB do Raspberry Pi 2 da seguinte maneira.

Assim que o dongle USB ORICO BTA-403 Bluetooth estiver conectado, ele mostrará mensagens na tela do aplicativo padrão do dispositivo Windows 10 IoT Core.

Para emparelhamento Bluetooth no dispositivo Windows 10 IoT Core, consulte a página Emparelhamento de um dispositivo BLE e ferramenta de despejo de tabela de atributos GATT e siga a “Etapa 1 - Etapa 6” descrita na seção “Emparelhamento do Sensortag”. Aqui, devemos usar SSH para se conectar ao Windows IoT Core e executar a ferramenta de linha de comando para configurar o dispositivo.

Nota:lembre-se de que o modo BR deve ser escolhido no Menu Principal. E o código de emparelhamento padrão é 1234.

Após o emparelhamento bem-sucedido, a página Bluetooth do dispositivo é mostrada assim:

Etapa 4:Criar a conta de armazenamento do Azure

Tempo :10 minutos

Peças :N / D

Ferramentas :Conta Azure

Neste projeto, precisaremos da Tabela de armazenamento do Azure para armazenar os dados do dispositivo Windows 10 IoT Core. Portanto, podemos criá-lo da seguinte maneira.

(1) No Portal de Gerenciamento do Azure (https://manage.windowsazure.com), clique no ícone "ARMAZENAMENTO" à esquerda para visualizar suas contas de armazenamento existentes (se houver) e, em seguida, clique no botão "+ NOVO" no canto esquerdo inferior.

(2) No painel "NOVO", selecione "SERVIÇOS DE DADOS" | "ARMAZENAMENTO" | "CRIAÇÃO RÁPIDA". Preencha os campos “URL, Local / Grupo de Afinidade e Replicação” e clique no botão "CRIAR CONTA DE ARMAZENAMENTO".

(3) Aguarde até que o status da nova conta de armazenamento seja exibido como "Online".

(4) Selecione a conta de armazenamento recém-criada e clique em GERENCIAR CHAVES DE ACESSO na parte inferior da página. Copie o nome da conta de armazenamento e uma das chaves de acesso.

Etapa 5:Criar Tabela de Armazenamento do Azure

Usamos o Azure Storage Explorer (uma ferramenta de código aberto de terceiros disponível em codeplex:https://azurestorageexplorer.codeplex.com) para criar a Tabela de armazenamento do Azure.

(1) Vá para adicionar conta e preencha o nome da conta e a chave de acesso. Uma vez estabelecida a conta, você pode acessar o armazenamento que mostra contêineres de blob, filas e tabelas.

(2) Selecione a tabela e clique no novo botão e crie uma nova tabela chamada “Tabela do acelerômetro” como segue.

Etapa 5:Baixe e implante o código

Tempo :10 minutos

Peças :N / D

Ferramentas :N / D

Em primeiro lugar, agora que temos tudo conectado ao Arduino, baixe o projeto “ADXL345_HC06.ino” (fornecido na seção de código abaixo) e carregue-o no IDE do Arduino em seu PC. Certifique-se de desconectar os fios de jumper TX / RX do módulo HC-06 e, em seguida, carregue o esboço. Reconecte os fios de jumper TX / RX aos pinos digital 0 e digital 1 do Arduino. Conecte a alimentação e o aplicativo será executado no Arduino Uno.

Em segundo lugar, baixe o projeto “GenericBluetoothSerialUWApp” do github. Use o Visual Studio 2015 com a atualização 1 para carregar “GenericBluetoothSerialUWApp”. Este aplicativo foi projetado com a ajuda do Bluetooth Serial Genérico do nosso MVP David Jones com Win 10 IoT-Core RPI2. Se você deseja que este aplicativo UWP seja executado no PC, escolha x86 ou x64 com depuração de dispositivo local. Se você deseja que este aplicativo UWP seja executado no Windows 10 Mobile, escolha ARM com depuração de dispositivo. Se você deseja que este aplicativo UWP seja executado no dispositivo IoT do Windows 10, por exemplo, Raspberry Pi 2, certifique-se de definir o ponto de “Depuração remota” para o seu dispositivo.

Em seguida, abra MainPage.xaml.cs no Solution Explorer e localize o “dataTransferTick”. Adicione o nome da conta de armazenamento e a chave de acesso que salvou na seção 4.

Depois de emparelhar o HC-06 com seu dispositivo Windows 10, pressione F5 no Visual Studio para iniciar o aplicativo Plataforma Universal do Windows.

Dê um duplo toque no símbolo “HC-06”, você encontrará a exibição de Id e Nome na parte superior do aplicativo como segue.

Em breve, você pode ver que o estado do LED no HC-06 mudará de intermitente para estável. E o botão “Start Rev” é habilitado assim que o canal de comunicação do módulo Bluetooth é estabelecido.

Clique em Iniciar recebimento para habilitar o recebimento de dados. Em seguida, você verá que os botões Parar recebimento, Dados do processo e Carregar dados estão habilitados. Basta clicar no botão Processar dados para executar o algoritmo de detecção de queda. Você verá os dados no Recvd TextBlock e o estado da pessoa que carrega o dispositivo.

Você ainda pode descobrir que os dados serão exibidos nas janelas de depuração do Visual Studio da seguinte maneira.

Em seguida, clique no botão Carregar para carregar os dados no Azure. Os dados serão transmitidos a cada 3 segundos. Se você deseja alterar o intervalo de tempo, você pode modificar o código em “AzureButton_Click” como segue.

private void AzureButton_Click (object sender, RoutedEventArgs e) {

timerDataTransfer =ThreadPoolTimer.CreatePeriodicTimer (dataTransferTick, TimeSpan.FromMilliseconds (Convert.ToInt32 ( 3000 )));

}

Em breve, você poderá ver os dados em AccelerometerTable da seguinte maneira

Em terceiro lugar, baixe o “FallDetectionClient” do github. Use o Visual Studio 2015 com atualização 1 para carregar este projeto. Este aplicativo é construído com o Windows Universal Temple, para que você possa executá-lo no Windows 10 PC / Mobile, bem como no dispositivo Windows 10 IoT Core. Em seguida, abra StorageSensor.cs no Solution Explorer e localize “_accountName” e “_key”. Adicione o nome da conta de armazenamento e a chave de acesso que salvou na seção 4.

Agora você deve conseguir pressionar F5 no Visual Studio:o aplicativo será implantado e iniciado, e você deve ver isso na saída do dispositivo.


Código

  • Arduino Sketch (ADXL345_HC06.ino)
Arduino Sketch (ADXL345_HC06.ino) Arduino
ADXL345 Accelrometer + HC-06 Módulo Bluetooth
 #include  #include  #define Register_ID 0 # define Register_2D 0x2D # define Register_X0 0x32 # define Register_X1 0x33 # define Register_Y0 0x34 # define Register_Y1 0x35 # define Register_Z0 0x36 # define Register_Z1 0x37int ADXAddress =0xA7>> 1; int reading =0; int val =0; int X0, X1, X_out; int Y0, Y1, Y_out; int Z1, Z0, Z_out; duplo Xg, Yg, Zg; configuração vazia () {Serial.begin (9600); Wire.begin (); atraso (100); Wire.beginTransmission (ADXAddress); Wire.write (Register_2D); Wire.write (8); Wire.endTransmission ();} void loop () {double tempx =0; char strx [5]; duplo tempy =0; char stry [5]; duplo tempz =0; char strz [5]; String gy; Wire.beginTransmission (ADXAddress); Wire.write (Register_X0); Wire.write (Register_X1); Wire.endTransmission (); Wire.requestFrom (ADXAddress, 2); if (Wire.available () <=2); {X0 =Wire.read (); X1 =Wire.read (); X1 =X1 <<8; X_out =X0 + X1; } Wire.beginTransmission (ADXAddress); Wire.write (Register_Y0); Wire.write (Register_Y1); Wire.endTransmission (); Wire.requestFrom (ADXAddress, 2); if (Wire.available () <=2); {Y0 =Wire.read (); Y1 =Wire.read (); Y1 =Y1 <<8; Y_out =Y0 + Y1; } Wire.beginTransmission (ADXAddress); Wire.write (Register_Z0); Wire.write (Register_Z1); Wire.endTransmission (); Wire.requestFrom (ADXAddress, 2); if (Wire.available () <=2); {Z0 =Wire.read (); Z1 =Wire.read (); Z1 =Z1 <<8; Z_out =Z0 + Z1; } Xg =X_out / 256,00; Yg =Y_out / 256,00; Zg =Z_out / 256,00; if (Xg> 0) {gy =String ("") + "x =+" + Xg; } else {gy =String ("") + "x =" + Xg; } if (Yg> 0) {gy + =String ("") + "y =+" + Yg; } else {gy + =String ("") + "y =" + Yg; } if (Zg> 0) {gy + =String ("") + "z =+" + Zg + ","; } else {gy + =String ("") + "z =" + Zg + ","; } Serial.print (gy);} 
Aplicativo Bluetooth Serial
Comunica-se com o Arduino via bluetooth HC-06 e envia dados ADXL345 para Azurehttps://github.com/shijiong/FallDetection/tree/master/GenericBluetoothSerialUWApp
FallDetectionClient
Aplicativo cliente UWP para detecção de quedahttps://github.com/shijiong/FallDetection/tree/master/FallDetectionClient

Esquemas

ADXL345 + HC-06 Completar% 20Schematic.fzzSketch para conexão ADXL345 ADXL345.fzzSketch para conexão do módulo Bluetooth hc-06.fzz

Processo de manufatura

  1. Sistema de atendimento usando Arduino e RFID com Python
  2. Sistema de detecção de humanos usando Arduino Uno
  3. Um design PM2.5 e PM 10 Detector para Windows 10 UWP App
  4. Sistema de monitoramento e detecção de incêndios florestais (com alertas SMS)
  5. u-blox LEA-6H 02 Módulo GPS com Arduino e Python
  6. Arduino e autômatos celulares baseados em OLED
  7. eDOT - Relógio de precisão baseado em Arduino e estação meteorológica
  8. Sistema de atendimento baseado em Arduino e planilha do Google
  9. Sistema de aviso de detecção de colisão baseado em Arduino
  10. Controle do carro com Arduino Uno e Bluetooth