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

Lora Gateway με βάση το MicroPython ESP32: 10 βήματα (με εικόνες)
Lora Gateway με βάση το MicroPython ESP32: 10 βήματα (με εικόνες)

Βίντεο: Lora Gateway με βάση το MicroPython ESP32: 10 βήματα (με εικόνες)

Βίντεο: Lora Gateway με βάση το MicroPython ESP32: 10 βήματα (με εικόνες)
Βίντεο: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Ιούλιος
Anonim
Lora Gateway Βασισμένο στο MicroPython ESP32
Lora Gateway Βασισμένο στο MicroPython ESP32
Lora Gateway Βασισμένο στο MicroPython ESP32
Lora Gateway Βασισμένο στο MicroPython ESP32

Η Lora είναι πολύ δημοφιλής τα τελευταία χρόνια. Η μονάδα ασύρματης επικοινωνίας που χρησιμοποιεί αυτήν την τεχνολογία είναι συνήθως φθηνή (χρησιμοποιώντας ελεύθερο φάσμα), μικρή σε μέγεθος, ενεργειακά αποδοτική και έχει μεγάλη απόσταση επικοινωνίας και χρησιμοποιείται κυρίως για αμοιβαία επικοινωνία μεταξύ τερματικών IoT ή ανταλλαγή δεδομένων με έναν κεντρικό υπολογιστή. Υπάρχουν πολλές μονάδες LoRa στην αγορά, όπως το RFM96W, το οποίο είναι εξοπλισμένο με τσιπ SX1278 (συμβατό), το οποίο είναι πολύ μικρό. Το χρησιμοποιώ με το MakePython ESP32 ως πύλη.

Στη συνέχεια, θα χρησιμοποιήσω δύο κόμβους LoRa για να στείλω τα δεδομένα θερμοκρασίας και υγρασίας στην πύλη και, στη συνέχεια, να τα ανεβάσω στο Διαδίκτυο μέσω της πύλης. Εδώ θα μάθετε πώς να ανεβάζετε απομακρυσμένα δεδομένα πολλαπλών κόμβων LoRa στο cloud μέσω της πύλης.

Βήμα 1: Προμήθειες

Προμήθειες
Προμήθειες

1*MakePython ESP32

Το MakePython ESP32 είναι μια πλακέτα ESP32 με ενσωματωμένη οθόνη SSD1306 OLED.

2*Maduino LoRa Radio

Το Maduino Lora Radio είναι μια λύση IoT (Internet of things) που βασίζεται στη μονάδα Atmel's Atmega328P MCU και Lora. Μπορεί να είναι ένα πραγματικό έργο για έργα IoT (ειδικά εφαρμογές μεγάλης εμβέλειας, χαμηλής ισχύος)

2*DHT11

1*MakePython Lora

Βήμα 2: Κόμβος LoRa

Κόμβος LoRa
Κόμβος LoRa
Κόμβος LoRa
Κόμβος LoRa

Αυτό είναι το σχηματικό σχήμα του Maduino Lora Radio.

Ενότητα Arduino Lora Radio ως κόμβος LoRa, το χρησιμοποιούμε για να στέλνουμε δεδομένα θερμοκρασίας και υγρασίας στην πύλη.

(Αυτό το WiKi παρουσιάζει τον τρόπο χρήσης του Maduino Lora Radio και την αποστολή και λήψη δεδομένων)

Βήμα 3: Σύνδεση κόμβου και αισθητήρα

Σύνδεση κόμβου και αισθητήρα
Σύνδεση κόμβου και αισθητήρα
Σύνδεση κόμβου και αισθητήρα
Σύνδεση κόμβου και αισθητήρα

Το VCC και το GND του DHT11 συνδέονται με το 3V3 και το GND του Maduino και ο πείρος DATA συνδέεται με το D4 του Maduino.

Ο κόμβος 0 βρίσκεται στο πάρκο, ο κόμβος 1 βρίσκεται στο κτίριο γραφείων κοντά στην εταιρεία, απέχουν μεταξύ τους περίπου 2 χιλιόμετρα και, στη συνέχεια, λαμβάνω τα δεδομένα θερμοκρασίας και υγρασίας τους στο σπίτι

Βήμα 4: Αποστολή δεδομένων στην πύλη

Κατεβάστε το TransmitterDHT11.ino, ανοίξτε το στο Arduino IDE.

Κατά την προσθήκη ενός κόμβου, τροποποιήστε ανάλογα τον αριθμό κόμβου. Για παράδειγμα, τώρα χρησιμοποιήστε 2 κόμβους, ο πρώτος κόμβος για την τροποποίηση του οζώδους = 0 για την εκτέλεση του προγράμματος, ο δεύτερος κόμβος για την τροποποίηση του οζώδους = 1 για την εκτέλεση του προγράμματος και ούτω καθεξής, μπορείτε να προσθέσετε περισσότερους κόμβους.

int16_t packetnum = 0; // μετρητής πακέτων, αυξάνουμε ανά παράλειψη

int16_t nodenum = 0; // Τροποποίηση του αριθμού κόμβου

Συλλέξτε δεδομένα και εκτυπώστε τα

String message = "#"+(String) nodenum+"Υγρασία:"+(String) υγρασία+"% Θερμοκρασία:"+(String) θερμοκρασία+"C"+"num:"+(String) packetnum; Serial.println (μήνυμα) ? packetnum ++;

Στείλτε ένα μήνυμα στον διακομιστή rf95_server

uint8_t radioPacket [message.length ()+1];

message.toCharArray (radioPacket, message.length ()+1); radioPacket [message.length ()+1] = '\ 0'; rf95.send ((uint8_t *) radioPacket, message.length ()+1);

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

#0 Υγρασία: 6,00% Θερμοκρασία: 27,00C num: 0

Μετάδοση: Αποστολή στον rf95_server Αποστολή… Αναμονή για ολοκλήρωση του πακέτου… Αναμονή για απάντηση… Χωρίς απάντηση, υπάρχει κάποιος ακροατής γύρω;

Αφήστε το στην άκρη, τώρα πρέπει να φτιάξουμε την πύλη Lora.

Βήμα 5: MakePython Lora

MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora

Αυτός είναι ο αντίστοιχος πείρος της μονάδας RFM96W και του MakePython ESP32. Για να διευκολύνω τη σύνδεση με το MakePython ESP32, έφτιαξα μια πλακέτα κυκλώματος με τη μονάδα RFM96W. Ναι, υπάρχουν δύο RFM96W σε αυτό, τα οποία μπορούν να στέλνουν και να λαμβάνουν δεδομένα ταυτόχρονα, αλλά τώρα χρειάζομαι μόνο ένα.

Βήμα 6: LoRaWAN Gateway

LoRaWAN Gateway
LoRaWAN Gateway

Το LoRaWAN είναι ένα δίκτυο ευρείας περιοχής χαμηλής ισχύος που βασίζεται στο LoRa, το οποίο μπορεί να παρέχει ένα: χαμηλή κατανάλωση ενέργειας, επεκτασιμότητα, υψηλή ποιότητα υπηρεσιών και ασφαλές ασύρματο δίκτυο μεγάλων αποστάσεων.

Συγκεντρώστε το MakePython Lora και το ESP32 για να δημιουργήσετε μια πύλη που μπορεί να λαμβάνει απομακρυσμένα δεδομένα και να τα ανεβάζει στο Διαδίκτυο.

Βήμα 7: Λήψη κώδικα

Κατεβάστε όλα τα αρχεία ‘xxx.py’ από το WiKi και ανεβάστε τα στο ESP32.

Ανοίξτε το αρχείο LoRaDuplexCallback.py, Πρέπει να κάνετε ορισμένες προσαρμογές, έτσι ώστε το ESP32 να μπορεί να συνδεθεί στο δίκτυο και να ανεβάσει δεδομένα στο διακομιστή.

Τροποποιήστε το API_KEY που αποκτήσατε στο ThingSpeak (θα σας παρουσιάσω πώς να το αποκτήσετε αργότερα)

#https://thingspeak.com/channels/1047479

API_KEY = 'UBHIRHVV9THUJVUI'

Τροποποιήστε το SSID και το PSW για σύνδεση WiFi

ssid = "Makerfabs"

pswd = "20160704"

Βήμα 8: Λήψη δεδομένων

