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

Είδα τη Λύση IoTea LoRa (Ενημέρωση 1811): 5 Βήματα
Είδα τη Λύση IoTea LoRa (Ενημέρωση 1811): 5 Βήματα

Βίντεο: Είδα τη Λύση IoTea LoRa (Ενημέρωση 1811): 5 Βήματα

Βίντεο: Είδα τη Λύση IoTea LoRa (Ενημέρωση 1811): 5 Βήματα
Βίντεο: Ισραήλ | Γίνεται πόλεμος | Αυτό για το οποίο δεν μιλάει κανείς 2024, Νοέμβριος
Anonim
Είδα τη λύση IoTea LoRa (Ενημέρωση 1811)
Είδα τη λύση IoTea LoRa (Ενημέρωση 1811)

Το Internet+ είναι μια δημοφιλής έννοια τώρα. Αυτή τη φορά δοκιμάσαμε το Διαδίκτυο και τη γεωργία για να κάνουμε τον κήπο τσαγιού να μεγαλώνει το Τσάι του Διαδικτύου.

Βήμα 1: Πράγματα που χρησιμοποιούνται σε αυτό το έργο

Συστατικά υλικού

  • Grove - Αισθητήρας διοξειδίου του άνθρακα (MH -Z16)
  • Grove - Lightηφιακός αισθητήρας φωτός
  • Grove - Dust Sensor (PPD42NS)
  • Grove-Oxygen Sensor (ME2-O2-Ф20)
  • Αισθητήρας υγρασίας & θερμοκρασίας εδάφους
  • LoRa LoRaWAN Gateway - κιτ 868MHz με Raspberry Pi 3
  • Grove - Temp & Humi & Barometer Sensor (BME280)

Εφαρμογές λογισμικού και διαδικτυακές υπηρεσίες

Microsoft Visual Studio 2015

Βήμα 2: Ιστορία

Στο βουνό Mengding βορειοανατολικά του Ya'an, Sichuan, η κορυφογραμμή του βουνού τρέχει δυτικά προς ανατολικά σε μια πράσινη θάλασσα. Αυτό είναι ένα πολύ γνωστό θέαμα για τον 36χρονο Ντενγκ, έναν από τους λίγους παρασκευαστές τσαγιού Mengding της γενιάς του, με μια φυτεία 50mu (= 3,3 εκτάρια) που βρίσκεται στα 1100μ πάνω από την επιφάνεια της θάλασσας. Ο Ντενγκ προέρχεται από μια οικογένεια παρασκευαστών τσαγιού, αλλά η συνέχιση της οικογενειακής κληρονομιάς δεν είναι εύκολη υπόθεση. «Τα τσάγια μας καλλιεργούνται σε μεγάλο υψόμετρο σε οργανικό περιβάλλον για να εξασφαλίσουν την εξαιρετική τους ποιότητα. Αλλά ταυτόχρονα, η πυκνότητα ανάπτυξης είναι χαμηλή, το κόστος είναι υψηλό και η εκκολαπτόμενη είναι άνιση, καθιστώντας το τσάι δύσκολο στη συγκομιδή. Αυτός είναι ο λόγος για τον οποίο τα τσάι από ψηλά βουνά είναι συνήθως μικρές σοδειές και οι αξίες τους δεν αντικατοπτρίζονται στην αγορά. Και όταν γνώρισε τον Fan, ο οποίος αναζητούσε μια φυτεία για να εφαρμόσει την τεχνολογία IoTea της Seeed, έγινε ο τέλειος συνδυασμός για μια λύση.

Βήμα 3: Σύνδεση υλικού

Το υλικό αυτού του έργου μπορεί να χωριστεί σε 4 μέρη: Power, Sensors, Node και Gateway. Το παρακάτω άρθρο θα σας δείξει πώς να το ολοκληρώσετε βήμα προς βήμα.

Μέρος ισχύος

Το Power Part περιέχει κυρίως έναν ηλιακό πίνακα και μια μπαταρία λιθίου, αν απλώς δημιουργήσετε αυτό το έργο για επίδειξη, μπορείτε να τα αγνοήσετε. Or μπορείτε να ακολουθήσετε το προηγούμενο σεμινάριο για να εγκαταστήσετε ισχύ κόμβου.

Αισθητήρες Μέρος

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

Εικόνα
Εικόνα

Όπως βλέπετε στην παραπάνω εικόνα, ο Digitalηφιακός αισθητήρας φωτός είναι πάντα στο επάνω μέρος, έτσι ώστε να μπορεί να συλλέξει πληροφορίες φωτισμού. Οι αισθητήρες που θα παράγουν θερμότητα είναι εγκατεστημένοι στη μέση του ακρυλικού βραχίονα, όπως αισθητήρας O2, αισθητήρας σκόνης και αισθητήρας CO2. Επιτέλους, Αισθητήρας θερμοκρασίας και υγρασίας στο κάτω μέρος του ακρυλικού βραχίονα.

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

Εικόνα
Εικόνα

Το Node Part είναι ένα Seeeduino LoRaWan που εγκαταστάθηκε σε ένα αδιάβροχο κουτί, συνδέεται με την τροφοδοσία και τους αισθητήρες μέσω των αρμών νερού. Μεταξύ αυτών, ο αισθητήρας σκόνης συνδέεται με τον ψηφιακό πείρο D3 της LoRaWan, ο αισθητήρας CO2 συνδέεται με τον ακροδέκτη D4 & D5, ο αισθητήρας εδάφους συνδέεται με τον ακροδέκτη D6 & D7, ο αισθητήρας O2 συνδέεται με τον αναλογικό πείρο A1 και ο αισθητήρας φωτός & βαρόμετρο συνδέονται στη θύρα I2C.

ΣΗΜΕΙΩΣΗ: Πρέπει να προστεθεί αντίσταση 10k μεταξύ του καλωδίου Soil Sensor's Blue (Data) και του Red (Vcc).

Το Seeeduino LoRaWan συλλέγει την αξία των αισθητήρων κάθε τόσο και τους στέλνει στο Gateway μέσω LoRa. Η μορφή δεδομένων όπως παρακάτω:

{

[0], /* Θερμοκρασία αέρα (℃)* /[1], /* Υγρασία αέρα (%)* /[2], /* Υψόμετρο (m) υψηλό byte* /[3], /* Υψόμετρο (m) χαμηλό byte */[4],/ * συγκέντρωση CO2 (PPM) υψηλό byte */[5],/ * συγκέντρωση CO2 (PPM) χαμηλό byte */[6],/ * συγκέντρωση σκόνης (τεμ/0,01cf) υψηλό byte */[7],/ *Συγκέντρωση σκόνης (τεμ/0,01cf) χαμηλό byte */[8],/ *Ένταση φωτός (lux) υψηλό byte */[9],/ *Ένταση φωτός (lux) χαμηλό byte */ [10], /* Συγκέντρωση O2 (%)* /[11], /* Θερμοκρασία εδάφους (℃)* /[12], /* Υγρασία εδάφους (%)* /[13], /* Τάση μπαταρίας (V) */ [14]/ *Κωδικός σφάλματος αισθητήρα */}

Κάθε bit στο Sensor Error Code byte έχει διαφορετική σημασία, όπως παρακάτω:

{

bit0: 1; / * Σφάλμα αισθητήρα βαρόμετρου */ bit1: 1; / * Σφάλμα αισθητήρα CO2 */ bit2: 1; / * Σφάλμα αισθητήρα σκόνης */ bit3: 1; / * Σφάλμα αισθητήρα φωτός */ bit4: 1; / * Σφάλμα αισθητήρα O2 */ bit5: 1; / * Σφάλμα αισθητήρα εδάφους */ δεσμευμένο: 2; /* Κατοχυρωμένα */ }

Μέρος πύλης

Εικόνα
Εικόνα

Το Gateway Part είναι ένα Raspberry Pi που συνδέει τη μονάδα Gateway RHF0M301–868 και το PRI 2 Bridge RHF4T002, εγκαθίσταται σε αδιάβροχο κουτί και συνδέεται με την κάμερα τροφοδοσίας και USB μέσω αρμών νερού. Επειδή χρησιμοποιεί εξειδικευμένο υλικολογισμικό, ακολουθήστε το Seeed Wiki για να το διαμορφώσετε.

Βήμα 4: Προγραμματισμός λογισμικού

Ως Σύνδεση υλικού, ο Προγραμματισμός Λογισμικού μπορεί επίσης να χωριστεί, μπορεί να χωριστεί σε 3 μέρη: Κόμβος, Πύλη και Ιστότοπος.

Κόμμα κόμβου

Τα περισσότερα προγράμματα οδήγησης που απαιτούσε το Node Part περιέχονται ήδη στο φάκελο orig_driver. Οι παρακάτω βιβλιοθήκες πρέπει να εγκατασταθούν με μη αυτόματο τρόπο:

Adafruit_ASFcore

Επειδή το έργο είναι περίπλοκο, σας συνιστούμε να χρησιμοποιήσετε το Microsoft Visual Studio αντί του Arduino IDE. Ένα πρόσθετο που ονομάζεται Visual Micro μπορεί να σας βοηθήσει να αξιοποιήσετε ένα έργο Arduino χρησιμοποιώντας το Visual Studio, κάντε κλικ εδώ για περισσότερες πληροφορίες.

Για καλύτερη αναγνωσιμότητα και διατηρησιμότητα, χρησιμοποιούμε αυτή τη φορά τον Αντικειμενοστραφή Προγραμματισμό. Το διάγραμμα τάξης αυτού του έργου μοιάζει με το παρακάτω:

Εικόνα
Εικόνα

Για τους αισθητήρες που έχουν ήδη πρόγραμμα οδήγησης OOP, το ξανασυσκευάσαμε για να προσαρμόσουμε αυτό το έργο, για άλλους, ξαναγράψαμε τους οδηγούς τους χρησιμοποιώντας OOP. Η κατηγορία αισθητήρων στο ενδιάμεσο στρώμα χρησιμοποιείται για να ενοποιήσει τις διεπαφές πραγματικών αισθητήρων, για παράδειγμα, ένας αισθητήρας βαρόμετρου μπορεί να συλλέγει θερμοκρασία, υγρασία και υψόμετρο ταυτόχρονα, οπότε έχει 3 διεπαφές για απόκτηση θερμοκρασίας, υγρασίας και υψομέτρου. Αλλά έχουν διαφορετική ονομασία μεθόδου, η οποία θα κάνει το πρόγραμμα απόκτησης αξίας αισθητήρων πιο περίπλοκο, ακριβώς όπως αυτό:

βαρόμετρο-> getTemperature ();

βαρόμετρο-> getHumidity (); βαρόμετρο-> getAltitude (); //… other_sensor-> getSomeValue (); //…

Αλλά χρησιμοποιώντας το OOP, μοιάζει με αυτό:

για (auto i = 0; i getValue ();

}

Συσκευάσαμε επίσης μια κλάση εφαρμογών, υλοποιεί διεπαφή IApplication, τη μέθοδο εγκατάστασης () και βρόχου () στο IoTea.ino μπορεί να καλέσει τη μέθοδο εγκατάστασης () και βρόχου () στο αντικείμενο εφαρμογής.

ΣΗΜΕΙΩΣΗ: Το USB Serial χρησιμοποιείται μόνο για εντοπισμό σφαλμάτων. Μετά τον εντοπισμό σφαλμάτων, σχολιάστε τον αρχικό κωδικό στη μέθοδο εγκατάστασης ().

Μέρος πύλης

Το πρόγραμμα Python του Gateway Part στον αρχικό φάκελο χρησιμοποιείται για τη λήψη φωτογραφιών και την αποστολή τους στον διακομιστή Amazon S3 κάθε ώρα. Πριν το χρησιμοποιήσετε, βεβαιωθείτε ότι η fswebcam είναι ήδη εγκατεστημένη στο Raspberry Pi:

sudo apt-get ενημέρωση && sudo apt-get εγκατάσταση fswebcam

Εάν θέλετε να ανεβάσετε φωτογραφίες, διαμορφώστε το AWS ακολουθώντας τα παρακάτω βήματα. Αρχικά, εγκαταστήστε το AWS SDK και το AWS CLI στο Raspberry Pi σας χρησιμοποιώντας αυτές τις εντολές:

sudo pip εγκατάσταση boto3

sudo pip εγκατάσταση awscli

και, στη συνέχεια, εκτελέστε το AWS CLI:

sudo aws διαμόρφωση

Διαμορφώστε το κλειδί πρόσβασης AWS, το αναγνωριστικό μυστικής πρόσβασης AWS και το προεπιλεγμένο όνομα περιοχής.

Εάν δεν σας αρέσει να ανεβάζετε τις φωτογραφίες σας, μπορείτε να παραλείψετε τα βήματα διαμόρφωσης AWS και να σχολιάσετε κωδικούς σχετικά με τη μεταφόρτωση στο photo.py. Για την εκτέλεση αυτού του προγράμματος μετά την εκκίνηση του Raspberry Pi κάθε φορά, μπορείτε να δημιουργήσετε μια φωτογραφία ονόματος αρχείου στο /etc/init.d και να γράψετε τον ακόλουθο κώδικα σε αυτήν.

#!/bin/bash

# /etc/init.d/photo ### ΕΚΚΙΝΗΣΗ ΠΛΗΡΟΦΟΡΙΩΝ # Παρέχει: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Σύντομη περιγραφή: λήψη φωτογραφίας initscript # Περιγραφή: Αυτή η υπηρεσία χρησιμοποιείται για τη διαχείριση λήψης φωτογραφιών ### ΤΕΛΟΣ ΠΛΗΡΟΦΟΡΙΩΝ ΠΕΡΙΟΧΗ υπόθεση "$ 1" στην αρχή) ηχώ "Έναρξη λήψης φωτογραφίας" /home/rxhf/photo.py &;; διακοπή) ηχώ "Διακοπή λήψης φωτογραφίας" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) ηχώ "Χρήση: έναρξη φωτογραφίας υπηρεσίας | διακοπή" έξοδος 1;; έξοδος esac 0

ορίστε άδεια εκτέλεσης

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

και δοκιμασε το

sudo /etc/init.d/photo start

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

sudo /etc/init.d/photo stop

προεπιλογές φωτογραφιών sudo update-rc.d

ΣΗΜΕΙΩΣΗ: Εάν θέλετε να ξεκινήσετε την πύλη μετά την εκκίνηση του Raspberry Pi, προσθέστε κωδικούς έναρξης πύλης στο Seeed Wiki στο /etc/rc.local, ας μοιάζει με:

#!/bin/sh -e

# # rc.local # # Αυτό το σενάριο εκτελείται στο τέλος κάθε επιπέδου runlevel πολλαπλών χρηστών. # Βεβαιωθείτε ότι το σενάριο θα "εξέλθει 0" από την επιτυχία ή οποιαδήποτε άλλη τιμή # σφάλματος. # # Για να ενεργοποιήσετε ή να απενεργοποιήσετε αυτό το σενάριο, απλώς αλλάξτε # bit εκτέλεσης. # # Από προεπιλογή, αυτό το σενάριο δεν κάνει τίποτα. # Εκτύπωση της διεύθυνσης IP _IP = $ (όνομα κεντρικού υπολογιστή -I) || true αν ["$ _IP"]; τότε printf "Η διεύθυνση IP μου είναι %s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io έξοδος 0

Δικτυακός τόπος

Αναπτύξαμε τον ιστότοπο στο CentOS 7. Τα παρακάτω βήματα θα σας δείξουν τον τρόπο ανάπτυξης.

Βήμα 1. Εγκαταστήστε το Python3

sudo yum -y εγκατάσταση epel -release

sudo yum -y εγκατάσταση python36

Βήμα 2. Εγκαταστήστε Python pip και εικονικό περιβάλλον

wget

sudo python36 get-pip.py sudo pip εγκατάσταση virtualenv

Setp 3. Κλωνοποιήστε τον ιστότοπό μας από το GitHub

sudo yum -y εγκατάσταση git

git clone

Βήμα 4. Δημιουργήστε και ενεργοποιήστε το εικονικό περιβάλλον

virtualenv -p python36 iotea -hb

cd iotea-hb bin/activ source

Βήμα 5. Εγκαταστήστε εξαρτημένες βιβλιοθήκες

pip εγκατάσταση pymysql

pip install dbutils pip install φιάλη pip install websocket-client pip install cofigparser

Βήμα 6. Δημιουργία βάσης δεδομένων

sudo yum -y εγκατάσταση mariadb mariabd -server

sudo systemctl ενεργοποίηση mariadb sudo systemctl εκκίνηση mariadb mysql -uroot -p

και στη συνέχεια χρησιμοποιήστε το iotea_hb.sql για να δημιουργήσετε έναν πίνακα.

Βήμα 7. Δημιουργήστε το db.ini και γράψτε αυτούς τους κωδικούς σε αυτό

[db]

db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea

αλλάξτε τη διαδρομή του db.ini στο db.py

# σε db.py

#cf.read ("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read ("/home // iotea-hb/db.ini")

Βήμα 8. Αλλάξτε τη θύρα στο app.py και ξεκινήστε τον ιστότοπο:

# στο app.py

#app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)

# στο τερματικό

pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

επισκεφθείτε τώρα το 127.0.0.1:8080 στο πρόγραμμα περιήγησης ιστού, μπορείτε να δείτε τον ιστότοπο, αλλά τα δεδομένα σε πραγματικό χρόνο δεν εμφανίζονται.

Βήμα 9. Λάβετε δεδομένα loriot

Ανοίξτε ένα άλλο τερματικό, εισαγάγετε ξανά το εικονικό περιβάλλον και ξεκινήστε την εφαρμογή loriot:

cd iotea-hb

source bin/activ gunicorn loriot: app

Περιμένετε λίγο, θα δείτε δεδομένα που εμφανίζονται στον ιστότοπο ή μπορείτε να αλλάξετε το wss στο loriot.py:

# στο loriot.py

#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

Βήμα 5: Λειτουργία

Μπορείτε να επισκεφθείτε τους ιστότοπούς μας για να δείτε δεδομένα σε πραγματικό χρόνο:

  • Στο Γιαάν
  • Για Επίδειξη

Συνιστάται: