Table des matières:
- Étape 1: choses dont vous aurez besoin
- Étape 2: Le circuit et la construction électrique
- Étape 3: Coefficients de sonde
- Étape 4: Micrologiciel
- Étape 5: Application pour smartphone
- Étape 6: Enceinte
- Étape 7: Paramètres du PC et configuration Bluetooth
- Étape 8: Conclusion
Vidéo: Thermomètre Bluetooth : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Cette instructable détaille la fabrication d'un simple thermomètre à 2 canaux utilisant des sondes de thermistance 100K, un module Bluetooth et un smartphone. Le module Bluetooth est un LightBlue Bean qui a été conçu pour simplifier le développement d'applications Bluetooth Low Energy en utilisant l'environnement Arduino familier pour programmer le module.
Après avoir trébuché pendant un certain temps en essayant de comprendre comment obtenir les données de température du module Bluetooth sur mon iPhone, j'ai trouvé une application appelée EvoThings qui a considérablement simplifié le développement d'applications du projet. Je n'ai pas de Mac (choquant je sais !) ce qui limite ma capacité à développer une application iPhone, et je n'ai pas le temps de déchiffrer les nouveaux outils Microsoft qui prennent évidemment en charge le développement multiplateforme pour iOS et Android. J'ai créé plusieurs applications de style HTML5, mais le seul moyen d'accéder aux données Bluetooth consiste à utiliser des plugins pour Cordova, ce qui ressemblait plus à un défi que je n'en avais le temps. EvoThings fournit un ensemble d'outils très faciles à utiliser qui ont transformé le défi Bluetooth vers iPhone en un jeu d'enfant. Et j'aime le gâteau !
Dans l'ensemble, j'ai trouvé que la combinaison de Lightblue Bean et d'EvoThings était une solution très pratique avec un faible investissement en temps.
Étape 1: choses dont vous aurez besoin
J'ai utilisé une sonde à thermistance disponible dans le commerce pour un canal parce que je voulais que la thermistance soit scellée pour une immersion dans des liquides. Pour le deuxième canal, j'ai fabriqué une sonde de base à partir d'une thermistance, d'un fil de calibre 26 et d'une prise casque 3,5 mm. Vous êtes libre d'utiliser les thermistances de votre choix et vous pouvez fabriquer vos propres sondes à partir d'époxy thermoconducteur et de pailles/agitateurs à café en plastique par exemple. Ce qui suit est ce que j'ai utilisé - il ne s'agit pas d'une liste normative !
Matériel
- 1 sondes à thermistance 100K. Modèle Extech TP890. Ceux-ci sont généralement disponibles sur ebay et amazon.
- 2 x jacks stéréo de 2,5 mm qui correspondent à la prise de 2,5 mm des sondes Extech. J'ai récupéré les prises jack 3,5 mm d'un vieil ordinateur, j'ai donc coupé la fiche de la sonde Extech et l'ai remplacée par des fiches 3,5 mm. Vous devriez éviter cela et utiliser simplement des prises jack 2,5 mm ou utiliser un adaptateur stéréo 2,5 mm à 3,5 mm du commerce.
- Perle de thermistance 100K plus fil de calibre 26 plus prise stéréo 3,5 mm si vous souhaitez créer votre propre sonde. Sinon, achetez une deuxième sonde Extech !
- 1 x haricot bleu clair de Punch Through Designs. Il s'agit du module Bluetooth programmable en tant que carte de développement Arduino. Le module est un peu cher mais il enlève beaucoup de complexité. Ils mènent une campagne Kickstarter pour l'appareil de nouvelle génération qui pourrait valoir la peine d'être envisagé.
- 2 résistances 1/4W 100K qui sont utilisées pour diviser la tension de référence pour les thermistances. J'ai utilisé des résistances à 5%, mais les résistances à plus haute tolérance sont généralement moins sensibles à la température et offriront de meilleures performances. 1% est une bonne valeur de tolérance pour cela.
- Fer à souder et soudure
- Coupe-fil et quelques petites longueurs de fil de raccordement de calibre 26 ou 28.
Logiciel et micrologiciel
- Pour programmer le Bean, vous aurez besoin de l'application Bean Loader. J'ai utilisé Windows, donc tous les liens seront spécifiques à Windows. Tout ce dont vous avez besoin pour démarrer avec le Bean, y compris les spécificités Arduino, est disponible sur le site LightBlueBean
- L'établi EvoThings pour l'application smartphone est disponible ici. Toute la documentation "mise en route" y est également disponible. C'est très bien documenté.
Étape 2: Le circuit et la construction électrique
Une thermistance est une résistance dépendante de la température. La sonde Extech a un coefficient de température négatif, ce qui signifie que lorsque la température augmente, la résistance diminue. La valeur de résistance est mesurée avec un circuit simple qui crée un diviseur de tension avec la thermistance dans une jambe et une résistance fixe de 100K dans l'autre. La tension divisée est transmise à un canal d'entrée analogique sur le bean et échantillonnée dans le micrologiciel.
Pour construire le circuit, j'ai récupéré les prises audio 3,5 mm d'un vieux PC cassé. Un multimètre a été utilisé pour déterminer les deux points sur le PCB qui correspondaient à la pointe et à la première bande de la sonde. Les fils ont été soudés aux prises audio et au Bean comme indiqué sur les images. Les prises audio ont été collées à la zone prototype du Bean à l'aide de ruban adhésif double face. Le ruban que j'ai utilisé est un ruban de décalcomanie de qualité automobile qui crée un lien très fort entre les pièces de remorquage.
Étape 3: Coefficients de sonde
Aussi commun que soit la sonde Extech, les coefficients Steinhart-Hart ne sont publiés nulle part où j'ai pu trouver. Heureusement, il existe une calculatrice en ligne qui déterminera les coefficients à partir des 3 mesures de température que vous fournissez.https://www.thinksrs.com/downloads/programs/Therm%2…
Ce qui suit est la procédure de base que j'ai utilisée pour arriver aux coefficients. Ne gagnera aucun point pour le style mais assez bon pour vous faire dire +/- 1 degré de précision (un coup de pouce total de ma part) …. en fonction de la précision de votre thermomètre de référence et multimètre bien sûr ! Mon multimètre est une unité de marque sans nom bon marché que j'ai achetée il y a de nombreuses années lorsque l'argent était serré. L'argent est toujours serré et ça marche toujours!
Pour calibrer, nous avons besoin de trois lectures de résistance à partir de 3 températures.
- Près du point de congélation en ajoutant de la glace à un verre d'eau et en remuant jusqu'à ce que la température se stabilise. Une fois stabilisé, utilisez le multimètre pour enregistrer la résistance de la sonde et le thermomètre de référence pour enregistrer la température.
- Placez maintenant la sonde dans un verre d'eau à température ambiante, laissez la sonde s'égaliser avec la température de l'eau et enregistrez la température sur votre thermomètre de référence et la lecture de la résistance sur votre multimètre.
-
Placez la sonde dans un verre d'eau chaude et enregistrez la résistance.
Température La résistance 5.6 218K 21.0 97,1K 38.6 43.2
Tout ce processus est un peu une situation de poule et d'œuf, car vous avez besoin d'un thermomètre étalonné pour enregistrer la température et d'un multimètre étalonné pour enregistrer la résistance. Les erreurs ici entraîneront une inexactitude dans les mesures de température que vous effectuez, mais pour mes besoins, +/- 1 degré est plus que ce dont j'ai besoin.
Le fait de brancher ces valeurs enregistrées dans la calculatrice Web donne les résultats suivants:
Les coefficients (A, B et C) sont insérés dans l'équation de Stenhart-Hart pour déterminer la température à partir d'une valeur de résistance échantillonnée. L'équation est définie comme (source: wikipedia.com)
Où T= Température en Kelvin
A, B et C sont les coefficients de l'équation de Steinhart-Hart que nous essayons de déterminer R est la résistance à la température T
Le firmware effectuera ce calcul.
Étape 4: Micrologiciel
Les tensions des thermistances sont échantillonnées, converties en température et envoyées via Bluetooth à l'application EvoThings exécutée sur le smartphone.
Pour convertir la tension en une valeur de résistance dans le haricot, une simple équation linéaire est utilisée. La dérivation de l'équation est fournie sous forme d'image. Au lieu de convertir la valeur échantillonnée en tension, puisque l'ADC et la tension d'entrée sont référencés à la même tension de batterie, nous pouvons utiliser la valeur ADC au lieu de la tension. Pour le 10 bits Bean ADC, la pleine tension de la batterie donnera une valeur ADC de 1023, nous utilisons donc cette valeur comme Vbat. La valeur réelle de la résistance de division est une considération importante. Mesurez la valeur réelle de la résistance du diviseur 100K et utilisez la valeur mesurée dans l'équation pour éviter une source d'erreur inutile due à la tolérance de la résistance.
Une fois la valeur de résistance calculée, la valeur de résistance est convertie en température à l'aide de l'équation de Steinhart-Hart. Cette équation est décrite en détail sur Wikipedia.
Parce que nous avons 2 sondes, il était logique d'encapsuler la fonctionnalité de sonde dans une classe C++.
La classe encapsule les coefficients de l'équation de Steinhart-Hart, la valeur nominale de la résistance du diviseur et le port analogique auquel la thermistance est connectée. Une seule méthode, temperature(), convertit la valeur ADC en une valeur de résistance, puis utilise l'équation de Steinhart-Hart pour déterminer la température en Kelvin. La valeur de retour soustrait le zéro absolu (273,15 K) de la température calculée pour fournir la valeur en degrés Celsius.
La puissance du Lightblue Bean est évidente dans le fait que toutes les fonctionnalités Bluetooth sont essentiellement implémentées en 1 ligne de code qui écrit les valeurs de température échantillonnées dans une zone de données scratch sur la mémoire Bluetooth.
Bean.setScratchData(TEMPERATURE_SCRATCH_IDX, (uint8_t*)&temperature[0], 12);
Chaque valeur de température échantillonnée est représentée par un flotteur qui occupe 4 octets. La zone de données scratch peut contenir 20 octets. Nous n'en utilisons que 12. Il y a 5 zones de données scratch, vous pouvez donc transférer jusqu'à 100 octets de données à l'aide de données scratch.
Le flux de base des événements est le suivant:
- Vérifiez si nous avons une connexion Bluetooth
- Si c'est le cas, échantillonnez les températures et écrivez-les dans la zone de données de zéro
- Dormez 200 ms et répétez le cycle.
S'il n'est pas connecté, le firmware met la puce ATMEGA328P en veille pendant une longue période. Le cycle de sommeil est important pour économiser l'énergie. La puce ATMEGA328P passe en mode basse consommation et y reste jusqu'à ce qu'elle soit interrompue par le module Bluetooth LBM313. Le LBM313 générera une interruption pour réveiller l'ATMEGA328P à la fin de la période de veille demandée, ou chaque fois qu'une connexion Bluetooth est établie avec le Bean. La fonctionnalité WakeOnConnect est activée en appelant explicitement Bean.enableWakeOnConnect(true) pendant setup().
Il est important de noter que le firmware fonctionnera avec n'importe quelle application cliente BLE. Tout ce que le client a à faire est de supprimer les octets de température de la banque de données scratch et de les réassembler en nombres à virgule flottante pour l'affichage ou le traitement. L'application client la plus simple pour moi était d'utiliser EvoThings.
Étape 5: Application pour smartphone
L'exemple d'application Evo Things est très proche de ce dont j'avais besoin avec seulement un effort mineur pour ajouter les éléments d'affichage supplémentaires pour compléter le dispositif de mesure de température à 3 canaux.
L'installation et le fonctionnement de base de la plate-forme EvoThings sont très bien documentés sur le site Web d'Evo Things, il n'y a donc aucune valeur à répéter cela ici. Tout ce que je vais couvrir ici, ce sont les modifications spécifiques que j'ai apportées à leur exemple de code pour afficher 3 canaux d'informations sur la température, extraits de la zone de données de travail Bluetooth.
Après avoir installé EvoThings Workbench, vous trouverez l'exemple Lightblue Bean ici (sur les ordinateurs Windows 64 bits):
ThisPC\Documents\EvothingsStudio_Win64_1. XX\Examples\Lightblue-bean-basic\app
Vous pouvez remplacer les fichiers index.html et app.js par les fichiers joints à cette étape. Les modifications apportées au fichier jacascript extraient les 3 valeurs de température à virgule flottante de la zone de données de grattage et le HTML interne des nouveaux éléments créés dans le fichier HTML.
fonction onDataReadSuccess (données) {
var temperatureData = new Float32Array(data);
var octets = new Uint8Array(data);
var temperature = temperatureData[0];
console.log('Température lu: ' + température + ' 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°";
}
Étape 6: Enceinte
Le boîtier est une simple boîte imprimée en 3D. J'ai utilisé Cubify Design pour créer le design mais n'importe quel programme de modélisation 3D suffira. Le fichier STL est joint pour que vous puissiez imprimer le vôtre. Si c'était à refaire, je rendrais les murs un peu plus épais qu'ils ne le sont maintenant et je changerais la conception des clips qui maintiennent la planche en place. Les clips se cassent très facilement car la contrainte est dans le plan smae comme les couches imprimées en 3D, ce qui est l'orientation la plus faible pour les pièces imprimées en 3D. Les parois sont très minces, donc le mécanisme d'enclenchement est un peu faible. J'ai utilisé du ruban adhésif transparent pour garder la boîte fermée car les murs étaient trop fragiles - pas élégants mais ça marche !
Étape 7: Paramètres du PC et configuration Bluetooth
Le cycle de création et de téléchargement du micrologiciel pour le Bean se fait entièrement via Bluetooth. Il ne peut y avoir qu'une seule connexion Bluetooth active à la fois. Le chargeur de haricots est disponible sur le Windows App Store
Le cycle de base que j'utilise pour coupler et connecter (et réparer et reconnecter en cas de problème) est le suivant: Depuis le Panneau de configuration;/Paramètres Bluetooth, vous devriez voir l'écran suivant:
Finalement, Windows signalera "Prêt à apparier". À ce stade, vous pouvez cliquer sur l'icône Bean et après quelques secondes, Windows vous demandera d'entrer un mot de passe. Le mot de passe par défaut pour le bean est 00000
Si le mot de passe est entré correctement, Windows indiquera que l'appareil est correctement connecté. Vous devez être dans cet état pour pouvoir programmer le Bean.
Une fois que vous êtes jumelé et connecté, utilisez le Bean Loader pour charger le micrologiciel dans le bean. J'ai trouvé que cela échouait le plus souvent et cela semblait être lié à la proximité de mon ordinateur. Déplacez le Bean jusqu'à ce que vous trouviez un emplacement qui vous convient. Il y a des moments où rien ne fonctionnera et le Bean Loader suggérera de ré-appairer l'appareil. En règle générale, répéter le processus d'appariement rétablit la connexion. Vous devez « retirer l'appareil » avant de procéder à un nouveau jumelage.
Le fonctionnement de Bean Loader est simple et bien documenté sur leur site. Avec le chargeur de haricots ouvert, choisissez l'élément de menu "Programme" pour ouvrir une boîte de dialogue permettant de rechercher le fichier hexadécimal fourni à l'étape du micrologiciel de cette instructable.
Une fois le firmware chargé, FERMEZ le Bean Loader afin que la connexion entre le Bean Loader et le matériel Bean soit interrompue. Vous ne pouvez avoir qu'une seule connexion à la fois. Ouvrez maintenant l'atelier EvoThings et démarrez le client EvoThings sur le smartphone ou la tablette.
Lorsque vous cliquez sur le bouton "Exécuter", le client EvoThings chargera automatiquement la page html du thermomètre. Cliquez sur le bouton Connect pour vous connecter au Bean et vous devriez voir les températures s'afficher. Succès!
Étape 8: Conclusion
Si tout est construit et configuré correctement, vous devriez avoir un système fonctionnel qui vous permettra de surveiller les températures avec 2 sondes, ainsi que de surveiller la température du capteur BMA250 sur la carte de développement Bean. Il y a plus qui peut être fait avec EvoThings - je viens juste de gratter la surface donc je vous laisse cette expérimentation ! Merci d'avoir lu! Si les choses tournent mal, laissez simplement des commentaires et j'aiderai là où je peux.
Conseillé:
Thermomètre Lumineux - Lumière De Jardin Vitaminée (eNANO De Jardin) : 6 Étapes
Thermomètre Lumineux - Lampe de Jardin Vitaminée (eNANO De Jardin) : Lampe de jardin vitaminée avec arduino NANO et un capteur de température BMP180. Notre humble lampe de jardin aura un pouvoir secret : elle pourra indiquer la température extérieure au moyen d'un code couleur et clignotant. Son fonctionnement est le suivant : Il i
Thermomètre infrarouge intelligent IOT (COVID-19): 3 étapes
Thermomètre infrarouge intelligent IOT (COVID-19): En raison du soulèvement COVID de 2019, nous avons décidé de fabriquer un thermomètre infrarouge intelligent IOT qui se connecte à des appareils intelligents pour afficher la température enregistrée, ce n'est pas seulement une alternative moins chère, mais aussi un excellent module d'enseignement pour la technologie et l'IOT qui w
Utiliser un smartphone comme thermomètre sans contact / thermomètre portable : 8 étapes (avec photos)
Utiliser le smartphone comme thermomètre sans contact/thermomètre portable : mesure de la température corporelle avec sans contact/sans contact comme un pistolet thermique. J'ai créé ce projet parce que Thermo Gun est maintenant très cher, je dois donc trouver une alternative pour faire du bricolage. Et le but est de faire avec la version à petit budget.SuppliesMLX90614Ardu
Thermomètre infrarouge sans contact basé sur Arduino - Thermomètre IR utilisant Arduino : 4 étapes
Thermomètre infrarouge sans contact basé sur Arduino | Thermomètre basé sur IR utilisant Arduino : Salut les gars dans cette instructables, nous allons faire un thermomètre sans contact à l'aide d'arduino. Puisque parfois la température du liquide/solide est beaucoup trop élevée ou trop basse, puis il est difficile d'entrer en contact avec lui et de lire son température alors dans ce scen
RuuviTag et PiZero W et Blinkt ! un thermomètre basé sur une balise Bluetooth : 3 étapes (avec photos)
RuuviTag et PiZero W et Blinkt ! un thermomètre basé sur une balise Bluetooth : cette instructable décrit une approche pour lire les données de température et d'humidité à partir d'un RuuviTag à l'aide de Bluetooth avec un Raspberry Pi Zero W et pour afficher les valeurs en nombres binaires sur un blinkt Pimoroni ! pHAT. Ou pour faire court : comment construire un état