Construire votre thermomètre DIY Arduino est un moyen amusant et pratique d'étendre vos compétences de bricolage, mais par où commencer? Rejoignez-nous alors que nous explorons le câblage et le codage nécessaires pour transformer un Arduino, une sonde de température DS18B20, et un écran OLED dans un thermomètre numérique précis qui peut bien fonctionner dans les pièces, les aquariums et même en plein air.
De quoi avez-vous besoin pour fabriquer un thermomètre numérique DIY Arduino ?
Tous ces composants peuvent être trouvés sur des sites Web comme eBay et Amazon.
Une carte Arduino
Vous pouvez utiliser à peu près n'importe quel Arduino avec une sortie 5V pour ce projet. Nous utilisons un Arduino Pro Micro pour que notre thermomètre fini soit compact, mais vous pouvez utiliser une carte plus grande comme un Arduino Uno si vous souhaitez éviter la soudure pour ce projet.
Sonde de température DS18B20
Les capteurs de température DS18B20 peuvent être trouvés sous forme de petits capteurs autonomes, de circuits imprimés avec des capteurs attachés ou de sondes étanches sur de longs fils. Nous avons choisi ce dernier, car cela nous permet d'utiliser notre thermomètre à l'intérieur d'un aquarium, mais vous pouvez choisir n'importe quelle variante du capteur de température DS18B20. Contrairement à d'autres types de capteurs de température, les DS18B20 fournissent un signal direct vers numérique à votre Arduino, plutôt que les signaux analogiques provenant d'options telles que les capteurs de température LM35.
Un écran OLED/LCD
L'affichage que vous choisissez pour votre thermomètre aura un impact important sur le produit fini. Nous avons choisi un écran OLED blanc monochrome compatible I2C de 1,3 pouces pour notre thermomètre, mais vous pouvez choisir ce que vous voulez tant qu'il prend en charge I2C.
Petites pièces supplémentaires
- Résistance de 4,7 K (kiloohms)
- Fil isolé silicone/PVC 28 à 22 AWG
- Une planche à pain (facultatif pour ceux qui ne souhaitent pas souder)
Câblage de votre thermomètre DIY
Le câblage de ce projet est beaucoup plus simple que vous ne l'imaginez. En utilisant le schéma de circuit ci-dessus, vous pouvez créer votre propre thermomètre numérique DIY avec peu d'effort, mais nous avons également décomposé le schéma ci-dessous pour le rendre plus facile à suivre.
Câblage de la sonde de température DS18B20
Le câblage correct de votre sonde de température DS18B20 est essentiel pour ce projet, et vous devez vous assurer que vous utilisez la résistance de 4,7 K que nous avons mentionnée précédemment, sinon votre sonde ne fonctionnera pas correctement. La sonde est livrée avec trois fils: Terre (généralement noir), VCC (généralement rouge) et Données.
- VCC se connecte à une broche 5V sur votre Arduino
- La masse se connecte à une broche GND sur votre Arduino
- Les données peuvent se connecter à n'importe quelle broche numérique de votre Arduino (nous avons choisi la broche numérique 15)
- Les fils Data et VCC doivent également être connectés les uns aux autres avec une résistance 4.7K
Câblage de l'écran OLED I2C
Comme nous utilisons une connexion I2C entre notre écran OLED et notre Arduino, nous n'avons qu'à connecter quatre fils avant de pouvoir commencer à utiliser notre écran: VCC, Ground, SDA et SCL. Presque tous les Arduino modernes ont des broches SDA et SCL intégrées, offrant la possibilité de connecter jusqu'à 128 composants I2C uniques à une seule carte.
Notre Arduino Pro Micro a SDA sur la broche numérique 2 et SCL sur la broche numérique 3, mais vous devrez peut-être rechercher un schéma de brochage de la carte spécifique que vous avez choisie avant de commencer.
- VCC se connecte à une broche 5V sur votre Arduino
- La masse se connecte à une broche GND sur votre Arduino
- SDA se connecte à la broche SDA de votre Arduino
- SCL se connecte à la broche SCL de votre Arduino
Tester votre circuit
Il est crucial que vous testiez le circuit que vous avez créé avant de commencer à écrire le code final, mais vous pouvez utiliser les exemples de projets fournis avec les bibliothèques décrites ci-dessous pour tester le circuit que vous avez fabriqué.
Codage de votre capteur de température et de votre écran OLED
Le codage de votre thermomètre numérique DIY est plus délicat que le câblage, mais l'IDE Arduino peut être utilisé pour cela pour le rendre plus facile.
Choisir les bonnes bibliothèques
- Bibliothèque d'affichage OLED : Nous utilisons la bibliothèque Adafruit_SH1106.h pour notre affichage, car c'est la bibliothèque avec laquelle il a été conçu pour fonctionner. Autres écrans OLED peuvent utiliser leurs propres bibliothèques, comme la bibliothèque Adafruit_SSD1306.h, et vous pouvez généralement trouver celle dont vous avez besoin sur la page du produit à partir de laquelle vous avez obtenu votre affichage.
- Sonde de température DS18B20 : Nous avons besoin de deux bibliothèques pour notre sonde de température. DallasTemperature.h est utilisé pour collecter les données de température et OneWire.h pour rendre possible notre connexion à un seul fil.
Une fois ces bibliothèques installées et incluses dans votre projet, votre code devrait ressembler à l'extrait ci-dessous. Notez que nous avons également inclus du code pour définir les broches de nos composants.
#inclure //Afficher la bibliothèque
#inclure
#inclure //Bibliothèque de sondes temporaires
#définir OLED_RESET -1
Affichage Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 // Broche de fil de données de sonde de température
Un fil un fil (ONE_WIRE_BUS); // Dites à OneWire quelle broche nous utilisons
Capteurs de température Dallas(&oneWire); // Référence OneWire à la température de Dallas
Construire les fonctions
- void setup: Nous utilisons la norme mettre en place fonction pour initialiser à la fois notre afficheur et notre sonde de température.
- boucle vide: Notre norme boucle fonction ne sera utilisée que pour appeler notre Afficher une fonction.
- annuler l'affichage: Nous avons ajouté un Afficher fonction qui appelle notre Temp fonction et fournit des informations à notre écran.
- température entière: Notre Temp La fonction est utilisée pour obtenir une lecture de température pour notre Afficher une fonction.
Une fois terminé, cela devrait ressembler à l'extrait ci-dessous.
void setup() {
}
boucle vide() {
}
annuler Affichage() {
}
int Temp() {
}
Codage de l'écran OLED
Avant de pouvoir ajouter du code à notre Afficher fonction, nous devons nous assurer que le panneau OLED est initialisé dans notre void setup une fonction. Dans un premier temps, nous utilisons un afficher.commencer commande pour lancer l'affichage, suivie d'une display.clearDisplay commande pour vous assurer que l'affichage est clair.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Modifier en fonction de votre bibliothèque d'affichage
display.clearDisplay();
}
De là, nous pouvons ajouter du code à notre Afficher une fonction. Cela commence par un autre display.clearDisplay commande, avant de déclarer une nouvelle variable entière avec une valeur qui appelle la Temp fonction (nous en parlerons plus tard). Nous sommes alors en mesure d'utiliser cette variable pour afficher la température sur l'écran en utilisant le code suivant.
annuler Affichage() {
display.clearDisplay();
int intTemp = Temp(); //Appelle notre fonction Temp
display.setTextSize (3); // Définit notre taille de texte
display.setTextColor (BLANC); //Définit la couleur de notre texte
display.setCursor (5, 5); //Définit la position de notre texte sur l'affichage
display.print (intTemp); //Imprime la valeur fournie par la fonction Temp
display.drawCircle (44, 7, 3, BLANC); // Dessine un symbole de degré
display.setCursor (50, 5);
display.print("C"); //Ajoute C pour indiquer que notre température est en Celsius
}
Codage de la sonde de température DS18B20
Comme notre écran, notre sonde de température a également besoin d'un code de configuration pour initialiser le composant.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
capteurs.begin();
}
Ensuite, il est temps de programmer la sonde elle-même, et nous devons ajouter du code à notre Temp une fonction. Tout d'abord, nous allons demander la température à notre sonde, puis enregistrer le résultat sous forme de variable flottante et le convertir en entier. Si ce processus réussit, la température revient au Afficher une fonction.
int Temp() {
capteurs.requestTemperatures(); // Envoie la commande pour obtenir les températures
float tempC = capteurs.getTempCByIndex (0); // Cela demande la température en Celsius et l'assigne à un flotteur
int intTemp = (int) tempC; // Cela convertit le flottant en un entier
if (tempC != DEVICE_DISCONNECTED_C) //Vérifier si notre lecture a fonctionné
{
retourner intTemp; // Renvoie notre valeur de température à la fonction Display
}
}
Finir
Enfin, nous avons juste besoin de dire à notre principal boucle fonction pour appeler notre Afficher fonctionnent à chaque cycle du code, nous laissant avec un projet qui ressemble à ceci.
#inclure //Afficher la bibliothèque
#inclure
#inclure //Bibliothèque de sondes temporaires
#définir OLED_RESET -1
Affichage Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 // Broche de fil de données de sonde de température
Un fil un fil (ONE_WIRE_BUS); // Dites à OneWire quelle broche nous utilisons
Capteurs de température Dallas(&oneWire); // Référence OneWire à la température de Dallas
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
capteurs.begin();
}
boucle vide() {
Afficher(); //Appelle notre fonction d'affichage
}
annuler Affichage() {
display.clearDisplay();
int intTemp = Temp(); //Appelle notre fonction Temp
display.setTextSize (3); // Définit notre taille de texte
display.setTextColor (BLANC); //Définit la couleur de notre texte
display.setCursor (5, 5); //Définit la position de notre texte sur l'affichage
display.print (intTemp); //Imprime la valeur fournie par la fonction Temp
display.drawCircle (44, 7, 3, BLANC); // Dessine un symbole de degré
display.setCursor (50, 5);
display.print("C"); //Ajoute C pour indiquer que notre température est en Celsius
}
int Temp() {
capteurs.requestTemperatures(); // Envoie la commande pour obtenir les températures
float tempC = capteurs.getTempCByIndex (0); // Cela demande la température en Celsius et l'assigne à un flotteur
int intTemp = (int) tempC; // Cela convertit le flottant en un entier
if (tempC != DEVICE_DISCONNECTED_C) //Vérifier si notre lecture a fonctionné
{
retourner intTemp; // Renvoie notre valeur de température à la fonction Display
}
}
Construire un thermomètre numérique DIY
Ce projet doit être amusant et informatif, tout en vous donnant la possibilité de créer un objet pratique. Nous avons conçu ce code pour qu'il soit aussi simple que possible, mais vous pouvez l'utiliser comme base pour un projet plus compliqué au fur et à mesure de votre apprentissage.
Intéressé par les projets Arduino mais vous ne savez pas par où commencer? Ces projets pour débutants vous apprendront comment démarrer.
Lire la suite
- DIY
- Arduino
- Électronique
Samuel est un rédacteur technologique basé au Royaume-Uni, passionné par tout ce qui concerne le bricolage. Ayant démarré des entreprises dans les domaines du développement Web et de l'impression 3D, en plus d'avoir travaillé comme écrivain pendant de nombreuses années, Samuel offre un aperçu unique du monde de la technologie. Se concentrant principalement sur des projets de technologie de bricolage, il n'aime rien de plus que partager des idées amusantes et passionnantes que vous pouvez essayer à la maison. En dehors du travail, Samuel peut généralement être trouvé en train de faire du vélo, de jouer à des jeux vidéo sur PC ou de tenter désespérément de communiquer avec son crabe de compagnie.
Abonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !
Cliquez ici pour vous abonner