- Το LoRaWAN απαιτεί μια σωστά διαμορφωμένη πύλη (συχνότητα, δίκτυο IP, διακομιστή) και καταχωρημένη στο TTN για να επικοινωνούν οι κόμβοι.
- Οι τελικές συσκευές καταχωρούνται σε εφαρμογές TTN χρησιμοποιώντας DevEUI, JoinEUI/AppEUI και AppKey (OTAA) ή NWKSKEY/APPSKEY/DEVADDR (ABP).
- Είναι δυνατή η χρήση εμπορικών αισθητήρων (SenseCAP, Decentlab, Dragino, Tabs) ή κόμβων DIY με ESP32/Arduino και βιβλιοθήκη LMIC για την αποστολή δεδομένων στο TTN.
- Το TTN διευκολύνει τις ενσωματώσεις με το Node-RED και εξωτερικές πλατφόρμες για την οπτικοποίηση και αξιοποίηση δεδομένων IoT που συλλέγονται από το δίκτυο LoRaWAN.
Αν έχετε φτάσει μέχρι εδώ, είναι επειδή θέλετε να μάθετε πώς να συνδέσετε έναν κόμβο LoRaWAN στο TTN από την αρχή μέχρι το τέλος , χωρίς να παραλείψετε τίποτα: πύλες, κόμβους, αισθητήρες, βιβλιοθήκες, κλειδιά και διαμόρφωση δικτύου. Τα καλά νέα είναι ότι δεν χρειάζεται να είστε ειδικός στις τηλεπικοινωνίες. Με έναν καλά δομημένο οδηγό και λίγη υπομονή, μπορείτε να δημιουργήσετε το δικό σας λειτουργικό δίκτυο LoRaWAN σε χρόνο μηδέν.
Στις επόμενες γραμμές, θα δείτε, βήμα προς βήμα, πώς να ρυθμίσετε μια πύλη, να την καταχωρήσετε στο The Things Network, να προσθέσετε εφαρμογές και τελικές συσκευές και να προγραμματίσετε κόμβους LoRaWAN με βάση πλακέτες ESP32 ή Arduino, καθώς και παραδείγματα με εμπορικούς αισθητήρες (SenseCAP, Decentlab, Dragino, Tabs Browan). Θα καλύψουμε επίσης πρακτικές λεπτομέρειες που δεν βρίσκονται πάντα στα εγχειρίδια: συνηθισμένα προβλήματα πλήκτρων, επιλογή συχνότητας, φυσικές συνδέσεις ακίδων και κόλπα για να επαληθεύσετε ότι όλα επικοινωνούν πραγματικά με το TTN.
Τι είναι το LoRa και το LoRaWAN και γιατί χρησιμοποιείται το TTN;
Το LoRa και το LoRaWAN είναι δύο σχετικές έννοιες, αλλά δεν είναι το ίδιο . Το LoRa είναι μια διαμόρφωση ραδιοσυχνοτήτων μεγάλης εμβέλειας και χαμηλής ισχύος, ιδιοκτησίας της Semtech. Το LoRaWAN είναι το πρωτόκολλο δικτύου που βασίζεται στο LoRa για τη διαχείριση του τρόπου με τον οποίο οι τελικές συσκευές (κόμβοι) επικοινωνούν με τις πύλες και τον διακομιστή δικτύου.
Σε ένα τυπικό δίκτυο LoRaWAN, υπάρχουν δύο κύρια στοιχεία: οι πύλες και οι κόμβοι . Οι πύλες λειτουργούν ως "γέφυρες" μεταξύ του κόσμου LoRa (ραδιόφωνο) και του κόσμου IP (διαδίκτυο), προωθώντας πακέτα στον διακομιστή LoRaWAN. Οι κόμβοι είναι οι αισθητήρες ή οι ενεργοποιητές που στέλνουν και λαμβάνουν πληροφορίες χρησιμοποιώντας το LoRa προς και από αυτές τις πύλες.
Για να συνδέσετε όλα αυτά, χρειάζεστε έναν διακομιστή LoRaWAN. Μπορείτε να πληρώσετε για μια ιδιωτική υπηρεσία (φορείς όπως Movistar, Vodafone ή πλατφόρμες όπως Loriot, Actility, Kerlink) ή να ακολουθήσετε την κοινοτική οδό χρησιμοποιώντας το The Things Network (TTN), το οποίο είναι ένα δημόσιο, ανοιχτό δίκτυο που συντηρείται από την κοινότητα.
Το TTN έχει το πλεονέκτημα ότι σέβεται τη διακυβέρνηση δεδομένων, είναι ουδέτερο και σας επιτρέπει να συνεισφέρετε πύλες στο δίκτυο . Σε πολλές πόλεις, οι άνθρωποι εγκαθιστούν πύλες με δική τους πρωτοβουλία και ο καθένας μπορεί να επωφεληθεί από αυτήν την κάλυψη χωρίς κόστος εκτός από το υλικό των κόμβων.
Συχνότητες, κανάλια και περιορισμοί LoRaWAN
Πριν αγοράσετε οποιαδήποτε συσκευή, είναι σημαντικό να βεβαιωθείτε ότι η συχνότητα LoRa είναι συμβατή με την περιοχή σας . Η εργασία στην Ευρώπη δεν είναι το ίδιο με την εργασία στις Ηνωμένες Πολιτείες ή την Ασία. Εάν επιλέξετε λάθος ζώνη, η συσκευή μπορεί να είναι άχρηστη ή ακόμα και παράνομη.
Στην Ευρώπη, χρησιμοποιείται κυρίως η ζώνη των 868 MHz (EU868) . Στις Ηνωμένες Πολιτείες, η τυπική ζώνη είναι τα 915 MHz (US915). Οι Κινέζοι λιανοπωλητές προσφέρουν μια μεγάλη ποικιλία μονάδων 433 MHz, οι οποίες μπορεί να είναι δελεαστικές λόγω της τιμής τους, αλλά δεν είναι πάντα συμβατές με το LoRaWAN ή το λειτουργικό σύστημα της χώρας σας.
Εκτός από τη συχνότητα, το LoRaWAN οργανώνεται σε κανάλια, συντελεστή διασποράς (SF) και σχέδια συχνότητας . Το SF ορίζει την ταχύτητα και την εμβέλεια: ένα υψηλότερο SF σημαίνει μεγαλύτερη εμβέλεια αλλά και περισσότερο χρόνο στον αέρα, κάτι που καταναλώνει περισσότερη ισχύ και καταλαμβάνει περισσότερο χώρο καναλιού.
Στην Ευρώπη, ισχύει ο γνωστός «κανόνας του 1%» : κάθε συσκευή μπορεί να καταλαμβάνει το ραδιοφωνικό κανάλι μόνο για ένα μικρό ποσοστό του χρόνου, συνήθως περίπου 1%. Αυτό περιορίζει τη συχνότητα αποστολής δεδομένων και είναι ένας από τους λόγους για τους οποίους οι αισθητήρες LoRaWAN συνήθως μεταδίδουν κάθε λίγα λεπτά, όχι κάθε λίγα δευτερόλεπτα.
Προετοιμασία και επιλογή υλικού για πύλη και κόμβους
Για να δημιουργήσετε ένα πρακτικό δίκτυο, θα χρειαστείτε τουλάχιστον μία πύλη LoRaWAN και έναν ή περισσότερους κόμβους (αισθητήρες) . Μπορείτε να συνδυάσετε υλικό από διαφορετικούς κατασκευαστές, εφόσον συμμορφώνονται με το πρότυπο LoRaWAN και λειτουργούν στην ίδια ζώνη συχνοτήτων.
Ένα δημοφιλές μοντέλο εσωτερικής πύλης είναι το Dragino LPS8 , το οποίο ενσωματώνει έναν συγκεντρωτή SX1308 και υποστηρίζει έως και 10 παράλληλα κανάλια. Διατίθεται προρυθμισμένο με διαφορετικά σχέδια συχνότητας ανάλογα με τη χώρα και στην Ευρώπη λειτουργεί στα 868 MHz. Τροφοδοτείται από 5V μέσω USB-C και συνδέεται στο δίκτυο IP μέσω RJ-45 ή Wi-Fi.
Άλλα παραδείγματα πυλών που λειτουργούν καλά με το TTN περιλαμβάνουν το RAK7289 (εξωτερική, ανθεκτική και με επιλογή LTE/4G) ή τις επίσημες πύλες TTN-GW-868 MHz, σχεδιασμένες για την ανάπτυξη κάλυψης σε πόλεις ή έργα Smart City. Είναι επίσης δυνατή η κατασκευή μιας πύλης ενός κελιού με μια πλακέτα ESP32 και μια μονάδα SX1262 LoRa , όπως γίνεται με το κιτ Wio-SX1262 και ένα Xiaomi ESP32S3.
Ως κόμβοι έχετε δύο επιλογές: χρησιμοποιήστε εμπορικούς αισθητήρες που είναι ήδη έτοιμοι για LoRaWAN (SenseCAP S210x, Tabs Browan TBHH100, Dragino TrackerD, Decentlab, κ.λπ.) ή δημιουργήστε τους δικούς σας κόμβους με πλακέτες ανάπτυξης όπως TTGO LoRa32 V2.0, ESP32 + RMF95, Arduino + μονάδα LoRa, κ.λπ.
Διαμορφώστε μια πύλη LoRaWAN και συνδέστε την με το TTN
Το πρώτο σημαντικό βήμα στο έργο είναι η έναρξη λειτουργίας της πύλης και η εμφάνιση της ένδειξης "Connected" στο TTN . Παρόλο που κάθε κατασκευαστής έχει τον δικό του πίνακα ελέγχου, τα εννοιολογικά βήματα είναι πολύ παρόμοια.
Με ένα Dragino LPS8, για παράδειγμα, μπορείτε να το διαχειριστείτε μέσω SSH ή HTTP . Εάν το συνδέσετε μέσω καλωδίου RJ-45, θα πρέπει να βρείτε τη διεύθυνση IP που έχει εκχωρηθεί από τον διακομιστή DHCP (χρησιμοποιώντας έναν σαρωτή IP ή μέσω του δρομολογητή σας). Εάν προτιμάτε την αρχική εγκατάσταση μέσω Wi-Fi, το LPS8 δημιουργεί το δικό του δίκτυο με ένα SSID όπως "dragino-xxxxx" και έναν προεπιλεγμένο κωδικό πρόσβασης όπως "dragino+dragino". Η πρόσβαση στη διεύθυνση IP 10.130.1.1 θα σας μεταφέρει στον πίνακα ιστού, όπου το αρχικό όνομα χρήστη και ο κωδικός πρόσβασης είναι συνήθως "admin/dragino".
Μόλις εισέλθετε, θα δείτε ένα μενού με αρκετές ενότητες και ορισμένες επιλογές ενδέχεται να έχουν έναν κόκκινο σταυρό που υποδεικνύει ότι λείπει η διαμόρφωση . Το πρώτο βήμα είναι να επιλέξετε το σωστό σχέδιο συχνότητας για την περιοχή σας στην καρτέλα LoRa. Στην Ευρώπη, αυτό είναι το EU868 (περίπου 868 MHz).
Στη συνέχεια, πατήστε την καρτέλα LoRaWAN ή Διακομιστής Δικτύου . Εκεί καθορίζετε σε ποιον διακομιστή LoRaWAN θα συνδεθεί η πύλη. Για το TTN, επιλέξτε "TTN" ως πάροχο και εισαγάγετε τη διεύθυνση του ευρωπαϊκού διακομιστή (για παράδειγμα, eu1.cloud.thethings.network), διατηρώντας τις θύρες UDP (συνήθως 1700 για μεταφόρτωση και λήψη). Στην ίδια ενότητα, θα δείτε το Αναγνωριστικό Πύλης ή EUI, το οποίο θα χρειαστούμε αργότερα στο TTN.
Στην ενότητα Δίκτυο, ρυθμίζετε τον τρόπο με τον οποίο συνδέεται η πύλη στο διαδίκτυο : LAN, WAN ή Wi-Fi WAN. Για τη διεπαφή WAN, μπορείτε να επιλέξετε μια στατική διεύθυνση IP ή DHCP. Όποτε είναι δυνατόν, συνιστάται μια στατική διεύθυνση IP μέσω ενσύρματης σύνδεσης για πιο σταθερή σύνδεση και ευκολότερη πρόσβαση στη διαχείριση. Η ενότητα LAN χρησιμοποιείται συνήθως για το εσωτερικό δίκτυο σημείου πρόσβασης της πύλης. Είναι καλύτερο να μην αλλάξετε αυτήν τη ρύθμιση χωρίς να κατανοήσετε πλήρως τι κάνετε, καθώς θα μπορούσε να σας σώσει τη ζωή εάν κάτι πάει στραβά.
Στην ενότητα WiFi, μπορείτε να προσαρμόσετε τόσο το σημείο πρόσβασης που δημιουργείται από την ίδια την πύλη όσο και τη σύνδεσή της σε ένα εξωτερικό δίκτυο WiFi . Για λόγους ασφαλείας, συνιστάται να αλλάξετε το προεπιλεγμένο SSID και τον κωδικό πρόσβασης του σημείου πρόσβασης που προήλθαν από το εργοστάσιο.
Στις πύλες RAK7289, η διαδικασία είναι παρόμοια: αποκτήστε πρόσβαση στον πίνακα ιστού, ρυθμίστε τη διεύθυνση IP (στατική ή DHCP) μέσω του Δικτύου → Διεπαφή WAN και, στη συνέχεια, στο Δίκτυο LoRa → Ρυθμίσεις δικτύου → Προώθηση πακέτων, εισαγάγετε τα στοιχεία του διακομιστή TTN και σημειώστε το EUI της πύλης για να το καταχωρήσετε στο TTN αργότερα. Εάν βρίσκεστε πίσω από έναν δρομολογητή που παρέχει DHCP, μπορείτε να εντοπίσετε τη διεύθυνση IP της πύλης κοιτάζοντας τον πίνακα μίσθωσης (ανά όνομα κεντρικού υπολογιστή, για παράδειγμα, "RAK7289") ή χρησιμοποιώντας εργαλεία όπως το nmap.
Εγγραφή πύλης στο The Things Network
Μόλις η πύλη αποκτήσει πρόσβαση στο διαδίκτυο, πρέπει να την καταχωρίσετε στο TTN . Εάν δεν έχετε λογαριασμό, εγγραφείτε πρώτα στον ιστότοπο του The Things Network και, στη συνέχεια, αποκτήστε πρόσβαση στην Κονσόλα στην αντίστοιχη περιοχή (για παράδειγμα, https://eu1.cloud.thethings.network/).
Μέσα στην κονσόλα, επιλέξτε την ενότητα Πύλες και κάντε κλικ στην επιλογή «Εγγραφή πύλης» . Το TTN θα σας ζητήσει ένα Αναγνωριστικό Πύλης (ένα μοναδικό όνομα στον λογαριασμό σας) και, ανάλογα με τον τύπο πύλης, το EUI της πύλης. Για τις πύλες Dragino LPS8 που χρησιμοποιούν τον κλασικό προωθητή πακέτων, πρέπει να επιλέξετε την επιλογή «Χρησιμοποιώ τον παλαιότερο προωθητή πακέτων».
Επιπλέον, θα καθορίσετε το πρόγραμμα συχνότητας (EU868 για την Ευρώπη) , την αντίστοιχη περιοχή ή δρομολογητή και, προαιρετικά, την τοποθεσία (συντεταγμένες, εσωτερική/εξωτερική, κ.λπ.). Σε πύλες όπως η μονοκυψελοειδής με XIAO ESP32S3 και Wio-SX1262, το ίδιο το υλικολογισμικό ενδέχεται να εμφανίζει το αναγνωριστικό πύλης μέσω της σειριακής θύρας κατά την εκκίνηση. Απλώς αντιγράψτε το και χρησιμοποιήστε το στη φόρμα εγγραφής.
Αφού συμπληρώσετε αυτές τις πληροφορίες και καταχωρήσετε την πύλη, το TTN θα εμφανίσει έναν έλεγχο κατάστασης ("Συνδεδεμένο" ή "Αποσυνδεδεμένο") και μια ενότητα "Κυκλοφορία" όπου μπορείτε να δείτε τη ροή πακέτων σε πραγματικό χρόνο. Εάν όλα έχουν ρυθμιστεί σωστά τόσο στην πύλη όσο και στο TTN, θα πρέπει να δείτε την αλλαγή σε "Συνδεδεμένο" μέσα σε ένα ή δύο λεπτά και να αρχίσετε να βλέπετε κίνηση όταν οι κόμβοι μεταδίδουν.
Αυτό σημαίνει ότι η υποδομή (πύλη + διακομιστής) είναι πλέον λειτουργική . Από εδώ, τίθεται σε εφαρμογή η διαμόρφωση των εφαρμογών και των τελικών συσκευών.
Δημιουργία εφαρμογής και εγγραφή κόμβου στο TTN
Στο TTN, οι συσκευές δεν καταχωρούνται απευθείας στη ρίζα του λογαριασμού, αλλά μάλλον μέσα σε εφαρμογές . Μια εφαρμογή ομαδοποιεί έναν ή περισσότερους κόμβους που στέλνουν σχετικά δεδομένα, για παράδειγμα, όλους τους περιβαλλοντικούς αισθητήρες σε ένα κτίριο ή αρκετούς ιχνηλάτες GPS σε ένα εκπαιδευτικό έργο.
Στην κονσόλα TTN, μεταβείτε στην ενότητα Εφαρμογές και δημιουργήστε μια νέα εφαρμογή . Δώστε της ένα μοναδικό αναγνωριστικό, προαιρετικά μια περιγραφή, και επιλέξτε την κατάλληλη περιοχή. Μέσα σε αυτήν την εφαρμογή, θα καταχωρίσετε κάθε κόμβο LoRaWAN με τα διαπιστευτήριά του (DevEUI, JoinEUI/AppEUI και AppKey ή άλλα κλειδιά ανάλογα με τη μέθοδο ενεργοποίησης).
Για εμπορικούς αισθητήρες όπως οι αισθητήρες θερμοκρασίας και υγρασίας Browan TBHH100-868 , συνήθως επισυνάπτεται μια ετικέτα με τα DevEUI, AppEUI και AppKey. Συνήθως χρησιμοποιούν τη μέθοδο OTAA (Over-The-Air Activation), η οποία δημιουργεί βασικές συνεδρίες με κάθε σύνδεση στο δίκτυο, καθιστώντας την πιο ασφαλή από το ABP.
Με το OTAA, στο TTN επιλέγετε να καταχωρήσετε μια νέα τερματική συσκευή, εισάγετε JoinEUI (AppEUI), DevEUI και AppKey , επαληθεύετε τα δεδομένα και επιβεβαιώνετε. Μόλις αποθηκευτεί, εάν ο κόμβος έχει ρυθμιστεί σωστά και βρίσκεται εντός εμβέλειας μιας πύλης, θα δει τα beacons δικτύου, θα εκτελέσει τη διαδικασία σύνδεσης και θα αρχίσετε να βλέπετε μηνύματα uplink με τις μετρήσεις τους στην κονσόλα.
Το ίδιο ισχύει και για αισθητήρες όπως οι αισθητήρες στάθμης και θερμοκρασίας της Decentlab : ο κατασκευαστής παρέχει το ID, το DevEUI, το AppEUI και το AppKey, αλλά δεν γνωρίζει εκ των προτέρων ποιον διακομιστή θα χρησιμοποιήσετε. Είστε υπεύθυνοι για την καταχώριση αυτών των πληροφοριών στο TTN (ή σε άλλον διακομιστή), ώστε να μπορεί να καταχωρηθεί ο αισθητήρας. Πολλές συσκευές Decentlab έρχονται προεγγεγραμμένες στο TTN, εάν το ζητήσετε, γεγονός που απλοποιεί περαιτέρω τη διαδικασία.
Ρύθμιση παραμέτρων εμπορικών αισθητήρων LoRaWAN
Ας δούμε μερικά συγκεκριμένα παραδείγματα για το πώς να προετοιμάσετε και να καταχωρίσετε εμπορικούς αισθητήρες LoRaWAN που στη συνέχεια θα επικοινωνούν με το TTN μέσω της πύλης σας.
Στη σειρά SenseCAP S210x (για παράδειγμα, αισθητήρες περιβάλλοντος), η τυπική ροή εργασίας είναι η χρήση της εφαρμογής SenseCraft του κατασκευαστή . Αρχικά, κατεβάζετε την εφαρμογή, ενεργοποιείτε τον αισθητήρα με ένα κουμπί (κρατώντας το πατημένο για λίγα δευτερόλεπτα μέχρι να αναβοσβήνει η λυχνία LED κάθε δευτερόλεπτο) και, στη συνέχεια, στην εφαρμογή, επιλέγετε "Σάρωση" για να διαβάσετε τον κωδικό QR της συσκευής.
Μέσα στην εφαρμογή, υπάρχει μια λειτουργία "Προηγμένη διαμόρφωση" όπου επιλέγετε "The Things Network" ως πλατφόρμα . Πρέπει να επιλέξετε το ίδιο πρόγραμμα συχνότητας με την πύλη σας (για παράδειγμα, EU868) και να επαληθεύσετε ότι η λειτουργία σύνδεσης είναι OTAA. Η εφαρμογή θα εμφανίσει το Device EUI, το AppEUI (JoinEUI) και το AppKey. Είναι καλή ιδέα να τα σημειώσετε, επειδή θα πρέπει να τα εισαγάγετε στο TTN κατά την εγγραφή της συσκευής.
Στην περίπτωση του αισθητήρα Tabs Browan TBHH100-868 , τα πλήκτρα είναι προρυθμισμένα από το εργοστάσιο. Ο αισθητήρας μετρά τη θερμοκρασία και την υγρασία, τροφοδοτείται από μια μπαταρία 3,6V και μεταδίδει δεδομένα σύμφωνα με τους εξής κανόνες: κάθε 60 λεπτά εάν δεν υπάρχει αλλαγή ή νωρίτερα εάν η θερμοκρασία αλλάξει κατά ±2°C ή η υγρασία κατά ±5%. Για να το καταχωρήσετε, απλώς εισαγάγετε τα APPKey, APPEUI και DevEUI που παρέχονται από τον κατασκευαστή στον διακομιστή LoRaWAN (για παράδειγμα TTN). Μερικές φορές μπορεί να υπάρχει πρόβλημα με τη μορφή ή τη σειρά των byte (msb/lsb), επομένως είναι σημαντικό να το ελέγξετε εάν δεν συνδεθεί την πρώτη φορά.
Οι συσκευές Dragino TrackerD χρησιμοποιούνται ως ιχνηλάτες GPS με κουμπί πανικού. Κάθε μονάδα έχει το δικό της σύνολο κλειδιών LoRaWAN. Στο TTN, αυτά συνήθως καταχωρούνται στην ίδια εφαρμογή (π.χ., "παρακολούθηση πορείας") και η συσκευή διαμορφώνεται, εάν είναι απαραίτητο, μέσω σειριακής θύρας (USB) χρησιμοποιώντας εντολές AT. Η τεκμηρίωση περιγράφει λεπτομερώς τις εντολές για τη ρύθμιση του ρυθμού μετάδοσης, της συμπεριφοράς συναγερμού κ.λπ. Σημαντικό: Πολλά υλικολογισμικά Dragino απαιτούν οι εντολές AT να επικολλώνται ολόκληρες στο τερματικό, όχι να πληκτρολογούνται χαρακτήρα προς χαρακτήρα.
Σε αισθητήρες όπως οι αισθητήρες στάθμης, πίεσης ή περιβάλλοντος της Decentlab , η φιλοσοφία είναι παρόμοια: χρησιμοποιούνται DevEUI, AppEUI και AppKey για τη σύνδεσή τους με το TTN (ή άλλο δίκτυο). Το Decentlab συνήθως ορίζει ένα διάστημα μετάδοσης 10 λεπτών, επειδή αποτελεί αποδεδειγμένο συμβιβασμό μεταξύ κατανάλωσης δεδομένων και ανάλυσης, αν και αυτό μπορεί να τροποποιηθεί κατόπιν αιτήματος ή μέσω διαμόρφωσης. Οι χρήστες μπορούν να δουν τα δεδομένα στην πλατφόρμα cloud του κατασκευαστή ή να ενσωματώσουν τη συσκευή σε πλατφόρμες τρίτων (MyDevices, ResIoT, WMW, κ.λπ.) προσθέτοντας τον κατάλληλο αποκωδικοποιητή ωφέλιμου φορτίου.
Δημιουργήστε τον δικό σας κόμβο LoRaWAN με υλικό ανοιχτού κώδικα
Αν σας αρέσει να πειραματίζεστε, η πιο διασκεδαστική επιλογή είναι συχνά η κατασκευή και ο προγραμματισμός του δικού σας κόμβου LoRaWAN . Ένας πολύ δημοφιλής συνδυασμός είναι η χρήση μιας πλακέτας που βασίζεται σε ESP32 με ενσωματωμένο LoRa, όπως το TTGO LoRa32 V2.0 868 MHz, και η προσθήκη ενός απλού αισθητήρα, για παράδειγμα, ενός αισθητήρα θερμοκρασίας DS18B20.
Αυτή η προσέγγιση απαιτεί τέσσερα κομμάτια: την πλακέτα ελέγχου (ESP32, Arduino, κ.λπ.), τη μονάδα ραδιοσυχνοτήτων LoRa (για παράδειγμα, έναν RFM95 τύπου SX1276/78), τον αισθητήρα που θέλετε να μετρήσετε και, προαιρετικά, περιφερειακά όπως μια οθόνη OLED για την τοπική εμφάνιση δεδομένων.
Το TTGO LoRa32 V2.0 διαθέτει ενσωματωμένο πομποδέκτη LoRa και, ανάλογα με την έκδοση, μια μικρή οθόνη OLED. Βασισμένο στο ESP32, παρέχει WiFi και Bluetooth, και σε πολλές περιπτώσεις, είναι επίσης ιδανικό για την κατασκευή μιας μίνι πύλης ενός καναλιού όταν είναι συνδεδεμένο στο διαδίκτυο. Ωστόσο, σε αυτήν την πλακέτα και σε παρόμοιες, ορισμένα σήματα από τη μονάδα LoRa (DIO1, DIO2) δεν είναι προ-καλωδιωμένα στον μικροελεγκτή και θα πρέπει να τα συνδέσετε μόνοι σας.
Για παράδειγμα, το TTGO LoRa32 V2.0 χρησιμοποιεί συνήθως το ακόλουθο pinout για το LoRa: SCK στο GPIO5, MISO στο GPIO19, MOSI στο GPIO27, CS στο GPIO18, RESET στο GPIO14 και DIO0 στο GPIO26 . Τα DIO1 και DIO2 συνήθως συνδέονται φυσικά με τα GPIO33 και GPIO32, αντίστοιχα, τα οποία βρίσκονται ακριβώς απέναντι το ένα από το άλλο στην αντίθετη σειρά, καθιστώντας πολύ εύκολη τη χρήση ενός άμεσου βραχυκυκλωτήρα.
Υπάρχουν τρεις τυπικοί τρόποι για να κάνετε αυτές τις συνδέσεις: συγκόλληση καλωδίων απευθείας στις ακίδες (για τελική συναρμολόγηση), χρήση καλωδίων jumper εάν η πλακέτα βρίσκεται σε breadboard ή δρομολόγηση των συνδέσεων σε μια ειδική πλακέτα τυπωμένου κυκλώματος στην οποία είναι συνδεδεμένο το TTGO. Η επιλογή jumper είναι συνήθως η πιο βολική για δοκιμές.
Λογισμικό κόμβου: Βιβλιοθήκη LMIC, συχνότητα και κλειδιά TTN
Για τον προγραμματισμό ενός κόμβου LoRaWAN στο Arduino/ESP32, χρησιμοποιείται ευρέως η βιβλιοθήκη MCCI LoRaWAN LMIC , η οποία υλοποιεί τη στοίβα LoRaWAN και διαχειρίζεται όλα όσα σχετίζονται με κανάλια, ενώσεις, επαναλήψεις, παράθυρα λήψης κ.λπ.
Αρχικά, εγκαταστήστε τη βιβλιοθήκη από τον Διαχειριστή Βιβλιοθηκών του Arduino IDE αναζητώντας "LMIC" και επιλέγοντας "MCCI LoRaWAN LMIC library". Μόλις εγκατασταθεί, υπάρχει μια κρίσιμη λεπτομέρεια: από προεπιλογή, έχει ρυθμιστεί για US915 (Ηνωμένες Πολιτείες), επομένως αν βρίσκεστε στην Ευρώπη, πρέπει να την αλλάξετε σε EU868.
Για να το κάνετε αυτό, εντοπίστε το αρχείο lmic_project_config.h μέσα στον φάκελο της βιβλιοθήκης (κάτι σαν /Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/) και επεξεργαστείτε τους ορισμούς. Σχολιάστε το CFG_us915 και ενεργοποιήστε το CFG_eu868, διασφαλίζοντας επίσης ότι είναι ενεργοποιημένος ο σωστός τύπος ραδιοσυχνοτήτων (για παράδειγμα, CFG_sx1276_radio για μονάδες SX1276/78). Αυτή είναι μια εφάπαξ αλλαγή που ισχύει για όλα τα έργα LMIC σας.
Στη συνέχεια, ανοίγετε ένα από τα παραδείγματα που περιλαμβάνονται, για παράδειγμα το ttn-abp , το οποίο περιοδικά στέλνει ένα μήνυμα "Hello, world!" ως ωφέλιμο φορτίο. Αυτό το παράδειγμα χρησιμεύει ως βάση για την προσαρμογή του στην πλακέτα σας και στα διαπιστευτήρια TTN σας.
Στον κώδικα, θα δείτε μια δομή lmic_pinmap που καθορίζει τους ακροδέκτες NSS (CS), RST και DIO . Από προεπιλογή, συνήθως αντιστοιχίζεται για το Feather M0 LoRa, επομένως εάν χρησιμοποιείτε ένα TTGO LoRa32 V2.0, θα πρέπει να αλλάξετε αυτήν τη δομή ώστε να χρησιμοποιεί .nss = 18, .rst = 14 και .dio = {26, 33, 32} (υποθέτοντας ότι έχετε συνδέσει το DIO1 με το GPIO33 και το DIO2 με το GPIO32). Εάν το υλικό σας είναι διαφορετικό, θα πρέπει να συμβουλευτείτε την τεκμηρίωσή του ή να βρείτε ένα συγκεκριμένο παράδειγμα.
Μόλις το pinout είναι σωστό, ήρθε η ώρα να διαμορφώσετε τα κλειδιά που αναγνωρίζουν τον κόμβο σας στο TTN . Στο παράδειγμα ttn-abp, οι μεταβλητές NWKSKEY, APPSKEY και DEVADDR εμφανίζονται με τη λέξη FILLMEIN, ώστε να μπορείτε να τις συμπληρώσετε με τις τιμές σας.
Λαμβάνετε αυτά τα δεδομένα από την κονσόλα TTN κατά τη δημιουργία μιας συσκευής με ενεργοποίηση ABP. Το TTN σας παρέχει το Κλειδί Συνεδρίας Δικτύου (NWKSKEY), το Κλειδί Συνεδρίας Εφαρμογής (APPSKEY) και τη Διεύθυνση Συσκευής (DEVADDR) . Στη διεπαφή, τα κλειδιά είναι κρυμμένα για λόγους ασφαλείας, αλλά μπορείτε να τα κάνετε ορατά και, πιο χρήσιμα, να αντιγράψετε την τιμή απευθείας ως πίνακα C (χρησιμοποιώντας το κουμπί "<>") με τη σωστή σειρά byte (msb). Κάνοντας κλικ στο εικονίδιο αντιγραφής, αντιγράφεται ο πίνακας στο πρόχειρο και μπορείτε απλώς να τον επικολλήσετε στον κώδικά σας όπου βρίσκεται κάθε FILLMEIN.
Για τα NWKSKEY και APPSKEY, θα χρησιμοποιήσετε τη μορφή πίνακα byte που παρέχεται από το TTN , ενώ για το DEVADDR, θα ορίσετε την δεκαεξαδική τιμή ως έναν μόνο ακέραιο αριθμό τύπου u4_t, για παράδειγμα, `static const u4_t DEVADDR = 0x26011111;`. Με αυτό, ο κόμβος σας θα μπορεί να επαληθεύσει και να δρομολογήσει τα πακέτα του στην εφαρμογή TTN.
Ενσωμάτωση αισθητήρων στον κώδικα του κόμβου
Μόλις λειτουργήσει ο σκελετός LoRaWAN, ήρθε η ώρα να αντικαταστήσετε το τυπικό "Γεια σου, κόσμε!" με πραγματικά δεδομένα αισθητήρων . Συνεχίζοντας με το παράδειγμα του TTGO LoRa32 και ενός DS18B20, χρησιμοποιείτε το δίαυλο OneWire και τη βιβλιοθήκη DallasTemperature.
Στην αρχή του σκίτσου, συμπεριλάβετε τις κεφαλίδες και ορίστε τον ακροδέκτη του διαύλου: `#include <OneWire.h>`, `#include <DallasTemperature.h>`, και `#define ONE_WIRE_BUS X` , όπου X είναι ο ακροδέκτης GPIO στον οποίο έχετε συνδέσει τον αισθητήρα. Δημιουργήστε το αντικείμενο `OneWire` `oneWire(ONE_WIRE_BUS)` και το αντικείμενο `DallasTemperature` `sensor(&oneWire). Εάν δεν έχετε εγκατεστημένη τη βιβλιοθήκη DS18B20, προσθέστε την από τον διαχειριστή βιβλιοθήκης.
Στη συνάρτηση setup(), αρχικοποιείτε τον αισθητήρα με την sensor.begin() και, αν θέλετε, ορίζετε την ανάλυση (για παράδειγμα, sensor.setResolution(11)) . Από εκεί και πέρα, ο αισθητήρας είναι έτοιμος να διαβάσει τη θερμοκρασία όταν τη χρειαστείτε.
Η βασική συνάρτηση στο LMIC για την αποστολή δεδομένων είναι η `do_send(osjob_t* j)`. Μέσα, θα δείτε έναν έλεγχο για μια συνεχιζόμενη μετάδοση (`OP_TXRXPEND`). Εάν δεν υπάρχει, καλείτε την `sensor.requestTemperatures()`, λαμβάνετε την τιμή με την `sensor.getTempCByIndex(0)` και την αποθηκεύετε στον πίνακα `mydata`. Για παράδειγμα, θα μπορούσατε να χρησιμοποιήσετε την `mydata[0] = (uint8_t)sensor.getTempCByIndex(0);` για να στείλετε μόνο το ακέραιο μέρος.
Στη συνέχεια, καλείτε την LMIC_setTxData2(1, mydata, sizeof(mydata), 0) , όπου η πρώτη παράμετρος είναι η θύρα LoRaWAN (1 σε αυτήν την περίπτωση), η δεύτερη είναι η προσωρινή μνήμη (buffer), η τρίτη είναι το μέγεθος (size) και η τελευταία υποδεικνύει εάν το μήνυμα επιβεβαιώνεται (1) ή δεν επιβεβαιώνεται (0). Στη συνέχεια, η βιβλιοθήκη προγραμματίζει τη μετάδοση στην επόμενη διαθέσιμη υποδοχή.
Υπάρχουν πολλές πιθανές βελτιώσεις: επέκταση του ωφέλιμου φορτίου ώστε να περιλαμβάνει δεκαδικά δεδομένα, προσθήκη άλλων αισθητήρων, συσκευασία δεδομένων σε αποτελεσματική δυαδική μορφή κ.λπ. Αλλά ακόμη και σε αυτήν την απλή έκδοση, έχετε ήδη έναν κόμβο που στέλνει περιοδικά μετρήσεις σε πραγματικό χρόνο στο TTN, ορατές στην κονσόλα και έτοιμες για ενσωμάτωση με άλλα συστήματα.
Ενεργοποίηση OTAA, ασφάλεια και πρακτική εμπειρία
Μέχρι στιγμής έχουμε συζητήσει κυρίως το ABP για παραδείγματα κώδικα, αλλά στην παραγωγή, συνιστάται ιδιαίτερα η χρήση του OTAA (Over-The-Air Activation - Ενεργοποίηση μέσω Αέρα) . Το OTAA είναι η μέθοδος που χρησιμοποιείται, για παράδειγμα, από τους αισθητήρες Decentlab και πολλούς αισθητήρες SenseCAP, επειδή ενισχύει την ασφάλεια.
Με το OTAA, η συνεδρία LoRaWAN διαπραγματεύεται "στον αέρα" κάθε φορά που η συσκευή συνδέεται στο δίκτυο . Όταν ο κόμβος απενεργοποιείται, επανεκκινείται ή χάνει τη σύνδεση, δημιουργούνται νέα κλειδιά συνεδρίας την επόμενη φορά που συνδέεται, καθιστώντας δύσκολη την κλωνοποίηση της συσκευής απλώς αντιγράφοντας στατικά κλειδιά.
Στην κονσόλα TTN, όταν επιλέγετε OTAA για μια συσκευή, αντί για στατικά NWKSKEY και APPSKEY, θα έχετε DevEUI, JoinEUI/AppEUI και AppKey . Τα κλειδιά περιόδου σύνδεσης κατασκευάζονται κάθε φορά από αυτές τις τιμές και την ανταλλαγή με τον διακομιστή και θα βλέπετε τα παράγωγα κλειδιά μόνο για τη διάρκεια της περιόδου σύνδεσης.
Στην πράξη, οι χρήστες που ξεκινούν από το μηδέν με το LoRaWAN έχουν διαπιστώσει ότι με μια πύλη εγγεγραμμένη στο TTN και έναν σωστά διαμορφωμένο αισθητήρα OTAA, η διαδικασία εγγραφής μπορεί να είναι πολύ απλή : δημιουργήστε έναν λογαριασμό στο TTN, ενεργοποιήστε την πύλη, εγγράψτε τον αισθητήρα με τα κλειδιά που παρέχονται από τον κατασκευαστή και σε λίγα λεπτά δείτε δεδομένα σε μια διαδικτυακή πλατφόρμα (είτε πρόκειται για την ίδια την Decentlab, το SenseCAP είτε για πίνακες ελέγχου τρίτων).
Παράγοντες όπως η θέση του κουτιού LoRa του αισθητήρα (καλύτερα σε κατακόρυφη θέση, η οποία ευνοεί το μοτίβο ακτινοβολίας της εσωτερικής κεραίας) , το περιβάλλον του ραδιοφώνου και το ύψος της πύλης επηρεάζουν σε μεγάλο βαθμό την πραγματική κάλυψη, αλλά η ροή εγκατάστασης είναι αρκετά μηχανική όταν γίνει κατανοητή.
Από το TTN στις εφαρμογές σας: ενσωματώσεις και οπτικοποίηση
Με τους κόμβους να ανεβάζουν πλέον δεδομένα στο TTN, το επόμενο βήμα είναι να μεταφέρετε αυτές τις πληροφορίες στις δικές σας εφαρμογές, πίνακες ελέγχου ή ροές εργασίας αυτοματισμού . Το TTN παρέχει ισχυρές ενσωματώσεις και ένα API για αυτό.
Μια πολύ συνηθισμένη προσέγγιση είναι η χρήση του Node-RED για τη λήψη δεδομένων από το TTN και την επεξεργασία τους όπως απαιτείται . Ρυθμίζετε μια σύνδεση MQTT ή HTTP με τα διαπιστευτήρια της εφαρμογής TTN, αποκωδικοποιείτε το ωφέλιμο φορτίο (σύμφωνα με τη μορφή των αισθητήρων σας) και από εκεί μπορείτε να κάνετε σχεδόν οτιδήποτε: αποθήκευση σε βάσεις δεδομένων, εμφάνιση γραφημάτων, ενεργοποίηση ειδοποιήσεων κ.λπ.
Μια άλλη επιλογή είναι να χρησιμοποιήσετε πλατφόρμες τρίτων που ενσωματώνονται ήδη με το TTN , όπως Datacake, MyDevices, ResIoT, WMW και άλλες. Πολλές από αυτές τις πλατφόρμες έχουν ήδη συγκεκριμένα πρότυπα για συσκευές όπως αισθητήρες Decentlab ή ορισμένα μοντέλα Dragino, επομένως απλώς πρέπει να επιλέξετε τον τύπο συσκευής, να τον συνδέσετε με την εφαρμογή TTN και να ξεκινήσετε την προβολή των δεδομένων σε εύχρηστους πίνακες ελέγχου.
Σε εκπαιδευτικά έργα, για παράδειγμα, το TTN έχει χρησιμοποιηθεί σε συνδυασμό με πύλες RAK7289 και ιχνηλάτες Dragino TrackerD για τον εντοπισμό ατόμων ή οχημάτων. Η ροή εργασίας έχει ως εξής: η πύλη καταχωρείται, οι ιχνηλάτες καταχωρούνται στο TTN, τα δεδομένα προβάλλονται στην κονσόλα και στη συνέχεια εμφανίζονται σε πραγματικό χρόνο σε έναν δημόσιο πίνακα ελέγχου Datacake με χάρτες και γραφήματα που δείχνουν τη θέση, το επίπεδο μπαταρίας κ.λπ.
Το σημαντικό που πρέπει να κατανοήσετε είναι ότι το TTN λειτουργεί ως επίπεδο δικτύου LoRaWAN και δρομολογητής δεδομένων . Εσείς αποφασίζετε για το επίπεδο εφαρμογής και οπτικοποίησης: από ένα σενάριο Python που καταναλώνει το API έως μια βιομηχανική πλατφόρμα δεδομένων IoT.
Εν ολίγοις, η σύνδεση ενός κόμβου LoRaWAN στο TTN περιλαμβάνει διάφορα βήματα (σωστή συχνότητα, σωστά διαμορφωμένη πύλη, εγγραφή TTN, κλειδιά κόμβου, ενεργοποίηση OTAA ή ABP, λογισμικό συσκευής και, εάν επιθυμείται, επακόλουθες ενσωματώσεις), αλλά κάθε μέρος είναι διαχειρίσιμο ακόμη και χωρίς προηγούμενη εμπειρία, εάν ακολουθηθούν οι σωστές οδηγίες. Μόλις ολοκληρωθεί η αρχική εγκατάσταση, η ανάπτυξη περισσότερων κόμβων ή πυλών γίνεται μια εξαιρετικά επαναλήψιμη και κλιμακώσιμη διαδικασία, ιδανική για έργα αισθητήρων μεγάλης κλίμακας, πρωτοβουλίες Έξυπνων Πόλεων ή απλώς για εκμάθηση και πειραματισμό με IoT μεγάλης εμβέλειας.