Capteur d 'humidité thermique
La précision de mesure de la température du capteur est ± 2. C et humidité relative, précision ± 5%Les deux valeurs de mesure sont transmises au microcontrôleur dans un paquet de données au moyen d 'un protocole câblé.
Les capteurs arduino et dht11 sont tous deux dotés d 'une sortie de collecteur de circuits ouverts et peuvent également être utilisés comme entrées.La résistance à la traction incorporée à arduino est utilisée conjointement.Pour démarrer la transmission, arduino va... Le niveau inférieur est d 'au moins 18 millisecondes, puis la broche est commutée à l' entrée.Lorsque le capteur détecte ce faible signal sur la broche de données, il commence à transmettre des données.Il commute le pied du tube de données en sortie, le place en dessous de 80m, puis le remet en hauteur de 80m.Puis suivez 40 bits de données.Pour distinguer les bits de données, la sortie est de 50 - M à bas et de 28 - M à haut pour 0 bits, et la sortie de 50 - M à bas et de 70 - M à haut pour 1 bit.Les 40 bits de données sont divisés en cinq octets. Byte à haute humidité, Byte à faible humidité, Byte à haute température, Byte à basse température et test.
Mais ne vous inquiétez pas, vous n 'êtes pas obligé de mettre en place le contrôle du port arduino vous - même, et vous avez déjà une bibliothèque complète qui peut être intégrée à votre propre programme.
Arduino et espx ont deux bibliothèques.J 'ai choisi la simplicité.
Circuits et programmes d'essai:
Nous avons connecté les guillemets de données dht11 à ceux d 'arduino.Il peut également être utilisé pour n 'importe quel autre pied de tube numérique.
"35; y compris < simpledht.h >
Constante Byte de données pin = 2; / / dht11
Simplification HT11;
Paramètres non valides
/ / démarrage de mesures de sortie d 'interface série
Lancement en série (115 200);
}
Cycle non valide
Serial.println (= = = = = = = = = = = = = = = ")
Serial.println ("dht11 Measurement");
/ / lire les valeurs
Variation de température = 0;
Byte humide = 0;
Nous vérifions si des erreurs se sont produites.
Int = err = simpledherrsuces;
Err = dht11.read (aiguille de données, température, humidité, vide);
Si= référence = = = liens externes = = = *
Serial.print ("erreur de lecture du dht11.Erreur = ")
Impression en série (Err);
- autres {substantiv}
Impression en série ((int) temperature);
Println ("C");
Impression en série (int) humide);
Serial.println ("% H");
}
/ / attendre 1,5 s dht11 pour effectuer une mesure / s
Retard (1 500);
}
< simpledth.h >
Par exemple, des capteurs peuvent être utilisés pour tester, ce qui augmente la température, en particulier l 'humidité.
Capteur de température DS18B20
Le capteur de température est également un capteur de température intelligent qui transmet des valeurs de mesure dans la section C. par protocole câblé.Contrairement au DHT - 11, la mesure de température DS18B20 est plus précise. Précision ± Le temps de mesure est de 0,75 s avec une résolution de 12 bits.
Contrairement à dth11, le Protocole sans fil est plus souple.Chaque capteur a un numéro de série unique, ce qui permet de faire fonctionner n 'importe quel nombre de capteurs sur le même bus sans fil.D 'autres capteurs utilisent le même protocole et peuvent ensuite être commandés par le bus.
Au moyen d 'une commande de recherche, le microcontrôleur peut déterminer quels capteurs sont connectés au bus après initialisation. DingNuméro de série unique Contenir Et Identifiez son type de capteur.Pour lire ces valeurs, un numéro de série doit toujours être transmis en premier pour qu 'un seul capteur occupe le bus.
Catégorie EUne autre caractéristique du DS18B20 est qu 'il est possible d' obtenir l 'électricité nécessaire à l' intérieur de la ligne de données (mode parasite) et qu 'il n' est donc nécessaire que de deux fils.
Bien entendu, la Bibliothèque arduino peut également être utilisée pour ds18b20, l 'une pour le Protocole câblé et l' autre pour les capteurs de température.
Circuit et Programme d 'essai
Pour les circuits, nous utilisons aussi sept écrans. Affichage à quatre bits Display Temperature
Il nous faut une bibliothèque pour montrer:
PageProcédure:
"35; y compris <àla température. H >
"35; y compris < tm1637 affichage.h >
Capteur de température
Bus Byte constant = 2;
Pied de tube d 'affichage
Constante = 8;
Données d 'octets constants = 9;
• Services de bibliothèque
Monoligne (bus);
Capteur de température de Dallas (monoligne);
/ / matrice d 'adresses de dispositif de stockage
Adresse du périphérique
Tm1637 (débit, données);
/ / affichage de variables globales pour les caractères moins
Const = uit8 'U = T moins [] = {0x40];
Constante Unit8 plus [] {0x00];
Paramètres non valides
/ / activer l 'interface série
Lancement en série (115 200);
Nous détectons les capteurs sur le bus sans fil.
Capteur.
Impression en série (sensors.getdevicecount (), DEC);
Serial.println (« détecteur de découverte »);
Voyons si le bus est en mode parasite.
Impression en série ("mode parasite")
F (sensors.ispasitepowermode ()
Println ("ein");
- autres {substantiv}
Impression en série ("Aus")
}
Voyons si un capteur sur le bus est un capteur de température.
SiSensors.getaddress (address, 0)) serial.println ("pas de capteur de température disponible!")Quoi?
/ / Afficher l 'adresse
Impression en série ("adresse:");
Imprimer l 'adresse (l' adresse);
Serial.println ();
/ / nous avons maintenant la résolution nécessaire (9, 10, 11 ou 12 bits)
Définition de la résolution (adresse, 9);
/ / pour le contrôle, nous lisons à nouveau les valeurs
Serial.print ("résolution =")
Impression en série (sensors.getresolution (addresses), DEC);
Serial.println ();
Maintenant, on ouvre l 'écran.
Sens de la frustration
}
/ / fonction de la température du capteur d 'impression
Température d 'impression non valide (adresse du dispositif d' adresse)
{
Float = tempc = sensors.gettempc (adresse);
Impression en série ("température C:");
Impression en série (tempc);
Impression en série ("température F:");
Impression en série (Dallas Temperature: tofahrenheit (Temperature) / / convertir les valeurs en Fahrenheit
/ / pour montrer qu 'on a le bon logo
/ / sortie à trois chiffres de la position 1
Si (tempc & lt; 0)
Afficher les paramètres des paramètres (négatif, 1,0);
Pour la température négative, nous devons inverser la valeur
Anzeige.shownumberdec (circulaire * - 10), vrai, 3,1);
- autres {substantiv}
Afficher les paramètres des paramètres (positif, 1,0);
Anzeige.shownumberdec (cercle (tempc * 10), vrai, 3,1);
}
}
Cycle non valide
Impression en série ("Lese temperatur...");
Temperature request / / lire les commandes de température
Serial.println ("terminé")Quoi?
/ / données de sortie actuelles
Température d 'impression (adresse);
Retard (1 000); Attends une seconde.
}
/ / imprimer la fonction de l 'adresse du capteur
Adresse d 'impression non valide
{
Pour (uint8 U = t i = 0; i & lt; 8; i + +)
{
F (adresse [i] & lt; 16) serial.print ("0");
Impression en série (adresse, 16 bits);
}
}
< tm1637display.h >< / de la température.h >< onewire.h >