parent
fce94d8132
commit
361d88c211
@ -0,0 +1,273 @@
|
|||||||
|
[](translations/README.fr.md)
|
||||||
|
# Anticiper la croissance de ses plantes avec l'IoT
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> Illustré par [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
|
||||||
|
|
||||||
|
## Questionnaire de prélecture
|
||||||
|
|
||||||
|
[Questionnaire de prélecture](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/9)
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
<!-- Plants need certain things to grow - water, carbon dioxide, nutrients, light, and heat. In this lesson, you'll learn how to calculate the growth and maturity rates of plants by measuring the air temperature. -->
|
||||||
|
Les plantes ont besoin de certaines choses pour pousser : de l'eau, du dioxyde de carbone, des nutriments, de la lumière et de la chaleur. Dans cette leçon, vous apprendrez à calculer les taux de croissance et de maturité des plantes en mesurant la température de l'air.
|
||||||
|
|
||||||
|
|
||||||
|
Dans cette leçon, nous allons couvrir :
|
||||||
|
|
||||||
|
* [Agriculture digitale](#Agriculture-digitale)
|
||||||
|
* [L'importance de la température dans l'agriculture](#L'importance-de-la-température-dans-l'agriculture)
|
||||||
|
* [La mesure de la température ambiante](#La-mesure-de-la-température-ambiante)
|
||||||
|
* [Degrés jours de croissance (DJC)](#Degrés-jours-de-croissance)
|
||||||
|
* [Calcul du GDD à l'aide de données de senseurs](#Calcul-du-GDD-à-l'aide-de-données-de-senseurs)
|
||||||
|
|
||||||
|
## Agriculture digitale
|
||||||
|
|
||||||
|
L'agriculture numérique transforme notre façon de cultiver, en utilisant des outils pour collecter, stocker et analyser les données issues de l'agriculture. Nous sommes actuellement dans une période décrite comme la "quatrième révolution industrielle" par le Forum économique mondial, et l'essor de l'agriculture numérique a été qualifié de "quatrième révolution agricole", ou "agriculture 4.0".
|
||||||
|
|
||||||
|
> 🎓 Le terme "agriculture numérique" englobe également l'ensemble de la "chaîne de valeur agricole", c'est-à-dire tout le parcours de la ferme à la table. Cela inclut le suivi de la qualité des produits lors de leur expédition et de leur transformation, les systèmes d'entreposage et de commerce électronique, et même les applications de location de tracteurs !
|
||||||
|
|
||||||
|
Ces changements permettent aux agriculteurs d'augmenter leurs rendements, d'utiliser moins d'engrais et de pesticides et d'arroser plus efficacement. Bien qu'ils soient principalement utilisés dans les pays riches, le prix des capteurs et autres dispositifs diminue lentement, ce qui les rend plus accessibles dans les pays en développement.
|
||||||
|
|
||||||
|
Certaines techniques rendues possibles par l'agriculture numérique sont :
|
||||||
|
|
||||||
|
* Mesure de la température - la mesure de la température permet aux agriculteurs de prévoir la croissance et la maturité des plantes.
|
||||||
|
* L'arrosage automatisé - il s'agit de mesurer l'humidité du sol et de mettre en marche les systèmes d'irrigation lorsque le sol est trop sec, plutôt que de procéder à un arrosage programmé. L'arrosage programmé peut conduire à un arrosage insuffisant des cultures pendant une période chaude et sèche, ou à un arrosage excessif en cas de pluie. En n'arrosant que lorsque le sol en a besoin, les agriculteurs peuvent optimiser leur utilisation de l'eau.
|
||||||
|
* Lutte contre les ravageurs - les agriculteurs peuvent utiliser des caméras sur des robots ou des drones automatisés pour vérifier la présence de ravageurs, puis appliquer des pesticides uniquement là où c'est nécessaire, ce qui réduit la quantité de pesticides utilisés et le ruissellement des pesticides dans les réserves d'eau locales.
|
||||||
|
|
||||||
|
✅ Faites des recherches. Quelles autres techniques sont utilisées pour améliorer les rendements agricoles ?
|
||||||
|
|
||||||
|
> 🎓 Le terme "agriculture de précision" est utilisé pour définir l'observation, la mesure et l'intervention sur les cultures par champ, ou même sur certaines parties d'un champ. Il s'agit notamment de mesurer les niveaux d'eau, de nutriments et de parasites et de réagir avec précision, par exemple en n'arrosant qu'une petite partie du champ.
|
||||||
|
|
||||||
|
## L'importance de la température dans l'agriculture
|
||||||
|
|
||||||
|
Lorsqu'ils étudient les plantes, la plupart des élèves apprennent qu'elles ont besoin d'eau, de lumière, de dioxyde de carbone (CO<sub>2</sub>) et de nutriments. Les plantes ont également besoin de chaleur pour se développer - c'est pourquoi les plantes fleurissent au printemps lorsque la température augmente, pourquoi les perce-neige ou les jonquilles peuvent germer tôt en raison d'une courte période de chaleur, et pourquoi les serres sont si efficaces pour faire pousser les plantes.
|
||||||
|
|
||||||
|
> 🎓 Les serres et les serres chaudes font un travail similaire, mais avec une différence importante. Les serres chaudes sont chauffées artificiellement et permettent aux agriculteurs de contrôler les températures avec plus de précision. Les serres dépendent du soleil pour la chaleur et le seul moyen de contrôle est généralement l'ouverture de fenêtres ou d'autres ouvertures pour laisser sortir la chaleur.
|
||||||
|
|
||||||
|
Les plantes ont une température de base ou minimale, une température optimale et une température maximale, toutes basées sur les températures moyennes quotidiennes.
|
||||||
|
|
||||||
|
* Température de base - il s'agit de la température moyenne quotidienne minimale nécessaire à la croissance d'une plante.
|
||||||
|
* Température optimale - il s'agit de la meilleure température moyenne quotidienne pour obtenir la meilleure croissance.
|
||||||
|
* Température maximale - Il s'agit de la température maximale qu'une plante peut supporter. Au-dessus de cette température, la plante interrompt sa croissance afin de conserver l'eau et de rester en vie.
|
||||||
|
|
||||||
|
> 💁 Il s'agit de températures moyennes, calculées sur la base des températures quotidiennes et nocturnes. Les plantes ont également besoin de températures différentes le jour et la nuit pour leur permettre de réaliser une photosynthèse plus efficace et d'économiser de l'énergie la nuit.
|
||||||
|
|
||||||
|
Chaque espèce de plante a des valeurs différentes pour sa base, son optimum et son maximum. C'est pourquoi certaines plantes prospèrent dans les pays chauds, et d'autres dans les pays plus froids.
|
||||||
|
|
||||||
|
✅ Faites des recherches. Pour toutes les plantes que vous avez dans votre jardin, à l'école ou dans un parc local, voyez si vous pouvez trouver la température de base.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le graphique ci-dessus montre un exemple de taux de croissance en fonction de la température. Jusqu'à la température de base, il n'y a pas de croissance. Le taux de croissance augmente jusqu'à la température optimale, puis chute après avoir atteint ce pic. À la température maximale, la croissance s'arrête.
|
||||||
|
|
||||||
|
La forme de ce graphique varie d'une espèce végétale à l'autre. Certaines ont des chutes plus marquées au-dessus de l'optimum, d'autres ont des augmentations plus lentes de la base à l'optimum.
|
||||||
|
|
||||||
|
> 💁 Pour qu'un agriculteur obtienne la meilleure croissance, il devra connaître les trois valeurs de température et comprendre la forme des graphiques pour les plantes qu'il cultive.
|
||||||
|
|
||||||
|
Si un agriculteur a le contrôle de la température, par exemple dans une serre commerciale, il peut optimiser la croissance de ses plantes. Dans une serre commerciale où l'on cultive des tomates, par exemple, la température sera réglée à environ 25°C le jour et 20°C la nuit pour obtenir la croissance la plus rapide.
|
||||||
|
|
||||||
|
> 🍅 En combinant ces températures avec des lumières artificielles, des engrais et des niveaux de CO<sub>2</sub> contrôlés, les producteurs commerciaux peuvent cultiver et récolter toute l'année.
|
||||||
|
|
||||||
|
## La-mesure-de-la-température-ambiante
|
||||||
|
|
||||||
|
Les capteurs de température peuvent être utilisés avec les appareils IoT pour mesurer la température ambiante.
|
||||||
|
|
||||||
|
### Task - measure temperature
|
||||||
|
|
||||||
|
Suivez le guide correspondant pour surveiller les températures à l'aide de votre dispositif IoT :
|
||||||
|
|
||||||
|
* [Arduino - Wio Terminal](wio-terminal-temp.fr.md)
|
||||||
|
* [Single-board computer - Raspberry Pi](pi-temp.fr.md)
|
||||||
|
* [Single-board computer - Virtual device](virtual-device-temp.fr.md)
|
||||||
|
|
||||||
|
## Degrés-jours de croissance
|
||||||
|
|
||||||
|
Les degrés-jours de croissance (également appelés unités de degrés de croissance) sont un moyen de mesurer la croissance des plantes en fonction de la température. En supposant qu'une plante dispose de suffisamment d'eau, de nutriments et de CO<sub>2</sub>, la température détermine le taux de croissance.
|
||||||
|
|
||||||
|
Les degrés-jours de croissance, ou DJC, sont calculés par jour comme la température moyenne en Celsius pour un jour au-dessus de la température de base des plantes. Chaque plante a besoin d'un certain nombre de DJC pour croître, fleurir ou produire et faire mûrir une récolte. Plus le nombre de DJC par jour est élevé, plus la croissance de la plante est rapide.
|
||||||
|
|
||||||
|
> 🇺🇸 Pour les Américains, les degrés-jours de croissance peuvent également être calculés en Fahrenheit. 5 DJC<sup>C</sup> (degrés-jours de croissance en Celsius) sont l'équivalent de 9 DJC<sup>F</sup> (degrés-jours de croissance en Fahrenheit).
|
||||||
|
|
||||||
|
La formule complète du GDD est un peu compliquée, mais il existe une équation simplifiée qui est souvent utilisée comme une bonne approximation :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
* **DJC** - c'est le nombre de degrés-jours de croissance
|
||||||
|
* **T<sub>max</sub>** - il s'agit de la température maximale quotidienne en degrés Celsius
|
||||||
|
* **T<sub>min</sub>** - il s'agit de la température minimale quotidienne en degrés Celsius
|
||||||
|
* **T<sub>base</sub>** - c'est la température de base des plantes en degrés Celsius
|
||||||
|
|
||||||
|
> 💁 Il existe certaines variations impliquant T<sub>max</sub> au delà de 30°C ou T<sub>min</sub> en deça T<sub>base</sub>, mais nous ignorerons ces cas dans le contexte de ce cours.
|
||||||
|
|
||||||
|
### Example - Maïs 🌽
|
||||||
|
|
||||||
|
Selon la variété, le maïs a besoin de 800 à 2 700 DJC pour arriver à maturité, avec une température de base de 10°C.
|
||||||
|
|
||||||
|
Le premier jour au-dessus de la température de base, les températures suivantes ont été mesurées :
|
||||||
|
|
||||||
|
| Mesures | Temp °C |
|
||||||
|
| :---------- | :-----: |
|
||||||
|
| Maximum | 16 |
|
||||||
|
| Minimum | 12 |
|
||||||
|
|
||||||
|
En ajoutant ces chiffres à notre calcul :
|
||||||
|
|
||||||
|
* T<sub>max</sub> = 16
|
||||||
|
* T<sub>min</sub> = 12
|
||||||
|
* T<sub>base</sub> = 10
|
||||||
|
|
||||||
|
Ce qui donne un résultat de:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le maïs a reçu 4 DJC ce jour-là. Dans l'hypothèse d'une variété de maïs qui a besoin de 800 jours DJC pour arriver à maturité, il lui faudra encore 796 DJC pour atteindre la maturité.
|
||||||
|
|
||||||
|
✅ Faites des recherches. Pour toutes les plantes que vous avez dans votre jardin, à l'école ou dans un parc local, voyez si vous pouvez trouver le nombre de DJC requis pour atteindre la maturité ou produire des récoltes.
|
||||||
|
|
||||||
|
## Calcul du GDD à l'aide de données de senseurs
|
||||||
|
|
||||||
|
Les plantes ne poussent pas à dates fixes - par exemple, vous ne pouvez pas planter une graine et savoir que la plante portera des fruits exactement 100 jours plus tard. Au lieu de cela, en tant qu'agriculteur, vous pouvez avoir une idée approximative du temps que prend une plante pour pousser, puis vous vérifiez quotidiennement quand les cultures sont prêtes.
|
||||||
|
|
||||||
|
Cela a un impact considérable sur la main-d'œuvre d'une grande exploitation, et l'agriculteur risque de manquer des cultures qui sont prêtes plus tôt que prévu. En mesurant les températures, l'agriculteur peut calculer le DJC qu'une plante a reçu, ce qui lui permet de ne vérifier que les cultures proches de la maturité attendue.
|
||||||
|
|
||||||
|
En recueillant des données de température à l'aide d'un dispositif IoT, un agriculteur peut être automatiquement informé lorsque les plantes sont proches de la maturité. Une architecture typique pour cela consiste à faire en sorte que les dispositifs IoT mesurent la température, puis publient ces données de télémétrie sur Internet en utilisant quelque chose comme MQTT. Le code du serveur écoute ensuite ces données et les enregistre quelque part, par exemple dans une base de données. Cela signifie que les données peuvent être analysées ultérieurement, par exemple une tâche nocturne pour calculer le GDD de la journée, totaliser le GDD de chaque culture jusqu'à présent et alerter si une plante est proche de la maturité.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le code serveur peut également augmenter les données en ajoutant des informations supplémentaires. Par exemple, le dispositif IoT peut publier un identifiant pour indiquer de quel dispositif il s'agit, et le code du serveur peut l'utiliser pour rechercher l'emplacement du dispositif et les cultures qu'il surveille. Il peut également ajouter des données de base comme l'heure actuelle, car certains dispositifs IoT ne disposent pas du matériel nécessaire pour suivre l'heure exacte, ou nécessitent un code supplémentaire pour lire l'heure actuelle sur Internet.
|
||||||
|
|
||||||
|
✅ Pourquoi pensez-vous que des champs différents peuvent avoir des températures différentes ?
|
||||||
|
|
||||||
|
### Tâche - publier des informations sur la température
|
||||||
|
|
||||||
|
Suivez le guide correspondant pour publier les données de température sur MQTT à l'aide de votre dispositif IoT afin de pouvoir les analyser ultérieurement :
|
||||||
|
|
||||||
|
* [Arduino - Terminal Wio](wio-terminal-temp-publish.fr.md)
|
||||||
|
* [Ordinateur monocarte - Raspberry Pi/Dispositif IoT virtuel](single-board-computer-temp-publish.fr.md)
|
||||||
|
|
||||||
|
### Tâche - capturer et stocker les informations sur la température
|
||||||
|
|
||||||
|
Une fois que le dispositif IoT publie la télémétrie, le code du serveur peut être écrit pour s'abonner à ces données et les stocker. Plutôt que de les enregistrer dans une base de données, le code serveur les enregistrera dans un fichier CSV (Comma Separated Values). Les fichiers CSV stockent les données sous forme de lignes de valeurs en texte, chaque valeur étant séparée par une virgule, et chaque enregistrement sur une nouvelle ligne. Ils constituent un moyen pratique, lisible par l'homme et bien supporté d'enregistrer des données dans un fichier.
|
||||||
|
|
||||||
|
Le fichier CSV aura deux colonnes - *date* et *température*. La colonne *date* est définie comme la date et l'heure actuelles de réception du message par le serveur, la colonne *température* provient du message de télémétrie.
|
||||||
|
|
||||||
|
1. Répétez les étapes de la leçon 4 pour créer un code serveur permettant de s'abonner à la télémétrie. Vous n'avez pas besoin d'ajouter du code pour publier des commandes.
|
||||||
|
|
||||||
|
Les étapes à suivre sont les suivantes :
|
||||||
|
|
||||||
|
* Configurer et activer un environnement virtuel Python
|
||||||
|
|
||||||
|
* Installer la librairie pip paho-mqtt
|
||||||
|
|
||||||
|
* Écrire le code pour écouter les messages MQTT publiés sur le sujet de télémétrie
|
||||||
|
|
||||||
|
> ⚠️ Vous pouvez vous référer [aux instructions de la leçon 4 pour créer une application Python pour recevoir la télémétrie si nécessaire](../../../../1-getting-started/lessons/4-connect-internet/README.md#receive-telemetry-from-the-mqtt-broker).
|
||||||
|
|
||||||
|
Nommez le dossier pour ce projet `temperature-sensor-server`.
|
||||||
|
|
||||||
|
1. Assurez vous que `client_name` corresponde à ce projet:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
client_name = id + 'temperature_sensor_server'
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Ajoutez les importations suivantes en haut du fichier, en dessous des importations existantes :
|
||||||
|
|
||||||
|
```python
|
||||||
|
from os import path
|
||||||
|
import csv
|
||||||
|
from datetime import datetime
|
||||||
|
```
|
||||||
|
|
||||||
|
Ceci importe une bibliothèque pour lire les fichiers, une bibliothèque pour interagir avec les fichiers CSV, et une bibliothèque pour aider avec les dates et les heures.
|
||||||
|
|
||||||
|
1. Ajoutez le code suivant avant la fonction `handle_telemetry`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
temperature_file_name = 'temperature.csv'
|
||||||
|
fieldnames = ['date', 'temperature']
|
||||||
|
|
||||||
|
if not path.exists(temperature_file_name):
|
||||||
|
with open(temperature_file_name, mode='w') as csv_file:
|
||||||
|
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
|
||||||
|
writer.writeheader()
|
||||||
|
```
|
||||||
|
|
||||||
|
Ce code déclare quelques constantes pour le nom du fichier à écrire, et le nom des en-têtes de colonne pour le fichier CSV. La première ligne d'un fichier CSV contient traditionnellement des en-têtes de colonne séparés par des virgules.
|
||||||
|
|
||||||
|
Le code vérifie ensuite si le fichier CSV existe déjà. S'il n'existe pas, il est créé avec les en-têtes de colonne sur la première ligne.
|
||||||
|
|
||||||
|
1.Ajoutez le code suivant à la fin de la fonction `handle_telemetry`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
with open(temperature_file_name, mode='a') as temperature_file:
|
||||||
|
temperature_writer = csv.DictWriter(temperature_file, fieldnames=fieldnames)
|
||||||
|
temperature_writer.writerow({'date' : datetime.now().astimezone().replace(microsecond=0).isoformat(), 'temperature' : payload['temperature']})
|
||||||
|
```
|
||||||
|
|
||||||
|
Ce code ouvre le fichier CSV, puis ajoute une nouvelle ligne à la fin. La ligne comporte les données et l'heure actuelles formatées dans un format lisible par l'homme, suivies de la température reçue du dispositif IoT. Les données sont stockées au [format ISO 8601] (https://wikipedia.org/wiki/ISO_8601) avec le fuseau horaire, mais sans les microsecondes.
|
||||||
|
|
||||||
|
1. Exécutez ce code de la même manière que précédemment, en vous assurant que votre dispositif IoT envoie des données. Un fichier CSV appelé `temperature.csv` sera créé dans le même dossier. Si vous le visualisez, vous verrez les dates/heures et les mesures de température :
|
||||||
|
|
||||||
|
```output
|
||||||
|
date,temperature
|
||||||
|
2021-04-19T17:21:36-07:00,25
|
||||||
|
2021-04-19T17:31:36-07:00,24
|
||||||
|
2021-04-19T17:41:36-07:00,25
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Exécutez ce code pendant un certain temps pour capturer les données. Idéalement, vous devriez l'exécuter pendant une journée entière afin de recueillir suffisamment de données pour les calculs de DJC.
|
||||||
|
|
||||||
|
> 💁 Si vous utilisez le "Virtual IoT Device", cochez la case aléatoire et définissez une plage pour éviter d'obtenir la même température à chaque fois que la valeur de température est renvoyée.
|
||||||
|

|
||||||
|
|
||||||
|
> 💁 Si vous souhaitez exécuter ce programme pendant toute une journée, vous devez vous assurer que l'ordinateur sur lequel votre code serveur est exécuté ne se mettra pas en veille, soit en modifiant vos paramètres d'alimentation, soit en exécutant un programme tel que [ceci maintient le système actif](https://github.com/jaqsparow/keep-system-active).
|
||||||
|
|
||||||
|
> 💁 Vous pouvez trouver ce code dans le dossier [code-server/temperature-sensor-server](../code-server/temperature-sensor-server).
|
||||||
|
|
||||||
|
### Tâche - calculer le GDD en utilisant les données stockées
|
||||||
|
|
||||||
|
Une fois que le serveur a saisi les données de température, le DJC d'une usine peut être calculé.
|
||||||
|
|
||||||
|
Les étapes à suivre pour effectuer cette opération manuellement sont les suivantes :
|
||||||
|
|
||||||
|
1. Trouvez la température de base de la plante. Par exemple, pour les fraises, la température de base est de 10°C.
|
||||||
|
|
||||||
|
1. A partir du fichier `temperature.csv`, trouvez les températures les plus hautes et les plus basses de la journée.
|
||||||
|
|
||||||
|
1. Utilisez le calcul du DJC donné précédemment pour calculer le DJC
|
||||||
|
|
||||||
|
Par exemple, si la température la plus élevée de la journée est de 25°C, et la plus basse de 12°C :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
* 25 + 12 = 37
|
||||||
|
* 37 / 2 = 18.5
|
||||||
|
* 18.5 - 10 = 8.5
|
||||||
|
|
||||||
|
Les fraises ont donc reçu **8,5** DJC. Les fraises ont besoin d'environ 250 DJC pour porter des fruits, donc il y a encore du chemin à faire.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Défi
|
||||||
|
|
||||||
|
Les plantes ont besoin de plus que de la chaleur pour pousser. Quelles autres choses sont nécessaires ?
|
||||||
|
|
||||||
|
Pour ceux-ci, cherchez s'il existe des capteurs qui peuvent les mesurer. Et des actionneurs pour contrôler ces niveaux ? Comment assembleriez-vous un ou plusieurs dispositifs IoT pour optimiser la croissance des plantes ?
|
||||||
|
|
||||||
|
## Questionnaire Post-lecture
|
||||||
|
|
||||||
|
[Questionnaire Post-lecture](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/10)
|
||||||
|
|
||||||
|
## Révision et apprentissage autodidacte
|
||||||
|
|
||||||
|
* Pour en savoir plus sur l'agriculture numérique, consultez la page [Digital Agriculture Wikipedia](https://wikipedia.org/wiki/Digital_agriculture). Pour en savoir plus sur l'agriculture de précision, consultez la page [Precision Agriculture Wikipedia](https://wikipedia.org/wiki/Precision_agriculture).
|
||||||
|
* Le calcul complet des degrés-jours de croissance est plus compliqué que le calcul simplifié présenté ici. Pour en savoir plus sur l'équation plus compliquée et sur la manière de traiter les températures inférieures à la ligne de base, consultez la page [Degrés-jours de croissance sur Wikipédia](https://wikipedia.org/wiki/Growing_degree-day).
|
||||||
|
* La nourriture pourrait se faire rare à l'avenir, même si nous utilisons toujours les mêmes méthodes agricoles. Pour en savoir plus sur les techniques agricoles de haute technologie, regardez cette vidéo [Hi-Tech Farms of Future sur YouTube](https://www.youtube.com/watch?v=KIEOuKD9KX8).
|
||||||
|
|
||||||
|
## Devoir
|
||||||
|
|
||||||
|
[Visualiser les données DJC à l'aide d'un Jupyter Notebook](assignment.fr.md)
|
@ -0,0 +1,44 @@
|
|||||||
|
[](assignment.fr.md)
|
||||||
|
# Visualiser les données DJC à l'aide d'un Jupyter Notebook
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
Dans cette leçon, vous avez recueilli des données DJC à l'aide d'un capteur IoT. Pour obtenir de bonnes données DJC, vous devez recueillir des données pendant plusieurs jours. Pour vous aider à visualiser les données de température et à calculer le DJC, vous pouvez utiliser des outils tels que [Jupyter Notebooks](https://jupyter.org) pour analyser les données.
|
||||||
|
|
||||||
|
Commencez par recueillir des données pendant quelques jours. Vous devez vous assurer que le code de votre serveur fonctionne tout le temps que votre dispositif IoT est en marche, soit en ajustant vos paramètres de gestion de l'énergie, soit en exécutant quelque chose comme [ce script Python maintenant le système actif].(https://github.com/jaqsparow/keep-system-active).
|
||||||
|
|
||||||
|
Une fois que vous avez les données de température, vous pouvez utiliser le Jupyter Notebook dans ce repo pour les visualiser et calculer le JDC. Les notebooks Jupyter mélangent du code et des instructions dans des blocs appelés *cellules*, souvent du code en Python. Vous pouvez lire les instructions, puis exécuter chaque bloc de code, bloc par bloc. Vous pouvez également modifier le code. Dans ce notebook par exemple, vous pouvez modifier la température de base utilisée pour calculer le JDC de votre installation.
|
||||||
|
|
||||||
|
1. Créez un dossier `gdd-calcul`
|
||||||
|
|
||||||
|
1. Téléchargez le fichier [gdd.ipynb](../code-notebook/gdd.ipynb) et copiez le dans le dossier`gdd-calcul`.
|
||||||
|
|
||||||
|
1. Copiez le fichier `temperature.csv` créé par le serveur MQTT.
|
||||||
|
|
||||||
|
1. Créez un nouvel environnement virtuel Python dans le dossier `gdd-calcul`.
|
||||||
|
|
||||||
|
1. Installez quelques paquets pip pour les carnets Jupyter, ainsi que les bibliothèques nécessaires à la gestion et au tracé des données :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pip install --upgrade pip
|
||||||
|
pip install pandas
|
||||||
|
pip install matplotlib
|
||||||
|
pip install jupyter
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Exécutez le notebook dans Jupyter :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
jupyter notebook gdd.ipynb
|
||||||
|
```
|
||||||
|
|
||||||
|
Jupyter démarre et ouvre le notebook dans votre navigateur. Suivez les instructions du carnet de notes pour visualiser les températures mesurées et calculer les degrés-jours de croissance.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Rubrique
|
||||||
|
|
||||||
|
| Critère | Exemplaire | Adequat | À améliorer |
|
||||||
|
| -------- | --------- | -------- | ----------------- |
|
||||||
|
| Capture de données | Capture au moins deux journées de données | Capture au moins une journée de données | Capture des données |
|
||||||
|
| Calcul du DJC | Exécute le notebook et calcul le DJC | Exécute le notebook | Incapable d'exécuter le notebook |
|
@ -0,0 +1,112 @@
|
|||||||
|
[](pi-temp.fr.md)
|
||||||
|
# Mesure de temperature - Raspberry Pi
|
||||||
|
|
||||||
|
Dans cette partie de la leçon, vous allez ajouter un capteur de température à votre Raspberry Pi.
|
||||||
|
|
||||||
|
## Matériel
|
||||||
|
|
||||||
|
La sonde que vous utiliserez est une [sonde d'humidité et de température DHT11](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html), combinant deux capteurs dans un même boîtier. Cette méthode est assez populaire, avec un certain nombre de capteurs disponibles dans le commerce combinant température, humidité et parfois pression atmosphérique. Le composant du capteur de température est une thermistance à coefficient de température négatif (CTN), une thermistance dont la résistance diminue lorsque la température augmente.
|
||||||
|
|
||||||
|
Il s'agit d'un capteur numérique, qui dispose donc d'un ADC intégré pour créer un signal numérique contenant les données de température et d'humidité que le microcontrôleur peut lire.
|
||||||
|
|
||||||
|
### Connecter le capteur de température
|
||||||
|
|
||||||
|
Le capteur de température Grove peut être connecté au Raspberry Pi.
|
||||||
|
|
||||||
|
#### Tâche
|
||||||
|
|
||||||
|
Connecter le capteur de température
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. Insérez une extrémité d'un câble Grove dans la prise du capteur d'humidité et de température. Il ne peut être inséré que dans un seul sens.
|
||||||
|
|
||||||
|
1. Lorsque le Raspberry Pi est hors tension, connectez l'autre extrémité du câble Grove à la prise numérique marquée **D5** sur le chapeau de la base Grove fixé au Pi. Cette prise est la deuxième en partant de la gauche, sur la rangée de prises à côté des broches GPIO.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Programmez le capteur de température
|
||||||
|
|
||||||
|
L'appareil peut maintenant être programmé pour utiliser la sonde de température jointe.
|
||||||
|
|
||||||
|
### Tâche
|
||||||
|
|
||||||
|
Programmer le Raspberry Pi.
|
||||||
|
|
||||||
|
1. Brancher le Pi à l'alimentation et attendre la séquence de démarrage.
|
||||||
|
|
||||||
|
1. Lancez VS Code, soit directement sur le Pi, soit en vous connectant via l'extension SSH à distance.
|
||||||
|
|
||||||
|
> ⚠️ Vous pouvez vous référer [aux instructions de configuration et de lancement de VS Code dans la leçon 1 si nécessaire].(../../../../1-getting-started/lessons/1-introduction-to-iot/pi.md).
|
||||||
|
|
||||||
|
1. Depuis le terminal, créez un nouveau dossier dans le répertoire personnel de l'utilisateur `pi` appelé `temperature-sensor`. Créez un fichier dans ce dossier appelé `app.py` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir temperature-sensor
|
||||||
|
cd temperature-sensor
|
||||||
|
touch app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Ouvrez ce dossier dans VS Code
|
||||||
|
|
||||||
|
1. Pour utiliser le capteur de température et d'humidité, une librairie pip supplémentaire doit être installée. Depuis le Terminal dans VS Code, exécutez la commande suivante pour installer ce paquet Pip sur le Pi :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pip3 install seeed-python-dht
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Ajoutez le code suivant au fichier `app.py` pour importer les bibliothèques requises :
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
from seeed_dht import DHT
|
||||||
|
```
|
||||||
|
|
||||||
|
L'instruction `from seeed_dht import DHT` importe la classe de capteur `DHT` pour interagir avec un capteur de température Grove du module `seeed_dht`.
|
||||||
|
|
||||||
|
1. Ajoutez le code suivant après le code ci-dessus pour créer une instance de la classe qui gère le capteur de température :
|
||||||
|
|
||||||
|
```python
|
||||||
|
sensor = DHT("11", 5)
|
||||||
|
```
|
||||||
|
|
||||||
|
Ceci déclare une instance de la classe `DHT` qui gère le capteur **D**igital **H**umidité et **T**température. Le premier paramètre indique au code que le capteur utilisé est le capteur *DHT11* - la bibliothèque que vous utilisez supporte d'autres variantes de ce capteur. Le deuxième paramètre indique au code que le capteur est connecté au port numérique `D5` du connecteur Grove de base.
|
||||||
|
|
||||||
|
> ✅ N'oubliez pas que toutes les prises ont un numéro de broche unique. Les broches 0, 2, 4 et 6 sont des broches analogiques, les broches 5, 16, 18, 22, 24 et 26 sont des broches numériques.
|
||||||
|
|
||||||
|
1. Ajoutez une boucle infinie après le code ci-dessus pour interroger la valeur du capteur de température et l'imprimer sur la console :
|
||||||
|
|
||||||
|
```python
|
||||||
|
while True:
|
||||||
|
_, temp = sensor.read()
|
||||||
|
print(f'Temperature {temp}°C')
|
||||||
|
```
|
||||||
|
|
||||||
|
L'appel à `sensor.read()` renvoie un tuple d'humidité et de température. Vous n'avez besoin que de la valeur de la température, l'humidité est donc ignorée. La valeur de la température est ensuite imprimée sur la console.
|
||||||
|
|
||||||
|
1. Ajoutez une petite mise en veille de dix secondes à la fin de la "boucle", car les niveaux de température n'ont pas besoin d'être vérifiés en permanence. Une mise en veille réduit la consommation d'énergie de l'appareil.
|
||||||
|
|
||||||
|
```python
|
||||||
|
time.sleep(10)
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Depuis le terminal VS Code, exécutez ce qui suit pour lancer votre application Python :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
python3 app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
Vous devriez voir des valeurs de température en sortie sur la console. Utilisez quelque chose pour réchauffer le capteur, par exemple en appuyant votre pouce dessus, ou en utilisant un ventilateur pour voir les valeurs changer :
|
||||||
|
|
||||||
|
```output
|
||||||
|
pi@raspberrypi:~/temperature-sensor $ python3 app.py
|
||||||
|
Temperature 26°C
|
||||||
|
Temperature 26°C
|
||||||
|
Temperature 28°C
|
||||||
|
Temperature 30°C
|
||||||
|
Temperature 32°C
|
||||||
|
```
|
||||||
|
|
||||||
|
> 💁 Vous pouvez trouver ce code dans le dossier [code-temperature/pi](../code-temperature/pi).
|
||||||
|
|
||||||
|
😀 La réalisation de votre programme de capteur de température a été un succès !
|
@ -0,0 +1,58 @@
|
|||||||
|
[](single-board-computer-temp-publish.fr.md)
|
||||||
|
# Publier la température - Matériel virtuel IoT et Raspberry Pi
|
||||||
|
|
||||||
|
Dans cette partie de la leçon, vous allez publier les valeurs de température détectées par le Raspberry Pi ou le dispositif IoT virtuel sur MQTT afin qu'elles puissent être utilisées ultérieurement pour calculer le DJC.
|
||||||
|
|
||||||
|
## Publier la temperature
|
||||||
|
|
||||||
|
Une fois la température lue, elle peut être publiée via MQTT vers un code "serveur" qui lira les valeurs et les stockera, prêtes à être utilisées pour un calcul de DJC.
|
||||||
|
|
||||||
|
### Tâche - Publier la température
|
||||||
|
|
||||||
|
Programmez l'appareil pour qu'il publie les données de température.
|
||||||
|
|
||||||
|
1. Ouvrez le projet d'application `temperature-sensor` s'il ne l'est pas déjà.
|
||||||
|
|
||||||
|
1. Répétez les étapes de la leçon 4 pour vous connecter à MQTT et envoyer la télémétrie. Vous utiliserez le même "broker" publique Mosquitto.
|
||||||
|
|
||||||
|
Les étapes sont:
|
||||||
|
|
||||||
|
- Ajout de la librairie pip de MQTT paho
|
||||||
|
- Ajouter le code afin de se conecter au broker MQTT
|
||||||
|
- Ajouter le code permettant de publier la télémètrie
|
||||||
|
|
||||||
|
> ⚠️ Consultez les [instructions pour la connexion à MQTT](../../../../1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md) ainsi que les [instructions pour l'envoi de la télémétrie](../../../../1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md) de la leçon 4 si nécessaire.
|
||||||
|
|
||||||
|
1. Assurez-vous que le `client_name` reflète le nom de ce projet :
|
||||||
|
|
||||||
|
```python
|
||||||
|
client_name = id + 'temperature_sensor_client'
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Pour la télémétrie, au lieu d'envoyer une valeur de lumière, envoyez la valeur de température lue par le capteur DHT dans une propriété du document JSON appelée `temperature` :
|
||||||
|
|
||||||
|
```python
|
||||||
|
_, temp = sensor.read()
|
||||||
|
telemetry = json.dumps({'temperature' : temp})
|
||||||
|
```
|
||||||
|
|
||||||
|
1. La valeur de la température n'a pas besoin d'être lue très souvent - elle ne changera pas beaucoup dans un court laps de temps, donc réglez le `time.sleep` à 10 minutes :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
time.sleep(10 * 60);
|
||||||
|
```
|
||||||
|
|
||||||
|
> 💁 La fonction `sleep` prend le temps en secondes, donc pour faciliter la lecture, la valeur est passée comme le résultat d'un calcul. 60s en une minute, donc 10 x (60s en une minute) donne un délai de 10 minutes.
|
||||||
|
|
||||||
|
1. Exécutez le code de la même manière que vous avez exécuté le code de la partie précédente du devoir. Si vous utilisez un appareil IoT virtuel, assurez-vous que l'application CounterFit est en cours d'exécution et que les capteurs d'humidité et de température ont été créés sur les bonnes broches IO.
|
||||||
|
|
||||||
|
```output
|
||||||
|
pi@raspberrypi:~/temperature-sensor $ python3 app.py
|
||||||
|
MQTT connected!
|
||||||
|
Sending telemetry {"temperature": 25}
|
||||||
|
Sending telemetry {"temperature": 25}
|
||||||
|
```
|
||||||
|
|
||||||
|
> 💁 Vous pouvez trouver ce code dans le dossier [code-publish-temperature/virtual-device].(../code-publish-temperature/virtual-device) folder or thou encore [code-publish-temperature/pi](../code-publish-temperature/pi).
|
||||||
|
|
||||||
|
😀 Vous avez publié avec succès la température en tant que télémétrie de votre appareil.
|
@ -0,0 +1,141 @@
|
|||||||
|
[](virtual-device-temp.fr.md)
|
||||||
|
# # Mesurer la température - Matériel virtuel IoT
|
||||||
|
|
||||||
|
Dans cette partie de la leçon, vous allez ajouter un capteur de température à votre dispositif IoT virtuel.
|
||||||
|
|
||||||
|
## Matériel virtuel
|
||||||
|
|
||||||
|
Le dispositif IoT virtuel utilisera un capteur numérique d'humidité et de température Grove simulé. Ce laboratoire est donc identique à celui qui utilise un Raspberry Pi avec un capteur Grove DHT11 physique.
|
||||||
|
|
||||||
|
Le capteur combine un **capteur de température** et un **capteur d'humidité**, mais dans ce laboratoire, vous n'êtes intéressé que par le composant capteur de température. Dans un dispositif IoT physique, le capteur de température serait une [thermistance] (https://wikipedia.org/wiki/Thermistor) qui mesure la température en détectant un changement de résistance lorsque la température change. Les capteurs de température sont généralement des capteurs numériques qui convertissent en interne la résistance mesurée en une température en degrés Celsius (ou Kelvin, ou Fahrenheit).
|
||||||
|
|
||||||
|
### Ajouter les capteurs à CounterFit
|
||||||
|
|
||||||
|
Pour utiliser un capteur d'humidité et de température virtuel, vous devez ajouter les deux capteurs à l'application CounterFit
|
||||||
|
|
||||||
|
#### Tâche - ajouter les capteurs à CounterFit
|
||||||
|
|
||||||
|
Ajoutez les capteurs d'humidité et de température à l'application CounterFit.
|
||||||
|
|
||||||
|
1. Créez une nouvelle application Python sur votre ordinateur dans un dossier appelé `temperature-sensor` avec un seul fichier appelé `app.py` et un environnement virtuel Python, et ajoutez les librairies pip de CounterFit.
|
||||||
|
|
||||||
|
> ⚠️ Vous pouvez vous référer [aux instructions pour créer et configurer un projet Python CounterFit dans la leçon 1 si nécessaire](../../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
|
||||||
|
|
||||||
|
1. Installez une librairie pip supplémentaire afin d'installer une cale CounterFit pour le capteur DHT11. Assurez-vous que vous l'installez depuis un terminal avec l'environnement virtuel activé.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pip install counterfit-shims-seeed-python-dht
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Assurez-vous que l'application web CounterFit est en cours d'exécution.
|
||||||
|
|
||||||
|
1. Créez un capteur d'humidité :
|
||||||
|
|
||||||
|
1. Dans la case *Create sensor* du volet *Sensors*, déroulez la case *Sensor type* et sélectionnez *Humidity*.
|
||||||
|
|
||||||
|
1. Laissez le paramètre *Units* à *Percentage*
|
||||||
|
|
||||||
|
1. Assurez vous que la variable *Pin* est à *5*
|
||||||
|
|
||||||
|
1. Sélectionnez le bouton **Add** pour créer le capteur d'humidité sur la broche 5
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le capteur d'humidité sera créé et apparaîtra dans la liste des capteurs.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. Créez un capteur de température :
|
||||||
|
|
||||||
|
1. Dans la case *Create sensor* du volet *Sensors*, déroulez la case *Sensor type* et sélectionnez *Temperature*
|
||||||
|
|
||||||
|
1. Laissez la variable *Units* à *Celsius*
|
||||||
|
|
||||||
|
1. Assurez vous que la variable *Pin* est à *6*
|
||||||
|
|
||||||
|
1. Sélectionnez le bouton **Add** pour créer le capteur de température sur la broche 6
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le capteur de température sera créé et apparaîtra dans la liste des capteurs
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Programmez l'application de la sonde de température
|
||||||
|
|
||||||
|
L'application du capteur de température peut maintenant être programmée en utilisant les capteurs CounterFit.
|
||||||
|
|
||||||
|
### Tâche - programmer l'application du capteur de température
|
||||||
|
|
||||||
|
Programmez l'application du capteur de température.
|
||||||
|
|
||||||
|
1. Assurez-vous que l'application `temperature-sensor` est ouverte dans VS Code.
|
||||||
|
|
||||||
|
1. Ouvrez le fichier `app.py`.
|
||||||
|
|
||||||
|
1. Ajoutez le code suivant au début de `app.py` pour connecter l'application à CounterFit :
|
||||||
|
|
||||||
|
```python
|
||||||
|
from counterfit_connection import CounterFitConnection
|
||||||
|
CounterFitConnection.init('127.0.0.1', 5000)
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Ajoutez le code suivant au fichier `app.py` pour importer les bibliothèques requises :
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
from counterfit_shims_seeed_python_dht import DHT
|
||||||
|
```
|
||||||
|
|
||||||
|
L'instruction `from seeed_dht import DHT` importe la classe de capteur `DHT` pour interagir avec un capteur de température Grove virtuel utilisant une shim du module `counterfit_shims_seeed_python_dht`.
|
||||||
|
|
||||||
|
1. Ajoutez le code suivant après le code ci-dessus pour créer une instance de la classe qui gère le capteur virtuel d'humidité et de température :
|
||||||
|
|
||||||
|
```python
|
||||||
|
sensor = DHT("11", 5)
|
||||||
|
```
|
||||||
|
|
||||||
|
Ceci déclare une instance de la classe `DHT` qui gère le capteur virtuel **D**numérique **H**umidité et **T**température. Le premier paramètre indique au code que le capteur utilisé est un capteur virtuel *DHT11*. Le deuxième paramètre indique au code que le capteur est connecté au port `5`.
|
||||||
|
|
||||||
|
> 💁 CounterFit simule ce capteur combiné d'humidité et de température en se connectant à 2 capteurs, un capteur d'humidité sur la broche donnée lors de la création de la classe `DHT`, et un capteur de température qui se trouve sur la broche suivante. Si le capteur d'humidité est sur la broche 5, la cale s'attend à ce que le capteur de température soit sur la broche 6.
|
||||||
|
|
||||||
|
1. Ajoutez une boucle infinie après le code ci-dessus pour interroger la valeur du capteur de température et l'imprimer sur la console :
|
||||||
|
|
||||||
|
```python
|
||||||
|
while True:
|
||||||
|
_, temp = sensor.read()
|
||||||
|
print(f'Temperature {temp}°C')
|
||||||
|
```
|
||||||
|
|
||||||
|
L'appel à `sensor.read()` renvoie un tuple d'humidité et de température. Vous n'avez besoin que de la valeur de la température, l'humidité est donc ignorée. La valeur de la température est ensuite imprimée sur la console.
|
||||||
|
|
||||||
|
1. Ajoutez une petite mise en veille de dix secondes à la fin de la "boucle", car les niveaux de température n'ont pas besoin d'être vérifiés en permanence. Une mise en veille réduit la consommation d'énergie de l'appareil.
|
||||||
|
|
||||||
|
```python
|
||||||
|
time.sleep(10)
|
||||||
|
```
|
||||||
|
|
||||||
|
1. À partir du terminal VS Code avec un environnement virtuel activé, exécutez ce qui suit pour lancer votre application Python :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Depuis l'application CounterFit, modifiez la valeur de la sonde de température qui sera lue par l'application. Vous pouvez le faire de deux façons :
|
||||||
|
|
||||||
|
* Entrez un nombre dans la case *Value* pour le capteur de température, puis sélectionnez le bouton **Set**. Le nombre que vous saisissez sera la valeur renvoyée par le capteur.
|
||||||
|
|
||||||
|
* Cochez la case *Random* et saisissez une valeur *Min* et *Max*, puis sélectionnez le bouton **Set**. Chaque fois que le capteur lit une valeur, il lit un nombre aléatoire entre *Min* et *Max*.
|
||||||
|
|
||||||
|
Vous devriez voir les valeurs que vous avez définies apparaître dans la console. Changez les paramètres *Value* ou *Random* pour voir la valeur changer.
|
||||||
|
|
||||||
|
```output
|
||||||
|
(.venv) ➜ temperature-sensor python app.py
|
||||||
|
Temperature 28.25°C
|
||||||
|
Temperature 30.71°C
|
||||||
|
Temperature 25.17°C
|
||||||
|
```
|
||||||
|
|
||||||
|
> 💁 Vous pouvez trouver ce code dans le fichier [code-temperature/virtual-device](../code-temperature/virtual-device).
|
||||||
|
|
||||||
|
😀 Votre programme de capteur de température a été un succès !
|
@ -0,0 +1,69 @@
|
|||||||
|
[](wio-terminal-temp-publish.fr.md)
|
||||||
|
# Publier la température - Terminal Wio
|
||||||
|
|
||||||
|
Dans cette partie de la leçon, vous allez publier les valeurs de température détectées par le terminal Wio sur MQTT afin qu'elles puissent être utilisées ultérieurement pour calculer le DJC.
|
||||||
|
|
||||||
|
## Publier la température
|
||||||
|
|
||||||
|
Une fois la température lue, elle peut être publiée via MQTT vers un code "serveur" qui lira les valeurs et les stockera, prêtes à être utilisées pour un calcul de DJC. Les microcontrôleurs ne lisent pas l'heure sur Internet et ne suivent pas l'heure avec une horloge en temps réel. Le dispositif doit être programmé pour le faire, en supposant qu'il dispose du matériel nécessaire.
|
||||||
|
|
||||||
|
Afin de simplifier les choses pour cette leçon, l'heure ne sera pas envoyée avec les données du capteur, mais pourra être ajoutée par le code du serveur plus tard, lorsqu'il recevra les messages.
|
||||||
|
|
||||||
|
### Tâche
|
||||||
|
|
||||||
|
Programmez l'appareil pour qu'il publie les données de température.
|
||||||
|
|
||||||
|
1. Ouvrez le projet Wio Terminal `temperature-sensor`.
|
||||||
|
|
||||||
|
1. Répétez les étapes de la leçon 4 pour vous connecter à MQTT et envoyer la télémétrie. Vous utiliserez le même courtier public Mosquitto.
|
||||||
|
|
||||||
|
Les étapes à suivre sont les suivantes :
|
||||||
|
|
||||||
|
- Ajouter les bibliothèques Seeed WiFi et MQTT au fichier `.ini`.
|
||||||
|
- Ajouter le fichier de configuration et le code pour se connecter au WiFi
|
||||||
|
- Ajouter le code pour se connecter au broker MQTT
|
||||||
|
- Ajouter le code pour publier la télémétrie
|
||||||
|
|
||||||
|
> ⚠️ Consultez les [instructions pour la connexion à MQTT].(../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md) ainsi que les [instructions pour l'envoi de la télémétrie](../../../../1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md) de la leçon 4 si nécessaire.
|
||||||
|
|
||||||
|
1. Assurez-vous que le `CLIENT_NAME` dans le fichier d'en-tête `config.h` reflète ce projet :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
const string CLIENT_NAME = ID + "temperature_sensor_client";
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Pour la télémétrie, au lieu d'envoyer une valeur de lumière, envoyez la valeur de température lue par le capteur DHT dans une propriété du document JSON appelée `temperature` en modifiant la fonction `loop` dans `main.cpp` :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
float temp_hum_val[2] = {0};
|
||||||
|
dht.readTempAndHumidity(temp_hum_val);
|
||||||
|
|
||||||
|
DynamicJsonDocument doc(1024);
|
||||||
|
doc["temperature"] = temp_hum_val[1];
|
||||||
|
```
|
||||||
|
|
||||||
|
1. La valeur de la température n'a pas besoin d'être lue très souvent - elle ne changera pas beaucoup dans un court laps de temps, donc réglez le "retard" de la fonction "boucle" à 10 minutes :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
delay(10 * 60 * 1000);
|
||||||
|
```
|
||||||
|
|
||||||
|
> 💁 La fonction `delay` prend le temps en millisecondes, donc pour faciliter la lecture, la valeur est passée comme le résultat d'un calcul. 1 000 ms en une seconde, 60s en une minute, donc 10 x (60s en une minute) x (1000 ms en une seconde) donne un délai de 10 minutes.
|
||||||
|
|
||||||
|
1. Téléchargez-le sur votre terminal Wio, et utilisez le moniteur série pour voir la température envoyée au courtier MQTT.
|
||||||
|
|
||||||
|
```output
|
||||||
|
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
|
||||||
|
--- More details at http://bit.ly/pio-monitor-filters
|
||||||
|
--- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
|
||||||
|
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
|
||||||
|
Connecting to WiFi..
|
||||||
|
Connected!
|
||||||
|
Attempting MQTT connection...connected
|
||||||
|
Sending telemetry {"temperature":25}
|
||||||
|
Sending telemetry {"temperature":25}
|
||||||
|
```
|
||||||
|
|
||||||
|
> 💁 Vous pouvez trouver ce code dans le fichier [code-publish-temperature/wio-terminal].(../code-publish-temperature/wio-terminal).
|
||||||
|
|
||||||
|
😀 Vous avez publié avec succès la température en tant que télémétrie de votre appareil!
|
@ -0,0 +1,130 @@
|
|||||||
|
[](wio-terminal-temp.fr.md)
|
||||||
|
# Mesure de la température - Terminal Wio
|
||||||
|
|
||||||
|
Dans cette partie de la leçon, vous allez ajouter un capteur de température à votre terminal Wio, et lire les valeurs de température à partir de celui-ci.
|
||||||
|
|
||||||
|
## Matériel
|
||||||
|
|
||||||
|
Le terminal Wio a besoin d'un capteur de température.
|
||||||
|
|
||||||
|
La sonde que vous utiliserez est une [sonde d'humidité et de température DHT11](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html), combinant deux capteurs dans un même boîtier. Cette méthode est assez populaire, avec un certain nombre de capteurs disponibles dans le commerce combinant température, humidité et parfois pression atmosphérique. Le composant du capteur de température est une thermistance à coefficient de température négatif (CTN), une thermistance dont la résistance diminue lorsque la température augmente.
|
||||||
|
|
||||||
|
Il s'agit d'un capteur numérique, qui dispose donc d'un ADC intégré pour créer un signal numérique contenant les données de température et d'humidité que le microcontrôleur peut lire.
|
||||||
|
|
||||||
|
### Connecter le capteur de température
|
||||||
|
|
||||||
|
Le capteur de température Grove peut être connecté au port numérique des terminaux Wio.
|
||||||
|
|
||||||
|
#### Tâche - connecter le capteur de température
|
||||||
|
|
||||||
|
Connectez le capteur de température.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. Insérez une extrémité d'un câble Grove dans la prise du capteur d'humidité et de température. Il ne peut être inséré que dans un seul sens.
|
||||||
|
|
||||||
|
1. Le terminal Wio étant déconnecté de votre ordinateur ou de toute autre source d'alimentation, connectez l'autre extrémité du câble Grove à la prise Grove de droite du terminal Wio lorsque vous regardez l'écran. Il s'agit de la prise la plus éloignée du bouton d'alimentation.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Programmer le capteur de température
|
||||||
|
|
||||||
|
Le terminal Wio peut maintenant être programmé pour utiliser le capteur de température joint.
|
||||||
|
|
||||||
|
### Tâche - programmer le capteur de température
|
||||||
|
|
||||||
|
Programmez l'appareil.
|
||||||
|
|
||||||
|
1. Créez un tout nouveau projet Wio Terminal en utilisant PlatformIO. Appelez ce projet `temperature-sensor`. Ajoutez du code dans la fonction `setup` pour configurer le port série.
|
||||||
|
|
||||||
|
> ⚠️ Vous pouvez vous référer [aux instructions pour créer un projet PlatformIO dans le projet 1, leçon 1 si nécessaire](../../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#create-a-platformio-project).
|
||||||
|
|
||||||
|
1. Ajoutez une dépendance de la bibliothèque de capteurs d'humidité et de température Seeed Grove au fichier `platformio.ini` du projet :
|
||||||
|
|
||||||
|
```ini
|
||||||
|
lib_deps =
|
||||||
|
seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ Vous pouvez vous référer [aux instructions pour ajouter des bibliothèques à un projet PlatformIO dans le projet 1, leçon 4 si nécessaire](../../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md#install-the-wifi-and-mqtt-arduino-libraries).
|
||||||
|
|
||||||
|
1. Ajoutez les directives `#include` suivantes en haut du fichier, sous la directive existante `#include <Arduino.h>` :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include <DHT.h>
|
||||||
|
#include <SPI.h>
|
||||||
|
```
|
||||||
|
|
||||||
|
Ceci importe les fichiers nécessaires pour interagir avec le capteur. Le fichier d'en-tête `DHT.h` contient le code du capteur lui-même, et l'ajout de l'en-tête `SPI.h` garantit que le code nécessaire pour parler au capteur est lié lors de la compilation de l'application.
|
||||||
|
|
||||||
|
1. Avant la fonction "setup", déclarez le capteur DHT :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
DHT dht(D0, DHT11);
|
||||||
|
```
|
||||||
|
|
||||||
|
Ceci déclare une instance de la classe `DHT` qui gère le capteur **D**numérique **H** d'humidité et **T** de température. Celle-ci est connectée au port `D0`, le connecteur Grove de droite sur le terminal Wio. Le second paramètre indique au code que le capteur utilisé est le capteur *DHT11* - la bibliothèque que vous utilisez supporte d'autres variantes de ce capteur.
|
||||||
|
|
||||||
|
1.Dans la fonction `setup`, ajoutez du code pour configurer la connexion série :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(9600);
|
||||||
|
|
||||||
|
while (!Serial)
|
||||||
|
; // Wait for Serial to be ready
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
1. A la fin de la fonction `setup`, après le dernier `delay`, ajoutez un appel pour démarrer le capteur DHT :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
dht.begin();
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Dans la fonction `loop`, ajoutez du code pour appeler le capteur et imprimer la température sur le port série :
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
float temp_hum_val[2] = {0};
|
||||||
|
dht.readTempAndHumidity(temp_hum_val);
|
||||||
|
Serial.print("Temperature: ");
|
||||||
|
Serial.print(temp_hum_val[1]);
|
||||||
|
Serial.println ("°C");
|
||||||
|
|
||||||
|
delay(10000);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Ce code déclare un tableau vide de 2 flottants, et le passe à l'appel à `readTempAndHumidity` sur l'instance `DHT`. Cet appel remplit le tableau avec 2 valeurs - l'humidité va dans le 0ème élément du tableau (rappelez-vous qu'en C++ les tableaux sont basés sur 0, donc le 0ème élément est le 'premier' élément du tableau), et la température va dans le 1er élément.
|
||||||
|
|
||||||
|
La température est lue à partir du premier élément du tableau, et imprimée sur le port série.
|
||||||
|
|
||||||
|
> 🇺🇸 La température est lue en Celsius. Pour les Américains, pour la convertir en Fahrenheit, il faut diviser la valeur Celsius lue par 5, puis multiplier par 9, puis ajouter 32. Par exemple, une température de 20°C devient ((20/5)*9) + 32 = 68°F.
|
||||||
|
|
||||||
|
1. Construisez et téléchargez le code sur le terminal Wio.
|
||||||
|
|
||||||
|
> ⚠️ Vous pouvez vous référer [aux instructions pour créer un projet PlatformIO dans le projet 1, leçon 1 si nécessaire](../../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#write-the-hello-world-app).
|
||||||
|
|
||||||
|
1. Une fois téléchargé, vous pouvez surveiller la température en utilisant le moniteur série :
|
||||||
|
|
||||||
|
```output
|
||||||
|
> Executing task: platformio device monitor <
|
||||||
|
|
||||||
|
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
|
||||||
|
--- More details at http://bit.ly/pio-monitor-filters
|
||||||
|
--- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
|
||||||
|
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
|
||||||
|
Temperature: 25.00°C
|
||||||
|
Temperature: 25.00°C
|
||||||
|
Temperature: 25.00°C
|
||||||
|
Temperature: 24.00°C
|
||||||
|
```
|
||||||
|
|
||||||
|
> 💁 Vous pouvez trouver ce code dans le fichier [code-température/wio-terminal](../code-temperature/wio-terminal).
|
||||||
|
|
||||||
|
😀 Votre programme de capteur de température a été un succès !
|
@ -0,0 +1,25 @@
|
|||||||
|
[](translations/README.fr.md)
|
||||||
|
|
||||||
|
# Agriculture et IoT
|
||||||
|
|
||||||
|
<!-- As the population grows, so does the demand on agriculture. The amount of land available doesn't change, but the climate does - giving even more challenges to farmers, especially the 2 billion [subsistence farmers](https://wikipedia.org/wiki/Subsistence_agriculture) who rely on what they grow to be able to eat and feed their families. IoT can help farmers make smarter decisions on what to grow and when to harvest, increase yields, reduce the amount of manual labor, and detect and deal with pests. -->
|
||||||
|
Les besoins en agriculture augmentent avec la croissance de la popualtion. La quantité de terres disponible ne change pas, bien que le climat lui, change. Ceci amène des défits de plus en plus importants aux fermiers, plus particulièrement pour les 2 milliards de [fermiers de subsistance](https://wikipedia.org/wiki/Subsistence_agriculture) qui dépendent de cette production afin de se nourrir ainsi que leur famille. Les technologies des objets connectés ont le potentiel d'aider ces fermiers à faire de meilleures décisions sur la production, notemment quoi faire pousser, quand récolter, accroître les récoltes, réduire la main d'oeuvre ou encore détecter et gérer les parasites.
|
||||||
|
|
||||||
|
<!-- In these 6 lessons you'll learn how to apply the Internet of Things to improve and automate farming. -->
|
||||||
|
À l'occasion de ces 6 leçons, vous apprendrez à utiliser les technologies de l'internet des objets afin d'améliorer et automatiser certaines tâches d'agriculture.
|
||||||
|
|
||||||
|
<!-- > 💁 These lessons will use some cloud resources. If you don't complete all the lessons in this project, make sure you [Clean up your project](../clean-up.md). -->
|
||||||
|
> 💁 Ces leçons utiliserons des ressources infonuagiques. Si vous ne complétez pas toutes les leçons du présent projet, nous vous prions de [nettoyer votre projet](../clean-up.md).
|
||||||
|
|
||||||
|
## Thèmes
|
||||||
|
|
||||||
|
1. [Anticiper la croissance de ses plantes](lessons/1-predict-plant-growth/README.fr.md)
|
||||||
|
1. [Détectez l'humidité du sol](lessons/2-detect-soil-moisture/README.fr.md)
|
||||||
|
1. [Automatiser l'arrosage des plantes](lessons/3-automated-plant-watering/README.fr.md)
|
||||||
|
1. [Amenez vos plants dans l'infonuagique](lessons/4-migrate-your-plant-to-the-cloud/README.fr.md)
|
||||||
|
1. [Migrez votre application dans l'infonuagique](lessons/5-migrate-application-to-the-cloud/README.fr.md)
|
||||||
|
1. [Gardez vos plants sécurisés](lessons/6-keep-your-plant-secure/README.fr.md)
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
L'entièreté des leçons ont été écrites avec ♥️ par [Jim Bennett](https://GitHub.com/JimBobBennett)
|
@ -0,0 +1,159 @@
|
|||||||
|
[](https://github.com/microsoft/IoT-For-Beginners/blob/master/LICENSE)
|
||||||
|
[](https://GitHub.com/microsoft/IoT-For-Beginners/graphs/contributors/)
|
||||||
|
[](https://GitHub.com/microsoft/IoT-For-Beginners/issues/)
|
||||||
|
[](https://GitHub.com/microsoft/IoT-For-Beginners/pulls/)
|
||||||
|
[](http://makeapullrequest.com)
|
||||||
|
|
||||||
|
[](https://GitHub.com/microsoft/IoT-For-Beginners/watchers/)
|
||||||
|
[](https://GitHub.com/microsoft/IoT-For-Beginners/network/)
|
||||||
|
[](https://GitHub.com/microsoft/IoT-For-Beginners/stargazers/)
|
||||||
|
|
||||||
|
[](translations/README.bn.md)
|
||||||
|
[](translations/README.zh-cn.md)
|
||||||
|
[](translations/README.tr.md)
|
||||||
|
[](translations/README.fr.md)
|
||||||
|
|
||||||
|
# IoT pour néophytes - Le Curriculum
|
||||||
|
|
||||||
|
<!-- Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 24-lesson curriculum all about IoT basics. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'. -->
|
||||||
|
Chez Microsoft, l'équipe d'Azure infonuagique est fière de vous offrir un cursus de formation en ligne sur les bases de l'Internet des Objets (IoT). Cette formation de 12 semaines sera ventillée en 24 leçons, comprendra des questionnaires avant et après chacune des leçons. Elle comprendra aussi des instructions écrites permettant de compléter les leçons, des solutions et bien plus encore. Notre pédagogie orientée sur la réalisation de projet vous permettra d'apprendre tout en développant des compétences durables.
|
||||||
|
|
||||||
|
<!-- The projects cover the journey of food from farm to table. This includes farming, logistics, manufacturing, retail and consumer - all popular industry areas for IoT devices. -->
|
||||||
|
L'ensemble des projets parlent du parcours que les aliments suivent, de la ferme jusqu'à l'assiette. On y aborde notemment la production à la ferme, la logistique, la fabrication, la ou encore de la vente au détail. Bref, un ensemble d'industries propices à l'utilisation d'objets connectés.
|
||||||
|
|
||||||
|
<!--  -->
|
||||||
|

|
||||||
|
|
||||||
|
<!-- > Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version. -->
|
||||||
|
> Illustré de [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
|
||||||
|
|
||||||
|
<!-- **Hearty thanks to our authors [Jen Fox](https://github.com/jenfoxbot), [Jen Looper](https://github.com/jlooper), [Jim Bennett](https://github.com/jimbobbennett), and our sketchnote artist [Nitya Narasimhan](https://github.com/nitya).** -->
|
||||||
|
**Un remerciements chaleureux à nos auteurs [Jen Fox](https://github.com/jenfoxbot), [Jen Looper](https://github.com/jlooper), [Jim Bennett](https://github.com/jimbobbennett), and our sketchnote artist [Nitya Narasimhan](https://github.com/nitya).**
|
||||||
|
|
||||||
|
<!-- **Thanks as well to our team of [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) who have been reviewing and translating this curriculum - [Aditya Garg](https://github.com/AdityaGarg00), [Anurag Sharma](https://github.com/Anurag-0-1-A), [Arpita Das](https://github.com/Arpiiitaaa), [Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/), [Bhavesh Suneja](https://github.com/EliteWarrior315), [Faith Hunja](https://faithhunja.github.io/), [Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/), [Manvi Jha](https://github.com/Severus-Matthew), [Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/), [Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119), [Mohammad Zulfikar](https://github.com/mohzulfikar), [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba), [Thanmai Gowducheruvu](https://github.com/innovation-platform), and [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).** -->
|
||||||
|
**Un grand merci aussi à notre équipe [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) qui ont révisés et traduit cette série de cours - [Aditya Garg](https://github.com/AdityaGarg00), [Anurag Sharma](https://github.com/Anurag-0-1-A), [Arpita Das](https://github.com/Arpiiitaaa), [Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/), [Bhavesh Suneja](https://github.com/EliteWarrior315), [Faith Hunja](https://faithhunja.github.io/), [Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/), [Manvi Jha](https://github.com/Severus-Matthew), [Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/), [Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119), [Mohammad Zulfikar](https://github.com/mohzulfikar), [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba), [Thanmai Gowducheruvu](https://github.com/innovation-platform), and [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).**
|
||||||
|
|
||||||
|
<!-- Meet the team! -->
|
||||||
|
Rencontrez l'équipe!
|
||||||
|
|
||||||
|
[](https://youtu.be/-wippUJRi5k)
|
||||||
|
|
||||||
|
<!-- > 🎥 Click the image above for a video about the project! -->
|
||||||
|
> 🎥 Cliquez sur l'image ci-haut afin de consulter la vidéo du projet
|
||||||
|
|
||||||
|
<!-- > **Teachers**, we have [included some suggestions](for-teachers.md) on how to use this curriculum. If you would like to create your own lessons, we have also included a [lesson template](lesson-template/README.md). -->
|
||||||
|
> **Enseignants**, nous avons [inclus quelques suggestions](for-teachers.md) sur la manière d'utiliser cette série de cours. Si vous souhaitez ajouter vos propres leçons, nous avons créé ce [gabarit de cours](lesson-template/README.md) pour votre convenance.
|
||||||
|
|
||||||
|
|
||||||
|
<!-- > **Students**, to use this curriculum on your own, fork the entire repo and complete the exercises on your own, starting with a pre-lecture quiz, then reading the lecture and completing the rest of the activities. Try to create the projects by comprehending the lessons rather than copying the solution code; however that code is available in the /solutions folders in each project-oriented lesson. Another idea would be to form a study group with friends and go through the content together. For further study, we recommend [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn). -->
|
||||||
|
> **Étudiants**, afin d'utiliser cette série de cours, clônez le projet gitHub et complétez les exercices en commençant par les questionnaires de pré-lecture, suivi des lectures elles-mêmes puis du reste des activités proposées. Nous vous conseillons fortement de créer les projets en vous basant aux lessons associées au lieu de copier les solutionnaires;toutefois, ce code est disponible dans la section /solutions de chaque leçon. Une autre proposition serait de créer un groupe d'étude avec des amis afin de compléter le contenu ensembles. Pour des activités d'apprentissage avancées, nous vous invitons à consulter [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn).
|
||||||
|
|
||||||
|
<!-- For a video overview of this course, check out this video: -->
|
||||||
|
Pour un apperçu vidéo de cette série de cours, voici une vidéo intéressante:
|
||||||
|
|
||||||
|
[](https://youtube.com/watch?v=bccEMm8gRuc "Video promo")
|
||||||
|
|
||||||
|
<!-- > 🎥 Click the image above for a video about the project! -->
|
||||||
|
> 🎥 Cliquez sur l'image ci-haut afin de consulter la vidéo du projet!
|
||||||
|
|
||||||
|
## Pédagogie
|
||||||
|
|
||||||
|
<!-- We have chosen two pedagogical tenets while building this curriculum: ensuring that it is project-based and that it includes frequent quizzes. By the end of this series, students will have built a plant monitoring and watering system, a vehicle tracker, a smart factory setup to track and check food, and a voice-controlled cooking timer, and will have learned the basics of the Internet of Things including how to write device code, connect to the cloud, analyze telemetry and run AI on the edge. -->
|
||||||
|
Nous avons construit ce cursus de formation en utilisant deux principes pédagogiques: l'apprentissage par projet ainsi que l'utilisation de quizzes fréquents. À la fin de cette série, les étudiants auront bâtis une système de surveillance et d'arrosage de plantes, un système de géolocalisation de véhicules, un système de suivi et de contrôle des aliments en usine ainsi qu'un minuteur contrôlé par la voix. Ces éléments d'apprentissage auront inclus l'écriture de code pour les objets connectés, la connectivité au réseau d'infonuagique, l'analyse de télémètrie ainsi que l'utilisation d'intelligence artificielle par des appareils de périphérie (edge devices).
|
||||||
|
|
||||||
|
<!-- By ensuring that the content aligns with projects, the process is made more engaging for students and retention of concepts will be augmented. -->
|
||||||
|
En s'assurant que le contenu théorique soit conséquent avec les projets proposés, le processus d'apprentissage devient alors plus engageant et la rétention des concepts plus durable.
|
||||||
|
|
||||||
|
<!-- In addition, a low-stakes quiz before a class sets the intention of the student towards learning a topic, while a second quiz after class ensures further retention. This curriculum was designed to be flexible and fun and can be taken in whole or in part. The projects start small and become increasingly complex by the end of the 12 week cycle. -->
|
||||||
|
De surcroît, les quizzes de début de cours mettent la tâble en orientant l'attention de l'étudiant vers le sujet d'apprentissage alors que les quizzes de fin de cours assurent une meilleur rétention des notions. Ce cursus de formation a été conçu afin d'être flexible et plaisant, pouvant être suivi en entièreté ou en partie. En effet, les projets commencent petits et deviennent de plus en plus complexes en fin de parcours.
|
||||||
|
|
||||||
|
<!-- Each project is be based around real-world hardware available to students and hobbyists. Each project looks into the specific project domain, providing relevant background knowledge. To be a successful developer it helps to understand the domain in which you are solving problems, providing this background knowledge allows students to think about their IoT solutions and learnings in the context of the kind of real-world problem that they might be asked to solve as an IoT developer. Students learn the 'why' of the solutions they are building, and get an appreciation of the end user. -->
|
||||||
|
Il est aussi à noter que chaque projet est construit à partir de matériel disponible pour les étudiants et hobbyistes. Chaque projet permet une compréhension du contexte auquel il appartient en fournissant suffisemment d'information pertinentes. En effet, afin de devenir un développeur compétent, il est capitale de comprendre le contexte dans lequel un problème est exprimé puis résolue. Cela permet aux étudiants de mieux concevoir leurs solutions "IoT" fâce à des problèmes réels qu'ils seront éventuellement amenés à résoudre en tant que professionnels. Ces derniers comprennent alors les raisons qui justifient une conception et sont en mesure d'apprécier la perspective d'un utilisateur.
|
||||||
|
|
||||||
|
## Matériel
|
||||||
|
|
||||||
|
<!-- We have two choices of IoT hardware to use for the projects depending on personal preference, programming language knowledge or preferences, learning goals and availability. We have also provided a 'virtual hardware' version for those who don't have access to hardware, or want to learn more before committing to a purchase. You can read more and find a 'shopping list' on the [hardware page](./hardware.md), including links to buy complete kits from our friends at Seeed Studio. -->
|
||||||
|
Nous proposons deux possibilités de matériel "IoT" afin de réaliser nos projets afin de permettre plus de flexibilité vis à vis vos preférences, language de programmation favoris, objectifs d'apprentissage ou encore disponibilité. Nous avons aussi fournis une version virtuelle du matériel en vue d'accomoder ceux n'ayant pas accès au matériel ou ne souhaitant pas débourser. Alors, libre à vous d'en lire d'avantage sur la [page de matériel](./hardware.md) incluant plusieurs liens permettant d'acheter des ensembles chez nos amis à Seeed Studio.
|
||||||
|
|
||||||
|
<!-- > 💁 Find our [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), and [Translation](TRANSLATIONS.md) guidelines. We welcome your constructive feedback! -->
|
||||||
|
> 💁 Découvrez nos guides sur le [Code de conduite](CODE_OF_CONDUCT.md), la [Contribution](CONTRIBUTING.md), ainsi que la [Traduction](TRANSLATIONS.md). Nous vous invitons à nous partager vos impressions!
|
||||||
|
|
||||||
|
## Chaque leçon inclus:
|
||||||
|
|
||||||
|
- illustré
|
||||||
|
- vidéo supplémentaire optionnelle
|
||||||
|
- questionnaire préliminaire
|
||||||
|
- leçon écrite
|
||||||
|
- pour les leçons incluant un projet, un guide complet sur la manière de construire le projet
|
||||||
|
- étapes d'apprentissage
|
||||||
|
- un défi
|
||||||
|
- lectures complémentaires
|
||||||
|
- devoir
|
||||||
|
- questionnaire de fin de cours
|
||||||
|
|
||||||
|
<!-- > **A note about quizzes**: All quizzes are contained [in this app](https://brave-island-0b7c7f50f.azurestaticapps.net), for 48 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the `quiz-app` folder. They are gradually being localized. -->
|
||||||
|
> **Note à propos des questionnaires**: Tous les questionnaires se retrouvent dans [cette application](https://brave-island-0b7c7f50f.azurestaticapps.net), pour un total de 48 questionnaires de trois questions chaque. Des liens sont fournis à l'intérieur de chacune des leçons bien que l'application puisse être exécutée localement; suivez les instructions situées dans le dossier `quiz-app`. Ces dernières deviennent progressivement localisées.
|
||||||
|
|
||||||
|
## Leçons
|
||||||
|
|
||||||
|
| | Nome du projet | Concept enseigné | Objectifs d'apprentissage | leçon associée |
|
||||||
|
| :-: | :----------: | :-------------: | ------------------- | :-----------: |
|
||||||
|
| 01 | [Getting started](./1-getting-started) | Introduction to IoT | Learn the basic principles of IoT and the basic building blocks of IoT solutions such as sensors and cloud services whilst you are setting up your first IoT device | [Introduction to IoT](./1-getting-started/lessons/1-introduction-to-iot/README.md) |
|
||||||
|
| 02 | [Getting started](./1-getting-started) | A deeper dive into IoT | Learn more about the components of an IoT system, as well as microcontrollers and single-board computers | [A deeper dive into IoT](./1-getting-started/lessons/2-deeper-dive/README.md) |
|
||||||
|
| 03 | [Getting started](./1-getting-started) | Interact with the physical world with sensors and actuators | Learn about sensors to gather data from the physical world, and actuators to send feedback, whilst you build a nightlight | [Interact with the physical world with sensors and actuators](./1-getting-started/lessons/3-sensors-and-actuators/README.md) |
|
||||||
|
| 04 | [Getting started](./1-getting-started) | Connect your device to the Internet | Learn about how to connect an IoT device to the Internet to send and receive messages by connecting your nightlight to an MQTT broker | [Connect your device to the Internet](./1-getting-started/lessons/4-connect-internet/README.md) |
|
||||||
|
| 05 | [Farm](./2-farm) | Predict plant growth | Learn how to predict plant growth using temperature data captured by an IoT device | [Predict plant growth](./2-farm/lessons/1-predict-plant-growth/README.md) |
|
||||||
|
| 06 | [Farm](./2-farm) | Detect soil moisture | Learn how to detect soil moisture and calibrate a soil moisture sensor | [Detect soil moisture](./2-farm/lessons/2-detect-soil-moisture/README.md) |
|
||||||
|
| 07 | [Farm](./2-farm) | Automated plant watering | Learn how to automate and time watering using a relay and MQTT | [Automated plant watering](./2-farm/lessons/3-automated-plant-watering/README.md) |
|
||||||
|
| 08 | [Farm](./2-farm) | Migrate your plant to the cloud | Learn about the cloud and cloud-hosted IoT services and how to connect your plant to one of these instead of a public MQTT broker | [Migrate your plant to the cloud](./2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md) |
|
||||||
|
| 09 | [Farm](./2-farm) | Migrate your application logic to the cloud | Learn about how you can write application logic in the cloud that responds to IoT messages | [Migrate your application logic to the cloud](./2-farm/lessons/5-migrate-application-to-the-cloud/README.md) |
|
||||||
|
| 10 | [Farm](./2-farm) | Keep your plant secure | Learn about security with IoT and how to keep your plant secure with keys and certificates | [Keep your plant secure](./2-farm/lessons/6-keep-your-plant-secure/README.md) |
|
||||||
|
| 11 | [Transport](./3-transport) | Location tracking | Learn about GPS location tracking for IoT devices | [Location tracking](./3-transport/lessons/1-location-tracking/README.md) |
|
||||||
|
| 12 | [Transport](./3-transport) | Store location data | Learn how to store IoT data to be visualized or analysed later | [Store location data](./3-transport/lessons/2-store-location-data/README.md) |
|
||||||
|
| 13 | [Transport](./3-transport) | Visualize location data | Learn about visualizing location data on a map, and how maps represent the real 3d world in 2 dimensions | [Visualize location data](./3-transport/lessons/3-visualize-location-data/README.md) |
|
||||||
|
| 14 | [Transport](./3-transport) | Geofences | Learn about geofences, and how they can be used to alert when vehicles in the supply chain are close to their destination | [Geofences](./3-transport/lessons/4-geofences/README.md) |
|
||||||
|
| 15 | [Manufacturing](./4-manufacturing) | Train a fruit quality detector | Learn about training an image classifier in the cloud to detect fruit quality | [Train a fruit quality detector](./4-manufacturing/lessons/1-train-fruit-detector/README.md) |
|
||||||
|
| 16 | [Manufacturing](./4-manufacturing) | Check fruit quality from an IoT device | Learn about using your fruit quality detector from an IoT device | [Check fruit quality from an IoT device](./4-manufacturing/lessons/2-check-fruit-from-device/README.md) |
|
||||||
|
| 17 | [Manufacturing](./4-manufacturing) | Run your fruit detector on the edge | Learn about running your fruit detector on an IoT device on the edge | [Run your fruit detector on the edge](./4-manufacturing/lessons/3-run-fruit-detector-edge/README.md) |
|
||||||
|
| 18 | [Manufacturing](./4-manufacturing) | Trigger fruit quality detection from a sensor | Learn about triggering fruit quality detection from a sensor | [Trigger fruit quality detection from a sensor](./4-manufacturing/lessons/4-trigger-fruit-detector/README.md) |
|
||||||
|
| 19 | [Retail](./5-retail) | Train a stock detector | Learn how to use object detection to train a stock detector to count stock in a shop | [Train a stock detector](./5-retail/lessons/1-train-stock-detector/README.md) |
|
||||||
|
| 20 | [Retail](./5-retail) | Check stock from an IoT device | Learn how to check stock from an IoT device using an object detection model | [Check stock from an IoT device](./5-retail/lessons/2-check-stock-device/README.md) |
|
||||||
|
| 21 | [Consumer](./6-consumer) | Recognize speech with an IoT device | Learn how to recognize speech from an IoT device to build a smart timer | [Recognize speech with an IoT device](./6-consumer/lessons/1-speech-recognition/README.md) |
|
||||||
|
| 22 | [Consumer](./6-consumer) | Understand language | Learn how to understand sentences spoken to an IoT device | [Understand language](./6-consumer/lessons/2-language-understanding/README.md) |
|
||||||
|
| 23 | [Consumer](./6-consumer) | Set a timer and provide spoken feedback | Learn how to set a timer on an IoT device and give spoken feedback on when the timer is set and when it finishes | [Set a timer and provide spoken feedback](./6-consumer/lessons/3-spoken-feedback/README.md) |
|
||||||
|
| 24 | [Consumer](./6-consumer) | Support multiple languages | Learn how to support multiple languages, both being spoken to and the responses from your smart timer | [Support multiple languages](./6-consumer/lessons/4-multiple-language-support/README.md) |
|
||||||
|
|
||||||
|
## Accès hors ligne
|
||||||
|
|
||||||
|
<!-- You can run this documentation offline by using [Docsify](https://docsify.js.org/#/). Fork this repo, [install Docsify](https://docsify.js.org/#/quickstart) on your local machine, and then in the root folder of this repo, type `docsify serve`. The website will be served on port 3000 on your localhost: `localhost:3000`. -->
|
||||||
|
Il vous est possible de rouler cette documentation en utilisant [Docsify](https://docsify.js.org/#/). Clônez ce projet, [installez Docsify](https://docsify.js.org/#/quickstart) localement sur votre machine puis dans le dossier racine de ce projet, tapez `docsify serve`. Le site web sera alors hébergé localement au port 3000: `localhost:3000`
|
||||||
|
|
||||||
|
### PDF
|
||||||
|
|
||||||
|
<!-- You can generate a PDF of this content for offline access if needed. To do this, make sure you have [npm installed](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and run the following commands in the root folder of this repo: -->
|
||||||
|
Il vous est aussi possible de générer un fichier PDF à partir de ce contenu pour un accès hors ligne. Afin d'y parvenir, assurez vous d'[avoir npm installé](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) puis entrez cette commande à partir du dossier racine de ce projet:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm i
|
||||||
|
npm run convert
|
||||||
|
```
|
||||||
|
|
||||||
|
### Acétates
|
||||||
|
|
||||||
|
Les acétates de plusieures leçons sont contenues dans le dossier ["slides"](./slides).
|
||||||
|
|
||||||
|
## Supportez la traduction!
|
||||||
|
|
||||||
|
Vous souhaitez contribuer à la traduction? Nous vous prions de lire le [guide de traduction](TRANSLATIONS.md), faites un "fork" de ce projet sur votre compte github puis ajoutez vos changements [à l'une de nos issues de traduction](https://github.com/microsoft/IoT-For-Beginners/issues?q=is%3Aissue+is%3Aopen+label%3Atranslation). Si vous souhaitez traduire en un nouveau language, vous devez alors lever une nouvelle issue afin de pouvoir la suivre.
|
||||||
|
|
||||||
|
## D'autres formations
|
||||||
|
|
||||||
|
Notre équipe a aussi produit d'autres cursus de formation! Nous vous invitons à y jeter un oeuil:
|
||||||
|
|
||||||
|
- [Web Dev for Beginners](https://aka.ms/webdev-beginners)
|
||||||
|
- [ML for Beginners](https://aka.ms/ml-beginners)
|
||||||
|
|
||||||
|
## Droits des images
|
||||||
|
|
||||||
|
<!-- You can find all the attributions for the images used in this curriculum where required in the [Attributions](./attributions.md). -->
|
||||||
|
Les [droits](./attributions.md) des images utilisées dans ce projet sont le fichier attributions.md
|
Loading…
Reference in new issue