Aller au contenu principal

Arrosage automatique STM32

InformatiqueTechnologieSTM32 IoT NodeCapteur humidité du solServomoteurMakeCode
ProjetDuréeDifficultéÂge
The Dexter Lab1-2 heuresIntermédiaire12-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
Arrosage automatique STM32

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
Capteur d'humidité connecté à la carte
info

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.

Datalogger capteur d'humidité

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
info

Pour cette activité, installez les extensions soil-hygrometer et oled.

Capteur d'humidité avec écran

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
Servomoteur

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
Capteur d'humidité avec servomoteur

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.