Βρείτε τη λειτουργία on_receive (lora, ωφέλιμο φορτίο) στο αρχείο LoRaDuplexCallback.py, όπου μπορείτε να πείτε στο ESP32 τι πρέπει να κάνετε μετά τη λήψη των δεδομένων. Ο ακόλουθος κώδικας αναλύει και εμφανίζει τα ληφθέντα δεδομένα θερμοκρασίας και υγρασίας.

def on_receive (lora, ωφέλιμο φορτίο):

lora.blink_led () rssi = lora.packetRssi () try: length = len (payload) -1 myStr = str ((payload [4: length]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1+1):(length1+6)] myNum2 = myStr [(length1+20):(length1+25)] print ("*** Λήφθηκε μήνυμα *** / n {}". μορφή (ωφέλιμο φορτίο)) εάν config_lora. IS_LORA_OLED: lora.show_packet (("{}". μορφή (ωφέλιμο φορτίο [4: μήκος])), rssi) εάν wlan.isconnected (): καθολική msgCount print ('Αποστολή στο δίκτυο…') node = int (str (payload [5: 6], 'utf-8')) if node == 0: URL = "https://api.thingspeak.com/update?api_key="+API_KEY+"& field1 = "+myNum1+" & field2 = "+myNum2 res = urequests.get (URL) print (res.text) elif node == 1: URL =" https://api.thingspeak.com/update?api_key= "+API_KEY+" & field3 = "+myNum1+" & field4 = "+myNum2 res = urequests.get (URL) εκτύπωση (res.text) εκτός από εξαίρεση ως e: print (e) print (" with RSSI {} n ".format (rssi))

Κρίνοντας τον αριθμό για τη διάκριση των κόμβων και τη μεταφόρτωση των δεδομένων στο Διαδίκτυο μέσω της διεύθυνσης URL, μπορούμε ανά πάσα στιγμή να παρακολουθούμε τα απομακρυσμένα δεδομένα διαφορετικών κόμβων. Μπορείτε να προσθέσετε περισσότερους κόμβους και να κάνετε παρόμοιες αλλαγές στον κώδικα.

αν κόμβος == 0:

URL = "https://api.thingspeak.com/update?api_key="+API_KEY+"& field1 ="+myNum1+"& field2 ="+myNum2 res = urequests.get (URL) εκτύπωση (res.text)

Βήμα 9: Χρησιμοποιήστε το ThingSpeak IoT

Χρησιμοποιήστε ThingSpeak IoT
Χρησιμοποιήστε ThingSpeak IoT
Χρησιμοποιήστε ThingSpeak IoT
Χρησιμοποιήστε ThingSpeak IoT
Χρησιμοποιήστε ThingSpeak IoT
Χρησιμοποιήστε ThingSpeak IoT

Βήματα:

  1. Εγγραφείτε ένα λογαριασμό στη διεύθυνση https://thingspeak.com/. Εάν έχετε ήδη ένα, συνδεθείτε απευθείας.
  2. Κάντε κλικ στο Νέο κανάλι για να δημιουργήσετε ένα νέο κανάλι ThingSpeak.
  3. Όνομα εισαγωγής, Περιγραφή, Επιλογή πεδίου 1. Στη συνέχεια, αποθηκεύστε το κανάλι στο κάτω μέρος.
  4. Κάντε κλικ στην επιλογή Κλειδιά API, αντιγράψτε το Κλειδί API, θα το χρησιμοποιήσουμε στο πρόγραμμα.

Βήμα 10: Αποτέλεσμα

Αποτέλεσμα
Αποτέλεσμα
Αποτέλεσμα
Αποτέλεσμα
Αποτέλεσμα
Αποτέλεσμα

Μπορείτε να δείτε τα δεδομένα του κόμβου 0 και του κόμβου 1 στην οθόνη, αν και απέχουν 2 χιλιόμετρα.

Συνδεθείτε στο λογαριασμό σας στο ThingSpeak και κάντε κλικ στο κανάλι που δημιουργήσατε, μπορείτε να δείτε τα μεταφορτωμένα δεδομένα θερμοκρασίας και υγρασίας.

Το γράφημα πεδίου 1 και τα γραφήματα πεδίου 2 είναι τα δεδομένα υγρασίας και θερμοκρασίας του κόμβου Lora 0, και το γράφημα πεδίου 3 και το γράφημα πεδίου 4 είναι τα δεδομένα υγρασίας και θερμοκρασίας του κόμβου Lora 1.

Συνιστάται: