Índice:
- Etapa 1: O que você precisa
- Etapa 2: Preparando o Módulo Bluetooth
- Etapa 3: Montagem das peças
- Etapa 4: emparelhamento
- Etapa 5: o software
- Etapa 6: Teste
Vídeo: Sensor de poeira sodial no Android: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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
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
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
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
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
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:
Prolongue a Vida do Seu Laptop! Limpe a poeira do dissipador de calor: 3 etapas
Prolongue a Vida do Seu Laptop! Limpe a poeira do dissipador de calor .: Uma visão geral básica de como limpei a poeira do dissipador de calor do meu laptop Toshiba. Havia tanto lá dentro! Não acredito que essa prática não seja recomendada e incentivada pelos fabricantes. Se a poeira estiver bloqueando a entrada e saída de ar e
Controle De Gás E Poeira Com O NodeMCU: 5 etapas
Controle De Gás E Poeira Com O NodeMCU: Este foi um trabalho para medir n í veis de poeira e g á s num dado ambiente, e compartilhar estes dados nas nuvens e em seu celular, incluindo disparar um e-mail de alerta caso os valores lidos sejam considerados altos
Estudo de poeira do Arduino: 8 etapas
Arduino Dust Study: Como seria viver em Marte? O ar é respirável? É seguro? Quanta poeira existe? Qual a frequência das tempestades? Já se perguntou a resposta a qualquer uma dessas perguntas?
Como limpar e tirar a poeira do seu PC: 5 etapas
Como limpar e tirar a poeira do seu PC: !!! LEIA TODOS OS SLIDES ANTES DE COMEÇAR UM PASSO !!! ============================================= ======== Olá e bem-vindo a possivelmente a coisa mais importante que você verá hoje! Vamos aprender como manter a li
Estação de monitoramento de partículas de poeira alimentada por Arduino: 4 etapas (com fotos)
Estação de monitoramento de partículas de poeira alimentada por Arduino: você pode facilmente construir um dispositivo de Internet das coisas DIY que monitora a poluição por poeira em sua casa por menos de US $ 50 e ser notificado quando o nível de poeira ficar muito alto para que você possa arejar o ambiente, ou você pode configurar fora e seja notificado se for