Skip to main content

Crate embassy_rp_gl5528

Crate embassy_rp_gl5528 

Source
Expand description

§embassy-rp-gl5528

Driver async no_std minimaliste pour la photorésistance GL5528 (LDR) sur microcontrôleur RP2040 et RP235x, basé sur le framework Embassy.

§Description du composant

La GL5528 est une photorésistance (LDR — Light Dependent Resistor) dont la résistance varie entre ~1 kΩ (forte lumière) et ~10 MΩ (obscurité totale). Elle est typiquement utilisée dans un diviseur de tension avec une résistance fixe (10 kΩ recommandée) pour convertir la variation de résistance en tension lisible par un ADC.

§Schéma de câblage

3.3V
 │
[GL5528]
 │
 ├──── GP26 (ADC0)
 │
[R 10kΩ]
 │
GND

La tension sur la broche ADC augmente avec la luminosité (la GL5528 devient moins résistante, le point milieu monte vers 3,3 V).

§Exemple d’utilisation

#![no_std]
#![no_main]

use embassy_executor::Spawner;
use embassy_rp::adc::{Adc, Channel, Config as AdcConfig};
use embassy_rp::bind_interrupts;
use embassy_rp::peripherals::ADC;
use embassy_rp::adc::InterruptHandler;
use embassy_rp_gl5528::Gl5528;

bind_interrupts!(struct Irqs {
    ADC_IRQ_FIFO => InterruptHandler;
});

#[embassy_executor::main]
async fn main(_spawner: Spawner) {
    let p = embassy_rp::init(Default::default());

    let adc = Adc::new(p.ADC, Irqs, AdcConfig::default());
    let channel = Channel::new_pin(p.PIN_26, embassy_rp::gpio::Pull::None);

    let mut sensor = Gl5528::new(adc, channel);

    loop {
        let raw = sensor.read_raw().await;
        // Valeur entre 0 (obscurité) et 4095 (pleine lumière sur 12 bits)
        let _ = raw;
    }
}

§Calcul de luminosité

La valeur brute ADC peut être convertie en tension (ex: 12 bits sur RP2040, 14 bits sur RP235x) ::

V = raw × 3.3 / MAX (4095 ou 16383)

La résistance de la LDR s’en déduit (diviseur de tension, R_pull = 10 kΩ) :

R_ldr = R_pull × V / (3.3 - V)

§Caractéristiques

ParamètreValeur
Tension d’alimentation3,3 V (RP2040 / RP235x)
Résolution ADC12 bits (0–4095) et 14 bits sur RP235x
Résistance lumière~1 kΩ @ 10 lux
Résistance obscurité~1 MΩ minimum
Résistance de tirage10 kΩ recommandée

§no_std

Cette crate ne dépend pas de la bibliothèque standard et est conçue pour tourner sur des microcontrôleurs bare-metal avec le runtime Embassy.

Structs§

Gl5528
Driver pour la photorésistance GL5528 via l’ADC du RP2040.