Πίνακας περιεχομένων:

Απλή Arduino LoRa Εκφώνηση (πάνω από 5χλμ): 9 βήματα
Απλή Arduino LoRa Εκφώνηση (πάνω από 5χλμ): 9 βήματα

Βίντεο: Απλή Arduino LoRa Εκφώνηση (πάνω από 5χλμ): 9 βήματα

Βίντεο: Απλή Arduino LoRa Εκφώνηση (πάνω από 5χλμ): 9 βήματα
Βίντεο: Hardware Build of LoRa Transmitter, BME280 Sensor based on Arduino ESP32 (EP08) 2024, Ιούλιος
Anonim
Απλή επικοινωνία Arduino LoRa (πάνω από 5χλμ)
Απλή επικοινωνία Arduino LoRa (πάνω από 5χλμ)

Θα δοκιμάσουμε το E32-TTL-100 με τη βιβλιοθήκη μου. Είναι μια μονάδα ασύρματου πομποδέκτη, λειτουργεί στα 410 441 MHz (ή 868MHz ή 915MHz) με βάση το αρχικό RFIC SX1278 από τη SEMTECH, διατίθεται διαφανής μετάδοση, επίπεδο TTL. Η ενότητα υιοθετεί την τεχνολογία διασποράς φάσματος LORA.

Προμήθειες

  • Arduino UNO
  • Συσκευές LoRa e32

Προαιρετικός

  • Mischianti Arduino LoRa ασπίδα (ανοιχτού κώδικα)
  • Mischianti WeMos LoRa ασπίδα (ανοιχτού κώδικα)

Βήμα 1: Προδιαγραφές συσκευών

Η ενότητα διαθέτει αλγόριθμο FEC Forward Error Correct, ο οποίος εξασφαλίζει την υψηλή απόδοση κωδικοποίησης και την καλή απόδοση διόρθωσης. Σε περίπτωση ξαφνικής παρεμβολής, μπορεί να διορθώσει αυτόματα τα παρεμβαλλόμενα πακέτα δεδομένων, έτσι ώστε η αξιοπιστία και το εύρος μετάδοσης να βελτιωθούν αντίστοιχα. Αλλά χωρίς FEC, αυτά τα πακέτα da te μπορούν μόνο να πέσουν. Και με την αυστηρή κρυπτογράφηση και αποκρυπτογράφηση, η υποκλοπή δεδομένων καθίσταται άσκοπη. Η λειτουργία της συμπίεσης δεδομένων μπορεί να μειώσει το χρόνο μετάδοσης και την πιθανότητα παρεμβολής, βελτιώνοντας παράλληλα την αξιοπιστία και την απόδοση μετάδοσης.

  • Μέγεθος μονάδας: 21*36mm
  • Τύπος κεραίας: SMA-K (σύνθετη αντίσταση 50Ω)
  • Απόσταση μετάδοσης: 3000m (μέγιστο)
  • Μέγιστη ισχύς: 2dB (100mW)
  • Ρυθμοί αέρα: 2.4Kbps (6 προαιρετικά επίπεδα (0.3, 1.2, 2.4, 4.8, 9.6, 19.2kbps)
  • Μήκος εκπομπής: 512ByteReceive
  • μήκος: 512Byte
  • Διεπαφή επικοινωνίας: UART - 8N1, 8E1, 8O1,
  • Οκτώ είδη ρυθμού baud UART, από 1200 έως 115200bps (Προεπιλογή: 9600)
  • Υποστήριξη RSSI: Όχι (Ενσωματωμένη έξυπνη επεξεργασία)

Βήμα 2: Τύπος μετάδοσης

Τύπος μετάδοσης
Τύπος μετάδοσης

Διαφανής μετάδοσηΑυτό μπορεί να θεωρηθεί ως "λειτουργία επίδειξης", από προεπιλογή μπορείτε να στείλετε μήνυμα σε όλες τις συσκευές της ίδιας διαμορφωμένης διεύθυνσης και καναλιού.

Σταθερή μετάδοση

Αυτό το είδος μετάδοσης μπορείτε να καθορίσετε μια διεύθυνση και ένα κανάλι όπου θέλετε να στείλετε το μήνυμα. Μπορείτε να στείλετε μήνυμα σε:

  • Καθορισμένη συσκευή με προκαθορισμένη διεύθυνση χαμηλή, διεύθυνση υψηλή και κανάλι.
  • Μετάδοση μηνύματος σε ένα σύνολο συσκευών καναλιού Κανονική λειτουργία Απλώς στείλτε μήνυμα.

Βήμα 3: Λειτουργία συσκευής

Κανονική λειτουργία Απλώς στείλτε μήνυμα.

Λειτουργία αφύπνισης και λειτουργία εξοικονόμησης ενέργειας

Όπως μπορείτε να σκοπεύετε εάν μια συσκευή βρίσκεται σε λειτουργία αφύπνισης, μπορεί να "ξυπνήσει" μία ή περισσότερες συσκευές που βρίσκονται σε λειτουργία εξοικονόμησης ενέργειας με μια επικοινωνία προοιμίου.

Λειτουργία προγράμματος/ύπνου

Με αυτήν τη διαμόρφωση μπορείτε να αλλάξετε τη διαμόρφωση της συσκευής σας.

Βήμα 4: Συσκευή καλωδίωσης

Συσκευή καλωδίωσης
Συσκευή καλωδίωσης
Συσκευή καλωδίωσης
Συσκευή καλωδίωσης

Εδώ το σχήμα σύνδεσης της συσκευής, αυτό είναι πλήρως συνδεδεμένο, με τη διαχείριση των ακροδεκτών M0 και M1 επιτρέπουν την αλλαγή τρόπου λειτουργίας της συσκευής, ώστε να μπορείτε να μεταβείτε στη λειτουργία διαμόρφωσης ή αφύπνισης με πρόγραμμα, η βιβλιοθήκη σας βοηθά σε όλα αυτά λειτουργία.

Βήμα 5: Διαμόρφωση

Διαμόρφωση
Διαμόρφωση

Υπάρχει μια καθορισμένη εντολή για ρύθμιση και λήψη διαμόρφωσης

void setup () {Serial.begin (9600); καθυστέρηση (500)? // Εκκίνηση όλων των ακίδων και UART e32ttl100.begin (); ResponseStructContainer c; c = e32ttl100.getConfiguration (); // Είναι σημαντικό να λάβετε δείκτη διαμόρφωσης πριν από όλες τις άλλες λειτουργίες Configuration configuration = *(Configuration *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); printParameters (διαμόρφωση); ResponseStructContainer cMi; cMi = e32ttl100.getModuleInformation (); // Είναι σημαντικό να λάβετε δείκτη πληροφοριών πριν από κάθε άλλη λειτουργία ModuleInformation mi = *(ModuleInformation *) cMi.data; Serial.println (cMi.status.getResponseDescription ()); Serial.println (cMi.status.code); printModuleInformation (mi); }

Βήμα 6: Αποτέλεσμα διαμόρφωσης

Και το αποτέλεσμα γίνεται

Έναρξη επιτυχίας 1 -------------------------------------------- ΚΕΦΑΛΟΣ ΚΕΦΑΛΟΥ: 11000000 192 C0 AddH BIN: 0 AddL BIN: 0 Chan BIN: 23 -> 433MHz SpeedParityBit BIN: 0 -> 8N1 (Προεπιλογή) SpeedUARTDataRate BIN: 11 -> 9600bps (προεπιλογή) SpeedAirDataRate BIN: 10 -> 2.4kbps (προεπιλογή) OptionTrans BIN: 0 - > Διαφανής μετάδοση (προεπιλογή) OptionPullup BIN: 1 -> TXD, RXD, AUX είναι push -pulls/pull -ups OptionWakeup BIN: 0 -> 250ms (προεπιλογή) OptionFEC BIN: 1 -> Ενεργοποιήστε το διακόπτη διόρθωσης σφαλμάτων εμπρός OptionPower BIN: 0-> 20dBm (Προεπιλογή) -------------------------------------------- Επιτυχία 1 --------------------------------------------- ΚΕΦΑΛΟΣ ΚΕΦΑΛΟΥ: 11000011 195 C3 Μοντέλο αριθ..: 32 Έκδοση: 44 Χαρακτηριστικά: 14 --------------------------------------------

Βήμα 7: Αποστολή μηνύματος

Να στείλετε μήνυμα
Να στείλετε μήνυμα

Εδώ ένα απλό σκίτσο για να στείλετε ένα μήνυμα σε όλες τις συσκευές που είναι προσαρτημένες στο κανάλι

void loop () {// Εάν υπάρχει κάτι διαθέσιμο εάν (e32ttl100.available ()> 1) {// διαβάστε το μήνυμα συμβολοσειράς ResponseContainer rc = e32ttl100.receiveMessage (); // Μήπως κάτι πάει στραβά Σφάλμα εκτύπωσης εάν (rc.status.code! = 1) {rc.status.getResponseDescription (); } else {// Εκτύπωση των δεδομένων που ελήφθησαν Serial.println (rc.data); }} if (Serial.available ()) {String input = Serial.readString (); e32ttl100.sendMessage (είσοδος); }}

Βήμα 8: Ασπίδα για το Arduino

Ασπίδα για το Arduino
Ασπίδα για το Arduino

Δημιουργώ επίσης μια ασπίδα για το Arduino που γίνεται πολύ χρήσιμη για την πρωτοτυπία.

Και το κυκλοφορώ ως έργο ανοιχτού κώδικα εδώ

www.pcbway.com/project/shareproject/LoRa_E32_Series_device_Arduino_shield.html

Βήμα 9: Βιβλιοθήκη

Βιβλιοθήκη
Βιβλιοθήκη

Αποθετήριο GitHub

Φόρουμ υποστήριξης

Πρόσθετη τεκμηρίωση

Συνιστάται: