Aller au contenu principal

Panneau solaire orientable STM32

InformatiqueTechnologieSTM32 IoT NodePhotorésistance (LDR)ServomoteurCapteur INA219MakeCode
ProjetDuréeDifficultéÂge
The Dexter Lab2-3 heuresAvancé13-18 ans

Matériel

  • 1 carte programmable "STM32 IoT Node Board"
  • 2 photorésistances (LDR)
  • 2 résistances de 10 kΩ
  • 1 servomoteur
  • 1 capteur de tension INA219
  • 1 panneau solaire
  • 1 résistance de 100 Ω
  • 1 breadboard + câbles
  • 1 câble USB - micro B
Panneau solaire orientable STM32

De quoi parle-t-on ?

Cette fiche technique accompagne la ressource Panneau solaire auto-orientable. Elle couvre toute la chaîne de programmation : mesurer la lumière avec deux photorésistances, piloter un servomoteur et créer un suiveur solaire automatique qui oriente le panneau en fonction de la différence d'éclairage.

Objectifs d'apprentissage

  • Comprendre le fonctionnement d'un diviseur de tension avec une LDR
  • Lire plusieurs entrées analogiques et comparer leurs valeurs
  • Piloter un servomoteur à partir d'une condition algorithmique
  • Assembler un système complet intégrant capteurs et actionneurs

Étape 1 : Collecter des données grâce au capteur de lumière

Le circuit que nous devons assembler se compose de deux éléments : une résistance de 10 kΩ et une cellule photoélectrique.

Câblage cellule photovoltaïque
info

Pour cette activité, installez l'extension serial.

Programme

forever(function () {
Serial.writeValue("LDR Left", pins.A0.analogRead())
pause(1000)
})

Étape 2 : Mesurer le changement d'intensité lumineuse avec deux LDR

Le circuit se compose de deux LDR. Nous brancherons la LDR de "gauche" sur A0 et la cellule photoélectrique de "droite" sur A1.

Câblage de plusieurs cellules

Programme

forever(function () {
Serial.writeValue("Left", pins.A0.analogRead())
Serial.writeValue("Right", pins.A1.analogRead())
Serial.writeValue("Difference", pins.A0.analogRead() - pins.A1.analogRead())
pause(1000)
})

É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
Câblage du 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 : Programmation du suiveur solaire

Combiner le servomoteur et les deux LDR. LDR gauche sur A0, LDR droite sur A1, servomoteur sur D9.

Servomoteur et cellules

Programme

const moveThreshold = 10;

let startOrientation = 0;
let endOrientation = 180;
let currentOrientation = startOrientation;

forever(function () {
let previousOrientation = currentOrientation;
let leftIllumination = pins.A0.analogRead()
let rightIllumination = pins.A1.analogRead()
let differenceOfIllumination = leftIllumination - rightIllumination

Serial.writeValue("Left", leftIllumination)
Serial.writeValue("Right", rightIllumination)
Serial.writeValue("Difference", differenceOfIllumination)

if(Math.abs(differenceOfIllumination) > moveThreshold)
{
if (differenceOfIllumination > 0){
currentOrientation++ // Turn left
Serial.writeLine("Turn left")
}
else if (differenceOfIllumination < 0){
currentOrientation-- // Turn right
Serial.writeLine("Turn right")
}
}

if (currentOrientation < startOrientation)
currentOrientation = startOrientation

if (currentOrientation > endOrientation)
currentOrientation = endOrientation

if(previousOrientation != currentOrientation)
pins.D9.servoWrite(currentOrientation)

pause(1000)
})

Étape 5 : Collecter les données grâce au capteur de tension

Câbler le capteur de tension (I2C) :

  • Violet pour SDA
  • Vert pour SCL
  • Bleu pour GND
  • Rouge pour VCC (3.3V)

Câbler le panneau solaire sur Vin+ et Vin- (avec résistance de 100 Ω).

Capteur de tension

Programme

Serial.attachToConsole()

forever(function () {
Serial.writeValue("Voltage", input.getINA219Voltage())
pause(5000)
})

Cette fiche fait partie du projet The Dexter Lab, financé par le programme Erasmus+. Contenu sous licence CC BY-SA 4.0.