Table des matières:

Enregistreur de température WiFi (avec ESP8266): 11 étapes (avec photos)
Enregistreur de température WiFi (avec ESP8266): 11 étapes (avec photos)

Vidéo: Enregistreur de température WiFi (avec ESP8266): 11 étapes (avec photos)

Vidéo: Enregistreur de température WiFi (avec ESP8266): 11 étapes (avec photos)
Vidéo: A-10 NODEMCU (ESP8266) en Français: L'afficheur série LCD I2C 2024, Juillet
Anonim
Image
Image
Matériaux
Matériaux

Bonjour, content de vous voir ici. J'espère que dans ce instructable, vous trouverez des informations utiles. N'hésitez pas à m'envoyer des suggestions, des questions, … Voici quelques données de base et un aperçu rapide du projet. Pour les utilisateurs mobiles: Vidéo. Faites-moi savoir ce que vous pensez du projet dans la section des commentaires, merci. J'ai récemment acheté une carte NodeMcu (basée sur ESP8266) juste pour l'essayer, donc ce n'est pas un projet vraiment avancé. Mais cela fonctionne et c'est ce dont j'ai besoin, donc ça va. La fonction principale de cet enregistreur de données est de collecter la température et de l'enregistrer sur un serveur. Cela permet aux utilisateurs de vérifier les données et les graphiques en ligne même lorsqu'ils ne sont pas au même endroit que l'enregistreur (par exemple pour une station météorologique). Une autre fonctionnalité utile est la mise à jour OTA incluse dans le code qui permet à l'utilisateur de mettre à jour et de personnaliser facilement le logiciel. Je vais analyser deux capteurs et leur méthode d'acquisition associée pour faire un bilan de tous les avantages et inconvénients.

Spoiler: après quelques tests, j'ai trouvé qu'un capteur numérique comme le DS18B20 est la meilleure solution car il offre une stabilité et une précision plus élevée. C'est déjà étanche et avec le câble.

Étape 1: Matériaux

Matériaux
Matériaux
Matériaux
Matériaux
Matériaux
Matériaux

Il s'agit d'un projet minimal avec seulement quelques composants externes, pour cela la liste des nomenclatures sera très courte. Cependant, voyons quel matériel est demandé:

  • NodeMcu V3 (ou tout processeur μ ESP8266 compatible);
  • LED RVB (anode commune);
  • Résistances pour led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (thermomètre intégré Maxim);
  • LM35 (thermomètre Texas Instrument);
  • Batterie externe (en option);
  • Câble;
  • Connecteur (pour le rendre plus "avancé");
  • Box (facultatif, encore une fois pour le rendre plus "avancé");
  • Support LED (optionnel);

Remarque: Comme je l'ai dit, vous devez choisir l'une des deux méthodes. Si vous choisissez le thermomètre LM35, vous aurez besoin de quelques autres composants:

  • Attiny45/85;
  • Programmeur AVR (ou Arduino en tant que FAI);
  • Résistance (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Connecteur de bande de 2,54 mm (facultatif)
  • Diode (2x1N914)
  • Perfboard ou PCB;

Étape 2: Choisir le capteur

Choisir le capteur
Choisir le capteur

Le choix du capteur peut être une étape difficile: il existe aujourd'hui des tonnes de transducteurs (TI propose 144 éléments différents) à la fois analogiques et numériques avec une plage de température, une précision et un boîtier différents. Capteurs analogiques (46 pièces disponibles auprès de TI): Avantages:

  • L'enregistreur de données peut facilement être changé de température à une autre grandeur (tension, courant, …);
  • Peut être un peu moins cher;
  • Facile à utiliser car il ne nécessite aucune bibliothèque spéciale;

Les inconvénients:

  • Nécessite un CAN (qui peut influencer la précision de la mesure) et d'autres composants externes. Étant donné que esp8266 n'a qu'un seul ADC (et pas vraiment précis), je suggérerais d'en utiliser un externe.
  • Nécessite un câble dédié avec rejet du bruit, car toute tension induite peut modifier le résultat.

Après un peu de réflexion, j'ai décidé d'utiliser le LM35, un capteur linéaire avec un facteur d'échelle de +10mV/°C avec une précision de 0,5°C et un courant très faible (environ 60uA) avec une tension de fonctionnement de 4V à 30V. Pour plus de détails je suggère de voir la fiche technique: LM35.

Capteurs numériques (fortement recommandés)

Presque tous les composants externes nécessaires;

CAN intégré

Les inconvénients:

Bibliothèque de requêtes ou logiciel pour décoder le signal numérique (I2C, SPI, Serial, One Wire, …);

Plus cher;

J'ai choisi DS18B20 car j'ai trouvé un lot de 5 capteurs étanches sur Amazon et parce que c'est largement documenté sur internet. La caractéristique principale est une mesure de 9 à 12 bits, un bus à 1 fil, une tension d'alimentation de 3,0 à 5,5, une précision de 0,5 °C. Encore une fois, pour plus de détails voici la fiche technique: DS18B20.

Étape 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Analysons comment j'ai implémenté l'ADC externe et d'autres fonctionnalités pour le thermomètre LM35. J'ai trouvé un câble avec trois fils, un avec blindage et deux sans. J'ai décidé d'ajouter un condensateur de découplage pour stabiliser la tension d'alimentation à proximité du capteur. Le plus important pour nous est l'ADC 10 bits (pas vraiment le meilleur mais assez précis pour moi). Pour communiquer avec Esp8266, j'ai décidé d'utiliser la communication série en gardant à l'esprit que esp8266 fonctionne avec 3,3 V et attiny85 à 5 V (car il doit alimenter le capteur). Pour y parvenir, j'ai utilisé un simple diviseur de tension (voir schéma). Pour lire la température négative, nous devons ajouter des composants externes (résistance 2x1N914 et 1x18k), car je ne veux pas utiliser d'alimentation négative. Voici le code: Référentiel TinyADC. Remarque: pour compiler ce code, vous devrez installer attiny to ide (insérez ceci dans l'option: https://drazzy.com/package_drazzy.com_index.json), si vous ne savez pas comment le faire, recherchez simplement sur Google. Ou téléchargez directement le fichier.hex.

Étape 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

J'ai acheté ces capteurs sur Amazon (5 coûte environ 10€). Il est arrivé avec un couvercle en acier inoxydable et un câble de 1m de long. Ce capteur peut renvoyer des données de température de 9 à 12 bits. De nombreux capteurs peuvent être branchés sur la même broche car ils ont tous un identifiant unique. Pour brancher le DS18B20 sur esp8266, vous pouvez simplement suivre le schéma (deuxième photo). Depuis que j'ai décidé que mon enregistreur aurait trois sondes, j'ai dû distinguer laquelle est laquelle. J'ai donc pensé à leur donner une couleur associée via un logiciel à leur adresse. J'ai utilisé un tube thermorétractable (troisième photo).

Étape 5: Code ESP8266

Code ESP8266
Code ESP8266
Code ESP8266
Code ESP8266

Comme je suis nouveau dans ce monde, j'ai décidé d'utiliser beaucoup de bibliothèques. Comme indiqué dans l'introduction, les principales caractéristiques sont:

  • Mise à jour OTA: vous n'avez pas besoin de brancher esp8266 à votre ordinateur à chaque fois que vous devez télécharger le code (vous ne devez le faire que la première fois);
  • Gestionnaire sans fil, si le réseau sans fil change, vous n'avez pas besoin de télécharger à nouveau le croquis. Vous pouvez simplement reconfigurer les paramètres réseau en vous connectant au point d'accès esp8266;
  • transmission de données Thingspeak;
  • Prise en charge des LM35 et DS18B20;
  • Interface utilisateur simple (la LED RVB indique des informations utiles);

Veuillez m'excuser car mon logiciel n'est pas le meilleur et il n'est pas vraiment bien ordonné. Avant de télécharger sur l'appareil, vous devez modifier certains paramètres pour adapter le code à votre configuration. Ici, vous pouvez télécharger le logiciel. Configuration commune LM35 et DS18B20Vous devez modifier la définition de la broche, le jeton, le numéro de canal, l'utilisateur et le mot de passe pour la mise à jour OTA. Ligne du 15 au 23.

#définissez le rouge VOTRE PINHERE #définissez le vert VOTRE PINHERE

#define blue YOURPINHERE const char* host = "select host address"; //pas vraiment nécessaire, vous pouvez laisser esp8266-webupdate const char* update_path = "/firmware"; //pour changer l'adresse de mise à jour ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char* update_password = "YOURPASSWORDHERE; long non signé myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey = "WRITEAPIHERE";

Étape 6: Code ESP8266: Utilisateur LM35

Vous devez connecter la carte attiny à esp8266, pour alimenter l'unité ADC, utilisez la broche VU et la broche G. Vous devez choisir la broche que vous souhaitez utiliser pour la communication série (pour garder le matériel série libre à des fins de débogage). La broche Tx doit être sélectionnée mais n'est pas vraiment utilisée. (Ligne 27). SoftwareSerial mySerial (RXPIN, TXPIN); En haut, vous devez ajouter: #define LM35USER

Étape 7: Code ESP8266: Utilisateur DS18B20

Comme première opération, vous devez identifier l'adresse de l'appareil pour chaque capteur. Compilez et programmez ce code sur l'esp et recherchez les résultats en série. Le code peut être trouvé ici (recherchez ce titre dans la page: « Lire les adresses internes individuelles DS18B20 »). Connectez un seul capteur pour obtenir l'adresse, les résultats devraient être quelque chose comme ça (chiffre aléatoire ici ! Juste comme exemple): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Ensuite, vous devez changer mon code dans la section " Configuration pour DS18B20" (ligne 31 à 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION //(de 9 à 12) #define delayDallas READINTERVAL //(En millisecondes, le minimum est de 15s ou 15000mS) DeviceAddress blueSensor = { 0x11, 0x22, 0x33, 0xD9, 0x12}; //CHANGER AVEC VOTRE ADRESSE DeviceAddress redSensor = { 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; //CHANGER AVEC VOTRE ADRESSE DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 }; //CHANGER AVEC VOTRE ADRESSE En haut, vous devez ajouter: #define DSUSER

Étape 8: ESP8266 Petite astuce

ESP8266 petit truc
ESP8266 petit truc

Après quelques tests, j'ai découvert que si vous branchez esp8266 sans programmation, le code n'exécutera pas tant que vous n'aurez pas appuyé une fois sur reset. Pour résoudre ce problème, après quelques recherches, j'ai découvert qu'il fallait ajouter une résistance pull-up de 3,3V à D3. Cela indiquera au processeur de charger le code à partir de la mémoire flash. Avec cette méthode, D3 peut directement être utilisé pour la saisie de données pour les capteurs DS18B20.

Étape 9: Première utilisation

Première utilisation
Première utilisation
Première opération
Première opération

Si vous avez téléchargé le code correctement mais que vous n'utilisez jamais la bibliothèque du gestionnaire Wifi, il est temps de configurer votre connexion wifi. Attendez de voir la led RVB clignoter plus rapidement qu'avant, puis recherchez avec votre mobile ou votre PC le réseau wifi appelé "AutoConnectAp" et connectez-vous. Après la connexion, ouvrez un navigateur Web et entrez 192.168.4.1, vous trouverez l'interface graphique du gestionnaire wifi (voir photos) et appuyez sur "Configurer le Wifi". Attendez que esp8266 recherche les réseaux wifi et sélectionnez celui que vous souhaitez. Insérez le mot de passe et appuyez sur "enregistrer". Esp8266 redémarrera (ne vous souciez pas de la LED RGB cette fois car elle produira des informations aléatoires) et se connectera au réseau.

Étape 10: Conclusion

Conclusion
Conclusion
Conclusion
Conclusion
Conclusion
Conclusion
Conclusion
Conclusion

En fin de compte, voici un graphique tiré de l'enregistreur de données en action lors de l'enregistrement de la température de mon congélateur. En orange se trouve le DS18B20 et en bleu le LM35 et son circuit. Vous pouvez voir la plus grande différence de précision entre le capteur numérique et analogique (avec mon pauvre "circuit ADC") qui donne des données non physiques. En résumé, si vous voulez construire cet enregistreur, je suggère d'utiliser le capteur de température numérique DS18B20 car il est plus facile à lire et presque "plug and play", il est plus stable et précis, il fonctionne à 3,3 V et ne nécessite qu'une seule broche pour beaucoup de capteurs. Merci pour l'attention, j'espère que ce projet est bon pour vous et vous avez trouvé des informations utiles. Et pour qui veut s'en rendre compte, je souhaite avoir donné toutes les informations nécessaires. Si ce n'est pas le cas, n'hésitez pas à tout demander, je serai heureux de répondre à toutes les questions. Comme je ne suis pas anglophone, si quelque chose ne va pas ou n'est pas compréhensible, faites-le moi savoir. Si vous avez aimé ce projet, veuillez le voter pour les concours et/ou laisser un commentaire ☺. Cela m'encouragera à continuer à mettre à jour et à publier de nouveaux contenus. Merci.

Conseillé: