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

Ξεκινώντας με το AWS IoT με ασύρματο αισθητήρα θερμοκρασίας χρησιμοποιώντας MQTT: 8 βήματα
Ξεκινώντας με το AWS IoT με ασύρματο αισθητήρα θερμοκρασίας χρησιμοποιώντας MQTT: 8 βήματα

Βίντεο: Ξεκινώντας με το AWS IoT με ασύρματο αισθητήρα θερμοκρασίας χρησιμοποιώντας MQTT: 8 βήματα

Βίντεο: Ξεκινώντας με το AWS IoT με ασύρματο αισθητήρα θερμοκρασίας χρησιμοποιώντας MQTT: 8 βήματα
Βίντεο: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Νοέμβριος
Anonim
Ξεκινώντας με το AWS IoT με ασύρματο αισθητήρα θερμοκρασίας χρησιμοποιώντας MQTT
Ξεκινώντας με το AWS IoT με ασύρματο αισθητήρα θερμοκρασίας χρησιμοποιώντας MQTT

Σε προηγούμενα Instructables, έχουμε περάσει από διαφορετικές πλατφόρμες cloud όπως Azure, Ubidots, ThingSpeak, Losant κ.λπ. Χρησιμοποιούμε το πρωτόκολλο MQTT για την αποστολή των δεδομένων αισθητήρων στο σύννεφο σχεδόν σε όλη την πλατφόρμα του cloud. Για περισσότερες πληροφορίες σχετικά με το MQTT, τα πλεονεκτήματα και τα οφέλη του σε σχέση με το πρωτόκολλο HTTP, μπορείτε να ανατρέξετε σε αυτό το διδακτικό.

Σε αυτό το διδακτικό, θα μεγεθύνουμε σε μια άλλη και πιο οικεία πλατφόρμα cloud cloud Amazon Web Services. Πολλοί από εσάς μπορεί να είστε εξοικειωμένοι με το AWS, γνωστό ως Amazon Web Services και τη λειτουργικότητα του cloud που παρέχεται από το AWS. Αποτελεί τον πυρήνα της ανάπτυξης ιστοσελίδων για πολλά χρόνια. Με την αυξανόμενη κλίμακα εφαρμογών IoT, το AWS κατέληξε στη λύση του AWSIoT. Το AWSIoT είναι μια αξιόπιστη λύση για τη φιλοξενία εφαρμογών IoT.

Ακολουθώντας αυτό το διδακτικό:

  • Θα μπορείτε να δημιουργήσετε λογαριασμό AWS για την εφαρμογή IoT
  • Θα μπορείτε να συνδέσετε το ESP32 στον πυρήνα AWS IoT
  • Αποστολή και λήψη μηνυμάτων χρησιμοποιώντας πρωτόκολλο MQTT και
  • Οπτικοποιήστε τα αποσταλμένα δεδομένα στο AWS

Βήμα 1: Ρύθμιση λογαριασμού AWS

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

Για να ρυθμίσετε τον λογαριασμό AWS ακολουθήστε αυτό το σεμινάριο.

Βήμα 2: Προδιαγραφές υλικού και λογισμικού

Προδιαγραφές υλικού και λογισμικού
Προδιαγραφές υλικού και λογισμικού

Προδιαγραφές λογισμικού

Ένας λογαριασμός AWS

Προδιαγραφή υλικού

  • ESP32
  • Ασύρματος αισθητήρας θερμοκρασίας και δόνησης
  • Δέκτης Zigmo Gateway

Βήμα 3: Ασύρματοι αισθητήρες δόνησης και θερμοκρασίας

Ασύρματοι αισθητήρες δόνησης και θερμοκρασίας
Ασύρματοι αισθητήρες δόνησης και θερμοκρασίας

Πρόκειται για έναν ασύρματο αισθητήρα κραδασμών και θερμοκρασίας Industrial IoT Long Range, που μπορεί να υπερηφανεύεται για εμβέλεια 2 Mile χρησιμοποιώντας αρχιτεκτονική ασύρματης δικτύωσης πλέγματος. Ενσωματώνοντας έναν αισθητήρα δόνησης και θερμοκρασίας 16-bit, αυτός ο αισθητήρας μεταδίδει υψηλής ακρίβειας δεδομένα δόνησης σε διαστήματα καθορισμένα από τον χρήστη. Έχει τα ακόλουθα χαρακτηριστικά:

  • Αισθητήρας δόνησης βιομηχανικού βαθμού 3 αξόνων με εύρος ± 32g
  • Υπολογίζει δόνηση RMS, MAX και MIN g
  • Αφαίρεση θορύβου χρησιμοποιώντας φίλτρο χαμηλής διέλευσης
  • Εύρος συχνοτήτων (εύρος ζώνης) έως 12, 800 Hz
  • Ρυθμός δείγματος έως 25, 600Hz
  • Κρυπτογραφημένη επικοινωνία με ασύρματο εύρος 2 μιλίων
  • Εύρος θερμοκρασίας λειτουργίας -40 έως +85 ° C
  • Επιτοίχιο ή με μαγνήτη περίβλημα με βαθμολογία IP65 Παράδειγμα λογισμικού για Visual Studio και LabVIEW
  • Αισθητήρας δόνησης με εξωτερική επιλογή ανιχνευτή
  • Έως 500, 000 κιβώτια ταχυτήτων από 4 μπαταρίες AA Πολλές διαθέσιμες επιλογές πύλης και μόντεμ

Βήμα 4: Υλικολογισμικό ESP32 AWS

Για να συνδεθείτε στο AWS και να ξεκινήσετε την αποστολή των δεδομένων, ακολουθήστε τα παρακάτω βήματα

  • Κατεβάστε τη βιβλιοθήκη AWS από το ακόλουθο αποθετήριο Github
  • κλωνοποιήστε το repo και τοποθετήστε το αρχείο AWS_IOT στο φάκελο βιβλιοθήκης του καταλόγου Arduino

git clone

Πάμε τώρα στον κώδικα:

  • Σε αυτήν την εφαρμογή, χρησιμοποιήσαμε μια δεσμευμένη πύλη για να αποθηκεύσουμε τα διαπιστευτήρια του WiFi και να τοποθετήσουμε το δείκτη του ποντικιού στις ρυθμίσεις IP. Για τη λεπτομερή εισαγωγή στην πύλη αιχμαλωσίας, μπορείτε να διαβάσετε τα παρακάτω διδακτικά.
  • Η πύλη δέσμευσης μας δίνει την επιλογή να επιλέξουμε μεταξύ των ρυθμίσεων Static και DHCP. Απλώς εισάγετε τα διαπιστευτήρια όπως το Static IP, Subnet Mask, gateway και η Wireless Sensor Gateway θα διαμορφωθεί σε αυτήν την IP.
  • Φιλοξενείται μια ιστοσελίδα όπου εμφανίζεται μια λίστα με τα διαθέσιμα δίκτυα WiFi και εκεί RSSI. Επιλέξτε το δίκτυο WiFi και τον κωδικό πρόσβασης και πληκτρολογήστε υποβολή. Τα διαπιστευτήρια θα αποθηκευτούν στο EEPROM και η ρύθμιση IP θα αποθηκευτεί στο SPIFFS. Περισσότερα για αυτό μπορείτε να βρείτε σε αυτό το εκπαιδευτικό.

Βήμα 5: Λήψη δεδομένων αισθητήρα από αισθητήρα ασύρματης δόνησης και θερμοκρασίας

Λήψη δεδομένων αισθητήρα από αισθητήρα ασύρματης δόνησης και θερμοκρασίας
Λήψη δεδομένων αισθητήρα από αισθητήρα ασύρματης δόνησης και θερμοκρασίας
Λήψη δεδομένων αισθητήρα από αισθητήρα ασύρματης δόνησης και θερμοκρασίας
Λήψη δεδομένων αισθητήρα από αισθητήρα ασύρματης δόνησης και θερμοκρασίας

Λαμβάνουμε ένα πλαίσιο 54-byte από τους Ασύρματους αισθητήρες θερμοκρασίας και δόνησης. Αυτό το πλαίσιο χειρίζεται για να λάβει την πραγματική θερμοκρασία και τα δεδομένα δόνησης.

Το ESP32 διαθέτει τρία UART για σειριακή χρήση

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. RX2 GPIO 16, TX2 GPIO 17

και 3 σειριακές θύρες υλικού

  • Κατα συρροη
  • Σειριακός 1
  • Σειριακό2

Αρχικά, προετοιμάστε το αρχείο επικεφαλίδας σειριακού υλικού. Εδώ θα χρησιμοποιήσουμε RX2 και TX2 aka. GPIO 16 και GPIO 17 ακίδες του πίνακα ESP32 για λήψη των σειριακών δεδομένων.

#περιλαμβάνω

# καθορισμός RXD2 16 # καθορισμός TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // καρφίτσες 16 rx2, 17 tx2, 19200 bps, 8 bits no parity 1 stop bit

Τα παρακάτω βήματα θα σας οδηγήσουν περαιτέρω στη λήψη των πραγματικών τιμών του αισθητήρα

  • Δημιουργήστε μεταβλητές για αποθήκευση θερμοκρασίας, υγρασίας, μπαταρίας και άλλων τιμών αισθητήρων
  • Ορίστε τα Rx, tx pin, baud rate και parity bits για το σειριακό υλικό
  • Αρχικά, ελέγξτε ότι υπάρχει κάτι για ανάγνωση χρησιμοποιώντας το Serial1.available ()
  • Θα λάβουμε το πλαίσιο των 54 byte.
  • Ελέγξτε για 0x7E που είναι byte έναρξης.
  • Τα δεδομένα δόνησης αποτελούνται από τιμή RMS για τον 3 άξονα, ελάχιστες τιμές για 3 άξονες, μέγιστες τιμές για 3 άξονες.
  • Οι τιμές θερμοκρασίας και μπαταρίας θα περιέχουν 2 byte δεδομένων
  • λάβετε το όνομα του αισθητήρα, τον τύπο, η έκδοση του αισθητήρα θα περιέχει 1 byte δεδομένων και μπορείτε να τα πάρετε από εκεί αντίστοιχη διεύθυνση

if (Serial2.available ()) {Serial.println ("Read Serial"); δεδομένα [0] = Serial2.read (); καθυστέρηση (k)? if (δεδομένα [0] == 0x7E) {Serial.println ("Got Packet"); ενώ (! Serial2.available ()); για (i = 1; i <55; i ++) {data = Serial2.read (); καθυστέρηση (1)? } if (δεδομένα [15] == 0x7F) /////// για να ελέγξετε αν τα δεδομένα ανάκτησης είναι σωστά {if (δεδομένα [22] == 0x08) //////// βεβαιωθείτε ότι ο τύπος αισθητήρα είναι σωστό {rms_x = ((uint16_t) (((δεδομένα [24]) << 16) + ((δεδομένα [25]) << 8) + (δεδομένα [26]))/100); rms_y = ((uint16_t) (((δεδομένα [27]) << 16) + ((δεδομένα [28]) << 8) + (δεδομένα [29]))/100); rms_z = ((uint16_t) (((δεδομένα [30]) << 16) + ((δεδομένα [31]) << 8) + (δεδομένα [32]))/100); int16_t max_x = ((uint16_t) (((δεδομένα [33]) << 16) + ((δεδομένα [34]) << 8) + (δεδομένα [35]))/100); int16_t max_y = ((uint16_t) (((δεδομένα [36]) << 16) + ((δεδομένα [37]) << 8) + (δεδομένα [38]))/100); int16_t max_z = ((uint16_t) (((δεδομένα [39]) << 16) + ((δεδομένα [40]) << 8) + (δεδομένα [41]))/100);

int16_t min_x = ((uint16_t) (((δεδομένα [42]) << 16) + ((δεδομένα [43]) << 8) + (δεδομένα [44]))/100); int16_t min_y = ((uint16_t) (((δεδομένα [45]) << 16) + ((δεδομένα [46]) << 8) + (δεδομένα [47]))/100); int16_t min_z = ((uint16_t) (((δεδομένα [48]) << 16) + ((δεδομένα [49]) << 8) + (δεδομένα [50]))/100);

cTemp = (((((δεδομένα [51]) * 256) + δεδομένα [52])); μπαταρία πλωτήρα = ((δεδομένα [18] * 256) + δεδομένα [19]); τάση = 0.00322 * μπαταρία. Serial.print ("Αριθμός αισθητήρα"); Serial.println (δεδομένα [16]); senseNumber = δεδομένα [16]; Serial.print ("Τύπος αισθητήρα"); Serial.println (δεδομένα [22]); Serial.print ("Έκδοση υλικολογισμικού"); Serial.println (δεδομένα [17]); Serial.print ("Θερμοκρασία σε Κελσίου:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("δόνηση RMS στον άξονα Χ:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("δόνηση RMS στον άξονα Υ:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("δόνηση RMS στον άξονα Ζ:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Ελάχιστη δόνηση στον άξονα Χ:");

Serial.print (min_x); Serial.println ("mg"); Serial.print ("Ελάχιστη δόνηση στον άξονα Υ:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Ελάχιστη δόνηση στον άξονα Ζ:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("ADC value:");

Serial.println (μπαταρία); Serial.print ("Τάση μπαταρίας:"); Serial.print (τάση); Serial.println ("\ n"); if (τάση <1) {Serial.println ("Timeρα για αντικατάσταση της μπαταρίας"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); καθυστέρηση (1)? }}}}

Βήμα 6: Σύνδεση στο AWS

Σύνδεση με AWS
Σύνδεση με AWS
  • Συμπεριλάβετε αρχεία κεφαλίδας AWS_IOT.h, WiFi.h για να δημιουργήσετε μια σύνδεση με το διανομέα AWSIoT
  • Εισαγάγετε τη διεύθυνση κεντρικού υπολογιστή σας, το αναγνωριστικό πελάτη που θα είναι το όνομα πολιτικής και το όνομα θέματος που θα είναι το όνομα του αντικειμένου

// ********* AWS Credentials ************ // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com" ? char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

Δημιουργήστε μια μεταβλητή char για να αποθηκεύσετε το JSON σας, σε αυτήν την περίπτωση, έχουμε δημιουργήσει μια μορφή αποθήκευσης του JSON

const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" τάση / ":%. 2f}";

Δημιουργήστε ένα παράδειγμα της κλάσης AWS_IOT

AWS_IOT esp; // Παρουσίαση κλάσης AWS_IOT

Τώρα συνδεθείτε στο διανομέα AWSIoT χρησιμοποιώντας την ακόλουθη μέθοδο

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Σύνδεση με AWS"); καθυστέρηση (1000)?

εάν (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Εγγραφή με επιτυχία"); } else {Serial.println ("Η εγγραφή απέτυχε, ελέγξτε το όνομα του πράγματος και τα πιστοποιητικά"); ενώ (1)? }} else {Serial.println ("Η σύνδεση AWS απέτυχε, Ελέγξτε τη διεύθυνση HOST"); ενώ (1)? }

καθυστέρηση (2000).

}

δημοσιεύστε τα δεδομένα του αισθητήρα μετά από κάθε 1 λεπτό

if (tick> = 60) // δημοσίευση στο θέμα κάθε 5 δευτερόλεπτα {tick = 0? ωφέλιμο φορτίο char [PAYLOAD_MAX_LEN]; snprintf (ωφέλιμο φορτίο, PAYLOAD_MAX_LEN, μορφή, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, τάση); Serial.println (ωφέλιμο φορτίο); if (hornbill.publish (TOPIC_NAME, ωφέλιμο φορτίο) == 0) {Serial.print ("Δημοσίευση μηνύματος:"); Serial.println (ωφέλιμο φορτίο); } else {Serial.println ("Η δημοσίευση απέτυχε"); }} vTaskDelay (1000 / θύραTICK_RATE_MS); τικ ++;

Βήμα 7: Οπτικοποίηση δεδομένων σε AWS

Οπτικοποίηση δεδομένων σε AWS
Οπτικοποίηση δεδομένων σε AWS
Οπτικοποίηση δεδομένων σε AWS
Οπτικοποίηση δεδομένων σε AWS
Οπτικοποίηση δεδομένων σε AWS
Οπτικοποίηση δεδομένων σε AWS
  • Συνδεθείτε στον λογαριασμό σας AWS.
  • στην αριστερή γωνία της γραμμής εργαλείων, θα βρείτε την καρτέλα Υπηρεσίες
  • Κάντε κλικ σε αυτήν την καρτέλα και στην επικεφαλίδα Internet of Things επιλέξτε IoT Core.
  • Επιλέξτε το QoS και όχι. μηνυμάτων προς τους συνδρομητές. Εισαγάγετε το όνομα του θέματος.

Βήμα 8: Συνολικός κώδικας

Μπορείτε να βρείτε τον συνολικό κώδικα σε αυτό το αποθετήριο Github.

Μονάδες

  • Arduino Json
  • Ασύρματοι αισθητήρες θερμοκρασίας και υγρασίας
  • ESP32
  • PubSubClient

Συνιστάται: