Índice:

Termômetro Bluetooth: 8 etapas
Termômetro Bluetooth: 8 etapas

Vídeo: Termômetro Bluetooth: 8 etapas

Vídeo: Termômetro Bluetooth: 8 etapas
Vídeo: How to Fix Redmi Note 8, 8T, 8 Pro Bluetooth Pairing Connection Issues? 2024, Novembro
Anonim
Termômetro bluetooth
Termômetro bluetooth
Termômetro bluetooth
Termômetro bluetooth
Termômetro bluetooth
Termômetro bluetooth

Este instrutível detalha a fabricação de um termômetro de 2 canais simples usando sondas de termistor de 100K, um módulo Bluetooth e smartphone. O módulo Bluetooth é um LightBlue Bean que foi projetado para simplificar o desenvolvimento do aplicativo Bluetooth Low Energy usando o ambiente familiar Arduino para programar o módulo.

Depois de hesitar por um tempo tentando descobrir como transferir os dados de temperatura do módulo Bluetooth para o meu iPhone, encontrei um aplicativo chamado EvoThings que simplificou consideravelmente o lado de desenvolvimento de aplicativos do projeto. Não tenho um Mac (chocante, eu sei!), O que limita minha capacidade de desenvolver um aplicativo para iPhone, e não tenho tempo para decifrar as novas ferramentas da Microsoft que evidentemente suportam o desenvolvimento de plataforma cruzada para iOS e Android. Eu fiz vários aplicativos de estilo HTML5, mas a única maneira de obter dados Bluetooth é por meio de plug-ins para Cordova, que parecia mais um desafio do que eu tinha tempo. O EvoThings oferece um conjunto de ferramentas muito fácil de usar que transformou o desafio do Bluetooth para o iPhone em uma moleza. E eu gosto de bolo!

No geral, achei a combinação de Lightblue Bean e EvoThings uma solução muito prática com baixo investimento de tempo.

Etapa 1: Coisas que você precisa

Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa

Usei uma sonda termistor disponível comercialmente para um canal porque queria o termistor selado para imersão em líquidos. Para o segundo canal, fiz uma sonda básica com um termistor, um fio de bitola 26 e um plugue de fone de ouvido de 3,5 mm. Você é livre para usar qualquer termistor que quiser e pode fazer suas próprias sondas de epóxi termicamente condutor e canudos de plástico / agitadores de café, por exemplo. O que se segue é o que eu usei - não tem a intenção de ser uma lista prescritiva!

Hardware

  • Sondas de termistor de 1 x 100K. Modelo Extech TP890. Estes estão comumente disponíveis no ebay e amazon.
  • Conectores estéreo de 2 x 2,5 mm que correspondem ao plugue de 2,5 mm nas sondas Extech. Eu limpei conectores de 3,5 mm de um computador antigo, então cortei o plugue da sonda Extech e o substituí por plugues de 3,5 mm. Você deve evitar isso e usar apenas tomadas de 2,5 mm ou um plugue adaptador estéreo de 2,5 mm a 3,5 mm disponível no mercado.
  • Talão de termistor de 100K mais fio de bitola 26 mais plugue estéreo de 3,5 mm se você quiser fazer sua própria sonda. Caso contrário, compre uma segunda sonda Extech!
  • 1 x Feijão Lightblue por Punch Through Designs. Este é o módulo Bluetooth programável como uma placa de desenvolvimento Arduino. O módulo é meio caro, mas remove muita complexidade. Eles estão realizando uma campanha Kickstarter para o dispositivo de próxima geração que pode valer a pena considerar.
  • 2 x 1 / 4W 100K resistores que são usados para dividir a tensão de referência para os termistores. Usei resistores de 5%, mas resistores de tolerância mais alta geralmente são menos sensíveis à temperatura e fornecerão melhor desempenho. 1% é um bom valor de tolerância para isso.
  • Ferro de solda e solda
  • Cortadores de fio e alguns comprimentos pequenos de fio de conexão de calibre 26 ou 28.

Software e Firmware

  • Para programar o Bean, você precisará do aplicativo Bean Loader. Eu usei o Windows, então todos os links serão específicos do Windows. Tudo que você precisa para começar a usar o Bean, incluindo os detalhes do Arduino, está disponível no site LightBlueBean
  • O workbench EvoThings para o aplicativo de smartphone está disponível aqui. Toda a documentação de "introdução" também está disponível. Está muito bem documentado.

Etapa 2: o circuito e a construção elétrica

O Circuito e a Construção Elétrica
O Circuito e a Construção Elétrica
O Circuito e a Construção Elétrica
O Circuito e a Construção Elétrica
O Circuito e a Construção Elétrica
O Circuito e a Construção Elétrica

Um termistor é um resistor dependente da temperatura. A sonda Extech tem um coeficiente de temperatura negativo, o que significa que conforme a temperatura aumenta, a resistência diminui. O valor da resistência é medido com um circuito simples que cria um divisor de tensão com o termistor em uma perna e um resistor fixo de 100K na outra. A tensão dividida é alimentada em um canal de entrada analógica no Bean e amostrada no firmware.

Para construir o circuito, eu limpei conectores de áudio de 3,5 mm de um PC velho quebrado. Um multímetro foi usado para determinar os dois pontos no PCB que correspondiam à ponta e à primeira banda da sonda. Os fios foram soldados aos conectores de áudio e ao Bean conforme mostrado nas imagens. Os conectores de áudio foram presos à área do protótipo do Bean usando fita dupla-face. A fita que usei é uma fita adesiva de grau automotivo que cria uma ligação muito forte entre as peças de reboque.

Etapa 3: Coeficientes da Sonda

Coeficientes de Sonda
Coeficientes de Sonda

Tão comum quanto a sonda Extech é, os coeficientes de Steinhart-Hart não foram publicados em qualquer lugar que eu pudesse encontrar. Felizmente, existe uma calculadora online que determinará os coeficientes de 3 medições de temperatura fornecidas por você.https://www.thinksrs.com/downloads/programs/Therm%2…

What foillows é o procedimento básico que usei para chegar aos coeficientes. Não ganhará nenhum ponto por estilo, mas é bom o suficiente para fazer você dizer +/- 1 grau de precisão (um total dedão da minha parte)…. dependendo da precisão do seu termômetro e multímetro de referência, é claro! Meu multímetro é um aparelho barato e sem nome de marca que comprei há muitos anos, quando o dinheiro estava apertado. O dinheiro ainda está apertado e ainda funciona!

Para calibrar, precisamos de três leituras de resistência de 3 temperaturas.

  • Quase congelando, adicionando gelo a um copo de água e mexendo até a temperatura estabilizar. Uma vez estabilizado, use o multímetro para registrar a resistência da sonda e o termômetro de referência para registrar a temperatura.
  • Agora coloque a sonda em um copo de água em temperatura ambiente, permita que a sonda se equalize com a temperatura da água e registre a temperatura em seu termômetro de referência e a leitura de resistência em seu multímetro.
  • Coloque a sonda em um copo de água quente e registre a resistência.

    Temperatura Resistência
    5.6 218K
    21.0 97,1K
    38.6 43.2

Todo esse processo é um pouco parecido com a situação do ovo e da galinha, pois você precisa de um termômetro calibrado para registrar a temperatura e de um multímetro calibrado para registrar a resistência. Erros aqui resultarão em imprecisões nas medições de temperatura que você faz, mas para meus propósitos, +/- 1 grau é mais do que eu preciso.

Conectar esses valores registrados na calculadora da web resulta no seguinte:

Imagem
Imagem

Os coeficientes (A, B e C) são inseridos na equação de Stenhart-Hart para deter a temperatura de um valor de resistência amostrado. A equação é definida como (fonte: wikipedia.com)

Imagem
Imagem

Onde T = Temperatura em Kelvin

A, B e C são os coeficientes da equação de Steinhart-Hart que estamos tentando determinar R é a resistência à temperatura T

O firmware fará este cálculo.

Etapa 4: Firmware

Firmware
Firmware
Firmware
Firmware

As tensões do termistor são amostradas, convertidas em temperatura e enviadas via Bluetooth para o aplicativo EvoThings em execução no smartphone.

Para converter a tensão em um valor de resistência dentro do Bean, uma equação linear simples é usada. A derivação da equação é fornecida como uma imagem. Em vez de converter o valor amostrado em tensão, uma vez que tanto o ADC quanto a tensão de entrada são referenciados à mesma tensão da bateria, podemos usar o valor ADC em vez da tensão. Para o Bean ADC de 10 bits, a tensão total da bateria resultará em um valor de ADC de 1023, portanto, usamos esse valor como Vbat. O valor real do resistor divisor é uma consideração importante. Meça o valor real do resistor divisor de 100K e use o valor medido na equação para evitar uma fonte desnecessária de erro devido à tolerância do resistor.

Depois que o valor da resistência é calculado, o valor da resistência é convertido em temperatura usando a equação de Steinhart-Hart. Esta equação é descrita em detalhes na Wikipedia.

Como temos 2 probes, faz sentido encapsular a funcionalidade do probe em uma classe C ++.

A classe encapsula os coeficientes da equação de Steinhart-Hart, o valor da resistência nominal do divisor e a porta analógica à qual o termistor está conectado. Um único método, temperatura (), converte o valor ADC em um valor de resistência e usa a equação de Steinhart-Hart para determinar a temperatura em Kelvin. O valor de retorno subtrai o zero absoluto (273,15 K) da temperatura calculada para fornecer o valor em Celsius.

O poder do Lightblue Bean é evidente no fato de que toda a funcionalidade Bluetooth é essencialmente implementada em 1 linha de código que grava os valores de temperatura amostrados em uma área de dados de rascunho na memória Bluetooth.

Bean.setScratchData (TEMPERATURE_SCRATCH_IDX, (uint8_t *) & temperatura [0], 12);

Cada valor de temperatura amostrado é representado por um flutuador que ocupa 4 bytes. A área de dados temporários pode conter 20 bytes. Estamos usando apenas 12 deles. Existem 5 áreas de dados de rascunho para que você possa transferir até 100 bytes de dados usando dados de rascunho.

O fluxo básico de eventos é:

  • Verifique se temos uma conexão Bluetooth
  • Em caso afirmativo, teste as temperaturas e grave-as na área de dados de rascunho
  • Durma 200ms e repita o ciclo.

Se não estiver conectado, o firmware coloca o chip ATMEGA328P em hibernação por um longo tempo. O ciclo de sono é importante para conservar energia. O chip ATMEGA328P entra no modo de baixa energia e permanece lá até ser interrompido pelo módulo LBM313 Bluetooth. O LBM313 irá gerar uma interrupção para despertar o ATMEGA328P no final do período de hibernação solicitado, ou sempre que uma conexão Bluetooth for feita com o Bean. A funcionalidade WakeOnConnect é habilitada chamando explicitamente Bean.enableWakeOnConnect (true) durante setup ().

É importante observar que o firmware funcionará com qualquer aplicativo cliente BLE. Tudo o que o cliente precisa fazer é retirar os bytes de temperatura do banco de dados de trabalho e remontá-los em números de ponto flutuante para exibição ou processamento. O aplicativo cliente mais fácil para mim era usar o EvoThings.

Etapa 5: aplicativo para smartphone

Aplicativo para smartphone
Aplicativo para smartphone

O aplicativo de amostra Evo Things está muito próximo do que eu precisava, com apenas um pequeno esforço necessário para adicionar os elementos de exibição adicionais para completar o dispositivo de medição de temperatura de 3 canais.

A instalação e operação básica da plataforma EvoThings estão muito bem documentadas no site Evo Things, então não vale a pena repetir isso aqui. Tudo o que abordarei aqui são as alterações específicas que fiz em seu código de amostra para exibir 3 canais de informações de temperatura, extraídos da área de dados de rascunho do Bluetooth.

Depois de instalar o EvoThings Workbench, você encontrará o exemplo Lightblue Bean aqui (em computadores Windows de 64 bits):

ThisPC / Documents / EvothingsStudio_Win64_1. XX / Examples / Lightblue-bean-basic / app

Você pode substituir os arquivos index.html e app.js pelos arquivos anexados a esta etapa. As alterações feitas no arquivo jacascript extraem os 3 valores de temperatura de ponto flutuante da área de dados de rascunho e sobem o HTML interno de novos elementos criados no arquivo HTML.

function onDataReadSuccess (data) {

var temperatureData = novo Float32Array (dados);

var bytes = novo Uint8Array (dados);

var temperatura = temperaturaDados [0];

console.log ('Temperatura lida:' + temperatura + 'C');

document.getElementById ('temperatureAmbient'). innerHTML = temperatureData [0].toFixed (2) + "C °";

document.getElementById ('temperature1'). innerHTML = temperatureData [1].toFixed (2) + "C °";

document.getElementById ('temperature2'). innerHTML = temperatureData [2].toFixed (2) + "C °";

}

Etapa 6: Gabinete

Gabinete
Gabinete
Gabinete
Gabinete
Gabinete
Gabinete
Gabinete
Gabinete

A caixa é uma caixa simples impressa em 3D. Usei o Cubify Design para criar o design, mas qualquer programa de modelagem 3D será suficiente. O arquivo STL é anexado para você imprimir o seu. Se eu tivesse que fazer de novo, faria as paredes um pouco mais grossas do que agora e mudaria o design do clipe que mantém a placa no lugar. Os clipes se quebram facilmente porque a tensão está no mesmo plano das camadas impressas em 3D, que é a orientação mais fraca para as peças impressas em 3D. As paredes são muito finas, então o mecanismo de encaixe é um pouco fraco. Usei fita adesiva transparente para manter a caixa fechada porque as paredes eram muito frágeis - não elegantes, mas funciona!

Etapa 7: Configurações do PC e configuração do Bluetooth

Configurações do PC e configuração do Bluetooth
Configurações do PC e configuração do Bluetooth

O ciclo de construção e upload do firmware para o Bean é feito por Bluetooth. Só pode haver uma conexão Bluetooth ativa por vez. O Bean Loader está disponível na Windows App Store

O ciclo básico que uso para emparelhar e conectar (e reparar e reconectar quando as coisas dão errado) é o seguinte: No Painel de Controle; / Configurações de Bluetooth, você deve ver a seguinte tela:

Imagem
Imagem

Eventualmente, o Windows irá relatar "Pronto para emparelhar". Neste ponto, você pode clicar no ícone do Bean e, após alguns segundos, o Windows solicitará que você insira uma senha. A senha padrão para o bean é 00000

Imagem
Imagem

Se a senha for inserida corretamente, o Windows mostrará que o dispositivo está conectado corretamente. Você deve estar neste estado para poder programar o Bean.

Imagem
Imagem

Assim que estiver emparelhado e conectado, use o Bean Loader para carregar o firmware para o bean. Descobri que isso falhava com mais freqüência do que não e parecia estar relacionado à proximidade do meu computador. Mova o Bean até encontrar um local que funcione para você. Há momentos em que nada funcionará e o Bean Loader irá sugerir emparelhar novamente o dispositivo. Normalmente, passar pelo processo de emparelhamento novamente irá restaurar a conexão. Você deve "Remover o Dispositivo" antes de emparelhar novamente.

Imagem
Imagem

A operação do Bean Loader é direta e bem documentada em seu site. Com o Bean Loader aberto, escolha o item de menu "Programa" para abrir uma caixa de diálogo para navegar até o arquivo Hex fornecido na etapa de firmware deste instrutível.

Imagem
Imagem

Uma vez que o firmware é carregado, FECHE o Bean Loader para que a conexão entre o Bean Loader e o hardware Bean seja interrompida. Você só pode ter uma conexão por vez. Agora abra a bancada do EvoThings e inicie o cliente EvoThings no smartphone ou tablet.

Imagem
Imagem

Ao clicar no botão "Executar", o cliente EvoThings carregará automaticamente a página html do termômetro. Clique no botão Conectar para conectar ao Bean e você deverá ver as temperaturas exibidas. Sucesso!

Etapa 8: Conclusão

Conclusão
Conclusão

Se tudo estiver montado e configurado corretamente, você deve ter um sistema funcionando que permitirá monitorar as temperaturas com 2 sondas, bem como monitorar a temperatura do sensor BMA250 na placa de desenvolvimento do Bean. Há mais que pode ser feito com EvoThings - eu apenas arranhei a superfície, então deixo esta experiência para você! Obrigado por ler! Se alguma coisa der errado, é só deixar comentários e eu ajudarei no que puder.

Recomendado: