emission-p2p.ino
Le lien LoRa le plus simple avec la MKR WAN 1300 : un paquet texte toutes les cinq secondes en mode point à point, sans infrastructure ni passerelle. Le récepteur est une seconde MKR WAN ; le mode ACK confirme la bonne réception quand la carte est à portée.
Matériel requis
Une Arduino MKR WAN 1300 (microcontrôleur SAMD21, modem LoRa Semtech SX1272 point à point, pas de pile LoRaWAN embarquée, antenne 868/915 MHz). Deux cartes LoRa (deux MKR WAN 1300, ou 1300 + 1310), deux antennes 868 MHz, câble USB pour chacune.
Câblage
Aucun câblage : antenne vissée sur chaque carte, USB pour l'alimentation et le suivi série.
Fonctionnement
modem.begin(EU868) initialise le SX1272 ; beginPacket/endPacket(true) envoie avec attente d'acquittement. Le SF par défaut (7) offre déjà plusieurs kilomètres en visibilité.
Exécution
Installez Arduino SAMD Boards et la bibliothèque MKRWAN, sélectionnez la carte, téléversez. Il faut DEUX cartes LoRa (deux MKR WAN 1300, ou une 1300 et une 1310) pour voir les échanges ; réglez le même plan de fréquences dans le code.
Variantes
Passez le second argument à false pour émettre sans ACK (plus sobre), ou envoyez des struct binaires pour économiser l'airtime.
emission-p2p.ino
// Emission LoRa point a point avec la MKR WAN 1300 (MKRWAN).
// Il faut une seconde carte LoRa en reception pour voir les paquets.
#include <MKRWAN.h>
LoRaModem modem;
String message;
unsigned long dernier = 0;
void setup() {
Serial.begin(115200);
while (!Serial);
if (!modem.begin(EU868)) {
Serial.println(F("Modem SX1272 KO"));
while (true);
}
modem.beginPacket();
Serial.print(F("Bande : "));
Serial.println(modem.getBand());
Serial.print(F("SF courant : "));
Serial.println(modem.getSpreadingFactor());
}
void loop() {
if (millis() - dernier < 5000) return;
dernier = millis();
message = "mk1300 " + String(millis() / 1000);
modem.beginPacket();
modem.print(message);
int envoyes = modem.endPacket(true); // attente ACK si visible
if (envoyes > 0) Serial.println("Envoye : " + message);
else Serial.println(F("Echec d'emission"));
}