Composants matériels
La famille Amalgame.Hardware est un ensemble de petits packages
pour piloter de l'électronique réelle depuis Amalgame. Ils se
répartissent proprement en trois couches :
- Le HAL (
amalgame-hal) — des interfaces portables
(DigitalOut/DigitalIn, PwmOut, I2cBus, SpiBus, Clock,
SerialPort). Un driver s'écrit une seule fois contre elles.
- Un backend de carte — implémente le HAL sur une carte donnée.
Aujourd'hui :
amalgame-hardware-gpio (Raspberry Pi / SBC Linux).
Un backend MCU est sur la feuille de route.
- Les drivers — composants (LEDs, moteurs, capteurs, afficheurs…)
écrits contre le HAL, donc tournant sur n'importe quel backend
sans modification.
🧩 Le Pi aujourd'hui, le MCU demain — même code driver. Comme
les drivers visent le HAL et jamais une carte précise, le même code
driver qui tourne sur un Raspberry Pi (alimenté par les broches de
hardware-gpio) tournera sur un microcontrôleur dès qu'un backend
MCU existera (voir la
proposition amc-embedded).
Rien ici n'est spécifique au Raspberry Pi, sauf le backend GPIO
lui-même.
Tous les packages s'installent via l'index curé — amc package add <nom>
— et requièrent amc ≥ 0.8.72 (dispatch d'interface). La colonne
Composants pris en charge liste les puces/dispositifs concrets
pilotés par chaque package.
Fondation
| Package |
Installation |
Fournit |
| hal (repo) |
amc package add hal |
Les interfaces portables visées par chaque driver : DigitalOut, DigitalIn, PwmOut, I2cBus, SpiBus, Clock, SerialPort. |
Backends de carte
Ils fournissent le HAL sur du vrai matériel. Choisissez celui de votre
carte ; les drivers ci-dessous ne s'en soucient pas.
| Package |
Installation |
Périphériques pris en charge |
| hardware-gpio (repo) |
amc package add hardware-gpio |
Raspberry Pi 1→5 / SBC Linux via libgpiod v2 : E/S numériques GPIO + fronts, I²C, SPI, PWM matériel, UART. Fournit les broches/bus HAL à tous les drivers. Voir le how-to Raspberry Pi. |
| Backend MCU |
(roadmap) |
Exposera le même HAL sur microcontrôleurs nus — amc-embedded. |
Sortie & actionneurs
| Package |
Installation |
Composants pris en charge |
| hardware-led (repo) |
amc package add hardware-led |
LED simple (tout-ou-rien), LED RGB (PWM), ruban APA102 / DotStar, ruban WS2812 / NeoPixel. |
| hardware-motor (repo) |
amc package add hardware-motor |
Servo / ESC, moteur CC (pont en H), moteur pas-à-pas 28BYJ-48, driver pas-à-pas A4988, AccelStepper (accél./décél. trapézoïdale pour tout driver step/dir), relais, driver PWM 16 canaux PCA9685, buzzer piézo. |
Entrée
| Package |
Installation |
Composants pris en charge |
| hardware-input (repo) |
amc package add hardware-input |
Bouton-poussoir anti-rebond, encodeur rotatif, clavier matriciel (lignes × colonnes). |
Capteurs
| Package |
Installation |
Composants pris en charge |
| hardware-sensor (repo) |
amc package add hardware-sensor |
Distance HC-SR04, ADC SPI 8 canaux MCP3008, BME280 température/pression/humidité, IMU 6 axes MPU-6050, lumière ambiante BH1750, courant/puissance INA219, ADC I²C 16 bits ADS1115, ADC cellule de charge HX711, thermocouple type K MAX6675, température/humidité SHT31 & AHT20, température 1-Wire DS18B20 (Pi/Linux). |
| hardware-comms (repo) |
amc package add hardware-comms |
Récepteur GPS NMEA via un SerialPort HAL. |
Afficheurs
| Package |
Installation |
Composants pris en charge |
| hardware-display (repo) |
amc package add hardware-display |
OLED SSD1306 128×64 (framebuffer + texte 5×7), LCD caractères LCD1602 16×2, driver 7-seg / matrice LED MAX7219, afficheur 4 digits 7-seg TM1637. |
Expandeurs & I/O
| Package |
Installation |
Composants pris en charge |
| hardware-io (repo) |
amc package add hardware-io |
Expandeur I²C 8 bits PCF8574, registre à décalage 8 bits SN74HC595, expandeur I²C 16 bits MCP23017. Chacun expose ses broches comme des DigitalOut + DigitalIn HAL, donc les drivers existants pilotent ses broches de façon transparente. |
Horloge temps réel (RTC)
| Package |
Installation |
Composants pris en charge |
| hardware-rtc (repo) |
amc package add hardware-rtc |
Horloge temps réel TCXO DS3231, horloge temps réel DS1307 (en I²C), avec un helper DateTime lecture/écriture. |
Contrôle & maths (Amalgame pur)
Pas de matériel propre — des briques pour les boucles de contrôle, indépendantes de la carte.
| Package |
Installation |
Fournit |
| hardware-control (repo) |
amc package add hardware-control |
Régulateur PID, filtre complémentaire IMU, moyenne glissante, helpers de plage map / clamp. |
Assembler le tout
Un projet type choisit un backend + les drivers nécessaires.
Sur un Raspberry Pi, faire clignoter une LED via la couche driver :
amc package add hardware-gpio # le backend Pi (fournit le HAL)
amc package add hardware-led # le driver LED portable
Le driver est construit à partir d'une broche HAL fournie par le
backend, donc le même programme compilera sans changement sur un futur
backend MCU.
Nouveau sur tout ça ? Commencez par le how-to Raspberry Pi
— il mène de la carte SD vierge au pilotage GPIO, boutons et capteurs
I²C, pas à pas.