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

RPi Weatherstation Με Αποκριτική Ιστοσελίδα: 5 Βήματα
RPi Weatherstation Με Αποκριτική Ιστοσελίδα: 5 Βήματα

Βίντεο: RPi Weatherstation Με Αποκριτική Ιστοσελίδα: 5 Βήματα

Βίντεο: RPi Weatherstation Με Αποκριτική Ιστοσελίδα: 5 Βήματα
Βίντεο: How To Make Weather Station With Raspberry Pi 4 2024, Ιούλιος
Anonim
RPi Weatherstation Με Αποκριτική Ιστοσελίδα
RPi Weatherstation Με Αποκριτική Ιστοσελίδα
RPi Weatherstation Με Αποκριτική Ιστοσελίδα
RPi Weatherstation Με Αποκριτική Ιστοσελίδα

Για ένα σχολικό έργο έπρεπε να φτιάξουμε μια συσκευή IoT με έναν ιστότοπο για να απεικονίσουμε τις πληροφορίες που συλλέξαμε με ωραίο τρόπο. Επέλεξα να φτιάξω ένα Weatherstation που τροφοδοτείται από ένα Raspberry Pi 3 που εκτελεί Flask για τον ιστότοπο που ανταποκρίνεται, MySQL (MariaDB) για τη βάση δεδομένων μου και ένα σενάριο python για τη συλλογή πληροφοριών με όλους τους αισθητήρες μου. Μου πήρε περίπου 2 εβδομάδες από την αρχή μέχρι το τέλος έως την ολοκλήρωση.

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

Βήμα 1: Επιλογή τμήματος, εργαλεία και υλικά

Πρώτα έπρεπε να καταλάβω τι είδους αισθητήρες ήταν απαραίτητοι για έναν μετεωρολογικό σταθμό. Αποφάσισα ότι ήθελα να μετρήσω όλα τα ακόλουθα δεδομένα:

  • Θερμοκρασία
  • Πίεση αέρα
  • Υγρασία
  • ΤΑΧΥΤΗΤΑ ΑΝΕΜΟΥ
  • Δείκτης UV

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

Μέρη:

  • DHT22/AM2302 για μετρήσεις θερμοκρασίας και υγρασίας. (15 ευρώ)
  • Adafruit BMP280 για βαρομετρική πίεση και θερμοκρασία. (12 ευρώ)
  • Adafruit SI1145 για μέτρηση του δείκτη UV. (10 ευρώ)
  • Αναλογικό Ανεμόμετρο Adafruit για μέτρηση ανέμου (50 EUR)
  • Ένα MCP3008 για τη μετατροπή αναλογικών σημάτων σε ψηφιακό.
  • Αντίσταση 10kOhm ως pull-up για το AM2302 μου.
  • Προσαρμογέας 9V για «τροφοδοσία» του ανεμομέτρου
  • Προσαρμογέας 5V για το Raspberry Pi
  • Raspberry Pi 3 (Οποιοδήποτε Pi πρέπει να είναι αρκετό)

Υλικά:

Ένα πλαστικό δοχείο για την αποθήκευση των πάντων και το καθιστά ανθεκτικό στη βροχή

Εργαλεία:

  • Συγκολλητικό σίδερο και κασσίτερο
  • Πολύμετρο
  • Σιλικόνη
  • Λίγη ταινία

Συνολικά, όλοι οι αισθητήρες μου κόστισαν περίπου 85 ευρώ, το οποίο είναι αρκετά απότομο, αλλά ήθελα πολύ να συμπεριλάβω έναν κατάλληλο μετρητή ανεμοπλίνθου, οπότε πιστεύω ότι αξίζει τον κόπο.

Μπορείτε να βρείτε μια πιο λεπτομερή λίστα με καταστήματα στα οποία μπορείτε να αγοράσετε τα πάντα, στο παρακάτω pdf:)

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

Σύνδεση του υλικού μας
Σύνδεση του υλικού μας
Σύνδεση του υλικού μας
Σύνδεση του υλικού μας

Φυσικά, θα χρειαστεί να συνδέσουμε τους αισθητήρες μας στο Raspberry Pi. Πάνω μπορείτε να δείτε το εντυπωσιακό σχήμα που μπορείτε να ακολουθήσετε για να τα συνδέσετε όλα σωστά.

