LOG.04 // EMBEDDED SYSTEMS & LOW-POWER RF

Réseau Domotique LoRa en Assembleur.

Retour sur un sprint technique d'un mois : conception d'une architecture distribuée de capteurs environnementaux[cite: 1]. Programmation bare-metal en assembleur pur, communication sans fil longue portée LoRa et passerelle de décision[cite: 1].

[↓] REGISTRES & SCHÉMA (.PDF) [↗] GITHUB (CODE SOURCE ASM)
+
+
[ ZONE RÉSERVÉE : PHOTO DU PCB / NŒUD CAPTEUR LORA ]

1. Le Défi : Bare-Metal en Assembleur sur 4 Semaines

Ce projet a été réalisé sous une contrainte de temps stricte : un mois pour livrer un réseau domotique fonctionnel, résilient et autonome en énergie[cite: 1]. Alors que la majorité des projets similaires s'appuient sur l'écosystème Arduino ou des bibliothèques C++ de haut niveau, l'objectif pédagogique et technique était ici de programmer l'ensemble des nœuds capteurs directement en assembleur (ASM)[cite: 1].

Travailler en assembleur impose de manipuler manuellement chaque registre du microcontrôleur, de configurer les horloges internes bit par bit et d'écrire soi-même les routines de communication vers les modules périphériques (SPI/I2C/UART). Cette approche garantit une taille de binaire minimale et une exécution déterministe au cycle d'horloge près.

!
Optimisation Énergétique (Deep Sleep)

Sans système d'exploitation ni runtime pour introduire de la latence, le microcontrôleur se réveille via une interruption timer (Watchdog), lit les capteurs, prépare la trame radio, la transmet, puis repasse immédiatement en mode veille profonde. La consommation tombe sous la barre des microampères la majorité du temps.

2. Topologie Étoile et Liaison LoRa

L'architecture repose sur une topologie en étoile constituée de plusieurs nœuds capteurs autonomes et d'une station de base centrale[cite: 1]. Contrairement au Wi-Fi ou au Bluetooth dont la portée traverse difficilement les murs épais d'une maison, le choix de la modulation LoRa (868 MHz) offre une excellente pénétration des obstacles avec une puissance d'émission minimale.

network_topology.diag LORA STAR TOPOLOGY
[Nœud 01: Temp/Hum] ──── LoRa 868MHz ────┐
                                         │
[Nœud 02: Présence/PIR] ── LoRa 868MHz ──┼──> [BASE CENTRALE (ASM/UART)]
                                         │             │
[Nœud 03: Environnement] ─ LoRa 868MHz ──┘             ▼
                                                [Actionneurs / Relais]

Chaque nœud embarque un module émetteur-récepteur radio (type SX1276). En l'absence de bibliothèque préexistante en assembleur, j'ai implémenté le pilote du transmetteur en écrivant les registres de configuration (fréquence, Spreading Factor, bande passante) via une liaison SPI entièrement gérée en registres machine.

3. Acquisition Sensorielle et Routine Assembleur

Les nœuds collectent plusieurs grandeurs physiques essentielles à l'automatisation du domicile[cite: 1] :

  • Température et Humidité : Mesure des grandeurs ambiantes pour le monitoring climatique[cite: 1].
  • Détection de Présence : Capteur PIR passif déclenchant une interruption matérielle sur front montant[cite: 1].

La base centrale centralise ces paquets entrants, décode les identifiants de nœuds et applique une logique décisionnelle locale (déclenchement d'alertes ou bascule d'actionneurs)[cite: 1].

lora_tx_routine.asm AVR / PURE ASM
; Routine d'envoi d'un octet de télémétrie sur le bus SPI vers le SX1276
SPI_TRANSMIT:
    push    r17
    out     SPDR, r16           ; Charge la donnée du capteur dans le registre SPI
WAIT_SPI:
    in      r17, SPSR           ; Lit le registre de statut du bus SPI
    sbrs    r17, SPIF           ; Saute l'instruction suivante si transmission finie
    rjmp    WAIT_SPI            ; Boucle d'attente active du flag de fin de transfert
    in      r16, SPDR           ; Vide le buffer de réception
    pop     r17
    ret                         ; Retour à la boucle d'acquisition

4. Bilan du Projet

Mener ce projet en seulement 4 semaines a constitué un excellent exercice de rétro-ingénierie et de lecture de datasheets de composants sans filet d'abstraction. Développer en assembleur force à comprendre précisément le coût matériel de chaque opération logique et la réalité des signaux radioélectriques.

Composant Rôle & Implémentation
Cœur de Traitement Microcontrôleurs 8-bits programmés en assembleur natif[cite: 1]
Transceiver RF Modules LoRa SX1276 pilotés par SPI registre par registre[cite: 1]
Capteurs Sondes température/humidité et capteurs infrarouges de présence[cite: 1]
Passerelle Base réceptrice effectuant le parsing des trames et la prise de décision[cite: 1]