Introduction: Sistem De Cartografiere a Retelelor LoRaWAN

In cadrul acestui program s-a dorit realizarea unui sistem de cartografiere a retelelor LoRaWAN.

Ce este LoRa?

LoRa este o tehnologie care pune la dipozitia dezvoltatorilor de solutii inteligente o transmisie de raza lunga si securizata a datelor, cu un consum redus de energie.Retelele publice si private care utilizeaza aceasta tehnologie pot oferi o acoperire care este mai mare decat cea a retelelor celulare existente. Este o tehnologie usor de conectat la orice infrastructura existenta. LoRa utilizeaza benzi de frecventa radio sub-gigahertz fara licenta, cum ar fi: 169 MHz, 433 MHz, 868 MHz (Europa) si 915 MHz (America de Nord).

Ce este LoRaWAN?

LoRaWAN este reteaua pe care LoRa opereaza. LoRaWAN este un protocol de transmisii radio prin care se formeaza retele de obiecte inteligente, cu nivel Media Access Control (Mac) si defineste protocolul de comunicare si arhitectura sistemului pentru o retea de Internet of Things, in timp ce componentele fizice LoRa permit legatura de comunicare pe distanţe lungi.

Cum am ales realizarea acestui proiect?

Prin intermediul unei placute Seeeduino Stalker voi lega un modul radio LoRaWAN ce va fi folosit pe post de

receptor. (va asculta dupa semnalele ce provin de la gateway urile de LoRaWAN)

Datele relevante: coordonate geografice, RSSI, timestamp vor fi salvate in format kml pentru a fi utilizate la

mappare in Google Earth.

Step 1: Componente Utilizate

Pentru realizarea acestui proiect am utilizat urmatoarele componente:

1. Seeeduino Stalker v2.3

2. Modul Convertor USB Serial FT232RL cu Mufa USB Mini

3. Modul GPS MTK-3329

4. Cablu Mini USB

5. Fire mama-tata

6. LCD RC2004A-BIW-ESX + MCP23008

7. microSD card 2Gb

8. Baterie CR2032

9. LoRa ACW-XB v1.1 ATIM

10. Antena wifi

Speficatii relevante Seeeduino Stalker v2.3

Microcontroller: ATmega328P

I/O pins: 20

Conectivitate: I2C, UART, SPI

UART Baud Rate : 115200 bps

Conectivitatea dintre acestea s-a realizat in urmatorul mod:

Pentru a face conexiunea intre placuta si calculator se conecteaza placuta la modulul FT232RL, iar apoi cablul USB mini intre cele 2 din urma. (Modulul FT232RL va comunica prin intermediul UART-ului cu Seeeduino).

Seeeduino Stalke - FT232RL

USB5V ↔ VCCRX

TXD ↔ TXD

RXD ↔ RXD

GND ↔ GND

DTR ↔ DTR

Bateria impreuna cu microSD cardul si modulul LoRa au fost atasate in locurile special create de pe placa.

Conectivitate GPS

Seeeduino Stalker - GPS

GND ↔ GND

Pin 7 ↔ RXA

Pin 8 ↔ TXA

3.3V ↔ VDD

In citirea coordonatele GPS am intampinat probleme referitoare la baud rate. Din cauza faptului ca interfata seriala a placutei Seeeduino este impartita cu modulul FT232RL a fost necesara setarea permanenta a baud rate-ului GPS-ului la valorea de 38400.

Conectivitate LCD

Datorita Port Expander-ului cu interfata I2C ce a fost lipit de LCD, conexiunea s-a realizat usor.

Seeeduino Stalker - MCP23008

USB5V ↔ 5V

GND ↔ GND

SDA ↔ SDA

SCL ↔ SCL

Step 2: Mediu De Dezvoltare

Programul a fost realizat in programul Arduino IDE cu urmatoarele specificatii:

Board: Arduino Pro or Pro Mini

Processor: ATmega328P (3.3V, 8MHz)

Step 3: Afisare Coordonate + Timestamp Pe LCD

Primul pas a fost afisarea coordonatelor GPS impreuna cu Data si Timpul pe LCD pentru a fi utilizate la mapparea in Google Earth.

Am utilizat urmatorul cod: (Mentionez ca este nevoie de importarea unor librarii si anume TinyGPS++ .h ,RTClib.h si LiquidCrystal.h)

Cod:

#include <RTClib.h>
#include <Wire.h>

#include <TinyGPS++.h>

#include <SoftwareSerial.h>

#include <LiquidCrystal.h>

static const int RXPin = 8, TXPin = 7;
static const uint32_t GPSBaud = 38400;

RTC_DS3231 rtc;

char t[32];

TinyGPSPlus gps;

SoftwareSerial ss(RXPin, TXPin);

LiquidCrystal lcd(0);

void setup()

{
lcd.begin(20, 4);

Serial.begin(9600);

Wire.begin();

rtc.begin();

ss.begin(GPSBaud);

delay(1000);

lcd.clear();

}

void loop()

{

DateTime now = rtc.now();

sprintf(t, "%02d:%02d:%02d %02d/%02d/%02d", now.hour(), now.minute(), now.second(), now.day(), now.month(), now.year());

delay(1000);

while (ss.available() > 0)

if (gps.encode(ss.read()))

displayInfo();

if (millis() > 5000 && gps.charsProcessed() < 10)
{

lcd.print(F("No GPS detected"));

while(true);

}

}

void displayInfo()
{ if (gps.location.isValid())

{

Serial.println(gps.location.lat(), 6);

Serial.println(gps.location.lng(), 6);

Serial.println(t);

lcd.setCursor(0,0);

lcd.print("Lat=");

lcd.print(gps.location.lat(), 6);

lcd.setCursor(0,1);

lcd.print("Lng=");

lcd.print(gps.location.lng(), 6);

lcd.setCursor(0,2);

lcd.print(t);

}

else
{

lcd.print("INVALID");

lcd.clear();

}

if (millis() > 5000 && gps.charsProcessed() < 10)

{

Serial.println(F("No GPS detected: check wiring."));

while(true);

}

}

Step 4: Salvare Date Pe MicroSD Card

Librarie utilizata: SD.h

Pentru salvarea datelor pe microSD card am adaugat urmatoarele linii:

File myFile;

void setup()

{

.....

Serial.print("Initializing SD card...");
pinMode(10, OUTPUT);

if (!SD.begin(4))

{ Serial.println("initialization failed!");

return;

}

Serial.println("initialization done.");

}


void loop()

{

....

while (ss.available() > 0)
if (gps.encode(ss.read()))

{ displayInfo();

writeInfo();

}

}

void writeInfo()
{ if (gps.location.isValid())

{ myFile = SD.open("testf.txt", FILE_WRITE);

if (myFile) {

Serial.print("Writing to testf.txt...");

myFile.println(gps.location.lat(), 6);

myFile.println(gps.location.lng(), 6);

myFile.close(); }

}

else {

myFile = SD.open("testf.txt", FILE_WRITE);

if (myFile) {

Serial.print("Invalid");

myFile.close(); }

}

}

Pasul urmator presupune transofmarea fisierului .txt in .kml si incarcarea acestuia in Google Earth.