4 LoRa-radiomoduulien testailua
LoRa on näppärä tapa siirtää tietoa langattomasti radioteitse.
Ebayssa on myynnissä edulliseen hintaan Arduinoon suoraan sopivia LoRa-moduuleita,
esimerkiksi SX1276-piirillä.
Ilman kunnollista antennia näiden kantomatka jää muutamaan sataan metriin, mutta kokeilussa
tämä on vain hyvä asia niin ei vahingossakaan häiritä muita.
Kannattaa huomioida että myynnissä on moduuleita usealle eri taajuusalueella ja kaikki niistä ei ole Suomessa sallittuja.
Myöskin kannattaa perehtyä Traficomin määräykseen, rajoitteita on esimerkiksi toimintasuhteen osalta.
Kokeilu tarvitsee kaksi identtistä kokoonpanoa (tukiasemassa piipparia ei tarvitse, mutta ei sen kytkeminen toki haittaakaan mitään).
Liikenteen periaate on seuraava:
LIIKKUVA TUKIASEMA
>?200< -->
<-- >!200<
(PIIP)
>?400< -->
<-- >!400<
(PIIP)
Ebayssa on myynnissä edulliseen hintaan Arduinoon suoraan sopivia LoRa-moduuleita,
esimerkiksi SX1276-piirillä.
Ilman kunnollista antennia näiden kantomatka jää muutamaan sataan metriin, mutta kokeilussa
tämä on vain hyvä asia niin ei vahingossakaan häiritä muita.
Kannattaa huomioida että myynnissä on moduuleita usealle eri taajuusalueella ja kaikki niistä ei ole Suomessa sallittuja.
Myöskin kannattaa perehtyä Traficomin määräykseen, rajoitteita on esimerkiksi toimintasuhteen osalta.
Kokeilu tarvitsee kaksi identtistä kokoonpanoa (tukiasemassa piipparia ei tarvitse, mutta ei sen kytkeminen toki haittaakaan mitään).
Liikenteen periaate on seuraava:
LIIKKUVA TUKIASEMA
>?200< -->
<-- >!200<
(PIIP)
>?400< -->
<-- >!400<
(PIIP)
-----------------------------------------------
Liikkuva asema lähettää tukiasemalle viestin >?200<
Tukiasema vastaanottaa paketin ja lähettää vastauksen >!200<
Kun liikkuva asema saa vastauksen oikein, se soittaa piipparia lyhyesti.
Jos vastaus tulee, mutta se on virheellinen, soitetaan piipparia kahdesti.
Tuo numero on joka kierroksella kasvava luku.
Ohjelmakoodissa liikkuva.ino rivillä
Tässä pitää nuo Traficomin määräykset huomioida, ettei lähetetä liian suurta aikaa
toimintasuhteen osalta.
Tuo numero on joka kierroksella kasvava luku.
Ohjelmakoodissa liikkuva.ino rivillä
if (kierros % 200 == 0) {
määritellään kuinka monen kierroksen välein tukiasemalle dataa lähetetään.Tässä pitää nuo Traficomin määräykset huomioida, ettei lähetetä liian suurta aikaa
toimintasuhteen osalta.
Liikkuvan aseman pakkasin reppuun muoviseen jäätelörasiaan virtapankin kera...
...ja lähdin koiran kanssa lenkille kuuntelemaan kentän kantavuutta.
Kaupungissa liikkuessa kannattaa harkita, onko välttämättä hyvä idea kävellä pitkin poikin
piipittävä reppu selässä vai miettiikö piipparin sijaan jonkun muun käyttöliittymän laitteella
mikäli haluaa välttää ylimääräisen hämmingin aiheuttamista.
LIIKKUVA ja TUKIASEMA molemmat samalla kytkennällä:
Arduinossa käytetty kirjasto: Lora by Sandeep Mistry Version 0.5.0
[liikkuva.ino]
#include <SPI.h>
#include <LoRa.h>
#define PIIPPARI 5
unsigned long kierros = 0;
//LORA TESTI LIIKKUVA ASEMA NANO
//Lähettää tukiasemalle ">?8<" JOSSA 8 JUOKSEVA NUMERO. Odottaa saavansa vastaukseksi ">!8<"
String vastaanotettu = "";
String lahetettava = "";
void piipita (int luku) {
for (int a = 0; a < luku; a++) {
digitalWrite(PIIPPARI, HIGH);
delay(100);
digitalWrite(PIIPPARI, LOW);
delay(50);
}
}
void setup() {
pinMode(PIIPPARI, OUTPUT);
Serial.begin(9600);
piipita(3);
Serial.println("Lora liikkuva käynnissä");
if (!LoRa.begin(868E6)) {
piipita(10);
Serial.println("Lora-moduuli ei toimi. Tarkasta kytkentä");
while (1);
}
}
void loop() {
//LÄHETETÄÄN JOKA NN KIERROS SANOMA TUKIASEMALLE
if (kierros % 200 == 0) {
Serial.print("Lähetetään: ");
lahetettava = ">?" + String(kierros) + "<";
LoRa.beginPacket();
Serial.println(lahetettava);
LoRa.print(lahetettava);
LoRa.endPacket();
}
// VASTAANOTETAAN DATAA
vastaanotettu="";
if (LoRa.parsePacket()) {//jOS LORASTA ON TULEMASSA DATAA
Serial.print("Vastaanotettu '");
while (LoRa.available()) {
vastaanotettu += char(LoRa.read());
}
Serial.println("Saatu sanoma kokonaan: " + vastaanotettu);
if (vastaanotettu[0] == '>') { //Sanoma kuuluu alkaa ">"-merkillä. Jos se ei ala, se tuskin on meille kuuluva paketti joten ei vastata siihen
if (vastaanotettu.substring(2) == lahetettava.substring(2)) {
piipita(1);
}
else{
piipita(2);
}
}
}
kierros++;
delay(50);
}
[tukiasema.ino]
#include <SPI.h>
#include <LoRa.h>
//LORA TESTI TUKIASEMA NANO
//ODOTTAA SAAVANSA LORALTA SANOMAN >?8< JOSSA 8 JUOKSEVA NUMERO. KUN SAA SEN, VASTAA >!8<
String vastaanotettu = "";
void setup() {
Serial.begin(9600);
Serial.println("Lora tukiasema käynnissä");
if (!LoRa.begin(868E6)) {
Serial.println("Lora-moduuli ei toimi. Tarkasta kytkentä");
while (1);
}
}
void loop() {
// VASTAANOTETAAN DATAA
vastaanotettu="";
int packetSize = LoRa.parsePacket(); //jOS LORASTA ON TULEMASSA DATAA
if (packetSize) {
// received a packet
Serial.print("Received packet '");
while (LoRa.available()) {
vastaanotettu += char(LoRa.read());
Serial.println(vastaanotettu);
}
Serial.println("Saatu sanoma kokonaan: " + vastaanotettu);
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
if (vastaanotettu[0] == '>') { //Sanoma kuuluu alkaa ">"-merkillä. Jos se ei ala, se tuskin on meille kuuluva paketti joten ei vastata siihen
Serial.print("Sending packet: ");
vastaanotettu[1] = '!';
Serial.println(vastaanotettu);
LoRa.beginPacket();
LoRa.print(vastaanotettu);
LoRa.endPacket();
}
delay(100);
}
}


Kommentit
Lähetä kommentti