Πίνακας περιεχομένων:
- Βήμα 3: JAWS: Λογισμικό
- Βήμα 4: Περισσότερο λογισμικό…
- Βήμα 5: Μερικά στιγμιότυπα οθόνης…
- Βήμα 6: Ολοκληρώθηκε;
Βίντεο: JAWS: Just Another Meather Station: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Είναι πολύ απλό να φτιάξετε ένα τέτοιο JAWS.
Παίρνετε τους αισθητήρες σας, τους ρίχνετε μαζί σε σανίδες και αρχίζετε να χρησιμοποιείτε τις βιβλιοθήκες που συνοδεύουν τους αισθητήρες.
Ας ξεκινήσουμε με τη ρύθμιση του προγράμματος.
Δεδομένου ότι μιλάω ολλανδικά (μητρική ομιλήτρια) όλα τα δεδομένα και πολλές από τις μεταβλητές που χρησιμοποιώ είναι στα ολλανδικά. Έτσι τώρα έχετε την ευκαιρία να μάθετε μια άλλη γλώσσα…
Τι θέλουμε από το JAWS;
Εύκολο: θέλουμε να παρακολουθήσουμε μια οθόνη που μας δείχνει την πραγματική ώρα, ημερομηνία, εφημερίδες (ήλιος, δύση, διάρκεια της ημέρας και αστρονομικό μεσημέρι).
Δίπλα σε αυτό, θα ήταν ωραίο να βλέπουμε την εσωτερική και εξωτερική θερμοκρασία, τη σχετική υγρασία και το σημείο δρόσου και την πίεση του αέρα.
Για να διευκολύνουν τα πράγματα, χρησιμοποιώ βαθμούς Κελσίου για τη θερμοκρασία και hPa (= mBar) για την πίεση. Έτσι, κανείς δεν πρέπει να υπολογίσει πίσω από Φαρενάιτ ή λίρες ανά τετραγωνικό κύκλο…
Προς το παρόν, μόνο αυτά τα δεδομένα είναι διαθέσιμα…
Στο μέλλον, θα προσθέσω ταχύτητα αέρα, κατεύθυνση ανέμου και βροχόπτωση.
Η ιδέα είναι ότι θα έχω μια εξωτερική καιρικές συνθήκες και όλα τα δεδομένα θα σταλούν πάνω από 2,4GHz στην εσωτερική μονάδα.
Βήμα 3: JAWS: Λογισμικό
Για να φτάσετε στο λογισμικό μας, οι περισσότερες μπορούν να βρεθούν με υπάρχουσες βιβλιοθήκες.
Στο JAWS χρησιμοποιώ τα ακόλουθα:
- SPI.h: Η αρχική βιβλιοθήκη από το Arduino για πρωτόκολλο 4 καλωδίων. Χρησιμοποιείται για την ασπίδα TFT
- Adafruit_GFX.h και MCUfriend_kbv.h: και τα δύο χρησιμοποιούνται για γραφικά και οθόνη. Αυτά καθιστούν πολύ εύκολο να γράψετε κείμενο, να σχεδιάσετε γραμμές και πλαίσια στην οθόνη TFT.
- dht.h: για τα DHT μας: αυτή η βιβλιοθήκη μπορεί να χρησιμοποιηθεί για DHT11 (το μπλε) και DHT22.
- Wire.h: η βιβλιοθήκη Arduino για εύκολη σειριακή επικοινωνία. Χρησιμοποιείται για το ρολόι και την κάρτα SD.
- SD.h: Και πάλι πρωτότυπο Arduino, για εγγραφή και ανάγνωση από την κάρτα SD.
- TimeLord.h: αυτό το χρησιμοποιώ για τη διατήρηση του χρόνου, τον υπολογισμό του ηλιοβασιλέματος ή της ανατολής του ηλίου από οποιαδήποτε γεωγραφική θέση. Ρύθμισε επίσης το ρολόι για DST (καλοκαίρι ή χειμώνα).
Ας ξεκινήσουμε με το ρολόι.
Όταν διαβάζετε ένα ρολόι, χρειάζεστε τις μεταβλητές που λαμβάνετε από τους διαφορετικούς καταχωρητές μέσα στη μονάδα ρολογιού. Όταν τα κάνουμε περισσότερα από απλά αριθμούς, μπορούμε να χρησιμοποιήσουμε τις ακόλουθες γραμμές:
const int DS1307 = 0x68; const char* days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};
const char* μήνες = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};
ν
Με το TimeLord, το λαμβάνουμε ως δεδομένα, για τη θέση μου: (Lokeren, Βέλγιο)
TimeLord Lokeren; ρύθμιση του Lokeren. Position (51.096, 3.99). γεωγραφικό μήκος και γεωγραφικό πλάτος
Lokeren. TimeZone (+1*60); GMT +1 = +1 x 60 λεπτά
Lokeren. DstRules (3, 4, 10, 4, 60). DST από 3ο μήνα, 4η εβδομάδα έως 10ο μήνα, 4η εβδομάδα, +60 λεπτά
int jaar = έτος +2000;
byte sunRise = {0, 0, 12, ημέρα του μήνα, μήνα, έτος}; ξεκινήστε τον υπολογισμό κάθε μέρα από τις 00 ώρες
byte sunSet = {0, 0, 12, ημέρα του μήνα, μήνα, έτος}; ίδια όπως παραπάνω
byte maan = {0, 0, 12, ημέρα του μήνα, μήνα, έτος}; ίδια όπως παραπάνω
float φάση?
Από εδώ, γίνονται οι υπολογισμοί.
φάση = Lokeren. MoonPhase (maan);
Lokeren. SunRise (sunRise);
Lokeren. SunSet (sunSet);
Lokeren. DST (sunRise);
Lokeren. DST (sunSet);
int ZonOpUur = sunRise [tl_hour];
int ZonOpMin = sunRise [tl_minute];
int ZonOnUur = sunSet [tl_hour];
int ZonOnMin = sunSet [tl_minute];
Αυτό είναι το παράδειγμα του τρόπου υπολογισμού των πραγμάτων στο TimeLord. Με αυτήν τη βιβλιοθήκη, έχετε (αρκετά) ακριβείς ώρες ηλιοβασιλέματος και ανατολής.
Στο τέλος, θα βάλω ολόκληρο το πρόγραμμα με αυτό το Instructable. Είναι αρκετά απλό.
Βήμα 4: Περισσότερο λογισμικό…
Περισσότερα για το λογισμικό…
Έχουμε τρία μεγάλα μέρη στο λογισμικό.
1) Λαμβάνουμε ορισμένα ακατέργαστα δεδομένα από τους διαφορετικούς μας αισθητήρες: από το ρολόι μας, DHT και BMP180. Αυτή είναι η συμβολή μας.
2) Πρέπει να μεταφράσουμε τα δεδομένα σε (1 και 0) σε κάτι που έχει νόημα. Για αυτό, χρησιμοποιούμε τις βιβλιοθήκες και τις μεταβλητές μας.
3) Θέλουμε να διαβάσουμε και να αποθηκεύσουμε τα δεδομένα μας. Αυτή είναι η έξοδός μας. Για άμεση χρήση, έχουμε το LCD-TFT, για μεταγενέστερη χρήση, έχουμε τα αποθηκευμένα δεδομένα μας στην κάρτα SD.
Στο βρόχο μας (), παίρνουμε πολλά "GOTO's": πηδάμε στις διαφορετικές βιβλιοθήκες. Λαμβάνουμε τα δεδομένα μας από έναν από τους αισθητήρες, τα παίρνουμε και τα αποθηκεύουμε σε (κυρίως) μια κυμαινόμενη μεταβλητή δεδομένων. Επιλέγουμε τα ονόματα των μεταβλητών μας με σύνεση, όχι με x ή y αλλά με ονόματα όπως "tempOutside" ή "πίεση" ή τέτοια πράγματα. Για να είναι πιο ευανάγνωστα. Εντάξει, αυτό το καθιστά λίγο βαρύτερο στη χρήση μεταβλητών και καταναλώνει περισσότερη μνήμη.
Εδώ έρχεται το κόλπο: όταν κάνουμε τις μεταβλητές μας ορατές στην οθόνη, απλώς τις τοποθετούμε στη σωστή θέση.
Οι δύο βιβλιοθήκες που χρησιμοποιούνται εδώ, το Adafruit_GFX.h και το MCUfriend_kbv.h έχουν ένα ωραίο σύνολο που χρησιμοποιεί χρώματα, γραμματοσειρές και δυνατότητα σχεδίασης γραμμών. Σε πρώτη περίπτωση, χρησιμοποίησα μια οθόνη 12864 με αυτές τις βιβλιοθήκες, αργότερα την άλλαξα στην οθόνη tft. Το μόνο που έπρεπε να κάνω, είναι να τοποθετήσω κουτιά, ορθογώνια και γραμμές και να βεβαιωθώ ότι τα δεδομένα βγήκαν στη σωστή θέση. Για αυτό, μπορείτε να χρησιμοποιήσετε το setCursor και το tft. Write ως εντολή. Εύκολο το κάνει. Τα χρώματα μπορούν επίσης να οριστούν ως μεταβλητές, υπάρχουν πολλά παραδείγματα σε αυτές τις βιβλιοθήκες πώς να τα επιλέξετε.
Για να γράψετε στην κάρτα SD, χρειαζόμαστε επίσης μερικά απλά κόλπα.
Για παράδειγμα, διαβάζουμε τα δεδομένα μας από το ρολόι ως ξεχωριστές ώρες, λεπτά και δευτερόλεπτα. Οι θερμοκρασίες είναι DHT.temperature και DHTT.temperature, για διάκριση μεταξύ εσωτερικού ή εξωτερικού χώρου.
Όταν θέλουμε να τα βάλουμε στην κάρτα SD, χρησιμοποιούμε μια συμβολοσειρά: ξεκινάμε κάθε βρόχο ως κενή συμβολοσειρά:
variablestring = ""; Στη συνέχεια, μπορούμε να το συμπληρώσουμε με όλα τα δεδομένα μας:
variablestring = variablestring + ώρες + ":" + λεπτά + ":" + δευτερόλεπτα. Αυτό δίνει τη συμβολοσειρά όπως 12:00:00.
Δεδομένου ότι το γράφουμε ως αρχείο TXT (βλέπε SD.h στο Arduino.cc), για τις επόμενες μεταβλητές προσθέτουμε μια καρτέλα, οπότε είναι ευκολότερο να το εισαγάγουμε στο Excel.
Έτσι φτάνουμε στο: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Θερμοκρασία.
Και ούτω καθεξής.
Βήμα 5: Μερικά στιγμιότυπα οθόνης…
Για να είμαστε σίγουροι ότι δεν "υπερφορτώνουμε" τα σύνολα δεδομένων μας, έγραψα δεδομένα μόνο μία φορά κάθε 10 λεπτά. Μας δίνει 144 καταχωρήσεις την ημέρα. Δεν είναι κακό, νομίζω.
Και φυσικά, μπορείτε να συνεχίσετε να επεξεργάζεστε αυτά τα δεδομένα: μπορείτε να κάνετε μέσους όρους, μπορείτε να αναζητήσετε μέγιστα και ελάχιστα, μπορείτε να συγκρίνετε με τα προηγούμενα χρόνια…
Τα γραφεία Met συνήθως κάνουν μέσους όρους ημέρας και νύχτας, για θερμοκρασίες: η ημέρα ξεκινά στις 8 π.μ. και διαρκεί έως τις 8 μ.μ.
Για τον άνεμο, την πίεση και τη βροχόπτωση, οι μέσοι όροι λαμβάνονται από τα μεσάνυχτα έως τα μεσάνυχτα.
Βήμα 6: Ολοκληρώθηκε;
Όχι πραγματικά … Όπως είπα θα ήθελα επιτέλους να λειτουργήσει ο αισθητήρας ταχύτητας και κατεύθυνσης ανέμου με τα υπόλοιπα JAWS.
Η μικρή κατασκευή που έφτιαξα έχει ύψος περίπου 4μ. Ο μετεωρολόγος έχει ταχύτητα ανέμου από ύψος 10 μέτρων. Λίγο πολύ ψηλά για μένα…
Ελπίζω να σας άρεσε να διαβάζετε αυτό!
Το Adafruit-GFX εξηγείται εδώ:
Το MCUFRIEND_kbv.h βρίσκεται εδώ:
Περισσότερα για το BMP 120 (ίδιο με το BMP085):
Σχετικά με το DHT22:
Συνιστάται:
Roberts RM33 Raspberry Pi Internet Radio (Yet Another…): 8 βήματα (με εικόνες)
Roberts RM33 Raspberry Pi Internet Radio (Another Another…): Ναι, είναι μια άλλη κατασκευή διαδικτυακού ραδιοφώνου Raspberry Pi και όχι η πρώτη μου. Δεν είμαι σίγουρος γιατί αυτή η κατασκευή εξακολουθεί να είναι τόσο δημοφιλής, αλλά εξακολουθώ να την απολαμβάνω και δεν μπορώ να πω ότι αυτή θα είναι και η τελευταία μου. Μου αρέσει πολύ η εμφάνιση του Robert
Just Another ATtiny85 Retro Gaming Console: 4 Βήματα
Just Another ATtiny85 Retro Gaming Console: Μια μικρή ρετρό κονσόλα που μοιάζει με κονσόλα βασισμένη στο ATtiny85 x 0.96 OLED για παιχνίδι εισβολέων χώρου, Tetris κ.λπ
Just Line, Just Light! (Type1): 19 Βήματα
Just Line, Just Light! (Type1): Είναι ένα έργο έκφρασης φωτός σε ακρυλικές πλάκες χαραγμένες με σχέδια γραμμικής τέχνης. Εκφράζει αρμονικά χρώματα και μοτίβα διαφόρων LED. Αυτό το έργο πραγματοποιήθηκε με μοτίβα από τον Arout Meijer's " Ευχαριστώ για τους Πλανήτες " από
Just Another Antenna: 4 Βήματα
Just Another Antenna: Έτσι αποφάσισα να δημιουργήσω μια κεραία από παλιοσίδερα που είχα στο σπίτι, η ιδέα ήταν να μην αγοράσω κανένα υλικό, αν ήταν δυνατόν. Ξέρω ότι ο κοινός άνθρωπος δεν θα είχε τόσο πολλά σκουπίδια, αλλά το έκανα και αμφισβήτησα τον εαυτό μου
YABC - Another Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: 4 βήματα
YABC - Another Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: Hi Makers, άρχισα πρόσφατα να καλλιεργώ μανιτάρια στο σπίτι, μανιτάρια Oysters, αλλά έχω ήδη 3 από αυτούς τους ελεγκτές στο σπίτι για τον έλεγχο θερμοκρασίας Fermenter για το σπίτι μου, γυναίκα κάνει επίσης αυτό το πράγμα Kombucha τώρα και ως θερμοστάτης για θερμότητα