- Ρύθμιση εργασίας και ThingSpeak:
- Διάγραμμα κυκλώματος:
- Πρόγραμμα διαμόρφωσης Raspberry Pi και Python:
Η υγρασία, η θερμοκρασία και η πίεση είναι τρεις βασικές παράμετροι για την κατασκευή οποιουδήποτε μετεωρολογικού σταθμού και για τη μέτρηση των περιβαλλοντικών συνθηκών. Έχουμε κατασκευάσει προηγουμένως έναν μίνι μετεωρολογικό σταθμό χρησιμοποιώντας το Arduino και αυτή τη φορά επεκτείνουμε τον μετεωρολογικό σταθμό με το Raspberry Pi. Αυτό το έργο που βασίζεται στο IoT στοχεύει να δείξει τις τρέχουσες παραμέτρους υγρασίας, θερμοκρασίας και πίεσης τόσο στην οθόνη LCD όσο και στον διακομιστή Διαδικτύου χρησιμοποιώντας το Raspberry Pi, το οποίο το καθιστά Raspberry Pi Weather Station. Μπορείτε να εγκαταστήσετε αυτήν την εγκατάσταση οπουδήποτε και να παρακολουθείτε τις καιρικές συνθήκες αυτού του μέρους από οπουδήποτε στον κόσμο μέσω του Διαδικτύου, δεν θα εμφανίζει μόνο τα τρέχοντα δεδομένα, αλλά μπορεί επίσης να εμφανίσει τις προηγούμενες τιμές με τη μορφή γραφημάτων.
Χρησιμοποιήσαμε τον αισθητήρα θερμοκρασίας & υγρασίας DHT11 για την ανίχνευση της θερμοκρασίας και τη μονάδα αισθητήρα πίεσης BM180 για τη μέτρηση της βαρομετρικής πίεσης. Αυτό το θερμόμετρο κλίμακας Κελσίου και μετρητής υγρασίας κλίμακας ποσοστού εμφανίζει τη θερμοκρασία περιβάλλοντος και την υγρασία μέσω μιας οθόνης LCD και η βαρομετρική πίεση εμφανίζεται σε χιλιοστά ή hPa (εκτόπασκα). Όλα αυτά τα δεδομένα αποστέλλονται στον διακομιστή ThingSpeak για ζωντανή παρακολούθηση από οπουδήποτε στον κόσμο μέσω Διαδικτύου. Ελέγξτε το πρόγραμμα επίδειξης βίντεο και Python, που δίνεται στο τέλος αυτού του σεμιναρίου.
Ρύθμιση εργασίας και ThingSpeak:
Αυτό το έργο βασισμένο στο IoT έχει τέσσερις ενότητες. Πρώτον, ο αισθητήρας DHT11 ανιχνεύει τα δεδομένα υγρασίας και θερμοκρασίας και ο αισθητήρας BM180 μετρά την ατμοσφαιρική πίεση. Δεύτερον, το Raspberry Pi διαβάζει την έξοδο της μονάδας αισθητήρα DHT11 χρησιμοποιώντας πρωτόκολλο μονής σύρμας και έξοδο αισθητήρα πίεσης BM180 χρησιμοποιώντας πρωτόκολλο I2C και εξάγει και τις δύο τιμές αισθητήρων σε κατάλληλο αριθμό σε ποσοστό (υγρασία), κλίμακα Κελσίου (θερμοκρασία), hectoPascal ή millibar (πίεση). Τρίτον, αυτές οι τιμές αποστέλλονται στον διακομιστή ThingSpeak χρησιμοποιώντας ενσωματωμένο Wi-Fi του Raspberry Pi 3. Και τέλος, το ThingSpeak αναλύει τα δεδομένα και τα εμφανίζει σε μορφή γραφήματος. Μια LCD χρησιμοποιείται επίσης για την τοπική προβολή αυτών των τιμών.
Το ThingSpeak παρέχει πολύ καλό εργαλείο για έργα που βασίζονται σε IoT. Χρησιμοποιώντας τον ιστότοπο ThingSpeak, μπορούμε να παρακολουθούμε τα δεδομένα μας και να ελέγξουμε το σύστημά μας μέσω Διαδικτύου, χρησιμοποιώντας τα κανάλια και τις ιστοσελίδες που παρέχονται από το ThingSpeak. ThingSpeak «Συλλέγει» τα δεδομένα από τους αισθητήρες, «Ανάλυση και οπτικοποίηση» των δεδομένων και «Πράξεις» ενεργοποιώντας μια αντίδραση. Έχουμε εξηγήσει προηγουμένως σχετικά με την αποστολή δεδομένων στο ThingSpeak λεπτομερώς, μπορείτε να το ελέγξετε εκεί. Εδώ εξηγούμε εν συντομία τη χρήση του ThingSpeak για αυτόν τον σταθμό Raspberry Pi Weather.
Πρώτα πρέπει να δημιουργήσετε λογαριασμό στον ιστότοπο ThingSpeak και να δημιουργήσετε ένα «νέο κανάλι» σε αυτόν. Σε νέο κανάλι πρέπει να ορίσετε ορισμένα πεδία για τα δεδομένα που θέλετε να παρακολουθείτε, όπως σε αυτό το έργο θα δημιουργήσουμε τρία πεδία για δεδομένα υγρασίας, θερμοκρασίας και πίεσης.
Τώρα κάντε κλικ στην καρτέλα «API κλειδιά» και αποθηκεύστε τα πλήκτρα εγγραφής και ανάγνωσης API, εδώ χρησιμοποιούμε μόνο το πλήκτρο εγγραφής. Πρέπει να αντιγράψετε αυτό το κλειδί στη μεταβλητή «κλειδί» στον κώδικα.
Μετά από αυτό, κάντε κλικ στο «Εισαγωγή / Εξαγωγή Δεδομένων» και αντιγράψτε το URL Ενημέρωσης Ροής καναλιού GET Request, το οποίο είναι:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Τώρα χρειαζόμαστε αυτό το "Feed Get Request URL" στον κώδικα Python για να ανοίξουμε το "api.thingspeak.com" και μετά να στείλουμε δεδομένα χρησιμοποιώντας αυτό το Request Feed ως συμβολοσειρά ερωτήματος. Και Πριν από την αποστολή δεδομένων, ο χρήστης πρέπει να εισαγάγει δεδομένα θερμοκρασίας, υγρασίας και πίεσης σε αυτό το ερώτημα String χρησιμοποιώντας μεταβλητές στο πρόγραμμα, ελέγξτε τον Κωδικό στο τέλος αυτού του άρθρου.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (πίεση)
Η εργασία του DHT11 βασίζεται σε απλή σειριακή επικοινωνία για τη λήψη δεδομένων από το DHT11. Εδώ χρησιμοποιήσαμε τη βιβλιοθήκη AdaFruit DHT11 για τη διασύνδεση DHT11 με το Raspberry Pi. Το Raspberry Pi συλλέγει εδώ τα δεδομένα υγρασίας και θερμοκρασίας από το DHT11 και την ατμοσφαιρική πίεση από τον αισθητήρα BMP180 και στη συνέχεια τα στέλνει σε διακομιστή LCD 16x2 και ThingSpeak. Το ThingSpeak εμφανίζει τα δεδομένα σε μορφή γραφήματος όπως παρακάτω:
Μπορείτε να μάθετε περισσότερα για τον αισθητήρα DHT11 και τη διασύνδεσή του με το Arduino εδώ.
Διάγραμμα κυκλώματος:
Πρόγραμμα διαμόρφωσης Raspberry Pi και Python:
Χρησιμοποιούμε τη γλώσσα Python εδώ για το Πρόγραμμα. Πριν από την κωδικοποίηση, ο χρήστης πρέπει να διαμορφώσει το Raspberry Pi. Μπορείτε να δείτε τα προηγούμενα μαθήματά μας για να ξεκινήσετε με το Raspberry Pi και να εγκαταστήσετε και να ρυθμίσετε το Raspbian Jessie OS στο Pi.
Πρώτα απ 'όλα πρέπει να εγκαταστήσουμε αρχεία Adafruit Python DHT Sensor Library για να εκτελέσουμε αυτό το έργο στο Raspberry Pi. Για να το κάνουμε αυτό πρέπει να ακολουθήσουμε τις εντολές που δίνονται:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py εγκατάσταση
Μετά από αυτό, ο χρήστης πρέπει να ενεργοποιήσει το Raspberry Pi I2C μεταβαίνοντας στο RPi Software Configuration Too:
sudo raspi-config
Στη συνέχεια, πηγαίνετε στο «Επιλογές εκ των προτέρων», επιλέξτε «I2C» και «Ενεργοποίηση».
Ο προγραμματισμός μέρος αυτού του έργου παίζει πολύ σημαντικό ρόλο για την εκτέλεση όλων των λειτουργιών. Πρώτα απ 'όλα συμπεριλαμβάνουμε όλες τις απαιτούμενες βιβλιοθήκες, αρχίζουμε μεταβλητές και καθορίζουμε καρφίτσες για LCD και DHT11.
εισαγωγή sys εισαγωγή RPi.GPIO ως GPIO εισαγωγή os εισαγωγή Adafruit_DHT εισαγωγή urllib2 εισαγωγή smbus χρόνο εισαγωγής από ctypes εισαγωγή c_short #Register Διεύθυνση regCall = 0xAA……………..
Σε def main (): λειτουργία, κάτω κωδικός χρησιμοποιείται για την αποστολή των δεδομένων στον server και να το εμφανίσετε πάνω στην οθόνη LCD, συνεχώς ενώ βρόχο.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (πίεση) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (θερμοκρασία, πίεση)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (πίεση) εκτύπωση finalURL s = urllib2.urlopen (finalURL); εκτύπωση humi + "" + temp + "" + πίεση s.close () time.sleep (10)
Για την οθόνη LCD, η λειτουργία def lcd_init () χρησιμοποιείται για την προετοιμασία της οθόνης LCD σε λειτουργία τεσσάρων bit, η λειτουργία def lcdcmd (ch) χρησιμοποιείται για την αποστολή εντολών σε LCD, η λειτουργία def lcddata (ch) χρησιμοποιείται για την αποστολή δεδομένων σε LCD και def lcdstring ) Η λειτουργία χρησιμοποιείται για την αποστολή συμβολοσειρών δεδομένων σε LCD. Μπορείτε να ελέγξετε όλες αυτές τις λειτουργίες στον Κώδικα που δίνεται στη συνέχεια.
Η συνάρτηση δεδομένου def readDHT () χρησιμοποιείται για την ανάγνωση του αισθητήρα DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) επιστροφή (str (int (humi)), str (int (temp)))
Η λειτουργία def readBmp180 χρησιμοποιείται για την πίεση ανάγνωσης από τον αισθητήρα BM180. Ο αισθητήρας BM180 μπορεί επίσης να δώσει θερμοκρασία, αλλά εδώ τον έχουμε χρησιμοποιήσει μόνο για τον υπολογισμό της πίεσης.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Ανάγνωση δεδομένων βαθμονόμησης # Μετατροπή δεδομένων byte σε τιμές λέξεων AC1 = convert1 (value, 0) AC2 = convert1 (value, 2) AC3 = convert1 (τιμή, 4) AC4 = μετατροπή2 (τιμή, 6)……………………..
Έτσι, αυτός είναι ο βασικός μετεωρολογικός σταθμός Raspberry Pi, μπορείτε να τον επεκτείνετε περαιτέρω για να μετρήσετε διάφορες παραμέτρους που σχετίζονται με τον καιρό, όπως ταχύτητα ανέμου, θερμοκρασία εδάφους, φωτισμό (lux), βροχόπτωση, ποιότητα αέρα κ.λπ.