Arrosage automatique STM32
| Projet | Durée | Difficulté | Âge |
|---|---|---|---|
| The Dexter Lab | 1-2 heures | Intermédiaire | 12-18 ans |
Matériel
- 1 carte programmable "STM32 IoT Node Board"
- 1 écran OLED (SSD1306)
- 1 capteur d'humidité du sol
- 1 servomoteur
- 1 breadboard
- Des câbles de connexion
- 1 câble USB - micro B
De quoi parle-t-on ?
Cette fiche technique accompagne la ressource Beau jardin au 21e siècle et regroupe les étapes de programmation nécessaires pour construire un système d'arrosage automatique. Nous allons progressivement mesurer l'humidité du sol avec un capteur, afficher cette information sur un écran OLED, commander un servomoteur pour distribuer de l'eau, puis assembler le tout pour créer un système autonome.
Objectifs d'apprentissage
- Programmer un capteur analogique (humidité du sol) en MakeCode
- Afficher des valeurs et messages conditionnels sur un écran OLED
- Piloter un servomoteur pour réaliser une action physique
- Combiner capteurs, affichage et actionneurs dans un projet complet
Étape 1 : Mesurer la conductivité du sol
Câbler le capteur d'humidité
Le capteur d'humidité que nous utilisons possède trois broches : deux broches d'alimentation (+ et -) ainsi qu'une broche de signal.
- La broche + du capteur sur la broche 5V de la carte
- La broche - du capteur sur la broche GND de la carte
- La broche S du capteur sur la broche A0 de la carte
Les extensions dans MakeCode sont des groupes de blocs de code qui ne sont pas directement inclus dans les blocs de code de base. Elles ajoutent des blocs pour des fonctionnalités spécifiques. Pour cette activité, installez les extensions serial et soil-hygrometer.
Programme
Serial.attachToConsole()
forever(function () {
Serial.writeValue("soil humidity", input.getSoilHumidity(pins.A0))
pause(500)
})
Étape 2 : Afficher les données collectées sur un écran
Câbler le capteur d'humidité
- La broche + du capteur sur la broche 5V de la carte
- La broche - du capteur sur la bande d'alimentation - de la breadboard
- La broche S du capteur sur la broche A0 de la carte
- La bande d'alimentation - de la breadboard sur la broche GND de la carte
Connecter l'écran OLED SSD1306 (connexion I2C)
- La broche GND de l'écran à la bande d'alimentation - de la breadboard
- La broche VCC de l'écran sur la broche 3.3V de la carte
- La broche SDA de l'écran sur la broche D14 de la carte
- La broche SCL de l'écran sur la broche D15 de la carte
Pour cette activité, installez les extensions soil-hygrometer et oled.
Programme
let humidity = 0
forever(function () {
humidity = input.getSoilHumidity(pins.A0)
oled.clear()
oled.showValue("humidity", humidity, 1)
if (humidity <= 450) {
oled.showString("Too dry!", 2)
} else if (humidity >= 450 && humidity < 700) {
oled.showString("All ok! I'm fine :)", 2)
} else {
oled.showString("Too wet!", 2)
}
pause(500)
})
Étape 3 : Programmation d'un servomoteur
Câbler le servomoteur
- Marron (ou violet) sur le GND
- Rouge sur le 5V
- Orange sur la broche 9
Programme
forever(function () {
Serial.writeValue("Angle", 0)
pins.D9.servoWrite(0)
loops.pause(1000)
Serial.writeValue("Angle", 90)
pins.D9.servoWrite(90)
loops.pause(1000)
})
Étape 4 : Créer un système d'arrosage automatique
Câblage du capteur d'humidité
- La broche + du capteur sur 5V
- La broche - du capteur sur GND
- La broche S du capteur sur A0
Programme
let humidity = 0
pins.D9.servoWrite(0)
forever(function () {
oled.clear()
humidity = input.getSoilHumidity(pins.A0)
oled.showValue("humidity", humidity, 1);
if (humidity <= 450) {
oled.showString("Too dry :(", 2);
pins.D9.servoWrite(90)
loops.pause(2000)
pins.D9.servoWrite(0)
loops.pause(3000)
} else if (humidity >= 450 && humidity < 700) {
oled.showString("I'm fine :)", 2);
} else {
oled.showString("Too wet!! :(", 2);
}
pause(500)
})
Cette fiche fait partie du projet The Dexter Lab, financé par le programme Erasmus+. Contenu sous licence CC BY-SA 4.0.