Στο σχηματικό σχήμα μπορείτε να δείτε ότι μια μπαταρία 9V χρησιμοποιείται ως πηγή ισχύος για το ανεμόμετρο μας. Αυτή είναι η κατάλληλη επιλογή για δοκιμές μόνο επειδή δεν θα διαρκέσει πολύ, μπορείτε να αντικαταστήσετε την μπαταρία 9V για οποιαδήποτε πηγή ισχύος 7-12V. επιλέγω.

Οι αισθητήρες SI1145 και BMP280 θα ελέγχονται και οι δύο χρησιμοποιώντας το πρωτόκολλο I2C, καθώς αυτό είναι το πιο εύκολο στη χρήση και χρειάζεται λιγότερα καλώδια.

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

Βήμα 3: Σύνδεση όλων: Ρύθμιση του Pi

Σύνδεση όλων: Ρύθμιση του Pi
Σύνδεση όλων: Ρύθμιση του Pi

Πρώτα απ 'όλα, πρέπει να βεβαιωθούμε ότι είμαστε συνδεδεμένοι στο διαδίκτυο.

Για να το κάνετε αυτό στο τερματικό, μπορείτε να μεταβείτε στο αρχείο wpa_supplicant εκτελώντας την ακόλουθη εντολή: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Στο αρχείο μπορείτε να προσθέσετε αυτό:

network = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK

}

Μπορείτε επίσης να επιλέξετε να ορίσετε τη διεύθυνση IP σας σε στατική για ευκολότερη πρόσβαση στο μέλλον. Για να το κάνετε αυτό, πρέπει να μεταβείτε στο αρχείο dhcpcd.conf εκτελώντας αυτήν την εντολή: sudo nano /etc/dhcpcd.conf

Προσθέστε αυτό στο αρχείο:

διεπαφή wlan0static ip_address = 192.168.0.100/24

Στη συνέχεια, θα βεβαιωθούμε ότι τα πακέτα που είναι ήδη εγκατεστημένα στο Pi μας είναι πλήρως ενημερωμένα:

sudo apt-get ενημέρωση && sudo apt-get αναβάθμιση

Αυτό μπορεί να διαρκέσει λίγο, οπότε μην ανησυχείτε

Θα χρειαστεί να ενεργοποιήσετε το πρωτόκολλο I2C και SPI μέσα στη διαμόρφωση raspi. Μπορείτε να το κάνετε εκτελώντας αυτήν την εντολή:

sudo raspi-config

Στη συνέχεια, μεταβείτε στις επιλογές διασύνδεσης και ενεργοποιήστε και τα δύο, I2C και SPI

Πρώτα πρέπει να δημιουργήσετε έναν κατάλογο στον οποίο θέλετε να βάλετε το έργο σας (θα το ονομάσουμε «weatherstation»):

cd ~ mkdir weatherstationcd weatherstation

Στη συνέχεια, δημιουργήσαμε το εικονικό περιβάλλον python3:

python3 -m pip install-upgrade pip setuptools wheel virtualenvpython3 -m venv --system-site-packages envsource env/bin/activpython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf

Στη συνέχεια, θα χρειαστεί να εγκαταστήσουμε κάποια άλλα πακέτα που χρειάζονται για να λειτουργήσει σωστά κάθε τι:

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Τώρα θα φτιάξουμε τη βάση δεδομένων μας:

Ωστόσο, πρέπει ακόμα να δημιουργήσουμε τη βάση δεδομένων μας. Μπορείτε να το κάνετε αυτό εκτελώντας το αρχείο κώδικα/sql που βρίσκεται στο φάκελο "sql" όπως αυτό:

sudo mariadb <sql/db_init.sql

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

Αυτό θα προσθέσει επίσης ορισμένα δείγματα δεδομένων ιστορικού στη βάση δεδομένων μας, για να βεβαιωθείτε ότι ο ιστότοπός μας εμφανίζει τα πάντα σωστά, όταν δεν έχουν συγκεντρωθεί ακόμη πραγματικά δεδομένα.

Για να εγκαταστήσετε το Adafruit_GPIO και το MyPyDHT θα χρειαστεί να κάνετε κάποια άλλα πράγματα. Πρώτα επιστρέψτε στο φάκελο χρήσης σας και στη συνέχεια:

git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py install

cd..git clone --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py install

Βήμα 4: Λογισμικό / Κώδικας

Λογισμικό / Κώδικας
Λογισμικό / Κώδικας
Λογισμικό / Κώδικας
Λογισμικό / Κώδικας
Λογισμικό / Κώδικας
Λογισμικό / Κώδικας

Πρέπει να δημιουργήσουμε το back-end για τον καιρό, το οποίο περιλαμβάνει:

- Μια βάση δεδομένων mariadb για την αποθήκευση των ενδείξεων των αισθητήρων μου και κάποια άλλα μικρά πράγματα. Μια υπηρεσία φιάλης για την εκτέλεση του ιστότοπου. περιττό, αλλά επειδή ήθελα ένα σύστημα σύνδεσης επειδή εγώ (αν και όλα τα δεδομένα είναι τα ίδια για όλους τους χρήστες) αποφάσισα να συμπεριλάβω στη βάση δεδομένων μου.

Μπορείτε να προχωρήσετε και να κλωνοποιήσετε τον κώδικα του έργου μου από το Github στο φάκελο του έργου σας. Μεταβείτε στο φάκελο χρήστη και εκτελέστε: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/

Στη συνέχεια, μεταβείτε στο φάκελο conf στο weatherstation και σε όλα τα αρχεία του φακέλου.

Αλλάξτε όλες τις εμφανίσεις του "USERNAME" στο όνομα χρήστη σας

Θα χρειαστεί επίσης να αντιγράψετε και τα δύο αρχεία.service στο systemd και να τα δοκιμάσετε ως εξής:

sudo cp conf/weatherstation-*. service/etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service

sudo systemctl κατάσταση Weatherstation-*

Στη συνέχεια, πρέπει να επεξεργαστούμε το nginx config.

sudo cp conf/nginx/etc/nginx/sites-available/weatherstationsudo rm/etc/nginx/sites-enabled/defaultsudo ln -s/etc/nginx/sites-available/weatherstation/etc/nginx/sites-enabled/weatherstationsudo systemctl επανεκκίνηση nginx.servicesudo systemctl κατάσταση nginx.service

Εάν όλα πήγαν καλά, θα πρέπει να μπορείτε να το εκτελέσετε και να εκτυπώσετε κάποιο html στο τερματικό:

wget -qO - localhost

Όλα πρέπει να λειτουργούν καλά τώρα. Μπορείτε να σερφάρετε στη διεύθυνση IP του βατόμουρου Pi που είχαμε ορίσει στην αρχή και να σας υποδεχτεί με μια οθόνη σύνδεσης.

Βήμα 5: Το περίβλημα

Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα

Τώρα που όλα λειτουργούν, πρέπει να βάλουμε το όλο πράγμα σε κάτι.

Επέλεξα ένα απλό πλαστικό κουτί με ένα διαφανές καπάκι. Το ανεμόμετρο είναι τοποθετημένο πάνω του, και έτσι είναι ένα δευτερεύον μικροσκοπικό δοχείο που περιέχει τους αισθητήρες DHT22 και BMP280.

Αυτοί οι αισθητήρες είναι τοποθετημένοι μέσα σε ένα ξεχωριστό δοχείο επειδή πρέπει να βρίσκονται στον ύπνο (χωρίς να βρέχει), αλλά το raspberry pi δεν χρειάζεται να είναι.

Όπως μπορείτε να δείτε, πρόσθεσα λίγη σιλικόνη στις άκρες για να το κάνω αδιάβροχο. Άνοιξα επίσης μερικές τρύπες στο πάνω δοχείο για να βγάλω καθαρό αέρα.

Ελπίζω να σας άρεσε ο οδηγός μου για το πώς να φτιάξετε έναν καιρό, μπορεί να είναι λίγο τραχύς στις άκρες αφού είναι η πρώτη μου φορά που γράφω έναν τέτοιο οδηγό, αλλά ελπίζω να σας άρεσε παρόλα αυτά:)

Συνιστάται: