Σκοπός Σχεδίαση Συστημάτων μα τον Arduino Σχεδίαση Συστημάτων με τον Arduino Μάθημα 3 High WiFi!. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Η Έννοια του Global Positioning System (GPS) Αρχή λειτουργίας του GPS Πώς το GPS προσδιορίζει θέση στο χώρο το γεωγραφικό πλάτος & μήκος του σημείου στο χώρο που βρισκόμαστε GPS Αισθητήρας (Δέκτης) Υπολογισμός θέσης, χρησιμοππιώντας το δέκτη GPS και τη GPS Shield της Adafruit Δομές προγραμματισμού.
[WIFI] 3.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΑΣΚΗΣΗΣ Στο σπίτι, συνήθως, χρησιμοποιούμε ένα ασύρματο δίκτυο, για να συνδεόμαστε στο διαδίκτυο. Η χαρακτηριστική σύνδεση στο διαδίκτυο, είναι μέσα από ένα WiFi router ενώ έξω, στη Σχολή, σε καφέ και εστιατόρια, χρησιμοποιούμε το WiFi σε κάθε μέρος, για να συνδεόμαστε στο διαδίκτυο (Εικόνα 1). Όμως, το WiFi και το διαδίκτυο, δεν είναι για τη πρόσβαση, μόνον από ανθρώπους χρήστες, στο διαδίκτυο, αλλά και από συστήματα, όχι μόνον ρομπότ, αλλά και συστήματα μετρήσεων. Γιατί και πως ένα σύστημα να έχει πρόσβαση στο διαδίκτυο? Σ ένα όχι πολύ μακρινό μέλλον, το διαδίκτυο δεν θα συνδέει μόνον ψηφιακές συσκευές υπολογιστές, tablets και κινητά και δεν θα εξυπηρετεί μόνον ανθρώπους - χρήστες, αλλά και αναλογικές συσκευές, όπως αισθητήρες, κάμερες και ηλεκτρικές συσκευές. Σ αυτό το διευρυμένο διαδίκτυο του μέλλοντος που ονομάζουμε Internet of Things ή Βιομηχανικό Διαδίκτυο, θα μπορεί να συνδέεται κάθε ηλεκτρικό σύστημα ή συσκευή, αλλά και τα αυτοκίνητα με ηλεκτρικούς κινητήρες και οι κινητήρες στις βιομηχανικές μονάδες. Σ αυτό το διευρυμένο διαδίκτυο, θα μπορούμε να έχουμε πρόσβαση και να επικοινωνούμε, όχι μόνον με ψηφιακά αντικείμενα, αλλά και με αναλογικά. Εφόσον, για παράδειγμα οι ηλεκτρικές συσκευές θα συνδέονται σ αυτό το διευρυμένο διαδίκτυο, θα μπορούμε, από οπουδήποτε, να λειτουργούμε τις ηλεκτρικές συσκευές στο σπίτι μας να ανάβουμε ή αν έχουμε ξεχάσει, να κλείνουμε, την ηλεκτρική κουζίνα ή τα φώτα, από το κινητό μας. Οι εφαρμογές αυτής της ιδέας είναι πάρα πολλές. Τόσες ώστε το διευρυμένο διαδίκτυο των συσκευών να λέγεται πως είναι η επόμενη μεγάλη ιδέα των υπολογιστών. Μ αυτό τον τρόπο, ένα σύστημα μέτρησης, ένα σύστημα, για παράδειγμα που μετράει τη στάθμη του υγρού σε μία δεξαμενή, ή ένα μετεωρολογικός σταθμός, στην οροφή ενός κτιρίου ή ένα ρομπότ που το στέλνουμε για να ελέγξει τους σωλήνες ύδρευσης / αποχέτευσης, δεν θα πρέπει, υποχρεωτικά, να είναι καλωδιωμένα στον υπολογιστή, για να μπορούμε να βλέπουμε τις μετρήσεις τους, αλλά ασύρματα, θα μπορούμε να βλέπουμε τις μετρήσεις και να ρυθμίζουμε τη λειτουργία αυτών των συστημάτων. Έχοντας λίγο δικαιολογήσει γιατί μία συσκευή, ένα ρομπότ ή ένα σύστημα μέτρησης να συνδέονται στο διαδίκτυο, σ αυτή την άσκηση, ξεκινάμε να εξετάζουμε το πώς ένα σύστημα μπορεί να συνδέεται στο διαδίκτυο, μέσα από ένα WiFi δίκτυο. Δημιουργούμε ένα μικρό μετεωρολογικό σταθμό και επιχειρούμε να συνδέσουμε αυτό το σταθμό στο διαδίκτυο, ώστε να μπορεί να ανεβάζει τις μετρήσεις, στο διαδίκτυο και εμείς να μπορούμε να βλέπουμε αυτές τις μετρήσεις, από το διαδίκτυο (Εικόνα 2). Μπορούμε να συνδέουμε το μετεωρολογικό σταθμό στο διαδίκτυο με δύο τρόπους, ενσύρματα ή ασύρματα. Εδώ εξετάζουμε την ασύρματη σύνδεση, μέσα από το 2
[Σχεδίαση Συστημάτων με τον Arduino] Εικόνα 1: To WiFi, είναι αυτό που περισσότερο χρησιμοποιείται, για τη πρόσβαση στο διαδίκτυο, όχι μόνον από ανθρώπινους χρήστες του διαδικτύου, αλλά και από συστήματα τεχνητής νοημοσύνης. WiFi. Έτσι, σ αυτή την άσκηση, θα δούμε πως συνδέουμε ένα σύστημα στο διαδίκτυο, μέσα από το WiFi και πως αυτό το σύστημα μπορεί να χρησιμοποιεί το διαδίκτυο, σχεδόν όπως και εμείς, λειτουργώντας όπως και εμείς, σαν client ή server, ανοίγοντας και διαβάζοντας ιστοσελίδες, αλλά και δημιουργώντας τη δική του ιστοσελίδα, για να ανεβάζει τις μετρήσεις του, στο διαδίκτυο. Πέρα από τον τρόπο και το μέσο σύνδεσης, η άσκηση θα μας επιτρέψει να δούμε τη βασική αρχή λειτουργίας του WiFi, αλλά και βασικές έννοιες τεχνικές της χρήσης του διαδικτύου, όπως η έννοια client server πως δηλαδή ένα σύστημα μπορεί να χρησιμοποιεί το διαδίκτυο δημιουργώντας μία ιστοσελίδα και ανεβάζοντας μετρήσεις σ αυτή την ιστοσελίδα, ώστε να μπορούμε να δούμε αυτές τις μετρήσεις στο διαδίκτυο, πηγαίνοντας και ανοίγοντας τη σελίδα του συστήματος μέτρησης, στο διαδίκτυο, όπως θα ανοίγαμε κάθε άλλη σελίδα του διαδικτύου. Έτσι, μέσα από αυτή την εργασία / Βασικοί στόχοι της εργασίαw είναι να δούμε πως: Μπορούμε να χρησιμοποιούμε την WiFi shield Μάθουμε πως μπορούμε να χρησιμοποιούμε τη WiFi βιβλιοθήκη συναρτήσε- 3
[WIFI] ων Μάθουμε πως μπορούμε να συνδεόμαστε σε ασύρματα δίκτυα Εξετάσουμε βασικές έννοιες προγραμματισμού της ασύρματης επικοινωνίας υπολογιστή μικροελεγκτή Στέλνουμε μηνύματα από / προς τον υπολογιστή, στον / από το μικροελεγκτή ο υπολογιστής και ο μικροελεγκτής, μπορεί να ανταλλάσουν μηνύματα, μέσω WiFi. 3.2 Πρώτη Γνωριμία με το WiFi 3.3 Εντοπίζοντας τα WI-FI Δίκτυα Στα προηγούμενα εργαστηριακά πειράματα, είδαμε τη μέτρηση μεταβλητών θερμοκρασία, φωτεινότητα, απόσταση με αισθητήρες. Είδαμε / δημιουργήσαμε απλά συστήματα μέτρησης, για να μετράμε αυτές τις μεταβλητές / χαρακτηριστικά του ε- ξωτερικού περιβάλλοντος. Σ αυτό το πείραμα, θα δούμε πως μπορούμε να συνδέουμε το σύστημα μέτρησης στο διαδίκτυο, μέσα από το WiFi και να δημιουργούμε μία απλή ιστοσελίδα, όπου θα ανεβάζουμε / εμφανίζουμε τις μετρήσεις. Αυτή η ιστοσελίδα θα μπορεί να είναι προσβάσιμη από οποιαδήποτε συσκευή υπολογιστή, tablet ή κινητό που μπορεί να συνδέεται στο διαδίκτυο. Το σύστημα που θα δημιουργήσουμε σ αυτό το πείραμα, θα είναι η βάση, για να δημιουργούμε / σχεδιάζουμε συστήματα που θα μπορούμε να ελέγχουμε / λειτουργούμε, από το διαδίκτυο. Γενικά, για να συνδέουμε συστήματα στο διαδίκτυο, χρειαζόμαστε hardware ο- ρισμένα υλικά και συσκευές τη WiFi shield, πληροφορίες διευθύνσεις (IP διευθύνσεις) και προγράμματα που θα συνδέουν το σύστημα, στο διαδίκτυο, αλλά και που θα επιτρέπουν στο σύστημα να χρησιμοποιεί το διαδίκτυο. Ξεκινάμε από το hardware Για να συνδεθεί ο Arduino στο διαδίκτυο ή σ ένα ασύρματο δίκτυο, χρειάζεται τη WiFi shield. Το πρώτο βήμα στη WiFi σύνδεση του Arduino, είναι να τοποθετήσουμε τη WiFi shield. Έτσι, 3.3.1 Ξεκινάμε, εγκαθιστώντας τη WiFi shield, τοποθετώντας την επάνω στον Arduino. Οι ακροδέκτες της πλακέτας πέφτουν ακριβώς πάνω στις θύρες του Arduino. 3.3.2 Συνδέουμε τον Arduino στον υπολογιστή. 4
[Σχεδίαση Συστημάτων με τον Arduino] Για να ελέγξουμε τη λειτουργία της Wi-Fi, γράφουμε ένα απλό πρόγραμμα που θα εμφανίσει στη σειριακή οθόνη, όλα τα ασύρματα δίκτυα που η WiFi μπορεί να εντοπίζει. #include <SPI.h> #include <WiFi.h> void setup() // Start Serial, Waiting For Connection: Serial.begin(9600); while(!serial) ; void loop() delay(10000); printnetworks(); void printnetworks() // scan networks: Serial.println("Scanning Networks"); byte num = WiFi.scanNetworks(); Περιοδικά, ο Arduino εξετάζει τα ασύρματα δίκτυα στη περιοχή, για να αναγνωρίσει δίκτυα που μπορεί να συνδεθεί // print the network number and name for each network found: for (int network = 0; network<num; network++) Serial.print(network); Serial.print(") "); Serial.print(WiFi.SSID(network)); Serial.print(" Strength: "); Serial.print(WiFi.RSSI(network)); Serial.print(" dbm Security: "); Serial.println(WiFi.encryptionType(network)); 3.4 Βρίσκοντας Ένα Ελεύθερο Δίκτυο & Κάνοντας τη Σύνδεση σ Αυτό Για να συνδεθούμε σ ένα δίκτυο, χρειάζεται να αλλάξουμε το κώδικα που έχουμε γράψει δημιουργώντας μία συνάρτηση και καλώντας αυτή την στη συνάρτηση, στη setup(). #include <SPI.h> #include <WiFi.h> int status = WL_IDLE_STATUS; 5
[WIFI] void setup() // Start Serial, Waiting For Connection: Serial.begin(9600); while(!serial) ; connectopennetwork("conn-x90f378"); void loop() delay(10000); printnetworks(); void printnetworks() // scan networks: Serial.println("Scanning Networks"); byte num = WiFi.scanNetworks(); void connectopennetwork(char ssid[]) Serial.print("Connecting To "); Serial.println(ssid); status = WiFi.begin (ssid); while(status!= WL_CONNECTED); Serial.print("Connected to: "); Serial.println(WiFi.localIP()); // print the network number and name for each network found: for (int network = 0; network<num; network++) Serial.print(network); Serial.print(") "); Serial.print(WiFi.SSID(network)); Serial.print(" Strength: "); Serial.print(WiFi.RSSI(network)); Serial.print(" dbm Security: "); Serial.println(WiFi.encryptionType(network)); Για να συνδεθούμε, σ ένα ανοιχτό ασύρματο δίκτυο, δηλαδή σ ένα ασύρματο δίκτυο, χωρίς κωδικό, χρησιμοποιούμε την εντολή. 6
[Σχεδίαση Συστημάτων με τον Arduino] 3.5 Σύνδεση σ Ένα Δίκτυο με Κωδικό #include <SPI.h> #include <WiFi.h> int status = WL_IDLE_STATUS; void setup() // Start Serial, Waiting For Connection: Serial.begin(9600); while(!serial) ; connectclosednetwork("conn-x90f378", "8ce08190f378"); void loop() delay(10000); printnetworks(); void printnetworks() // scan networks: Serial.println("Scanning Networks"); byte num = WiFi.scanNetworks(); // print the network number and name for each network found: for (int network = 0; network<num; network++) Serial.print(network); Serial.print(") "); Serial.print(WiFi.SSID(network)); Serial.print(" Strength: "); Serial.print(WiFi.RSSI(network)); Serial.print(" dbm Security: "); Serial.println(WiFi.encryptionType(network)); void connectclosednetwork(char ssid[], char password[]) Serial.print("Connecting To "); Serial.println(ssid); status = WiFi.begin (ssid, password); while (status!= WL_CONNECTED); Serial.print("Connected to: "); Serial.println(WiFi.localIP()); Για να συνδεθούμε, σ ένα κλειστό. ασύρματο δίκτυο, δηλαδή σ ένα ασύρματο δίκτυο με κωδικό, χρησιμοποιούμε την εντολή. 7
[WIFI] 3.6 Δημιουργώντας Έναν WebServer Τώρα που έχουμε συνδεθεί σ ένα δίκτυο, μπορούμε να ανταλλάσουμε να στέλνουμε και να παίρνουμε δεδομένα, μέσα από αυτό το δίκτυο. Χρειάζεται να χρησιμοποιήσουμε την έννοια client server, για την επικοινωνία του Arduino με τον υπολογιστή. Τώρα που ο Arduino, δηλαδή ο μικροελεγκτής επάνω στο ρομποτικό αυτοκίνητο, έχει συνδεθεί σ ένα WiFi δίκτυο και έχει αποκτήσει μία κανονική IP διεύθυνση, σ αυτό το δίκτυο (Εικόνα ), μπορούμε να έχουμε πρόσβαση και να ελέγχουμε τον Arduino και το ρομποτικό αυτοκίνητο, ασύρματα, από τον υπολογιστή, το tablet ή το κινητό μας, μέσα απ αυτό το δίκτυο, αλλά και το διαδίκτυο, χρησιμοποιώντας την IP διεύθυνση που ο Arduino έχει σ αυτό. Πώς? O Arduino, μέσα από τη σύνδεσή του σ ένα WiFi δίκτυο, μπορεί να έχει πρόσβαση στο διαδίκτυο και να κάνει ότι ακριβώς και εμείς, στο διαδίκτυο: να πλοηγείται σ αυτό, να ανοίγει, αλλά και να δημιουργεί δικές του ιστοσελίδες, να παίρνει και να στέλνει emails. Έτσι, εφόσον ο Arduino έχει συνδεθεί σ ένα WiFi δίκτυο, μπορούμε να έχουμε πρόσβαση, να επικοινωνούμε μ αυτόν και να τον ελέγχουμε και να ελέγχουμε το ρομποτικό αυτοκίνητο, με πολλούς, διαφορετικούς τρόπους. Ένας τρόπος είναι μέσα από την αποστολή / ανταλλαγή emails. Στέλνουμε emails με εντολές στον Arduino, για το πώς / που θα κινήσει το αυτοκίνητο. Ο Arduino μπορεί να ελέγχει τo email του, τακτικά, να κοιτάζει αν έχει πάρει καινούργιο email, να το ανοίγει, να το διαβάζει και να εκτελεί τις εντολές σ αυτό. Το email είναι ένας τρόπος / μέσο επικοινωνίας με τον Arduino που μπορούμε να χρησιμοποιούμε, όταν κατά διαστήματα, θέλουμε να επικοινωνήσουμε με τον Arduino. Όμως, εμείς θέλουμε να είμαστε σε μία συνεχή / ανοικτή γραμμή επικοινωνίας με τον Arduino,ώστε κάθε στιγμή, εύκολα και γρήγορα, να μπορούμε να στέλνουμε εντολές στον Arduino, για τη κατεύθυνση και τη ταχύτητα που θα κινήσει το ρομποτικό αυτοκίνητο. Γι αυτό, για την επικοινωνία με τον Arduino, χρησιμοποιούμε μία διαφορετική μορφή επικοινωνίας, από τα emails, στη βάση της διάκρισης σε client server. Clients και Servers Όλες οι συσκευές που είναι συνδεμένες στο διαδίκτυο μπορεί να έχουν έναν από δύο ρόλους. Μπορεί να λειτουργούν είτε σαν clients, είτε ως servers, αν και μερικές μπορεί να εκτελούν και τους δύο ρόλους. Όλη η λειτουργία του διαδικτύου είναι η μετάδοση πληροφοριών από υπολογιστή σε υπολογιστή, γενικότερα, από συσκευή σε συσκευή. Όταν ένας υπολογιστής, γενικότερα συσκευή έχει αποθηκευμένες πληροφορίες και δεδομένα και παρέχει αυτές τις πληροφορίες σε άλλες συσκευές, στο διαδίκτυο, τότε λέμε πως αυτή η συσκευή λειτουργεί σαν server. Αυτές οι πληροφορίες μπορεί να έχουν πολλές μορφές. Μπορεί να είναι μίας ιστοσελίδα, πληροφορίες από μία βάση δεδομένων ή emails. 8
[Σχεδίαση Συστημάτων με τον Arduino] O client είναι η αντίθετη λειτουργία. Λέμε πως μία συσκευή στο διαδίκτυο λειτουργεί σαν client, όταν ζητάει πληροφορίες και δεδομένα, από άλλες συσκευές. Όταν, για παράδειγμα, μπαίνουμε στο Internet, από τον υπολογιστή μας, τότε ο web browser στον υπολογιστή μας το Chrome ή το Firefox λειτουργεί σαν client, ζητώντας πληροφορίες από ιστοσελίδες που είναι αποθηκευμένες σε άλλους υπολογιστές στο διαδίκτυο. Συνδέοντας τον Arduino στο Διαδίκτυο Για την επικοινωνία με τον Arduino, στον έλεγχο του ρομποτικού αυτοκίνητου, θα χρησιμοποιήσουμε το μοντέλο client server. O Arduino,δηλαδή θα λειτουργεί σαν server, δημιουργώντας και παρέχοντας / εξυπηρετώντας μία ιστοσελίδα, μέσα από την οποία μπορούμε να επιλέγουμε και να δίνουμε εντολές στον Arduino, για το πώς θα κινήσει το αυτοκίνητο. Ελέγχοντας τον Arduino από το Διαδίκτυο Πρώτα, ρυθμίζουμε τον Arduino να λειτουργεί σαν web server. Ο Arduino δηλαδή λειτουργεί σαν ιστοσελίδα, όπου σ αυτή, μπορούμε να έχουμε πρόσβαση και να ρυθμίζουμε τις πύλες εισόδου εξόδου του Arduino. Στο interface μ αυτή την ιστοσελίδα, δημιουργούμε κουμπιά για να λειτουργούμε - περιστρέφουμε κατά την ορθή ή ανάστροφη φορά και να σταματάμε τους κινητήρες που ελέγχει ο Arduino, μέσα από τη motor shield. Δημιουργώντας μία απλή ιστοσελίδα Πρώτα, σχεδιάζουμε μία απλή ιστοσελίδα πριν επιχειρήσουμε να προγραμματίσουμε τον Arduino να εξυπηρετεί αυτή την ιστοσελίδα Αυτή η ιστοσελίδα θα έχει απλά κουμπιά, για να καθορίζουμε τη κίνηση του ρομποτικού αυτοκίνητου τις βασικές λειτουργίες / εντολές που μπορούμε να δώσουμε στο ρομποτικό αυτοκίνητο Μέσα από αυτά θα χειριζόμαστε το ρομποτικό αυτοκίνητο, θα το σταματάμε, θα το στρίβουμε. 9
[WIFI] #include <SPI.h> #include <WiFi.h> int status = WL_IDLE_STATUS; char ssid[] = "Aspaite"; WiFiServer server(80); boolean clientconnected = false; const int SPEED_A = 11, DIR_A = 13, BRAKE_A = 8, SPEED_B = 3, DIR_B = 12, BRAKE_B = 9; boolean receiving = false; int command; void setup() //Start Serial, Waiting For Connection: Serial.begin(9600); pinmode(brake_a, OUTPUT); // Brake pin on channel A pinmode(dir_a, OUTPUT); // Direction pin on channel A pinmode(brake_b, OUTPUT); // Brake pin on channel B pinmode(dir_b, OUTPUT); // Direction pin on channel B while (!Serial) ; //Start the WiFi connection and server while ( status!= WL_CONNECTED) Serial.print("Attempting to connect to SSID: "); Serial.println(ssid); // Connect to Aspaite status = WiFi.begin(ssid); // wait 10 seconds for connection: delay(10000); Serial.print("Connected to: "); Serial.println(WiFi.localIP()); server.begin(); 10
[Σχεδίαση Συστημάτων με τον Arduino] void loop() //listen for incoming clients (incoming web page request connections) WiFiClient client = server.available(); // Create connection to client. if (client) // Make sure the client is active // an http request ends with a blank line boolean currentlineisblank = true; boolean sendheader = false; while (client.connected()) if (client.available() > 0) // Checks if the client has sent any data. char c = client.read(); if (receiving && c == ' ') receiving = false; //Done receiving if (c == '?') receiving = true; //Found arguments if (receiving) //An LED command is specified with an L if (c == 'L') command = client.parseint(); Serial.println(command); motor_begin(command); break; if (!sendheader ) client.println("http/1.1 200 OK"); client.println("content-type: text/html"); client.println("connection: close"); client.println(); client.println("<!doctype HTML>"); client.println("<html>"); //Move Forward client.println("<form action='' method='get'>"); client.println("<input type='hidden' name='l' value='1' />"); client.println("<input type='submit' value='move Forward' />"); client.println("</form>"); //Turn Left client.println("<form action='' method='get'>"); 11
[WIFI] client.println("<input type='hidden' name='l' value='2' />"); client.println("<input type='submit' value='turn Left' />"); client.println("</form>"); //Turn Right client.println("<form action='' method='get'>"); client.println("<input type='hidden' name='l' value='3' />"); client.println("<input type='submit' value='turn Right />"); client.println("</form>"); //Reverse client.println("<form action='' method='get'>"); client.println("<input type='hidden' name='l' value='-1' />"); client.println("<input type='submit' value='reverse' />"); client.println("</form>"); // add a meta refresh tag, so the browser pulls again every 5 sec: client.println("<meta http-equiv=\"refresh\" content=\"5\">"); client.println("<br />"); client.println("</html>"); sendheader = true; if (c == '\n' && currentlineisblank) break; if (c == \n ) // you're starting a new line currentlineisblank = true; else if (c!= '\r') // you've gotten a character on the current line currentlineisblank = false; //end if (client.available()) //end while (client.conected()) //give the web browser time to receive the data delay(1); //close the connection: client.stop(); //end if (client) //end loop () 12
[Σχεδίαση Συστημάτων με τον Arduino] Παρόμοια συνδεόμαστε στο διαδίκτυο και δημιουργούμε μία ιστοσελίδα με τις μετρήσεις από αισθητήρες, ακόμα και όταν χρησιμοποιούμε μία διαφορετική WiFi shield, για παράδειγμα τη WiFi της Adafruit #include <SPI.h> #include <Adafruit_CC3000.h> // CC3000 pins #define ADAFRUIT_CC3000_IRQ 3 #define ADAFRUIT_CC3000_VBAT 8 #define ADAFRUIT_CC3000_CS 10 //Network id and paasword #define ssid "Aspaite" #define pass[] "" #define WLAN_SECURITY WLAN_SEC_USEC Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT); Adafruit_CC3000_Server server(80); void setup() //Start Serial, Waiting For Connection: Serial.begin(115200); while (!Serial) ; //Start the WiFi connection and server if (!cc3000.begin()) while(1); Serial.print("Attempting to connect to SSID: "); Serial.println(ssid); // Connect to Aspaite if (!cc3000.connecttoap(ssid, pass, WLAN_SECURITY)) while(1); while (!cc3000.checkdhcp()) delay(100); Serial.print("Connected to: "); Serial.println(WiFi.localIP()); 13
[WIFI] server.begin(); void loop() //listen for incoming clients (incoming web page request connections) Adafruit_CC3000_ClientRef client = server.available(); if (client) // Make sure the client is active // an http request ends with a blank line boolean currentlineisblank = true; while (client.connected()) if (client.available() > 0) // Checks if the client has sent any data. char c = client.read(); if (c == '\n' && currentlineisblank) client.println("http/1.1 200 OK"); client.println("content-type: text/html"); client.println("connection: close"); client.println(); client.println("<!doctype HTML>"); client.println("<html>"); // add a meta refresh tag, so the browser pulls again every 5 sec: client.println("<meta http-equiv=\"refresh\" content=\"5\">"); // output the value of analog input pin A0 onto the web page int sensorreading = analogread(a0); client.print("analog input "); client.print( A0 ); client.print(" is "); client.print(sensorreading); client.println("<br />"); client.println("</html>"); break; //end if (c == '\n' && currentlineisblank) if (c == \n ) // you're starting a new line currentlineisblank = true; else if (c!= '\r') 14
[Σχεδίαση Συστημάτων με τον Arduino] // you've gotten a character on the current line currentlineisblank = false; //end if (client.available()) //end while (client.conected()) //give the web browser time to receive the data delay(1); //close the connection: client.stop(); //end if (client) //end loop () 15