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

Προσανατολισμός χάρτη μέσω διακομιστή Web: 6 βήματα
Προσανατολισμός χάρτη μέσω διακομιστή Web: 6 βήματα

Βίντεο: Προσανατολισμός χάρτη μέσω διακομιστή Web: 6 βήματα

Βίντεο: Προσανατολισμός χάρτη μέσω διακομιστή Web: 6 βήματα
Βίντεο: CS50 2015 - Week 10 2024, Νοέμβριος
Anonim
Προσανατολισμός χάρτη μέσω διακομιστή Web
Προσανατολισμός χάρτη μέσω διακομιστή Web

Το Internet of Things (IoT) είναι ένα από τα δημοφιλέστερα θέματα στον πλανήτη αυτή τη στιγμή. Και, αυξάνεται ραγδαία μέρα με τη μέρα με το Διαδίκτυο. Το Διαδίκτυο των Πραγμάτων αλλάζει τα απλά σπίτια σε έξυπνα σπίτια, όπου τα πάντα, από τα φώτα έως τις κλειδαριές σας, μπορούν να ελεγχθούν από το smartphone ή την επιφάνεια εργασίας σας. Αυτή είναι η πολυτέλεια που όλοι θέλουν να έχουν.

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

Σήμερα, σκεφτόμαστε να εργαστούμε σε ένα από τα πιο σημαντικά θέματα στο IoT - Digitalηφιακός προσανατολισμός χαρτών.

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

Ξεκινάμε από.. !!

Βήμα 1: Εξοπλισμός που χρειαζόμαστε..

Ο εξοπλισμός που χρειαζόμαστε.. !!
Ο εξοπλισμός που χρειαζόμαστε.. !!
Ο εξοπλισμός που χρειαζόμαστε.. !!
Ο εξοπλισμός που χρειαζόμαστε.. !!
Ο εξοπλισμός που χρειαζόμαστε.. !!
Ο εξοπλισμός που χρειαζόμαστε.. !!
Ο εξοπλισμός που χρειαζόμαστε.. !!
Ο εξοπλισμός που χρειαζόμαστε.. !!

1. Αισθητήρας LSM9DS0

Ο αισθητήρας 3 σε 1 που κατασκευάζεται από την STMicroelectronics, ο LSM9DS0 είναι ένα σύστημα σε πακέτο που διαθέτει τρισδιάστατο ψηφιακό αισθητήρα γραμμικής επιτάχυνσης, τρισδιάστατο ψηφιακό αισθητήρα γωνιακού ρυθμού και τρισδιάστατο ψηφιακό μαγνητικό αισθητήρα. Το LSM9DS0 έχει γραμμική πλήρη κλίμακα επιτάχυνσης ± 2g/± 4g/± 6g/± 8g/± 16g, μαγνητικό πεδίο πλήρους κλίμακας ± 2/± 4/± 8/± 12 gauss και γωνιακό ρυθμό ± 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

Ο επεξεργαστής ESP8266 από το Espressif είναι ένας μικροελεγκτής 80 MHz με πλήρες front-end WiFi (τόσο ως πελάτης όσο και ως σημείο πρόσβασης) και στοίβα TCP/IP με υποστήριξη DNS επίσης. Το ESP8266 είναι μια απίστευτη πλατφόρμα για την ανάπτυξη εφαρμογών IoT. Το ESP8266 παρέχει μια ώριμη πλατφόρμα για την παρακολούθηση και τον έλεγχο εφαρμογών χρησιμοποιώντας τη γλώσσα Arduino Wire Language και το Arduino IDE.

3. Προγραμματιστής USB ESP8266

Ο προσαρμογέας κεντρικού υπολογιστή ESP8266 σχεδιάστηκε ειδικά από το Dcube Store για την έκδοση Adafruit Huzzah του ESP8266, επιτρέποντας τη διεπαφή I²C.

4. Καλώδιο σύνδεσης I2C

5. Μίνι καλώδιο USB

Το τροφοδοτικό μίνι καλωδίου USB είναι μια ιδανική επιλογή για την τροφοδοσία του Adafruit Huzzah ESP8266.

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

Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού

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

Πρώτα απ 'όλα πάρτε το Adafruit Huzzah ESP8266 και τοποθετήστε τον προγραμματιστή USB (με θύρα I²C Inward Facing). Πατήστε τον προγραμματιστή USB απαλά και τελειώσαμε με αυτό το βήμα τόσο εύκολα όσο η πίτα (Δείτε την παραπάνω εικόνα).

Σύνδεση του αισθητήρα και του Adafruit Huzzah ESP8266Πάρτε τον αισθητήρα και συνδέστε το καλώδιο I²C με αυτόν. Για σωστή λειτουργία αυτού του καλωδίου, θυμηθείτε ότι η έξοδος I²C συνδέεται ΠΑΝΤΑ στην είσοδο I²C. Το ίδιο έπρεπε να ακολουθηθεί και για το Adafruit Huzzah ESP8266 με τον προγραμματιστή USB τοποθετημένο πάνω του (Δείτε την παραπάνω εικόνα).

Με τη βοήθεια του ESP8266 USB Programmer, είναι πολύ εύκολο να προγραμματίσετε το ESP. Το μόνο που χρειάζεται να κάνετε είναι να συνδέσετε τον αισθητήρα σε προγραμματιστή USB και είστε έτοιμοι. Προτιμούμε να χρησιμοποιούμε αυτόν τον προσαρμογέα επειδή διευκολύνει πολύ τη σύνδεση του υλικού. Μην ανησυχείτε για τη συγκόλληση των ακίδων του ESP στον αισθητήρα ή την ανάγνωση των διαγραμμάτων και του φύλλου δεδομένων. Μπορούμε να χρησιμοποιήσουμε και να δουλέψουμε ταυτόχρονα σε πολλούς αισθητήρες, απλά πρέπει να φτιάξετε μια αλυσίδα. Χωρίς αυτούς τους προγραμματιστές USB plug and play, υπάρχει μεγάλος κίνδυνος να κάνετε λάθος σύνδεση. Μια κακή καλωδίωση μπορεί να σκοτώσει το wifi σας καθώς και τον αισθητήρα σας.

Σημείωση: Το καφέ σύρμα πρέπει να ακολουθεί πάντα τη σύνδεση Ground (GND) μεταξύ της εξόδου μιας συσκευής και της εισόδου μιας άλλης συσκευής.

Τροφοδοσία του κυκλώματος

Συνδέστε το καλώδιο Mini USB στην υποδοχή τροφοδοσίας του Adafruit Huzzah ESP8266. Άναψε το και voila, είμαστε έτοιμοι!

Βήμα 3: Κωδικός

Κώδικας
Κώδικας

Ο κωδικός ESP για τον αισθητήρα Adafruit Huzzah ESP8266 και LSM9DS0 είναι διαθέσιμος στο αποθετήριο github.

Πριν προχωρήσετε στον κώδικα, βεβαιωθείτε ότι έχετε διαβάσει τις οδηγίες που δίνονται στο αρχείο Readme και ρυθμίστε το Adafruit Huzzah ESP8266 σύμφωνα με αυτό. Θα χρειαστούν μόλις 5 λεπτά για τη ρύθμιση του ESP.

Ο κώδικας είναι μακρύς αλλά είναι στην πιο απλή μορφή που μπορείτε να φανταστείτε και δεν θα δυσκολευτείτε να τον καταλάβετε.

Για τη διευκόλυνσή σας, μπορείτε να αντιγράψετε τον κωδικό ESP που λειτουργεί για αυτόν τον αισθητήρα από εδώ επίσης:

// Διανέμεται με άδεια ελεύθερης βούλησης.// Χρησιμοποιήστε το με όποιον τρόπο θέλετε, κέρδος ή δωρεάν, υπό την προϋπόθεση ότι ταιριάζει στις άδειες των σχετικών έργων του. // LSM9DSO // Αυτός ο κώδικας έχει σχεδιαστεί για να λειτουργεί με το Mini Module TCS3414_I2CS I2C διαθέσιμο από το dcubestore.com.

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

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

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

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

// Η διεύθυνση LSM9DSO Gyro I2C είναι 6Α (106)

#define Addr_Gyro 0x6A // LSM9DSO Accl I2C address is 1E (30) #define Addr_Accl 0x1E

const char* ssid = "το δικό σου";

const char* password = "ο κωδικός σας"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

Διακομιστής ESP8266WebServer (80);

void handleroot ()

{unsigned int data [6];

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr_Gyro); // Επιλογή καταχωρητή ελέγχου 1 Wire.write (0x20); // Ρυθμός δεδομένων = 95Hz, X, Y, Z-Axis enabled, power on Wire.write (0x0F); // Διακοπή I2C Transmission Wire.endTransmission ();

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr_Gyro); // Επιλογή καταχωρητή ελέγχου 4 Wire.write (0x23); // Πλήρους μεγέθους 2000 dps, συνεχής ενημέρωση Wire.write (0x30). // Διακοπή I2C Transmission Wire.endTransmission ();

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr_Accl); // Επιλογή καταχωρητή ελέγχου 1 Wire.write (0x20); // Ρυθμός δεδομένων επιτάχυνσης = 100Hz, X, Y, Z-Axis enabled, power on Wire.write (0x67); // Διακοπή μετάδοσης I2C στη συσκευή Wire.endTransmission ();

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr_Accl); // Επιλογή καταχωρητή ελέγχου 2 Wire.write (0x21); // Επιλογή πλήρους κλίμακας +/- 16g Wire.write (0x20); // Διακοπή I2C Transmission Wire.endTransmission ();

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr_Accl); // Επιλογή καταχωρητή ελέγχου 5 Wire.write (0x24); // Μαγνητική υψηλή ανάλυση, ρυθμός δεδομένων εξόδου = 50Hz Wire.write (0x70); // Διακοπή I2C Transmission Wire.endTransmission ();

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr_Accl); // Επιλογή καταχωρητή ελέγχου 6 Wire.write (0x25); // Μαγνητική πλήρους κλίμακας +/- 12 gauss Wire.write (0x60); // Διακοπή I2C Transmission Wire.endTransmission ();

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr_Accl); // Επιλογή καταχωρητή ελέγχου 7 Wire.write (0x26); // Κανονική λειτουργία, μαγνητική λειτουργία συνεχούς μετατροπής Wire.write (0x00); // Διακοπή I2C Transmission Wire.endTransmission (); καθυστέρηση (300)?

για (int i = 0; i <6; i ++) {// Έναρξη I2C Transmission Wire.beginTransmission (Addr_Gyro); // Επιλέξτε μητρώο δεδομένων Wire.write ((40 + i)); // Διακοπή I2C Transmission Wire.endTransmission ();

// Αίτημα 1 byte δεδομένων

Wire.requestFrom (Addr_Gyro, 1)?

// Διαβάστε 6 byte δεδομένων

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available () == 1) {data = Wire.read (); }}

// Μετατρέψτε τα δεδομένα

int xGyro = ((δεδομένα [1] * 256) + δεδομένα [0]); int yGyro = ((δεδομένα [3] * 256) + δεδομένα [2]); int zGyro = ((δεδομένα [5] * 256) + δεδομένα [4]);

για (int i = 0; i <6; i ++) {// Έναρξη I2C Transmission Wire.beginTransmission (Addr_Accl); // Επιλέξτε μητρώο δεδομένων Wire.write ((40 + i)); // Διακοπή I2C Transmission Wire.endTransmission ();

// Αίτημα 1 byte δεδομένων

Wire.requestFrom (Addr_Accl, 1);

// Διαβάστε 6 byte δεδομένων

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available () == 1) {data = Wire.read (); }}

// Μετατρέψτε τα δεδομένα

int xAccl = ((δεδομένα [1] * 256) + δεδομένα [0]); int yAccl = ((δεδομένα [3] * 256) + δεδομένα [2]); int zAccl = ((δεδομένα [5] * 256) + δεδομένα [4]);

για (int i = 0; i <6; i ++) {// Έναρξη I2C Transmission Wire.beginTransmission (Addr_Accl); // Επιλέξτε μητρώο δεδομένων Wire.write ((8 + i)); // Διακοπή I2C Transmission Wire.endTransmission ();

// Αίτημα 1 byte δεδομένων

Wire.requestFrom (Addr_Accl, 1);

// Διαβάστε 6 byte δεδομένων

// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available () == 1) {data = Wire.read (); }}

// Μετατρέψτε τα δεδομένα

int xMag = ((δεδομένα [1] * 256) + δεδομένα [0]); int yMag = ((δεδομένα [3] * 256) + δεδομένα [2]); int zMag = ((δεδομένα [5] * 256) + δεδομένα [4]);

// Έξοδος δεδομένων σε σειριακή οθόνη

Serial.print ("X-Axis of rotation:"); Serial.println (xGyro); Serial.print ("Y-Axis of rotation:"); Serial.println (yGyro); Serial.print ("Z-Axis of rotation:"); Serial.println (zGyro); Serial.print ("Επιτάχυνση στον άξονα Χ:"); Serial.println (xAccl); Serial.print ("Επιτάχυνση στον άξονα Υ:"); Serial.println (yAccl); Serial.print ("Επιτάχυνση στον άξονα Z:"); Serial.println (zAccl); Serial.print ("Μαγνητικό πεδίο στον άξονα Χ:"); Serial.println (xMag); Serial.print ("Μαγνητικό πεδίο στον άξονα Υ:"); Serial.println (yMag); Serial.print ("Magnetic filed in Z-Axis:"); Serial.println (zMag);

// Έξοδος δεδομένων στον διακομιστή ιστού

server.sendContent ("

DCUBE STORE

www.dcubestore.com

"LSM9DS0 Sensor I2C Mini Module."

);

server.sendContent ("

X-Axis of rotation = " + String (xGyro)); server.sendContent ("

Y-Axis of rotation = " + String (yGyro)); server.sendContent ("

Z-Axis of rotation = " + String (zGyro)); server.sendContent ("

Επιτάχυνση σε X-Axis = " + String (xAccl)); server.sendContent ("

Επιτάχυνση στον Y-Axis = " + String (yAccl)); server.sendContent ("

Επιτάχυνση στο Z-Axis = " + String (zAccl)); server.sendContent ("

Μαγνητική καταχωρημένη στο X-Axis = " + String (xMag)); server.sendContent ("

Μαγνητική καταχωρημένη στο Y-Axis = " + String (yMag)); server.sendContent ("

Μαγνητική καταχωρημένη σε Z-Axis = " + String (zMag)); καθυστέρηση (1000);}

void setup ()

{// Αρχικοποίηση επικοινωνίας I2C ως MASTER Wire.begin (2, 14); // Αρχικοποίηση σειριακής επικοινωνίας, καθορισμός ρυθμού baud = 115200 Serial.begin (115200);

// Σύνδεση σε δίκτυο WiFi

WiFi.begin (ssid, κωδικός πρόσβασης);

// Περιμένετε τη σύνδεση

while (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (500); Serial.print ("."); } Serial.println (""); Serial.print ("Συνδέθηκε με"); Serial.println (ssid);

// Λάβετε τη διεύθυνση IP του ESP8266

Serial.print ("Διεύθυνση IP:"); Serial.println (WiFi.localIP ());

// Ξεκινήστε τον διακομιστή

server.on ("/", handleroot); server.begin (); Serial.println ("Ο διακομιστής HTTP ξεκίνησε"); }

κενός βρόχος ()

{server.handleClient (); }

Βήμα 4: Εργασία κώδικα

Λειτουργία του Κώδικα
Λειτουργία του Κώδικα

Τώρα, κατεβάστε (ή git pull) τον κώδικα και ανοίξτε τον στο Arduino IDE.

Συγκεντρώστε και ανεβάστε τον κώδικα και δείτε την έξοδο στο Serial Monitor.

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

Αντιγράψτε τη διεύθυνση IP του ESP8266 από τη Σειριακή οθόνη και επικολλήστε την στο πρόγραμμα περιήγησής σας. Θα δείτε μια ιστοσελίδα με άξονα περιστροφής, επιτάχυνση και ανάγνωση μαγνητικού πεδίου στον 3-άξονα.

Η έξοδος του αισθητήρα στο Serial Monitor και στον Web Server εμφανίζεται στην παραπάνω εικόνα.

Βήμα 5: Εφαρμογές και δυνατότητες

Το LSM9DS0 είναι ένα σύστημα σε πακέτο που διαθέτει τρισδιάστατο ψηφιακό αισθητήρα γραμμικής επιτάχυνσης, τρισδιάστατο ψηφιακό αισθητήρα γωνιακού ρυθμού και τρισδιάστατο ψηφιακό μαγνητικό αισθητήρα. Μετρώντας αυτές τις τρεις ιδιότητες, μπορείτε να αποκτήσετε πολλές γνώσεις σχετικά με την κίνηση ενός αντικειμένου. Μετρώντας τη δύναμη και την κατεύθυνση του μαγνητικού πεδίου της Γης με ένα μαγνητόμετρο, μπορείτε να προσεγγίσετε την επικεφαλίδα σας. Ένα επιταχυνσιόμετρο στο τηλέφωνό σας μπορεί να μετρήσει την κατεύθυνση της δύναμης της βαρύτητας και να εκτιμήσει τον προσανατολισμό (πορτραίτο, τοπίο, επίπεδο κ.λπ.). Τα τετρακόπτερα με ενσωματωμένα γυροσκόπια μπορούν να προσέξουν ξαφνικά ρολά ή γήπεδα. Μπορούμε να το χρησιμοποιήσουμε στο Global Positioning System (GPS).

Ορισμένες άλλες εφαρμογές περιλαμβάνουν εσωτερική πλοήγηση, έξυπνες διεπαφές χρήστη, Προηγμένη αναγνώριση χειρονομιών, συσκευές εισόδου Gaming και εικονικής πραγματικότητας κ.λπ.

Με τη βοήθεια του ESP8266, μπορούμε να αυξήσουμε τη χωρητικότητά του σε μεγαλύτερο μήκος. Μπορούμε να ελέγχουμε τις συσκευές μας και να παρακολουθούμε εκεί την απόδοση από τους επιτραπέζιους υπολογιστές και τις κινητές συσκευές μας. Μπορούμε να αποθηκεύσουμε και να διαχειριστούμε τα δεδομένα στο διαδίκτυο και να τα μελετήσουμε ανά πάσα στιγμή για τροποποιήσεις. Περισσότερες εφαρμογές περιλαμβάνουν Home Automation, Mesh Network, Industrial Wireless Control, Baby Monitors, Sensor Networks, Wearable Electronics, Wi-Fi Location-aware Devices, Wi-Fi Position System Beacons.

Βήμα 6: Πόροι για να προχωρήσετε περαιτέρω

Για περισσότερες πληροφορίες σχετικά με τα LSM9DS0 και ESP8266, ανατρέξτε στους παρακάτω συνδέσμους:

  • Φύλλο δεδομένων αισθητήρα LSM9DS0
  • Διάγραμμα καλωδίωσης LSM9DS0
  • Φύλλο δεδομένων ESP8266

Συνιστάται: