Sommario:

Termometro Bluetooth: 8 passaggi
Termometro Bluetooth: 8 passaggi

Video: Termometro Bluetooth: 8 passaggi

Video: Termometro Bluetooth: 8 passaggi
Video: Калибровка электронного PH метра из Китая. Подробная инструкция :) 2024, Luglio
Anonim
Termometro Bluetooth
Termometro Bluetooth
Termometro Bluetooth
Termometro Bluetooth
Termometro Bluetooth
Termometro Bluetooth

Questa istruzione descrive in dettaglio la realizzazione di un semplice termometro a 2 canali utilizzando sonde a termistore da 100K, un modulo Bluetooth e uno smartphone. Il modulo Bluetooth è un LightBlue Bean progettato per semplificare lo sviluppo di app Bluetooth Low Energy utilizzando il familiare ambiente Arduino per la programmazione del modulo.

Dopo aver inciampato per un po' cercando di capire come trasferire i dati sulla temperatura dal modulo Bluetooth al mio iPhone, ho trovato un'app chiamata EvoThings che ha semplificato notevolmente il lato di sviluppo dell'app del progetto. Non ho un Mac (scioccante lo so!) che limita la mia capacità di sviluppare un'app per iPhone e non ho tempo per decifrare i nuovi strumenti Microsoft che evidentemente supportano lo sviluppo multipiattaforma per iOS e Android. Ho realizzato diverse app in stile HTML5, ma l'unico modo per ottenere i dati Bluetooth è tramite i plug-in per Cordova che sembravano più una sfida di quanto non avessi tempo. EvoThings fornisce un set di strumenti molto facile da usare che ha trasformato la sfida da Bluetooth a iPhone in una passeggiata. E mi piace la torta!

Nel complesso ho trovato la combinazione di Lightblue Bean ed EvoThings una soluzione molto pratica con un investimento di poco tempo.

Passaggio 1: cose di cui avrai bisogno

Cose di cui avrai bisogno
Cose di cui avrai bisogno
Cose di cui avrai bisogno
Cose di cui avrai bisogno
Cose di cui avrai bisogno
Cose di cui avrai bisogno

Ho usato una sonda a termistore disponibile in commercio per un canale perché volevo che il termistore fosse sigillato per l'immersione in liquidi. Per il secondo canale, ho realizzato una sonda di base da un termistore, un filo da 26 gauge e una presa per cuffie da 3,5 mm. Sei libero di utilizzare tutti i termistori che desideri e puoi realizzare le tue sonde da resina epossidica termicamente conduttiva e cannucce di plastica / agitatori per caffè, ad esempio. Quello che segue è quello che ho usato - non vuole essere un elenco prescrittivo!

Hardware

  • Sonde a termistore 1 x 100K. Modello Extech TP890. Questi sono comunemente disponibili su ebay e amazon.
  • 2 x jack stereo da 2,5 mm che corrispondono alla spina da 2,5 mm delle sonde Extech. Ho recuperato jack da 3,5 mm da un vecchio computer, quindi ho tagliato la spina dalla sonda Extech e l'ho sostituita con spine da 3,5 mm. Dovresti evitarlo e utilizzare solo jack da 2,5 mm o utilizzare una spina adattatore stereo da 2,5 mm a 3,5 mm standard.
  • Perlina termistore da 100K più filo da 26 gauge più spina stereo da 3,5 mm se si desidera creare la propria sonda. In caso contrario, acquista una seconda sonda Extech!
  • 1 x fagiolo azzurro di Punch Through Designs. Questo è il modulo Bluetooth programmabile come scheda di sviluppo Arduino. Il modulo è un po' costoso ma rimuove molta complessità. Stanno eseguendo una campagna Kickstarter per il dispositivo di prossima generazione che potrebbe valere la pena considerare.
  • Resistenze 2 x 1/4W 100K che vengono utilizzate per dividere la tensione di riferimento per i termistori. Ho usato resistori al 5% ma i resistori con tolleranza più elevata sono generalmente meno sensibili alla temperatura e forniranno prestazioni migliori. 1% è un buon valore di tolleranza per questo.
  • Saldatore e saldatore
  • Tagliafili e alcune piccole lunghezze di filo di collegamento da 26 o 28 gauge.

Software e firmware

  • Per programmare Bean, avrai bisogno dell'app Bean Loader. Ho usato Windows, quindi tutti i collegamenti saranno specifici di Windows. Tutto il necessario per iniziare con Bean, comprese le specifiche di Arduino, è disponibile sul sito LightBlueBean
  • Il banco di lavoro EvoThings per l'app per smartphone è disponibile qui. Anche tutta la documentazione "per iniziare" è disponibile lì. È molto ben documentato.

Passaggio 2: il circuito e la costruzione elettrica

Il circuito e la costruzione elettrica
Il circuito e la costruzione elettrica
Il circuito e la costruzione elettrica
Il circuito e la costruzione elettrica
Il circuito e la costruzione elettrica
Il circuito e la costruzione elettrica

Un termistore è un resistore dipendente dalla temperatura. La sonda Extech ha un coefficiente di temperatura negativo il che significa che all'aumentare della temperatura la resistenza diminuisce. Il valore della resistenza viene misurato con un semplice circuito che crea un partitore di tensione con il termistore in una gamba e una resistenza fissa da 100K nell'altra. La tensione divisa viene immessa in un canale di ingresso analogico sul Bean e campionata nel firmware.

Per costruire il circuito, ho recuperato jack audio da 3,5 mm da un vecchio PC rotto. È stato utilizzato un multimetro per determinare i due punti sul PCB che corrispondevano alla punta e alla prima banda della sonda. I cavi sono stati saldati ai jack audio e al Bean come mostrato nelle immagini. I jack audio sono stati attaccati all'area del prototipo del Bean utilizzando nastro biadesivo. Il nastro che ho usato è un nastro adesivo per autoveicoli che crea un legame molto forte tra le parti di traino.

Passaggio 3: coefficienti della sonda

Coefficienti della sonda
Coefficienti della sonda

Per quanto sia comune la sonda Extech, i coefficienti di Steinhart-Hart non sono pubblicati da nessuna parte che ho potuto trovare. Fortunatamente esiste un calcolatore online che determinerà i coefficienti da 3 misurazioni della temperatura fornite.

Quello che segue è la procedura di base che ho usato per arrivare ai coefficienti. Non guadagnerà alcun punto per lo stile, ma abbastanza buono da farti dire con precisione di +/- 1 grado (una leccata di pollice totale da parte mia) …. a seconda della precisione del termometro di riferimento e del multimetro ovviamente! Il mio multimetro è un'unità di marca senza nome che ho comprato molti anni fa quando i soldi erano pochi. I soldi sono ancora stretti e funziona ancora!

Per calibrare, abbiamo bisogno di tre letture di resistenza da 3 temperature.

  • Vicino allo zero aggiungendo ghiaccio a un bicchiere d'acqua e mescolando fino a quando la temperatura non si è stabilizzata. Una volta stabilizzato, utilizzare il multimetro per registrare la resistenza della sonda e il termometro di riferimento per registrare la temperatura.
  • Ora metti la sonda in un bicchiere d'acqua a temperatura ambiente, lascia che la sonda si equalizzi con la temperatura dell'acqua e registra la temperatura sul tuo termometro di riferimento e la lettura della resistenza sul tuo multimetro.
  • Mettere la sonda in un bicchiere di acqua calda e registrare la resistenza.

    Temperatura Resistenza
    5.6 218K
    21.0 97,1 K
    38.6 43.2

L'intero processo è un po' una situazione di pollo e uova poiché è necessario un termometro calibrato per registrare la temperatura e un multimetro calibrato per registrare la resistenza. Gli errori qui si tradurranno in imprecisioni nelle misurazioni della temperatura effettuate, ma per i miei scopi, +/- 1 grado è più di quanto mi serva.

Inserendo questi valori registrati nel calcolatore web si ottiene quanto segue:

Immagine
Immagine

I coefficienti (A, B e C) sono inseriti nell'equazione di Stenhart-Hart per determinare la temperatura da un valore di resistenza campionato. L'equazione è definita come (fonte: wikipedia.com)

Immagine
Immagine

Dove T= Temperatura in Kelvin

A, B e C sono i coefficienti dell'equazione di Steinhart-Hart che stiamo cercando di determinare R è la resistenza alla temperatura T

Il firmware eseguirà questo calcolo.

Passaggio 4: firmware

Firmware
Firmware
Firmware
Firmware

Le tensioni del termistore vengono campionate, convertite in temperatura e inviate tramite Bluetooth all'app EvoThings in esecuzione sullo smartphone.

Per convertire la tensione in un valore di resistenza all'interno del Bean, viene utilizzata una semplice equazione lineare. La derivazione dell'equazione è fornita come immagine. Invece di convertire il valore campionato in tensione, poiché sia l'ADC che la tensione di ingresso sono riferiti alla stessa tensione della batteria, possiamo utilizzare il valore ADC invece della tensione. Per l'ADC Bean a 10 bit, la piena tensione della batteria risulterà in un valore ADC di 1023, quindi utilizziamo questo valore come Vbat. Il valore effettivo del resistore divisore è una considerazione importante. Misurare il valore effettivo del resistore divisore da 100K e utilizzare il valore misurato nell'equazione per evitare una fonte di errore non necessaria a causa della tolleranza del resistore.

Una volta calcolato il valore di resistenza, il valore di resistenza viene convertito in temperatura utilizzando l'equazione di Steinhart-Hart. Questa equazione è descritta in dettaglio su Wikipedia.

Poiché abbiamo 2 probe, aveva senso incapsulare la funzionalità del probe in una classe C++.

La classe incapsula i coefficienti dell'equazione di Steinhart-Hart, il valore di resistenza nominale del divisore e la porta analogica a cui è collegato il termistore. Un singolo metodo, temperature(), converte il valore ADC in un valore di resistenza e quindi utilizza l'equazione di Steinhart-Hart per determinare la temperatura in Kelvin. Il valore restituito sottrae lo zero assoluto (273,15 K) dalla temperatura calcolata per fornire il valore in gradi Celsius.

La potenza di Lightblue Bean è evidente nel fatto che tutte le funzionalità Bluetooth sono essenzialmente implementate in 1 riga di codice che scrive i valori di temperatura campionati in un'area dati scratch sulla memoria Bluetooth.

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

Ogni valore di temperatura campionato è rappresentato da un float che occupa 4 byte. L'area dati scratch può contenere 20 byte. Ne stiamo usando solo 12. Ci sono 5 aree dati scratch in modo da poter trasferire fino a 100 byte di dati utilizzando dati scratch.

Il flusso di base degli eventi è:

  • Controlla se abbiamo una connessione Bluetooth
  • In tal caso, campiona le temperature e scrivile nell'area dati scratch
  • Dormi 200 ms e ripeti il ciclo.

Se non è connesso, il firmware mette a riposo il chip ATMEGA328P per un lungo periodo. Il ciclo del sonno è importante per risparmiare energia. Il chip ATMEGA328P entra in modalità a basso consumo e vi rimane fino a quando non viene interrotto dal modulo Bluetooth LBM313. L'LBM313 genererà un'interruzione per riattivare l'ATMEGA328P al termine del periodo di sospensione richiesto o ogni volta che viene stabilita una connessione Bluetooth al Bean. La funzionalità WakeOnConnect è abilitata chiamando in modo esplicito Bean.enableWakeOnConnect(true) durante setup().

È importante notare che il firmware funzionerà con qualsiasi applicazione client BLE. Tutto ciò che il cliente deve fare è rimuovere i byte di temperatura dalla banca dati scratch e riassemblarli in numeri in virgola mobile per la visualizzazione o l'elaborazione. L'app client più semplice per me era usare EvoThings.

Passaggio 5: applicazione per smartphone

Applicazione per smartphone
Applicazione per smartphone

L'app di esempio Evo Things è molto simile a ciò di cui avevo bisogno con solo uno sforzo minimo per aggiungere gli elementi di visualizzazione aggiuntivi per completare il dispositivo di misurazione della temperatura a 3 canali.

L'installazione e il funzionamento di base della piattaforma EvoThings sono molto ben documentati sul sito web di Evo Things, quindi non ha senso ripeterlo qui. Tutto ciò che tratterò qui sono le modifiche specifiche che ho apportato al loro codice di esempio per visualizzare 3 canali di informazioni sulla temperatura, estratte dall'area dati scratch Bluetooth.

Dopo aver installato EvoThings Workbench, troverai l'esempio di Lightblue Bean qui (su computer Windows a 64 bit):

QuestoPC\Documents\EvothingsStudio_Win64_1. XX\Examples\Lightblue-bean-basic\app

Puoi sostituire i file index.html e app.js con i file allegati a questo passaggio. Le modifiche apportate al file jacascript estraggono i 3 valori di temperatura in virgola mobile dall'area dati scratch e dall'HTML interno dei nuovi elementi creati nel file HTML.

function onDataReadSuccess(data) {

var temperatureData = new Float32Array(data);

var byte = new Uint8Array(dati);

var temperatura = temperatureData[0];

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

}

Passaggio 6: allegato

Allegato
Allegato
Allegato
Allegato
Allegato
Allegato
Allegato
Allegato

La custodia è una semplice scatola stampata in 3D. Ho usato Cubify Design per creare il design, ma qualsiasi programma di modellazione 3D sarà sufficiente. Il file STL è allegato affinché tu possa stampare il tuo. Se dovessi rifarlo, renderei le pareti un po' più spesse di quanto non siano ora e cambierei il design della clip che tiene in posizione la tavola. Le clip si rompono molto facilmente perché lo stress è nel piccolo piano degli strati stampati in 3D, che è l'orientamento più debole per le parti stampate in 3D. Le pareti sono molto sottili, quindi il meccanismo a scatto è un po' debole. Ho usato del nastro adesivo trasparente per tenere chiusa la scatola perché le pareti erano troppo fragili - non eleganti ma funziona!

Passaggio 7: impostazioni del PC e configurazione Bluetooth

Impostazioni PC e configurazione Bluetooth
Impostazioni PC e configurazione Bluetooth

Il ciclo di compilazione e caricamento del firmware per il Bean viene eseguito tramite Bluetooth. Può essere attiva una sola connessione Bluetooth alla volta. Bean Loader è disponibile nell'App Store di Windows

Il ciclo di base che utilizzo per accoppiare e connettere (e riparare e riconnettere quando le cose vanno male) è il seguente: Dal Pannello di controllo;/Impostazioni Bluetooth, dovresti vedere la seguente schermata:

Immagine
Immagine

Alla fine Windows segnalerà "Pronto per l'accoppiamento". A questo punto puoi cliccare sull'icona Bean e dopo alcuni secondi Windows ti chiederà di inserire un passcode. Il codice di accesso predefinito per il bean è 00000

Immagine
Immagine

Se il passcode è stato inserito correttamente, Windows mostrerà che il dispositivo è connesso correttamente. Devi essere in questo stato per poter programmare il Bean.

Immagine
Immagine

Una volta che sei accoppiato e connesso, usa Bean Loader per caricare il firmware sul bean. Ho scoperto che questo non funzionava il più delle volte e sembrava essere correlato alla vicinanza al mio computer. Sposta il Bean in giro finché non trovi una posizione che funzioni per te. Ci sono momenti in cui non funzionerà nulla e Bean Loader suggerirà di riassociare il dispositivo. In genere, ripetere il processo di associazione ripristinerà la connessione. È necessario "Rimuovere il dispositivo" prima di eseguire nuovamente l'associazione.

Immagine
Immagine

L'operazione Bean Loader è semplice e ben documentata sul loro sito. Con il Bean Loader aperto, scegli la voce di menu "Programma" per aprire una finestra di dialogo per cercare il file esadecimale fornito nel passaggio del firmware di questa istruzione.

Immagine
Immagine

Una volta caricato il firmware, CHIUDERE Bean Loader in modo che la connessione tra Bean Loader e l'hardware Bean venga interrotta. Puoi avere solo una connessione alla volta. Ora apri il workbench EvoThings e avvia il client EvoThings sullo smartphone o sul tablet.

Immagine
Immagine

Quando fai clic sul pulsante "Esegui", il client EvoThings caricherà automaticamente la pagina html per il termometro. Fai clic sul pulsante Connetti per connetterti al Bean e dovresti vedere le temperature visualizzate. Successo!

Passaggio 8: conclusione

Conclusione
Conclusione

Se tutto è costruito e configurato correttamente, dovresti avere un sistema funzionante che ti permetta di monitorare le temperature con 2 sonde, oltre a monitorare la temperatura del sensore BMA250 sulla scheda di sviluppo Bean. C'è molto di più che si può fare con EvoThings: ho appena grattato la superficie, quindi lascio a voi questa sperimentazione! Grazie per aver letto! Se le cose vanno male, lascia commenti e ti aiuterò dove posso.

Consigliato: