Projet LoLRa – Transmission de paquets LoRa sans radio à l’aide d’un MCU CH32V003, ESP8266 ou ESP32-S2

LolRa

Le projet LoLRa est un projet open source de transmission LoRa uniquement micrologiciel qui fonctionne sans radio Semtech et s’appuie à la place sur une interface I2S ou SPI (donc pas exactement bit-banging) pour transmettre des données avec des microcontrôleurs tels que WCH CH32V003 ou Espressif Systems. Microcontrôleurs ESP8266 et ESP32-S2.

LoRa est un protocole propriétaire de Semtech, mais les gens tentent de procéder à une ingénierie inverse du LoRa PHY depuis des années, et cela a abouti à la mise en œuvre de LoRa GNU Radio SDR l’année dernière. Mais CNLohr a découvert que vous n’avez même pas besoin d’une radio pour envoyer des paquets LoRa et que vous pouvez à la place utiliser les interfaces SPI ou I2S de microcontrôleurs à usage général pour envoyer des paquets qui peuvent être décodés par des passerelles LoRa commerciales et d’autres puces.

MdrRa

La mise en œuvre actuelle est conçue pour la région 2 de l’UIT (alias Amériques) ciblant la bande de fréquences 902-928 MHz, mais le code pourrait être modifié pour la région 1 (UE, Russie, Afrique) pour cibler 863-870 MHz ou la région 3 (Australie, Chine, Inde) pour cibler 920-923 MHz.

L’implémentation repose sur les harmoniques et le repliement, ce qui signifie que les composantes de fréquence principales émises par votre microcontrôleur se trouveront dans des parties du spectre RF où les transmissions RF sont interdites. Vous devez donc filtrer votre sortie ou effectuer des tests dans une zone où il est peu probable qu’il y ait une fuite RF importante. CNLohr note en outre que la sortie EIRP globale est généralement inférieure à 300 uW sur l’ensemble du spectre réparti sur des centaines de fréquences d’émission, mais il est pratiquement impossible qu’un appareil transmettant délibérément sur ces fréquences puisse jamais satisfaire à la conformité à la partie 15 de la FCC, même avec filtrage.

LoLRa fonctionne avec deux modes principaux :

  1. Transmission à l’aide d’une PLL accordable, créant une onde carrée, puis utilisant une harmonique (la 13ème harmonique dans le cas de l’ESP32-S2), et enfin transmettant le signal via une broche de sortie.
  2. Synthèse directe sur un bitstream. Une méthode plus polyvalente qui peut fonctionner sur une gamme plus large de microcontrôleurs.

C’est un exploit incroyable, mais notez que ce n’est pas quelque chose qui peut être utilisé commercialement car il ne serait pas conforme à la norme FCC, et seuls quelques nanoWatts sont utilisés sur les quelques microWatts utilisés pour la transmission. La portée est également plus courte qu’avec les émetteurs-récepteurs Semtech, mais elle a été testée jusqu’à une portée de 2,5 km avec un ESP32-S2 utilisant une carte TTGO Lora32 comme récepteur.

Vous trouverez le code source et plus de détails sur l’implémentation sur GitHub, et si vous préférez les explications visuelles, vous pouvez toujours regarder la vidéo ci-dessous.

YouTube video

Merci à Zoobab pour le conseil.

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

YouTube video