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

Έξυπνο κατανεμημένο σύστημα παρακολούθησης καιρού IoT με χρήση NodeMCU: 11 βήματα
Έξυπνο κατανεμημένο σύστημα παρακολούθησης καιρού IoT με χρήση NodeMCU: 11 βήματα

Βίντεο: Έξυπνο κατανεμημένο σύστημα παρακολούθησης καιρού IoT με χρήση NodeMCU: 11 βήματα

Βίντεο: Έξυπνο κατανεμημένο σύστημα παρακολούθησης καιρού IoT με χρήση NodeMCU: 11 βήματα
Βίντεο: The Third Industrial Revolution: A Radical New Sharing Economy 2024, Ιούλιος
Anonim
Έξυπνο κατανεμημένο σύστημα παρακολούθησης καιρού IoT με χρήση NodeMCU
Έξυπνο κατανεμημένο σύστημα παρακολούθησης καιρού IoT με χρήση NodeMCU

Όλοι ίσως γνωρίζετε τον παραδοσιακό μετεωρολογικό σταθμό. αλλά έχετε αναρωτηθεί ποτέ πώς λειτουργεί στην πραγματικότητα; Δεδομένου ότι ο παραδοσιακός μετεωρολογικός σταθμός είναι δαπανηρός και ογκώδης, η πυκνότητα αυτών των σταθμών ανά μονάδα επιφάνειας είναι πολύ μικρότερη, γεγονός που συμβάλλει στην ανακρίβεια των δεδομένων. Θα σας εξηγήσω πώς: Ας υποθέσουμε ότι ένας σταθμός βρίσκεται στη μέση μιας πόλης και είναι ο μόνος σταθμός που βρίσκεται σε ακτίνα «x» μέτρου, μπορεί να είναι εύκολα προκατειλημμένος εάν υπάρχει κάποιος παράγοντας που προκαλεί ρύπανση στην περιοχή του σταθμού που εμφανίζει ολόκληρη την ακτίνα 'x' μέτρου ως μολυσμένη αφού αυτός ο μόνος σταθμός είναι υπεύθυνος για τον προσδιορισμό των καιρικών δεδομένων ολόκληρης της περιοχής.

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

Αυτός είναι ο λόγος που η προτεινόμενη λύση μου είναι η τέλεια λύση για αυτό το πρόβλημα, κοστίζει λιγότερο από $ 10 και επίσης στηρίζεται εύκολα στην παλάμη μου.

Πως δουλεύει…

Υπάρχουν 3 κύρια μέρη αυτού του έργου.

Πλευρά συσκευής:

Η συσκευή είναι μια ενότητα IoT που εμφανίζεται στην εικόνα και στέλνει τα δεδομένα καιρού στον διακομιστή κάθε χρονικό διάστημα «x». Τα δεδομένα περιλαμβάνουν τα πραγματικά δεδομένα καιρού, τη γεωγραφική θέση της μονάδας. δηλ. οι συντεταγμένες του, η διεύθυνση MAC του. για να προσδιορίσετε μοναδικά τη συσκευή, την έκδοση υλικολογισμικού στην οποία εκτελείται αυτήν τη στιγμή. Η πλευρά της συσκευής περιλαμβάνει μονάδες Ν που κατανέμονται σε όλη την περιοχή και συνεισφέρουν ενεργά δεδομένα στον διακομιστή.

Πλευρά του διακομιστή:

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

Πελάτης/πλευρά χρήστη:

Είναι ο τελικός χρήστης που ζητά τα δεδομένα καιρού από τον διακομιστή. Ο πελάτης στέλνει την τρέχουσα τοποθεσία και με βάση την τοποθεσία, ο διακομιστής υπολογίζει την απόσταση μεταξύ του προγράμματος -πελάτη και όλων των μονάδων και στέλνει τα δεδομένα καιρού της πλησιέστερης μονάδας στον πελάτη, τα οποία θεωρούνται ακριβή.

Προμήθειες

  • NodeMCU (ESP8266-12E)
  • DHT11 (Αισθητήρας υγρασίας και θερμοκρασίας)
  • BMP180 (Αισθητήρας πίεσης και θερμοκρασίας)
  • MQ-135 (αισθητήρας δείκτη ποιότητας αέρα)
  • Καλώδιο USB (για να ανεβάσετε το πρόγραμμα)
  • Τροφοδοτικό 5 volt
  • Πυκνωτές (προαιρετικά: να τοποθετηθούν παράλληλα με το καλώδιο τροφοδοσίας)
  • Arduino IDE (Για εντοπισμό σφαλμάτων και μεταφόρτωση του προγράμματος)
  • ΕΦΑΡΜΟΓΗ POSTMAN (προαιρετικό: για εντοπισμό σφαλμάτων στο API)
  • Ένας ιστότοπος (για τη φιλοξενία του διακομιστή PHP και MySQL)

Βήμα 1: Συγκόλληση όλων των εξαρτημάτων και μεταφόρτωση του προγράμματος στο NodeMCU

Συγκολλήστε όλα τα εξαρτήματα και ανεβάστε το πρόγραμμα στο NodeMCU
Συγκολλήστε όλα τα εξαρτήματα και ανεβάστε το πρόγραμμα στο NodeMCU
Συγκολλήστε όλα τα εξαρτήματα και ανεβάστε το πρόγραμμα στο NodeMCU
Συγκολλήστε όλα τα εξαρτήματα και ανεβάστε το πρόγραμμα στο NodeMCU

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

Μόλις ολοκληρωθεί η εργασία συγκόλλησης, ανεβάστε τον κωδικό που παρέχεται στο αρχείο "code.c".

Σημείωση: Μην ξεχάσετε να αντικαταστήσετε τα διαπιστευτήρια με τα δικά σας διαπιστευτήρια. Τοποθετήστε επίσης το αρχείο με το όνομα "html_file.h" μέσα στο φάκελο σκίτσου arduino. Όλα τα αρχεία κεφαλίδων που χρησιμοποιούνται σε αυτό το έργο μπορείτε να τα βρείτε εδώ

Χαρακτηριστικά του κώδικα:

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

Μόλις διαμορφωθούν τα διαπιστευτήρια, το NodeMCU ελέγχει το EEPROM για διαπιστευτήρια και συνδέεται με τα διαπιστευτήρια WiFi που υπάρχουν στο EEPROM.

Μετά την επιτυχή σύνδεση στο WiFi, το NodeMCU ξεκινά τη μεταφόρτωση των δεδομένων στον διακομιστή κάθε χρονικό διάστημα 'x', τα δεδομένα περιλαμβάνουν δεδομένα καιρού, διεύθυνση MAC της μονάδας, έκδοση υλικολογισμικού, γεωγραφική θέση της συσκευής.

Ενημέρωση OTA: Η ενότητα ελέγχει επίσης για νέα ενημέρωση υλικολογισμικού κάθε μέρα σε συγκεκριμένη ώρα που καθορίζεται στον κώδικα. Αυτή η δυνατότητα είναι χρήσιμη, δεδομένου ότι δεν είναι δυνατό για οποιονδήποτε κατασκευαστή να συνεχίσει και να αλλάξει το πρόγραμμα μιας μεμονωμένης μονάδας σε περίπτωση που πρέπει να γίνουν αλλαγές.

Watchdog Timer: Atlast πρέπει να υπάρχει τρόπος να ανακάμψει χωρίς καμία ανθρώπινη παρέμβαση εάν κολλήσει ή κολλήσει. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας το χρονόμετρο Watchdog. Ο τρόπος που λειτουργεί αυτό είναι: Υπάρχει μια υπορουτίνα διακοπής που εκτελείται κάθε δευτερόλεπτο. Το ISR αυξάνει τον μετρητή κάθε φορά που εκτελείται και ελέγχει εάν ο μετρητής έχει φτάσει στο μέγιστο αριθμό. Μόλις ο μετρητής φτάσει στη μέγιστη τιμή, η μονάδα επαναφέρει τον εαυτό της υποθέτοντας ότι έχει καταρρεύσει. Σε κανονική λειτουργία, ο μετρητής επαναφέρεται πάντα πριν φτάσει στο μέγιστο αριθμό.

Βήμα 2: Διαμόρφωση του SQL Server

Διαμόρφωση του SQL Server
Διαμόρφωση του SQL Server

Η ρύθμιση του SQL Server είναι επίσης πολύ απλή. Απλώς δημιουργήστε μια βάση δεδομένων σε διακομιστή SQL και εισαγάγετε τη ρύθμιση εισάγοντας το αρχείο με το όνομα "database_structure.txt". Μπορείτε να βρείτε το αρχείο σε αυτό το βήμα. Καθώς το εκπαιδευτικό δεν επιτρέπει τη μεταφόρτωση αρχείων ".sql", μετονόμασα το αρχείο σε ".txt".

Σημείωση: Μετονομάστε το αρχείο από ".txt" σε ".sql".

Βήμα 3: Διαμόρφωση του διακομιστή αρχείων

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

Επειδή το Instructable δεν επιτρέπει τη μεταφόρτωση αρχείων PHP, μετονόμασα τα αρχεία σε ".txt".

Σημείωση: Μετονομάστε την επέκταση των αρχείων σε ".php". Επίσης, μην ξεχάσετε να αλλάξετε τα διαπιστευτήρια του αρχείου "config.php".

Απλώς ανεβάστε τα αρχεία στον διακομιστή και είστε έτοιμοι.

Θα σας δώσω σύντομες πληροφορίες σχετικά με τα αρχεία PHP.

db_config.php:

Σε αυτό το αρχείο, αποθηκεύονται όλα τα διαπιστευτήρια που απαιτούνται για τη σύνδεση στον διακομιστή SQL.

db_connect:

Σε αυτό το αρχείο υπάρχει η κλάση που απαιτείται για σύνδεση με βάση δεδομένων.

insert.php:

Το NodeMCU καλεί αυτό το αρχείο PHP για μεταφόρτωση δεδομένων στον διακομιστή χρησιμοποιώντας τη μέθοδο GET. Αυτό το αρχείο είναι επίσης υπεύθυνο για την αποθήκευση των ίδιων δεδομένων στον διακομιστή SQL.

retrieve.php:

Ο χρήστης/πελάτης καλεί αυτήν την PHP χρησιμοποιώντας τη μέθοδο GET. Ο διακομιστής υπολογίζει την απόσταση μεταξύ του χρήστη και όλων των μονάδων. Στη συνέχεια, τα δεδομένα της πλησιέστερης μονάδας αποστέλλονται ως απάντηση στον πελάτη σε μορφή JSON/XML, όπως προτιμά ο πελάτης.

update.php:

Αυτό το αρχείο PHP καλείται από τη μονάδα κάθε μέρα σε μια συγκεκριμένη ώρα για να ελέγξει εάν η μονάδα εκτελεί την πιο πρόσφατη έκδοση του υλικολογισμικού. Απλώς τοποθετήστε το τελευταίο αρχείο ".bin" στο διακομιστή αρχείων και καθορίστε τον κατάλογο του αρχείου στη μεταβλητή του αρχείου.

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

Βήμα 4: Τεκμηρίωση χρήστη

Τεκμηρίωση χρήστη
Τεκμηρίωση χρήστη
Τεκμηρίωση χρήστη
Τεκμηρίωση χρήστη

Εισαγωγή:

Το Weather API παρέχει μια απλή διεπαφή για να ζητήσετε τα δεδομένα καιρού για τοποθεσίες στην επιφάνεια της γης. Ζητάτε τις πληροφορίες καιρού για ένα συγκεκριμένο ζεύγος γεωγραφικού πλάτους/γεωγραφικού μήκους με την καθορισμένη μορφή εξόδου. Το API επιστρέφει τον δείκτη θερμοκρασίας, υγρασίας, πίεσης και ποιότητας του αέρα που καταγράφηκε τελευταία από την πλησιέστερη μονάδα από την τοποθεσία που ζητήθηκε.

Πριν ξεκινήσεις:

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

Αιτήματα δεδομένων καιρού:

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

Ένα αίτημα API καιρού λαμβάνει την ακόλουθη μορφή:

example.com/retrieve.php?lat=25.96446&lon=53.9443&format=json

Όπου η μορφή εξόδου (μορφή) μπορεί να είναι μία από τις ακόλουθες τιμές:

  • JSON (συνιστάται), υποδεικνύει την έξοδο στο JavaScript Object Notation (JSON). ή
  • XML, υποδεικνύει την έξοδο σε XML, τυλιγμένη μέσα στον κόμβο.

Παράμετροι αιτήματος:

Όπως είναι τυπικό σε όλες τις διευθύνσεις URL, οι παράμετροι διαχωρίζονται με τη χρήση του χαρακτήρα ampersand (&). Η λίστα των παραμέτρων και οι πιθανές τιμές τους σημειώνονται παρακάτω.

Απαιτούμενες παράμετροι:

  • lat: Αντιπροσωπεύει ένα γεωγραφικό πλάτος μιας τοποθεσίας προς αναζήτηση. (π.χ. lat = 19.56875)
  • lon: Αντιπροσωπεύει ένα γεωγραφικό μήκος μιας τοποθεσίας προς αναζήτηση. (π.χ. lon = 72.97568)

Προαιρετικές παράμετροι:

format: Καθορίζει τη μορφή εξόδου απόκρισης των δεδομένων καιρού. Μπορεί να είναι είτε JSON είτε XML. Η προεπιλογή είναι JSON. (π.χ. μορφή = json ή μορφή = xml)

Καιρικές απαντήσεις:

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

  • επιτυχία: μια τιμή που υποδεικνύει την κατάσταση της απάντησης.

    • 0: Αρνητικό. υποδεικνύει ότι το αίτημα ήταν εσφαλμένο.
    • 1: Καταφατική υποδεικνύει ότι το αίτημα ήταν επιτυχές.
  • μήνυμα: μια συμβολοσειρά που υποδεικνύει την αιτία της δυσπλασίας του αιτήματος. Διατίθεται μόνο όταν η κατάσταση είναι αρνητική.
  • δεδομένα: ένας πίνακας με πολλαπλές καιρικές παραμέτρους.

    • temp: τα δεδομένα θερμοκρασίας.
    • βουητό: δεδομένα παρουσίας υγρασίας.
    • pres: τα δεδομένα απόλυτης πίεσης.
    • aqi: ο σημερινός δείκτης ποιότητας του αέρα.

Τα παραδείγματα απόκρισης και των δύο μορφών φαίνονται στις εικόνες.

Βήμα 5: Εγκατάσταση ενότητας

Ρύθμιση ενότητας
Ρύθμιση ενότητας
Ρύθμιση ενότητας
Ρύθμιση ενότητας

Δημιουργείται ένα σημείο πρόσβασης και μια ιστοσελίδα φιλοξενείται σε μια διεύθυνση IP (Προεπιλογή: 192.168.4.1) για να λάβετε τα διαπιστευτήρια από τον διαχειριστή συσκευής/χρήστη κατά την πρώτη εκκίνηση ή εάν η μονάδα δεν βρίσκει τα ήδη αποθηκευμένα διαπιστευτήρια στο EEPROM.

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

Μόλις εισαχθούν όλες οι λεπτομέρειες, κάντε κλικ στο κουμπί "ΑΠΟΣΤΟΛΗ" και, στη συνέχεια, όλα τα διαπιστευτήρια γράφονται στο EEPROM της μονάδας.

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

Βήμα 6: Τώρα ήρθε η ώρα να συνεισφέρουμε δεδομένα στο Cloud

Τώρα ήρθε η ώρα να συνεισφέρουμε δεδομένα στο σύννεφο
Τώρα ήρθε η ώρα να συνεισφέρουμε δεδομένα στο σύννεφο
Τώρα ήρθε η ώρα να συνεισφέρουμε δεδομένα στο σύννεφο
Τώρα ήρθε η ώρα να συνεισφέρουμε δεδομένα στο σύννεφο

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

Καλεί το "insert.php" ως κλήση API με τη μετάβαση όλων των παραμέτρων για αποστολή σε μέθοδο GET.

Το παρακάτω απόσπασμα κώδικα δείχνει τον τρόπο επεξεργασίας των παραμέτρων.

if (isset ($ _ GET ['temp']) && isset ($ _ GET ['hum']) && isset ($ _ GET ['pres']) && isset ($ _ GET ['aqi']) && isset ($ _ GET ['mac']) && isset ($ _ GET ['lat']) && isset ($ _ GET ['lon']))) 2. {3. // κύριο πρόγραμμα 4.}

Όπως και όλες οι ενότητες ξεκινούν τη μεταφόρτωση των δεδομένων.

Σημείωση: Μειώστε τη συχνότητα μεταφόρτωσης στον κώδικα εάν πιστεύετε ότι ο διακομιστής υπερφορτώνεται.

Βήμα 7: Ενημέρωση μέσω του αέρα (OTA)

Ενημέρωση μέσω του αέρα (OTA)
Ενημέρωση μέσω του αέρα (OTA)

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

Για έλεγχο για μια νέα ενημέρωση, η μονάδα καλεί το "update.php" στέλνοντας τη διεύθυνση MAC στην κεφαλίδα αιτήματος. Στη συνέχεια, ο διακομιστής ελέγχει εάν η συγκεκριμένη διεύθυνση MAC έχει κάποια νέα ενημέρωση, εάν ναι, τότε στέλνει το δυαδικό αρχείο του τελευταίου υλικολογισμικού σε απάντηση.

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

Βήμα 8: Πώς μπορεί ο χρήστης/πελάτης να έχει πρόσβαση στα δεδομένα…

Πώς ο χρήστης/πελάτης μπορεί να έχει πρόσβαση στα δεδομένα…
Πώς ο χρήστης/πελάτης μπορεί να έχει πρόσβαση στα δεδομένα…
Πώς ο χρήστης/πελάτης μπορεί να έχει πρόσβαση στα δεδομένα…
Πώς ο χρήστης/πελάτης μπορεί να έχει πρόσβαση στα δεδομένα…
Πώς ο χρήστης/πελάτης μπορεί να έχει πρόσβαση στα δεδομένα…
Πώς ο χρήστης/πελάτης μπορεί να έχει πρόσβαση στα δεδομένα…

Είναι αρκετά απλό να έχετε πρόσβαση στα δεδομένα από τον διακομιστή. Απλώς καλώντας το "retrieve.php", θα λάβουμε τα δεδομένα καιρού σε απάντηση σε μορφή JSON. Μετά από αυτό, είναι απλώς θέμα ανάλυσης των δεδομένων JSON για πρόσβαση στα μεμονωμένα στοιχεία. Παρόμοιο είναι και με την απόκριση XML. Ο χρήστης μπορεί πάντα να καθορίσει την προτιμώμενη μορφή απόκρισης στην οποία ο χρήστης είναι άνετος να εργαστεί. Εάν ο χρήστης δεν καθορίσει τη μορφή, η προεπιλεγμένη μορφή είναι JSON.

Ένα δείγμα αιτήματος γίνεται χρησιμοποιώντας το εργαλείο POSTMAN για να ελέγξετε τη λειτουργία του API.

Ένα παράδειγμα ανάλυσης της απόκρισης JSON σε javascript εμφανίζεται στο παρακάτω απόσπασμα κώδικα.

var url = "https://example.com/retrieve.php?lat=19.044848&lon=72.8464373";; λειτουργία httpGet (theUrl) {var xmlHttp = new XMLHttpRequest (); xmlHttp.open ("GET", theUrl, false); // false για σύγχρονο αίτημα xmlHttp.send (null); επιστροφή xmlHttp.responseText; } var myVar = httpGet (url); var obj = JSON.parse (myVar); document.getElementById ("aqi"). innerHTML = obj.data [0].aqi; document.getElementById ("θερμοκρασία"). innerHTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("temp"). innerHTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("υγρασία"). innerHTML = Math.round (obj.data [0].hum) + "%"; document.getElementById ("πίεση"). innerHTML = Math.round (obj.data [0].pres) + "mb";

Ο πηγαίος κώδικας του παραδείγματος σελίδας HTML που αναλύει την απόκριση JSON είναι διαθέσιμος στο τέλος αυτού του βήματος.

Σημείωση: Αλλάξτε την επέκταση του αρχείου σε ".html".

Βήμα 9: Περιορισμοί αυτού του έργου

  • Το έργο χρησιμοποιεί το GET για την αποστολή των δεδομένων. Παρόλο που δεν ασχολείται με ευαίσθητα δεδομένα, τα δεδομένα μπορούν εύκολα να χειριστούν, καθώς δεν έχουν κανέναν μηχανισμό για τον έλεγχο της αυθεντικότητας της πηγής, εκτός από τον έλεγχο των κεφαλίδων, οι οποίοι μπορούν εύκολα να τροποποιηθούν και ακόμη και μια κανονική συσκευή μπορεί να παραπλανηθεί να μοιάζει με ενότητα καιρού.
  • Δεδομένου ότι η ενότητα βασίζεται και εξαρτάται αποκλειστικά από άλλο σημείο πρόσβασης (WIFI) για την αποστολή των δεδομένων που στις περισσότερες περιπτώσεις θα ήταν άλλων οργανισμών. Εάν το σημείο πρόσβασης είναι σε λειτουργία για κάποιο λόγο, η μονάδα δεν θα είναι σε θέση να στείλει δεδομένα.
  • Παρόλο που το έργο έχει σχεδιαστεί για να αυξάνει την ακρίβεια του υπάρχοντος συστήματος, ο διαθέσιμος αισθητήρας στην αγορά είναι λιγότερο ακριβής από τον αναμενόμενο, πράγμα που οδηγεί σε αποτυχία του κύριου σκοπού του.
  • Κατά τον προγραμματισμό του έργου, σχεδίαζα να συμπεριλάβω μια λειτουργία κατά την οποία ο διακομιστής υπολογίζει κατά μέσο όρο την τιμή δεδομένων με βάση την τοποθεσία για διόρθωση σφάλματος. Αλλά με την εφαρμογή αυτής της δυνατότητας, συνειδητοποίησα ότι χρειάζονταν ορισμένα API τρίτων για τη μετάφραση των συντεταγμένων σε γεωγραφικές περιοχές.

Βήμα 10: Περαιτέρω βελτιώσεις που μπορούν να γίνουν σε αυτό το έργο

  • Η ακρίβεια της μονάδας μπορεί να βελτιωθεί περαιτέρω προσαρμόζοντας ειδικά τους αισθητήρες για τον συγκεκριμένο σκοπό αντί να χρησιμοποιήσετε τη γενική μονάδα που είναι διαθέσιμη στην αγορά.
  • Η μονάδα μπορεί να τροποποιηθεί για να λειτουργεί ακόμη πιο ανεξάρτητα χρησιμοποιώντας ένα ειδικό τσιπ που επικοινωνεί ασύρματα με τους Cell-tower για να στείλει τα δεδομένα βελτιώνοντας έτσι την ανοχή σε σφάλματα.
  • Το ηλιακό πάνελ και το σύστημα μπαταριών μπορούν να χρησιμοποιηθούν σε συνδυασμό με τη λειτουργία ύπνου ESP βελτιώνοντας έτσι την αποδοτικότητα ισχύος και καθιστώντας την πιο ανεξάρτητη από μια εξωτερική τροφοδοσία.
  • Το POST μπορεί να χρησιμοποιηθεί για την αποστολή δεδομένων με κάποιο μηχανισμό ελέγχου ταυτότητας, όπως τη χρήση κυκλικών κωδικών για κάθε μετάδοση δεδομένων.
  • Αντί για το NodeMCU, το οποίο είναι ένας πίνακας πρωτοτύπων, μπορούμε να χρησιμοποιήσουμε έναν προσαρμοσμένο μικροελεγκτή στη μαζική παραγωγή, ο οποίος όχι μόνο μειώνει το κόστος αλλά κάνει και την καλύτερη δυνατή χρήση των πόρων του συστήματος.
  • Σε συνδυασμό με το API γεωγραφικής τοποθεσίας Google και σύνδεση με οποιοδήποτε διαθέσιμο ανοιχτό WIFI, η μονάδα μπορεί να λειτουργήσει χωρίς καν να τη διαμορφώσει. έτοιμο να μεταδώσει δεδομένα από το εργοστάσιο χωρίς να χρειαστεί καμία απολύτως ρύθμιση.

Βήμα 11: Λίγα λόγια για το κοινό

Λίγα λόγια για το κοινό
Λίγα λόγια για το κοινό

Γεια σας παιδιά, συνειδητοποιώ ότι αυτό δεν είναι καθόλου φιλικό για αρχάριους καθώς δεν έχω αναφέρει κάθε λεπτομέρεια που πρέπει να καλυφθεί. Και επίσης αυτό το έργο είναι πραγματικά τεράστιο για να καλυφθεί σε ένα Instructable. Παρόλα αυτά, προσπάθησα να καλύψω κάθε σημαντική πτυχή του έργου. Γνωρίζω επίσης ότι ένα βίντεο που παρουσιάζει τη λειτουργία του έργου θα ήταν πραγματικά υπέροχο, αλλά επειδή αυτή είναι η πρώτη μου διδάσκουσα και για να είμαι ειλικρινής, αυτή είναι η πρώτη μου δημοσίευση για κάτι παρόμοιο με αυτό, ήμουν πολύ νευρικός να βρεθώ μπροστά σε ένα ΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ.

Αν χρειάζεστε βοήθεια για την πραγματοποίηση αυτού του έργου ή κάτι παρόμοιο με αυτό, απλώς επικοινωνήστε μαζί μου στη διεύθυνση [email protected] ή μπορείτε να αφήσετε ένα σχόλιο όπως πάντα. Θα προσπαθήσω να σας βοηθήσω στο μέγιστο των δυνατοτήτων μου.

Σας ευχαριστώ!!

Συνιστάται: