Expand description
§embassy-hall-analog
Driver async no_std minimaliste pour le capteur à effet Hall linéaire analogique
OPEN-SMART (compatible 49E / SS49E) sur microcontrôleur RP2040 et RP235x,
basé sur le framework Embassy, ce n’est pas développé par l’équipe officielle attention!!.
§Description du composant
Ce module capteur repose sur un capteur à effet Hall linéaire (type 49E) qui délivre une tension analogique proportionnelle à l’intensité du champ magnétique environnant. En l’absence de champ magnétique, la sortie se stabilise autour de VCC / 2 (~1,65 V sous 3,3 V). Un pôle Sud rapproche la tension de VCC ; un pôle Nord la tire vers GND.
§Schéma de câblage
Module Hall OPEN-SMART RP2040 / RP235x
───────────────────────── ───────────────
VCC ────────────────── 3.3V
GND ────────────────── GND
AO ────────────────── GP26 (ADC0)Note : La broche AO (Analog Output) est connectée directement à la broche ADC du microcontrôleur. Aucune résistance externe n’est nécessaire : le module embarque déjà la polarisation interne.
§Features disponibles
| Feature | Cible | Défaut |
|---|---|---|
rp2040 | Raspberry Pi Pico 1 (RP2040) | ✓ |
rp235xa | Pico 2 A-step (RP2350A) | |
rp235xb | Pico 2 B-step (RP2350B) |
Ces features sont mutuellement exclusives. Le build échouera si zéro ou plusieurs sont activées simultanément.
§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::adc::InterruptHandler;
use embassy_hall_analog::HallAnalog;
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 = HallAnalog::new(adc, channel);
loop {
let raw = sensor.read_raw().await;
// ~2048 (RP2040) / ~8192 (RP235x) → pas de champ
// > repos → pôle Sud | < repos → pôle Nord
let _ = raw;
}
}§Calcul de tension et de champ magnétique
La valeur brute ADC peut être convertie en tension :
V = raw × 3.3 / MAX (MAX = 4095 sur RP2040, 16383 sur RP235x)La déviation par rapport à la tension de repos (~VCC/2) indique l’intensité et la polarité :
ΔV = V - 1.65 (positif → pôle Sud, négatif → pôle Nord)Pour le capteur 49E, la sensibilité typique est de 1,4 mV/Gauss à 5 V (environ 0,92 mV/Gauss à 3,3 V) :
B (Gauss) = ΔV / 0.00092§Caractéristiques
| Paramètre | Valeur |
|---|---|
| Tension d’alimentation | 3,3 V (RP2040 / RP235x) |
| Résolution ADC | 12 bits (0–4095) / 14 bits sur RP235x |
| Sortie repos | ~VCC / 2 (~1,65 V sous 3,3 V) |
| Sortie pôle Sud | Augmente vers VCC |
| Sortie pôle Nord | Diminue vers GND |
| Sensibilité typique | ~0,92 mV/Gauss @ 3,3 V (capteur 49E) |
| Interface | Analogique (AO) — lecture ADC directe |
§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§
- Hall
Analog - Driver pour le capteur à effet Hall linéaire analogique OPEN-SMART via l’ADC du RP2040 / RP235x.
Enums§
- Magnetic
Polarity - Polarité du champ magnétique détecté.
Constants§
- ZERO_
FIELD_ RAW_ 12BIT - Valeur ADC correspondant à l’absence de champ magnétique 12 bits, RP2040.
- ZERO_
FIELD_ RAW_ 14BIT - Valeur ADC correspondant à l’absence de champ magnétique - 14 bits, RP235x.