Aller au contenu principal

Construire un 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 Construire un 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.