Índice:

Sensor de poeira sodial no Android: 6 etapas
Sensor de poeira sodial no Android: 6 etapas

Vídeo: Sensor de poeira sodial no Android: 6 etapas

Vídeo: Sensor de poeira sodial no Android: 6 etapas
Vídeo: Вентиляция в хрущевке. Как сделать? Переделка хрущевки от А до Я. #31 2024, Novembro
Anonim
Sensor de poeira sodial no Android
Sensor de poeira sodial no Android

Há um ano, um amigo meu deu um workshop de fim de semana sobre monitoramento ambiental. O objetivo do workshop era construir um sensor de poeira conectado a uma placa de framboesa pi para colocar os dados de medição em algum servidor que fornecesse mapas de concentração de poeira atualizados com frequência. Meu amigo perguntou se existe uma maneira de obter os dados do sensor diretamente em seu smartphone para monitoramento e registro. Então eu cavei na internet por uma folha de dados e vi que o sensor tinha uma interface UART simples com protocolo 9600Baud 8N1. Mas como conectar um UART a um smartphone? Bem, isso é fácil. Eu só tive que usar um daqueles pequenos módulos Bluetooth onipresentes que fornecem um comportamento emulado no Android. Agora veja como eu fiz isso.

Etapa 1: O que você precisa

O que você precisa
O que você precisa
O que você precisa
O que você precisa

Você precisa das seguintes peças

  • Um conector correspondente JST XH de 7 pinos para a interface Sodial com fios. Comprei o meu no Ebay.
  • Um módulo Bluetooth HC05 ou 06 compatível com o conector UART
  • Um conversor USB-serial com interface de nível TTL. Usamos isso para dar ao módulo BT um nome exclusivo
  • Sensor de poeira sodial SDS011. Eu peguei o meu no ebay
  • um pedaço de veroboard
  • Conector USB-B
  • arame
  • Um pedaço de madeira para montar tudo

Então você precisará de algumas ferramentas simples:

  • Uma serra elétrica para cortar madeira
  • pinças
  • ferro de solda e solda
  • cortador de arame
  • Pistola de cola quente
  • Um pedaço de luva de silicone de 8 mm (não na imagem)

Você pode baixar a folha de dados Sodial SDS011 aqui Folha de dados Sodial SDS011

Etapa 2: Preparando o Módulo Bluetooth

Preparando o Módulo Bluetooth
Preparando o Módulo Bluetooth
Preparando o Módulo Bluetooth
Preparando o Módulo Bluetooth
Preparando o Módulo Bluetooth
Preparando o Módulo Bluetooth
Preparando o Módulo Bluetooth
Preparando o Módulo Bluetooth

O Módulo BT possui uma interface UART com nível TTL. Ele pode ser reconfigurado com comandos "AT", como fazíamos com os modems de internet nos tempos antigos. Para conectá-lo a um programa de terminal em sua máquina, você precisa adaptar o UART ao seu computador. Usei um conversor USB-RS232 que comprei na Amazon. Apliquei um conector para o módulo BT e encaminhei a fonte de alimentação de 3,3 V e GND do conversor para o módulo BT. Então eu conectei as respectivas linhas TxD e RxD em crossover. TxD do conversor USB para RxD do módulo BT e vice-versa.

Tenho uma máquina linux e usei o cutecom. Depois de conectar o conversor USB o comport era "ttyUSB0". Você pode encontrar os nomes comportamentais no diretório "/ dev" em sua máquina Linux. Para usuários do Windows, eu recomendaria "hterm". É fácil de operar. Digite "AT" e você deverá obter "AT" como resposta. Em seguida, digite "AT + NameSensor" para dar ao módulo BT o nome "Sensor"

Etapa 3: Montagem das peças

Montagem das peças
Montagem das peças
Montagem das peças
Montagem das peças
Montagem das peças
Montagem das peças
Montagem das peças
Montagem das peças

Corte um pedaço de madeira no tamanho adequado para retirar todas as peças. Conecte todos os sinais conforme indicado no esquema. É uma boa ideia colocar uma capa de silicone em volta dos fios para protegê-los. Solde o plugue USB-B no perfboard. É usado apenas como fonte de alimentação. Fixe todas as peças com parafusos na base de madeira. Finalmente, cole os cabos com cola quente para fixá-los na madeira.

