.. note:: Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés. **Pourquoi rejoindre ?** - **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe. - **Apprendre et partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences. - **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus. - **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents. - **Promotions festives et cadeaux** : Participez à des cadeaux et des promotions de vacances. 👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui ! .. _2.2.2_py_pi5: 2.2.2 Thermistance ===================== .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Selon la version de votre kit, identifiez si vous disposez d’un **ADC0834** ou d’un **MCP3008** et suivez la section correspondante. Introduction --------------- Tout comme la photorésistance peut détecter la lumière, la thermistance est un dispositif électronique sensible à la température qui peut être utilisé pour réaliser des fonctions de contrôle de la température, telles que la création d'une alarme de chaleur. Composants nécessaires ------------------------- Dans ce projet, nous avons besoin des composants suivants. .. image:: ../python_pi5/img/2.2.2_thermistor_list.png Il est certainement pratique d'acheter un kit complet, voici le lien : .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nom - ARTICLES DANS CE KIT - LIEN * - Kit Raphael - 337 - |link_Raphael_kit| Vous pouvez également les acheter séparément via les liens ci-dessous. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCTION DU COMPOSANT - LIEN D'ACHAT * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_thermistor` - |link_thermistor_buy| * - :ref:`cpn_adc0834` - \- Schéma --------- .. image:: ../python_pi5/img/2.2.2_thermistor_schematic_1.png .. image:: ../python_pi5/img/2.2.2_thermistor_schematic_2.png Procédures expérimentales ---------------------------- **Étape 1 :** Construisez le circuit. .. image:: ../python_pi5/img/2.2.2_thermistor_circuit.png **Étape 2 :** Allez dans le dossier du code. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Étape 3 :** Exécutez le fichier exécutable .. raw:: html .. code-block:: sudo python3 2.2.2_Thermistor_zero.py Lorsque le code s'exécute, la thermistance détecte la température ambiante qui sera affichée à l'écran une fois le calcul du programme terminé. .. warning:: Si vous recevez le message d'erreur ``RuntimeError: Cannot determine SOC peripheral base address``, veuillez consulter :ref:`faq_soc` **Code** .. note:: Vous pouvez **Modifier/Réinitialiser/Copier/Exécuter/Arrêter** le code ci-dessous. Mais avant cela, vous devez vous rendre au chemin du code source comme ``raphael-kit/python-pi5``. Après avoir modifié le code, vous pouvez l'exécuter directement pour voir l'effet. .. raw:: html .. code-block:: python #!/usr/bin/env python3 # -*- coding: utf-8 -*- import ADC0834 import time import math # Initialize the ADC0834 module ADC0834.setup() # Run the process in a try-except block try: while True: # Read the analog value from the sensor analogVal = ADC0834.getResult() # Convert the analog value to a voltage Vr = 5 * float(analogVal) / 255 # Calculate the resistance of the thermistor Rt = 10000 * Vr / (5 - Vr) # Calculate the temperature in Kelvin temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25))) # Convert Kelvin to Celsius Cel = temp - 273.15 # Convert Celsius to Fahrenheit Fah = Cel * 1.8 + 32 # Print the temperature in both Celsius and Fahrenheit print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah)) # Wait for 0.2 seconds before the next read time.sleep(0.2) # Handle KeyboardInterrupt for graceful termination except KeyboardInterrupt: # Clean up ADC0834 resources ADC0834.destroy() **Explication du code** #. Cette section importe la bibliothèque ADC0834 pour la conversion analogique-numérique, la bibliothèque time pour implémenter des délais, et la bibliothèque math pour effectuer des opérations mathématiques. .. code-block:: python #!/usr/bin/env python3 # -*- coding: utf-8 -*- import ADC0834 import time import math #. Initialise le module ADC0834 pour permettre la lecture des valeurs analogiques. .. code-block:: python # Initialize the ADC0834 module ADC0834.setup() #. Implémente une boucle infinie pour la lecture continue des données. La boucle lit la valeur analogique d'une thermistance, convertit cette valeur en tension, calcule la résistance de la thermistance, puis traduit cette résistance en mesures de température en Kelvin, Celsius et Fahrenheit. Elle affiche également les relevés de température en Celsius et Fahrenheit, en faisant une pause de 0,2 seconde entre chaque lecture. .. code-block:: python # Run the process in a try-except block try: while True: # Read the analog value from the sensor analogVal = ADC0834.getResult() # Convert the analog value to a voltage Vr = 5 * float(analogVal) / 255 # Calculate the resistance of the thermistor Rt = 10000 * Vr / (5 - Vr) # Calculate the temperature in Kelvin temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25))) # Convert Kelvin to Celsius Cel = temp - 273.15 # Convert Celsius to Fahrenheit Fah = Cel * 1.8 + 32 # Print the temperature in both Celsius and Fahrenheit print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah)) # Wait for 0.2 seconds before the next read time.sleep(0.2) #. Capture une exception KeyboardInterrupt pour terminer le programme proprement et inclut des instructions de nettoyage pour les ressources ADC0834 à la fin. .. code-block:: python # Handle KeyboardInterrupt for graceful termination except KeyboardInterrupt: # Clean up ADC0834 resources ADC0834.destroy()