Taula de continguts:

Termòmetre Bluetooth: 8 passos
Termòmetre Bluetooth: 8 passos

Vídeo: Termòmetre Bluetooth: 8 passos

Vídeo: Termòmetre Bluetooth: 8 passos
Vídeo: 💊 Как быстро избавиться от заиканий и разрыва соединений Bluetooth устройств. Android 2024, Desembre
Anonim
Termòmetre Bluetooth
Termòmetre Bluetooth
Termòmetre Bluetooth
Termòmetre Bluetooth
Termòmetre Bluetooth
Termòmetre Bluetooth

En aquest instructiu es detalla la fabricació d’un simple termòmetre de 2 canals mitjançant sondes de termistor 100K, un mòdul Bluetooth i un telèfon intel·ligent. El mòdul Bluetooth és un LightBlue Bean que va ser dissenyat per simplificar el desenvolupament d’aplicacions Bluetooth Low Energy mitjançant l’ús del familiar entorn Arduino per a la programació del mòdul.

Després de trontollar una estona intentant esbrinar com obtenir les dades de temperatura del mòdul Bluetooth al meu iPhone, vaig trobar una aplicació anomenada EvoThings que va simplificar considerablement el costat del desenvolupament de les aplicacions del projecte. No tinc un Mac (xocant, ho sé!) Que em limita la capacitat de desenvolupar una aplicació per a iPhone i no tinc temps per desxifrar les noves eines de Microsoft que, evidentment, donen suport al desenvolupament multiplataforma per a iOS i Android. He fet diverses aplicacions d’estil HTML5, però l’única manera d’obtenir dades Bluetooth és mitjançant connectors per a Còrdova, que semblaven més un repte del que tenia temps. EvoThings proporciona un conjunt d’eines molt fàcil d’utilitzar que van convertir el repte del Bluetooth a l’iPhone en un passeig. I m'agrada el pastís!

En general, vaig trobar que la combinació de Lightblue Bean i EvoThings era una solució molt pràctica amb poca inversió en temps.

Pas 1: coses que necessitareu

Coses que necessitaràs
Coses que necessitaràs
Coses que necessitaràs
Coses que necessitaràs
Coses que necessitaràs
Coses que necessitaràs

Vaig utilitzar una sonda de termistor disponible al comerç per a un canal perquè volia que el termistor fos segellat per immersió en líquids. Per al segon canal, vaig fer una sonda bàsica a partir d’un termistor, uns cables de calibre 26 i un endoll per a auriculars de 3,5 mm. Podeu utilitzar qualsevol termistor que vulgueu i podeu fabricar les vostres pròpies sondes a partir d’agitadors de cafè o de palla de plàstic / cafè, epoxi i plàstic. El que he seguit és el que he utilitzat: no pretén ser una llista prescriptiva.

Maquinari

  • 1 sonda de termistor de 100K. Model Extech TP890. Normalment estan disponibles a eBay i Amazon.
  • 2 preses estèreo de 2,5 mm que coincideixen amb el connector de 2,5 mm de les sondes Extech. He eliminat les preses de 3,5 mm d’un ordinador antic, de manera que vaig tallar l’endoll de la sonda Extech i el vaig substituir per endolls de 3,5 mm. Heu d’evitar-ho, només cal que utilitzeu preses de 2,5 mm o un endoll adaptador estèreo de 2,5 mm a 3,5 mm.
  • Perla de termistor 100K més filferro de calibre 26 més endoll estèreo de 3,5 mm si voleu fabricar la vostra pròpia sonda. Si no, compreu una segona sonda Extech.
  • 1 x Lightblue Bean de Punch Through Designs. Es tracta del mòdul Bluetooth programable com a placa de desenvolupament Arduino. El mòdul és una mica car, però elimina molta complexitat. Estan realitzant una campanya Kickstarter per al dispositiu de pròxima generació que potser val la pena considerar.
  • 2 x 1 / 4W 100K resistències que s’utilitzen per dividir la tensió de referència dels termistors. He utilitzat resistències del 5%, però les resistències de major tolerància solen ser menys sensibles a la temperatura i proporcionaran un millor rendiment. L'1% és un bon valor de tolerància per a això.
  • Soldador i soldador
  • Talladors de filferro i algunes longituds petites de filferro de connexió de calibre 26 o 28.

Programari i firmware

  • Per programar Bean, necessitareu l'aplicació Bean Loader. He utilitzat Windows, de manera que tots els enllaços seran específics de Windows. Tot el que necessiteu per començar a utilitzar Bean, inclosos els detalls d’Arduino, està disponible al lloc LightBlueBean
  • El banc de treball EvoThings per a l’aplicació per a telèfons intel·ligents està disponible aquí. Tota la documentació "per començar" també hi està disponible. Està molt ben documentat.

Pas 2: el circuit i la construcció elèctrica

El circuit i la construcció elèctrica
El circuit i la construcció elèctrica
El circuit i la construcció elèctrica
El circuit i la construcció elèctrica
El circuit i la construcció elèctrica
El circuit i la construcció elèctrica

Un termistor és una resistència dependent de la temperatura. La sonda Extech té un coeficient de temperatura negatiu que significa que a mesura que augmenta la temperatura, disminueix la resistència. El valor de la resistència es mesura amb un circuit senzill que crea un divisor de voltatge amb el termistor en una cama i una resistència fixa de 100K a l’altra. El voltatge dividit s’alimenta a un canal d’entrada analògica del Bean i es mostra al microprogramari.

Per construir el circuit, he recuperat preses d'àudio de 3,5 mm d'un antic PC trencat. Es va utilitzar un multímetre per determinar els dos punts del PCB que corresponien a la punta i la primera banda de la sonda. Els cables es soldaven a les preses d’àudio i al Bean, tal com es mostra a les imatges. Les preses d’àudio es van enganxar a l’àrea prototip del Bean mitjançant cinta de doble cara. La cinta que he fet servir és una cinta adhesiva d’automòbil que crea un vincle molt fort entre les parts de remolc.

Pas 3: Coeficients de sonda

Coeficients de sonda
Coeficients de sonda

Per més comú que sigui la sonda Extech, els coeficients de Steinhart-Hart no es publiquen enlloc que pogués trobar. Afortunadament, hi ha una calculadora en línia que determinarà els coeficients de les 3 mesures de temperatura que proporcioneu.

Quins són els procediments bàsics que he utilitzat per arribar als coeficients. No guanyaré cap punt per estil, però prou bo per fer-vos dir +/- 1 grau de precisió (una xifra total per part meva) … depenent de la precisió del termòmetre i del multímetre de referència, per descomptat. El meu multímetre és una unitat de marca barata sense nom que vaig comprar fa molts anys quan els diners eren escassos. Els diners encara són estrets i encara funcionen.

Per calibrar, necessitem tres lectures de resistència a partir de 3 temperatures.

  • Prop de la congelació afegint gel a un got d’aigua i remenant fins que s’estabilitzi la temperatura. Un cop estabilitzat, utilitzeu el multímetre per registrar la resistència de la sonda i el termòmetre de referència per registrar la temperatura.
  • Ara col·loqueu la sonda en un got d’aigua a temperatura ambient, deixeu que la sonda s’iguali amb la temperatura de l’aigua i anoteu la temperatura al termòmetre de referència i la lectura de resistència al multímetre.
  • Col·loqueu la sonda en un got d’aigua calenta i anoteu la resistència.

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

Tot aquest procés és una mica una situació de pollastre i ous, ja que necessiteu un termòmetre calibrat per registrar la temperatura i un multímetre calibrat per registrar la resistència. Els errors aquí provocaran una inexactitud en les mesures de temperatura que feu, però als meus propòsits, +/- 1 grau és més del que necessito.

Si connecteu aquests valors enregistrats a la calculadora web es produeix el següent:

Imatge
Imatge

Els coeficients (A, B i C) es connecten a l’equació de Stenhart-Hart per dissuadir la temperatura d’un valor de resistència mostrat. L'equació es defineix com (font: wikipedia.com)

Imatge
Imatge

On T = Temperatura en Kelvin

A, B i C són els coeficients de l'equació de Steinhart-Hart que intentem determinar R és la resistència a la temperatura T

El firmware realitzarà aquest càlcul.

Pas 4: Firmware

Firmware
Firmware
Firmware
Firmware

Els voltatges del termistor es mostren, es converteixen a temperatura i s’envien per Bluetooth a l’aplicació EvoThings que s’executa al telèfon intel·ligent.

Per convertir el voltatge en un valor de resistència dins del bean, s'utilitza una equació lineal simple. La derivació de l'equació es proporciona com a imatge. En lloc de convertir el valor mostrat a voltatge, ja que tant l’ADC com el voltatge d’entrada es fan referència a la mateixa tensió de la bateria, podem utilitzar el valor ADC en lloc del voltatge. Per a l’ADC de 10 bits Bean, el voltatge complet de la bateria tindrà un valor ADC de 1023, de manera que fem servir aquest valor com a Vbat. El valor real de la resistència divisòria és una consideració important. Mesureu el valor real de la resistència divisòria de 100K i utilitzeu el valor mesurat a l’equació per evitar una font d’error innecessària a causa de la tolerància de la resistència.

Un cop calculat el valor de resistència, el valor de resistència es converteix en temperatura mitjançant l'equació de Steinhart-Hart. Aquesta equació es descriu detalladament a la Viquipèdia.

Com que tenim 2 sondes, tenia sentit encapsular la funcionalitat de la sonda en una classe C ++.

La classe encapsula els coeficients de l'equació de Steinhart-Hart, el valor nominal de la resistència del divisor i el port analògic al qual està connectat el termistor. Un únic mètode, temperature (), converteix el valor ADC en un valor de resistència i després utilitza l'equació de Steinhart-Hart per determinar la temperatura en Kelvin. El valor retornat resta el zero absolut (273,15 K) de la temperatura calculada per proporcionar el valor en centígrads.

La potència del Lightblue Bean és evident en el fet que tota la funcionalitat Bluetooth s’implementa essencialment en una línia de codi que escriu els valors de temperatura mostrejats en una àrea de dades de zero a la memòria Bluetooth.

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

Cada valor de temperatura mostrat es representa mitjançant un flotador que ocupa 4 bytes. L'àrea de dades de zero pot contenir 20 bytes. Només en fem servir 12. Hi ha 5 àrees de dades de zero per poder transferir fins a 100 bytes de dades mitjançant dades de zero.

El flux bàsic d'esdeveniments és:

  • Comproveu si tenim connexió Bluetooth
  • Si és així, mostreu les temperatures i escriviu-les a l'àrea de dades de zero
  • Dorm 200 ms i repeteix el cicle.

Si no està connectat, el firmware posa el xip ATMEGA328P a dormir durant molt de temps. El cicle del son és important per conservar l’energia. El xip ATMEGA328P entra en mode de baixa consum i es queda allà fins que el mòdul Bluetooth LBM313 l’interromp. El LBM313 generarà una interrupció per activar l'ATMEGA328P al final del període de suspensió sol·licitat o sempre que es faci una connexió Bluetooth al Bean. La funcionalitat de WakeOnConnect s’activa trucant explícitament a Bean.enableWakeOnConnect (true) durant la configuració ().

És important tenir en compte que el firmware funcionarà amb qualsevol aplicació client BLE. Tot el que el client ha de fer és treure els bytes de temperatura del banc de dades de zero i tornar-los a muntar en números de coma flotant per mostrar-los o processar-los. L’aplicació de client més fàcil per a mi va ser utilitzar EvoThings.

Pas 5: aplicació per a telèfons intel·ligents

Aplicació per a telèfons intel·ligents
Aplicació per a telèfons intel·ligents

L’aplicació de mostra Evo Things s’acosta molt al que necessitava, amb només un petit esforç necessari per afegir elements de visualització addicionals per completar el dispositiu de mesura de temperatura de 3 canals.

La instal·lació i el funcionament bàsic de la plataforma EvoThings està molt ben documentat al lloc web d’Evo Things, de manera que no té cap valor repetir-ho aquí. Tot el que tractaré aquí són els canvis específics que he fet al seu codi de mostra per mostrar 3 canals d’informació de temperatura, extrets de l’àrea de dades de zero Bluetooth.

Després d'haver instal·lat l'EvoThings Workbench, aquí trobareu l'exemple Lightblue Bean (en ordinadors Windows de 64 bits):

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