Etapa 4: emparelhamento

Emparelhamento
Emparelhamento
Emparelhamento
Emparelhamento

Ligue o aplicativo do sensor conectando uma fonte de alimentação USB. Um LED vermelho no módulo BT começará a piscar. Não tente emparelhá-lo com seu smartphone Android. Você deve inserir um código PIN. Este é "1234". Depois de inserir o código, seu smartphone deve ser emparelhado com o módulo BT.

Etapa 5: o software

Gosto de escrever aplicativos Android na própria plataforma de destino. ele evita todas as coisas de emulação com que você precisa se preocupar se estiver trabalhando com o Android Studio. Eu descobri três ferramentas de desenvolvimento adequadas no próprio Android

  • Mintoris Basic. Um intérprete básico com um rico conjunto de comandos para mexer em quase tudo no Android. Você pode criar atalhos para seus aplicativos. O Mintoris basic não contém um compilador. Portanto, você deve ter instalado o Mintoris em todos os dispositivos que estiver usando. Mas só tem de pagar uma vez (cerca de 7 €)
  • Básico! Extremamente bom intérprete e compilador básico (add-on por alguns €). Quase conecta tudo no Android e você pode compilar aplicativos reais para distribuí-los sem ter o Basic! no dispositivo de destino. Infelizmente básico! carece das excelentes funções de gráfico de diagrama de Mintoris
  • AIDE é um IDE semi-profissional para fazer desenvolvimento de Android em java no Android. Com AIDE você tem a máxima flexibilidade, mas você precisa aprender java. AIDE tem custos anuais de cerca de 50 €

Eu escolhi Mintoris. Nesta seção, não darei a você um tutorial de programação no Mintoris, mas uma breve descrição dos blocos de funções

Na parte seguinte, três matrizes são declaradas para as duas linhas de dados do sensor e os respectivos carimbos de data / hora. Os dados do carimbo de data / hora são usados para rotular o eixo x do diagrama. O Sodial produz dois fluxos de dados, cada um especificado para um tamanho de partícula especial. Os dois arrays de dustdata assumem esses valores.

WakeLock Parcial

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

TextSize 24

CLS

Popup "Medidor de sensor de poeira (c) ARJ 2017"

Global dustData (), dustDataF (), timeStamp () Índice global, escolha, maxData, fileName $

Dim timeStamp (59)

Dim dustData (59)

Dim dustDataF (59)

Dim Menu $ (4) = "máx. 100 conjuntos de dados", "máx. 1000 conjuntos de dados", "máx. 5000 conjuntos de dados", "máx. 10.000 conjuntos de dados", "Sair"

'Iniciar as matrizes

Para i = 0 a 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Proximo eu

Em seguida, um menu Lista é configurado. Isso dá ao usuário a opção de selecionar o tamanho máximo dos dados a serem coletados. Este é apenas um interruptor de segurança para evitar que o smartphone absorva dados infinitos. As funções BTgetPaired $ () fornecem uma lista com todos os dispositivos emparelhados no dispositivo Android, seus nomes e endereço BT.

Menu L ist $ (), escolha

'Selecione a quantidade máxima se os dados forem armazenados

runLevel = 1

Selecione a escolha

Caso 0 maxData = 100

Caso 1 maxDate = 1000

Caso 2 maxData = 5000

Caso 3 maxData = 10000

Caso 4 maxData = 0

End Select

'' Conectar sensor

par escuro $ (0)

par $ () = BTGetPaired $ ()

Se par $ (0) = "nenhum" Então

Imprimir "Nenhum dispositivo emparelhado encontrado. O BT está ligado?" Imprimir "Programa encerrado"

Fim

Fim se

Listar par $ (), dispositivo $

nome $ = ItemExtract $ (dispositivo $, 0)

endereço $ = ItemExtract $ (dispositivo $, 1)

BTConnect 1, endereço $

'Aguarde a conexão

Progresso ON

Imprima "Tentando conectar a"; endereço $

Para i = 1 a 20

Progresso i / 2

Se BTGetstate (1) = 4, então saia para aguardar 1000

Proximo eu

Progresso OFF

'Em caso de sucesso, conecte-se ao dispositivo BT

If BTGetState (1) = 4 Then Print "Connected" Else Print "Não foi possível conectar a"; name $

Imprimir "Programa encerrado"

Fim

Fim se

O próximo bloco mostra o aquirement de dados. Para cada sessão de dados, um arquivo é aberto automaticamente e nomeado após hora e data. Então, o loop está lendo os dados do sensor. Os dados são compactados em vários bytes. Um conjunto de bytes é identificado por dois caracteres ASCII 170 e 171. Os dados a seguir são reorganizados e preenchidos nas matrizes de poeira

Gráficos ligados

'Abrir arquivo de dados para escrever

fileName $ = FormatTime $ (t, "aaaa-MM-dd-kk-mm-ss") + ".dat"

Open 1, fileName $, "w +" Print "Opened datafile"; fileName $ Writeln 1, FormatTime $ (Time (), "aa-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

'Preencher a matriz com os dados medidos

dados $ = "" pacote $ = ""

índice = 0

Do While maxData> 0

BTRead 1, pacote $, 10

dados $ = dados $ + pacote $

Se Len (dados $)> = 10 Então

If (ASCII (Left $ (data $, 1)) = 170) & (ASCII (Right $ (data $, 1)) = 171) Então

dustDataF (índice) = ASCII (Mid $ (dados $, 2, 1))

dustDataF (index) = (dustDataF (index) + 256 * ASCII (Mid $ (data $, 3, 1))) / 10

dustData (índice) = ASCII (Mid $ (dados $, 4, 1))

dustData (index) = (dustData (index) + 256 * ASCII (Mid $ (data $, 5, 1))) / 10

Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))

dados $ = ""

maxData = maxData-1

índice = índice + 1

Se índice> 59 Então índice = 0

dustData (índice) = 0

dustDataF (índice) = 0

Fim se

Fim se

DrawGraph ()

Espere 100

Ciclo

Fechar 1

Gráficos desligados

Impressão CLS "Programa encerrado"

Fim

A última parte é uma sub-rotina que é chamada após cada recepção de dados. Ele limpa a tela, redesenha o diagrama com os dados reais armazenados nas matrizes de poeira e de carimbo de data / hora.

'Desenhe as coordenadas, os rótulos, os tiques e também as curvas de dados

Sub DrawGraph ()

'No modo gráfico, a tela muda para a cor atual

Cor 0, 0, 0

CLS

Cor 0, 0, 100

'Defina a cor do gráfico a ser usado para desenhar as linhas da grade

TextColor 100, 100, 100, 50

'TextColor é a cor do título principal da grade

TextColorA 100, 100, 100

'TextColorA é usado para títulos de eixos e anotações de grade.

'Defina o tamanho do texto do título do eixo

'O título principal da grade é 2x deste tamanho

TextSize 20

FixDecimal 0

'Definido para exibir 2 casas decimais

PadDigits 2

'Desenhe uma grade para o gráfico' Defina o intervalo e o título do X e Y

Axis AxisX 0, 59, "Tempo / s"

AxisY 0, 10000, "ug / m3"

Grade 3, "Concentração de poeira"

'Desenhe Gráficos de Poeira

Cor 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Cor 0, 100, 0

GraphXY timeStamp (), dustData ()

TextColor 100, 0, 0

DrawText "PM2.5", 30, Int (ScreenY () - 60), 90, 1

TextColor 0, 100, 0

DrawText "PM10", 30, Int (ScreenY () - 150), 90, 1

TextColor 100, 100, 100, 50

Retornar

Baixe o código fonte aqui

Etapa 6: Teste

Image
Image
Teste
Teste
Teste
Teste
Teste
Teste

Ligue o sensor e inicie o aplicativo. Na lista de dispositivos emparelhados, escolha aquele denominado "Sensor". Após conectar o sensor, a tela começará a exibir os dados. Simultaneamente, o arquivo de dados é alocado. Depois de terminar a moda, você pode usar o GnuPlot para exibir os dados. Use o arquivo "Test.gp" no GnuPlot para configurar o GnuPlot para exibir um arquivo de dados chamado "Test.dat". Você também pode encontrar aqui

Veja o vídeo para mais detalhes e testes. Divirta-se e tenha mais ideias!

Recomendado: