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

Ξεκινώντας με το Arduino και το Ethernet: 8 βήματα
Ξεκινώντας με το Arduino και το Ethernet: 8 βήματα

Βίντεο: Ξεκινώντας με το Arduino και το Ethernet: 8 βήματα

Βίντεο: Ξεκινώντας με το Arduino και το Ethernet: 8 βήματα
Βίντεο: Χειρισμός αυτοματισμών σπιτιού arduino με χρήση android εφαρμογής 2024, Ιούλιος
Anonim
Ξεκινώντας με το Arduino και το Ethernet
Ξεκινώντας με το Arduino και το Ethernet

Το Arduino σας μπορεί εύκολα να επικοινωνήσει με τον έξω κόσμο μέσω ενσύρματης σύνδεσης Ethernet. Ωστόσο, πριν ξεκινήσουμε, θα θεωρηθεί ότι έχετε μια βασική κατανόηση της δικτύωσης υπολογιστών, όπως η γνώση του τρόπου σύνδεσης υπολογιστών σε διανομέα/δρομολογητή με καλώδια RJ45, τι είναι διεύθυνση IP και MAC κ.ο.κ. Επιπλέον, εδώ είναι μια καλή γρήγορη περιγραφή για το Ethernet.

Θα χρειαστείτε Arduino Uno ή συμβατή πλακέτα με ασπίδα Ethernet που χρησιμοποιεί το IC ελεγκτή W5100 Ethernet (σχεδόν όλα) σύμφωνα με την εικόνα.

Επιπλέον, θα χρειαστεί να τροφοδοτήσετε την πλακέτα μέσω της εξωτερικής πρίζας DC - το IC W5100 χρησιμοποιεί περισσότερο ρεύμα από το τροφοδοτικό USB. Ένα πακέτο βύσματος 9V 1.5A/κονδυλώματος τοίχου θα είναι αρκετό.

Βήμα 1:

Εικόνα
Εικόνα

Τέλος - οι ασπίδες ζεσταίνονται - οπότε προσέξτε να μην αγγίξετε το W5100 μετά από εκτεταμένη χρήση. Σε περίπτωση που δεν είστε σίγουροι - αυτό είναι το IC W5100.

Βήμα 2:

Μόλις έχετε το Arduino με δυνατότητα Ethernet και έχετε συνδέσει την εξωτερική τροφοδοσία-είναι καλή ιδέα να ελέγξετε ότι όλα λειτουργούν. Ανοίξτε το Arduino IDE και επιλέξτε Αρχείο> Παραδείγματα> Ethernet> Διακομιστής ιστοσελίδων. Αυτό φορτώνει ένα απλό σκίτσο που θα εμφανίζει δεδομένα που συλλέγονται από τις αναλογικές εισόδους σε ένα πρόγραμμα περιήγησης ιστού. Ωστόσο, μην το ανεβάσετε ακόμα, χρειάζεται μια μικρή τροποποίηση.

Πρέπει να καθορίσετε τη διεύθυνση IP της ασπίδας Ethernet - η οποία γίνεται μέσα στο σκίτσο. Αυτό είναι απλό, μεταβείτε στη γραμμή:

IPAddress ip (10, 1, 1, 77);

Και αλλάξτε το για να ταιριάζει με τη δική σας ρύθμιση. Για παράδειγμα, στο σπίτι μας η διεύθυνση IP του δρομολογητή είναι 10.1.1.1, ο εκτυπωτής είναι 10.1.1.50 και όλοι οι υπολογιστές είναι κάτω από… 50. Έτσι, θα θέσω την IP ασπίδας μου σε 10.1.1.77 αλλάζοντας τη γραμμή σε:

byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

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

Βήμα 3:

Εικόνα
Εικόνα

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

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

Τι συμβαίνει?

Το Arduino έχει προγραμματιστεί να προσφέρει μια απλή ιστοσελίδα με τις τιμές που μετρούνται από τις αναλογικές εισόδους. Μπορείτε να ανανεώσετε το πρόγραμμα περιήγησης για να λάβετε ενημερωμένες τιμές. Σε αυτό το σημείο - σημειώστε ότι οι ασπίδες Ethernet χρησιμοποιούν ψηφιακές ακίδες 10 ~ 13, οπότε δεν μπορείτε να τις χρησιμοποιήσετε για οτιδήποτε άλλο. Ορισμένες ασπίδες Arduino Ethernet μπορεί επίσης να έχουν υποδοχή κάρτας microSD, η οποία χρησιμοποιεί επίσης άλλο ψηφιακό pin - οπότε ελέγξτε με την τεκμηρίωση για να μάθετε ποια.

Βήμα 4:

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

για (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("αναλογική είσοδος"); client.print (analogChannel); client.print ("είναι"); client.print (sensorReading); client.println (""); } client.println ("");

Ας ελπίσουμε ότι αυτό το τμήμα του σκίτσου πρέπει να είναι οικείο - θυμηθείτε πώς χρησιμοποιήσαμε το serial.print (). στο παρελθόν κατά την αποστολή δεδομένων στο πλαίσιο σειριακής οθόνης; Λοιπόν, τώρα μπορούμε να κάνουμε το ίδιο πράγμα, αλλά η αποστολή δεδομένων από την ασπίδα Ethernet πίσω σε ένα πρόγραμμα περιήγησης ιστού - με άλλα λόγια, ένας πολύ βασικός τύπος ιστοσελίδας. Ωστόσο, υπάρχει κάτι που μπορεί να θέλετε ή να μην θέλετε να μάθετε για να μορφοποιήσετε η έξοδος σε αναγνώσιμη μορφή - κώδικας HTML. Δεν είμαι προγραμματιστής ιστοσελίδων (!), Οπότε δεν θα εμβαθύνω πολύ στην HTML.

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

client.print ("είναι");

Client.print (); μας επιτρέπει να στείλουμε κείμενο ή δεδομένα πίσω στην ιστοσελίδα. Λειτουργεί με τον ίδιο τρόπο όπως το serial.print (), οπότε δεν υπάρχει τίποτα νέο εκεί. Μπορείτε επίσης να καθορίσετε τον τύπο δεδομένων με τον ίδιο τρόπο όπως με το serial.print (). Φυσικά, μπορείτε επίσης να το χρησιμοποιήσετε για την αποστολή δεδομένων επίσης. Η άλλη χρήσιμη γραμμή είναι:

client.println ("");

που στέλνει τον κώδικα HTML πίσω στο πρόγραμμα περιήγησης ιστού λέγοντάς του να ξεκινήσει μια νέα γραμμή. Το τμήμα που προκαλεί την επιστροφή/νέα γραμμή μεταφοράς είναι το

που είναι ένας κώδικας HTML (ή "ετικέτα") για μια νέα γραμμή.

Έτσι, εάν δημιουργείτε πιο περίτεχνες οθόνες ιστοσελίδων, μπορείτε απλώς να εισαγάγετε άλλες ετικέτες HTML στο client.print (); δήλωση. Αν θέλετε να μάθετε περισσότερα σχετικά με τις εντολές HTML, εδώ είναι ένας καλός εκπαιδευτικός ιστότοπος.

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

Βήμα 5: Πρόσβαση στο Arduino μέσω Διαδικτύου

Πρόσβαση στο Arduino σας μέσω Διαδικτύου
Πρόσβαση στο Arduino σας μέσω Διαδικτύου

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

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

Εάν ο ISP σας δεν μπορεί να σας προσφέρει καθόλου στατική IP, μπορείτε να συνεχίσετε το έργο χρησιμοποιώντας έναν οργανισμό που προσφέρει δυναμικό DNS. Αυτοί οι οργανισμοί σας προσφέρουν το δικό σας στατικό όνομα κεντρικού υπολογιστή IP (π. Από ό, τι μπορώ να συγκεντρώσω, το μόντεμ σας πρέπει να υποστηρίζει (να έχει ενσωματωμένο πρόγραμμα-πελάτη για…) αυτές τις υπηρεσίες DDNS.

Για παράδειγμα, δύο εταιρείες είναι οι No-IP καιDynDNS.com. Λάβετε υπόψη ότι δεν έχω χρησιμοποιήσει αυτά τα δύο, προσφέρονται μόνο ως παραδείγματα. Τώρα, για να βρείτε τη διεύθυνση IP σας … συνήθως αυτό μπορεί να βρεθεί συνδέοντας τη σελίδα διαχείρισης του δρομολογητή σας - είναι συνήθως 192.168.0.1 αλλά μπορεί να είναι διαφορετικό. Ελέγξτε με τον προμηθευτή σας ή τον πάροχο υπηρεσιών κινητής τηλεφωνίας εάν παρείχαν το υλικό. Για αυτό το παράδειγμα, εάν εισαγάγω το 10.1.1.1 σε ένα πρόγραμμα περιήγησης ιστού και μετά την εισαγωγή του κωδικού πρόσβασης διαχείρισης του μόντεμ μου, η ακόλουθη οθόνη εμφανίζεται σύμφωνα με την εικόνα.

Βήμα 6:

Εικόνα
Εικόνα

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

Το επόμενο πράγμα που πρέπει να κάνετε είναι να ενεργοποιήσετε την προώθηση λιμένων. Αυτό λέει στον δρομολογητή πού να ανακατευθύνει τα εισερχόμενα αιτήματα από τον έξω κόσμο. Όταν το μόντεμ λάβει ένα τέτοιο αίτημα, θέλουμε να το στείλουμε στον αριθμό θύρας της ασπίδας Ethernet. Χρησιμοποιώντας το:

Διακομιστής EthernetServer (125).

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

Βήμα 7:

Εικόνα
Εικόνα

Έτσι, μπορείτε να δείτε από τη γραμμή 1 στην παραπάνω εικόνα, οι αριθμοί εισερχόμενης θύρας έχουν οριστεί σε 125 και η διεύθυνση IP της ασπίδας Ethernet έχει οριστεί σε 10.1.1.77 - η ίδια όπως και στο σκίτσο.

Μετά την αποθήκευση των ρυθμίσεων, είμαστε έτοιμοι. Η εξωτερική διεύθυνση της ασπίδας Ethernet θα είναι το WAN: 125, οπότε για πρόσβαση στο Arduino θα πληκτρολογήσω τη διεύθυνση WAN με: 125 στο τέλος στο πρόγραμμα περιήγησης της απομακρυσμένης συσκευής ιστού, η οποία θα επικοινωνήσει με το μοναχικό υλικό Ethernet στο σπίτι.

Επιπλέον, μπορεί να χρειαστεί να αλλάξετε τις ρυθμίσεις του τείχους προστασίας του μόντεμ σας, για να επιτρέψετε στη θύρα 125 να είναι «ανοιχτή» σε εισερχόμενα αιτήματα. Ελέγξτε την τεκμηρίωση του μόντεμ για περισσότερες πληροφορίες σχετικά με το πώς να το κάνετε αυτό. Τώρα βασικά από οποιαδήποτε συνδεδεμένη στο Διαδίκτυο συσκευή στον ελεύθερο κόσμο, μπορώ να εισαγάγω τον αριθμό WAN και θύρας μου στο πεδίο URL και να λάβω τα αποτελέσματα. Για παράδειγμα, από τηλέφωνο όταν είναι συνδεδεμένο στο Διαδίκτυο μέσω δεδομένων κινητής τηλεφωνίας LTE.

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

Βήμα 8: Εμφάνιση δεδομένων αισθητήρα σε μια ιστοσελίδα

Εμφάνιση δεδομένων αισθητήρα σε μια ιστοσελίδα
Εμφάνιση δεδομένων αισθητήρα σε μια ιστοσελίδα

Ως παράδειγμα εμφάνισης δεδομένων αισθητήρα σε μια ιστοσελίδα, ας χρησιμοποιήσουμε έναν φθηνό και δημοφιλή αισθητήρα θερμοκρασίας και υγρασίας - το DHT22. Θα χρειαστεί να εγκαταστήσετε τη βιβλιοθήκη DHT22 Arduino που μπορείτε να βρείτε σε αυτήν τη σελίδα. Εάν είναι η πρώτη σας φορά με το DHT22, πειραματιστείτε με το παράδειγμα σκίτσου που περιλαμβάνεται στη βιβλιοθήκη, ώστε να καταλάβετε πώς λειτουργεί.

Συνδέστε το DHT22 με τον ακροδέκτη δεδομένων στο Arduino D2, το Vin στον πείρο 5V και το GND στο… GND. Τώρα για το σκίτσο μας - για να εμφανίσετε τη θερμοκρασία και την υγρασία σε μια ιστοσελίδα. Εάν δεν γνωρίζετε HTML, μπορείτε να χρησιμοποιήσετε διαδικτυακές υπηρεσίες όπως αυτή για να δημιουργήσετε τον κώδικα, τον οποίο μπορείτε στη συνέχεια να τροποποιήσετε ώστε να χρησιμοποιείται στο σκίτσο. Στο παρακάτω παράδειγμα, τα δεδομένα θερμοκρασίας και υγρασίας από το DHT22 εμφανίζονται σε μια απλή ιστοσελίδα:

#include "SPI.h" #include "Ethernet.h"

// για αισθητήρα DHT22

#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Εισαγάγετε μια διεύθυνση MAC και μια διεύθυνση IP για τον ελεγκτή σας παρακάτω.

// Η διεύθυνση IP θα εξαρτηθεί από το τοπικό σας δίκτυο: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip (10, 1, 1, 77);

// Αρχικοποιήστε τη βιβλιοθήκη διακομιστή Ethernet

// με τη διεύθυνση IP και τη θύρα που θέλετε να χρησιμοποιήσετε // (η θύρα 80 είναι προεπιλεγμένη για HTTP): Διακομιστής EthernetServer (125). DHT dht (DHTPIN, DHTTYPE);

void setup ()

{dht.begin (); // Ανοίξτε σειριακές επικοινωνίες και περιμένετε να ανοίξει η θύρα: Serial.begin (9600); ενώ (! Σειριακό) {; // περιμένετε να συνδεθεί η σειριακή θύρα. Απαιτείται μόνο για τον Leonardo} // ξεκινήστε τη σύνδεση Ethernet και τον διακομιστή: Ethernet.begin (mac, ip); server.begin (); Serial.print ("ο διακομιστής είναι σε"); Serial.println (Ethernet.localIP ()); }

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

{// ακούστε για εισερχόμενους πελάτες EthernetClient client = server.available (); if (client) {Serial.println ("new client"); // ένα αίτημα http τελειώνει με μια κενή γραμμή boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // εάν έχετε φτάσει στο τέλος της γραμμής (λάβετε μια νέα γραμμή // χαρακτήρα) και η γραμμή είναι κενή, το αίτημα http έχει λήξει, // ώστε να μπορείτε να στείλετε μια απάντηση εάν (c == 'n' && currentLineIsBlank) {// αποστολή τυπικής κεφαλίδας απόκρισης http client.println ("HTTP/1.1 200 OK"); client.println ("Τύπος περιεχομένου: κείμενο/html"); client.println ("Σύνδεση: κλείσιμο"); // η σύνδεση θα κλείσει μετά την ολοκλήρωση της απάντησης client.println ("Ανανέωση: 30"); // ανανεώνετε τη σελίδα αυτόματα κάθε 30 sec client.println (); client.println ("");

client.println ("");

// Λάβετε δεδομένα από τον αισθητήρα DHT22

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// από εδώ μπορούμε να εισάγουμε τον δικό μας κώδικα HTML για να δημιουργήσουμε την ιστοσελίδα

client.print ( Καιρός γραφείου

Θερμοκρασία γραφείου - );

client.print (t);

client.print ( βαθμοί Κελσίου

);

client.print ("

Υγρασία - );

client.print (h);

client.print ( τοις εκατό

);

client.print ("

Η σελίδα ανανεώνεται κάθε 30 δευτερόλεπτα <

. );

Διακοπή;

} if (c == 'n') {// ξεκινάτε μια νέα γραμμή currentLineIsBlank = true; } else if (c! = 'r') {// έχετε πάρει έναν χαρακτήρα στην τρέχουσα γραμμή currentLineIsBlank = false; }}} // δώστε χρόνο στο πρόγραμμα περιήγησης ιστού να λάβει την καθυστέρηση δεδομένων (1). // κλείστε τη σύνδεση: client.stop (); Serial.println ("πελάτης αποσυνδέθηκε"); }}

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

client.println ("Ανανέωση: 30"); // ανανεώνετε τη σελίδα αυτόματα κάθε 30 δευτερόλεπτα

… Και το προσαρμοσμένο HTML για την ιστοσελίδα μας ξεκινά κάτω από τη γραμμή:

// από εδώ μπορούμε να εισάγουμε τον δικό μας κώδικα HTML για να δημιουργήσουμε την ιστοσελίδα

Στη συνέχεια, μπορείτε απλά να εισαγάγετε τις απαιτούμενες λειτουργίες HTML στο client.print () για να δημιουργήσετε τη διάταξη που χρειάζεστε. Τέλος - εδώ είναι ένα παράδειγμα οθόνης του παραδείγματος σκίτσου στην εργασία.

Ορίστε λοιπόν, ένας άλλος χρήσιμος τρόπος για να αλληλεπιδράσετε με το Arduino με τον έξω κόσμο. Αυτή η ανάρτηση σας φέρνει το pmdway.com - τα πάντα για κατασκευαστές και λάτρεις των ηλεκτρονικών, με δωρεάν παράδοση σε όλο τον κόσμο.

Συνιστάται: