Lorawan - RAK3172 + The Things Network (TTN)
Wat is LoRaWAN?
LoRaWAN is een draadloos communicatienetwerk voor het verbinden van apparaten over grote(re) afstanden. Het is energiezuinig, betrouwbaar en geschikt voor toepassingen waarbij sensoren kleine hoeveelheden data versturen. Denk bijvoorbeeld aan monitoring van temperatuur, luchtkwaliteit, waterstanden of energieverbruik.
The Things Network (TTN)
Voor LoRaWAN zijn verschillende netwerken en platformen beschikbaar. Voor dit project heb ik gekozen voor The Things Network (TTN). Een belangrijke reden hiervoor is dat TTN gratis te gebruiken is en daarmee een laagdrempelige manier biedt om met LoRaWAN te experimenteren en toepassingen te ontwikkelen.
RAK3172 / RAK3272S
Er wordt gebruikgemaakt van de RAK3172. Omdat dit een SMD-module is, kan ook de RAK3272S Proto Board worden gebruikt. Hierop is de RAK3172 al voorgemonteerd. Het bord is energiezuinig en eenvoudig te programmeren, waardoor het geschikt is voor het testen van sensoren en IoT-toepassingen.
Zorg ervoor dat de antenne is aangesloten voordat je de RAK3172 inschakelt. Zonder antenne kan de module onherstelbaar beschadigd raken.
De reden dat ik voor de RAK3272S heb gekozen, is omdat deze een microcontroller bevat voor het aansluiten van externe sensoren. Daarnaast heeft het bord een laag energieverbruik en is er duidelijke documentatie beschikbaar.
Kies je voor de RAK3172 om je eigen board te ontwikkelen, dan heb je nog meer programmeerbare pinnen tot je beschikking voor externe toepassingen.
https://docs.rakwireless.com/product-categories/wisduo/rak3272s-breakout-board/
Om met de module te communiceren heb je een USB-Serial adapter nodig. Je kan hiervoor de RAKDAP1 gebruiken, maar elke andere USB-Serial adapter met 3.3V uitgang werkt ook.
De module werkt op 3,3 V. Sluit nooit 5 V aan, want hierdoor kan de module onherstelbaar beschadigd raken.
Je sluit het als volgt aan.
USB-Serial | RAK3272S |
3.3V | 3.3V |
GND | GND |
TX | UART1_RX |
RX | UART1_TX |
Hierna is het een kwestie van je favoriete terminalprogramma te openen, bijvoorbeeld PuTTY voor Windows of CuteCom voor Linux. En gebruik onderstaande instellingen.
Baudrate | 115200 |
Databits | 8 |
Pariteit | Geen (N) |
Stopbits | 1 |
Als je nu het commando AT stuurt zou je OK terug moeten krijgen.
Het kan voorkomen dat je geen OK terugkrijgt, maar een melding dat het commando niet wordt herkend. In dat geval staat de module niet in boot mode.
Geef eerst het commando AT+BOOT. Eventueel kun je daarna ATZ als commando gebruiken om de module opnieuw op te starten.
Nu je de module succesvol hebt aangesloten, moeten we deze eerst correct instellen. Voer hiervoor de onderstaande commando’s in.
AT+NJM=1 | zet de RAK3172 in OTAA-modus (Over-The-Air Activation). |
AT+BAND=4 | stelt de RAK3172 in op de EU868-frequentieband. |
AT+CLASS=A | stelt de RAK3172 in op LoRaWAN Class A. |
Alle commando’s worden gevolgd door een OK-melding wanneer ze succesvol zijn uitgevoerd.
-------------------------
insert TTN uitleg
--------------------------
Nu is het tijd om je module aan te melden bij TTN (The Things Network). Hiervoor heb je eerst twee waarden uit de module nodig. Noteer deze bijvoorbeeld in Kladblok, zodat je ze later eenvoudig kunt terugvinden.
AT+DEVEUI=? | Toont de huidige DevEUI van de RAK3172. Deze heb je nodig voor het DevEUI veld bij TTN |
AT+APPEUI="? | Toont de huidige AppEUI van de RAK3172. Deze heb je nodig voor het JoinEUI veld bij TTN |
Ik ga er vanuit dat je al een account bij TTN hebt. Zo niet dan kan je die eenvouding aanmaken via: https://eu1.cloud.thethings.network/
Maak als eerst een applicatie aan bij TTN. Je mag zelf hier iets van maken.
Create application - Console - The Things Network
Wanneer de applicatie is aangemaakt kun je het end device toevoegen.
Register end device - geocache - The Things Network
AT+APPKEY=******** < Krijg je van TTN
AT+DEVEUI= ******** < Heb je nodig bij het aanmaken van je device in TTN.
AT+APPEUI= ******** < Heb je nodig bij het aanmaken van je device in TTN.
Aanmelding op netwerk en test versturen.
AT+JOIN hierna volgt OK en even later +EVT:JOINED
Het kan voorkomen dat je bij het aanmelden voor +EVT:JOINED één of meerdere keren de melding +EVT:JOIN_FAILED_* krijgt. Vooral bij de eerste keer aanmelden kan het even duren voordat alles goed werkt. Wacht daarom een paar minuten en probeer het daarna opnieuw. In de meeste gevallen werkt het vervolgens gewoon.
Krijg je de melding +EVT:JOIN_FAILED_RX_TIMEOUT, dan is er aan één van de twee kanten iets verkeerd ingevuld. Het kan ook zijn dat er simpelweg geen of onvoldoende bereik is.
Nu je device is gejoined, kun je dit bevestigen door het commando AT+NJS=1 te sturen. Je ontvangt vervolgens een bevestiging met de melding +EVT:SEND_CONFIRMED_OK.
Nu kunnen we daadwerkelijk data versturen. Gebruik hiervoor het onderstaande commando:
AT+SEND=1:48656C6C6F
Hiermee verstuur je de hex-data 48 65 6C 6C 6F, oftewel "Hello". Het succesvol versturen van de data wordt vervolgens bevestigd met de melding +EVT:SEND_CONFIRMED_OK.