Podeu substituir els fitxers index.html i app.js pels fitxers adjunts a aquest pas. Els canvis fets al fitxer jacascript extreuen els 3 valors de temperatura de coma flotant que formen l'àrea de dades de ratllades i, a més, l'HTML intern dels nous elements creats al fitxer HTML.

funció onDataReadSuccess (dades) {

var temperatureData = nova Float32Array (dades);

var bytes = new Uint8Array (data);

var temperature = temperatureData [0];

console.log ('Temperatura llegida:' + 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 °";

}

Pas 6: recinte

Recinte
Recinte
Recinte
Recinte
Recinte
Recinte
Recinte
Recinte

El recinte és una senzilla caixa impresa en 3D. He utilitzat Cubify Design per crear el disseny, però qualsevol programa de modelatge 3D serà suficient. S'adjunta l'arxiu STL perquè imprimiu el vostre. Si hagués de fer-ho, faria que les parets fossin una mica més gruixudes que ara i canviaria el disseny del clip que manté el tauler al seu lloc. Els clips es trenquen molt fàcilment perquè l'estrès es troba en el pla smae com les capes impreses en 3D, que és l'orientació més feble per a les parts impreses en 3D. Les parets són molt fines, de manera que el mecanisme de retenció és una mica feble. Vaig fer servir cinta transparent per mantenir la caixa tancada perquè les parets eren massa fràgils; no eren elegants, però funciona.

Pas 7: Configuració del PC i configuració de Bluetooth

Configuració del PC i configuració de Bluetooth
Configuració del PC i configuració de Bluetooth

El cicle de creació i pujada del firmware per a Bean es realitza mitjançant Bluetooth. Només hi pot haver una connexió Bluetooth activa alhora. El Bean Loader està disponible a la botiga d'aplicacions del Windows

El cicle bàsic que faig servir per aparellar i connectar (i reparar i tornar a connectar quan les coses van malament) és el següent: Des del tauler de control; Configuració de Bluetooth, hauríeu de veure la pantalla següent:

Imatge
Imatge

Finalment, Windows informarà de "Llest per emparellar". En aquest moment, podeu fer clic a la icona de Bean i, després d’uns segons, Windows us demanarà que introduïu una contrasenya. La contrasenya predeterminada per al bean és 00000

Imatge
Imatge

Si s’introdueix correctament la contrasenya, Windows mostrarà que el dispositiu està connectat correctament. Heu d’estar en aquest estat per poder programar el Bean.

Imatge
Imatge

Un cop estigueu emparellat i connectat, utilitzeu el Bean Loader per carregar el firmware al bean. Vaig trobar que fallava més sovint i semblava estar relacionat amb la proximitat al meu ordinador. Moveu el Bean fins que trobeu una ubicació que us convingui. Hi ha vegades que res no funcionarà i el Bean Loader us suggerirà tornar a aparellar el dispositiu. Normalment, tornar a passar el procés d’aparellament restablirà la connexió. Heu d’eliminar el dispositiu abans de tornar a aparellar-lo.

Imatge
Imatge

L'operació de Bean Loader és senzilla i està ben documentada al seu lloc. Amb el Bean Loader obert, trieu l'element de menú "Programa" per obrir un quadre de diàleg per anar al fitxer Hex proporcionat al pas de firmware d'aquesta instrucció.

Imatge
Imatge

Un cop carregat el microprogramari, tanqueu el carregador de fesols perquè es deixi de connectar entre el carregador de fesols i el maquinari de fesols. Només podeu tenir una connexió alhora. Ara obriu el banc de treball EvoThings i inicieu el client EvoThings al telèfon intel·ligent o a la tauleta.

Imatge
Imatge

En fer clic al botó "Executa", el client EvoThings carregarà automàticament la pàgina html del termòmetre. Feu clic al botó Connecta per connectar-vos al Bean i hauríeu de veure les temperatures. Èxit!

Pas 8: Conclusió

Conclusió
Conclusió

Si tot està construït i configurat correctament, hauríeu de tenir un sistema de treball que us permetrà controlar les temperatures amb 2 sondes, així com controlar la temperatura del sensor BMA250 a la placa de desenvolupament Bean. Es pot fer més amb EvoThings: acabo de ratllar la superfície, així que us deixo aquesta experimentació. Gràcies per llegir! Si les coses van malament, només heu de deixar comentaris i us ajudaré on puc.

Recomanat: