Διαφήμιση
Το Wi-Fi είναι ένα απαραίτητο κομμάτι για οποιοδήποτε έργο DIY του Internet of Things (IoT), αλλά το αγαπημένο μας Arduino δεν συνοδεύεται από Wi-Fi και η προσθήκη σε ασπίδα Wi-Fi μπορεί να φέρει το συνολικό κόστος σε περίπου 40 $. Τι γίνεται αν σας έλεγα ότι υπάρχει μια συμβατή πλατφόρμα συμβατή με Arduino με ενσωματωμένο Wi-Fi για λιγότερο από 10 $; Λοιπόν, υπάρχει.
Γνωρίστε το Arduino Killer: ESP8266. Ήταν μόνο θέμα χρόνου προτού κλαπεί το στέμμα από το λαμπερό κεφάλι του αγαπημένου μας συμβουλίου ανάπτυξης Arduino. Είναι δυνατόν να ερωτευτείτε με μια πλακέτα κυκλώματος;
Παρατηρημένα ονόματα, το ESP8266 (επίσης γνωστό ως NodeMCU) κυκλοφόρησε αρχικά ως πρόσθετο Wi-Fi χαμηλού κόστους για πίνακες Arduino, έως ότου η κοινότητα των χάκερ συνειδητοποίησε ότι θα μπορούσατε να κόψετε το Arduino από την εξίσωση εξ ολοκλήρου.
Σε λιγότερο από ένα χρόνο, το ESP8266 έχει εκτοξευθεί σε δημοτικότητα και τώρα υποστηρίζεται και έχει αναπτυχθεί τόσο καλά που αν χρησιμοποιείτε αυτήν τη στιγμή το Arduino, πρέπει να σηκωθείτε και να σημειώσετε.
Αγοράστε ένα τώρακαι, στη συνέχεια, ακολουθήστε αυτόν τον οδηγό για να ξεκινήσετε τον προγραμματισμό του ESP8266 σας - όλα μέσα από το γνωστό Arduino IDE.Δεν περιορίζεστε στη χρήση του Arduino IDE φυσικά - είναι συμβατοί και με τη Lua (που μοιάζει με ένα αδύνατο Python στο δικό μου αρχάριοι μάτια), αλλά επειδή το αντιμετωπίζουμε από την οπτική γωνία εκείνων που μάθαμε για το Arduino, αυτό θα καλύψουμε αποκλειστικά σήμερα.
Υπάρχουν αρκετά μοντέλα ESP8266 τώρα, αλλά πρόκειται να προχωρήσω και να το προτείνω: ESP-12E (επίσης γνωστό ως NodeMCU 1.0 ή είναι το νεότερο αδελφό NodeMCU 2.0).
Είναι λίγο πιο ακριβό από τα άλλα (6,50 $ σε σύγκριση με τα 4 $!), Αλλά περιλαμβάνει το σειριακό πρόγραμμα οδήγησης που απαιτείται για τον προγραμματισμό του τσιπ και διαθέτει ενσωματωμένο ρυθμιστή ισχύος, καθώς και πολλές καρφίτσες IO. Υποστηρίζεται ευρέως και πραγματικά δεν χρειάζεται τίποτα εκτός από σύνδεση USB για προγραμματισμό ή τροφοδοσία, οπότε είναι το πιο εύκολο να δουλέψετε. Εάν αγοράσετε οποιοδήποτε άλλο είδος πλακέτας ESP8266, μπορεί να χρειαστείτε έναν ξεχωριστό ρυθμιστή ισχύος 3.3v και μια κατάλληλη σύνδεση FTDI για προγραμματισμό.
Ξεκινώντας με ESP8266-12E και Arduino
Πρώτα, εγκαταστήστε τα σειριακά προγράμματα οδήγησης για αυτόν τον πίνακα. Ίσως χρειαστεί απενεργοποιήστε την υπογραφή KEXT εάν χρησιμοποιείτε το El Capitan λόγω νέων συστημάτων ασφαλείας.
Στη συνέχεια, πρέπει να ενεργοποιήσουμε την υποστήριξη για το ESP8266 από τον διαχειριστή του Arduino IDE. Ανοίξτε τις Προτιμήσεις και εισαγάγετε την ακόλουθη διεύθυνση URL όπου αναφέρεται Πρόσθετες διευθύνσεις URL διοικητικού συμβουλίου:

Πατήστε Ok και, στη συνέχεια, ανοίξτε το Διευθυντής συμβουλίων από Εργαλεία -> Πίνακας μενού, αναζητήστε esp8266 και εγκαταστήστε την πλατφόρμα. Θα πρέπει τώρα να δείτε μια επιλογή για το NodeMCU 1.0.

Αφήστε τον επεξεργαστή και μεταφορτώστε την ταχύτητα ως έχει και επιλέξτε τη σειριακή θύρα που εγκαταστήσατε πρόσφατα. Σε Mac, αυτό εμφανίζεται ως cu. SLAB_USBtoUART.
Ως πρώτο πρόγραμμα, θα πρότεινα τον απλό σαρωτή Wi-Fi - βρείτε το από Αρχείο -> Παραδείγματα -> ESP8266WiFi -> WifiScan. Λάβετε υπόψη ότι είναι αρκετά αργό να ανεβάσετε, αλλά τελικά θα πει "ολοκληρωμένη μεταφόρτωση" και σε αυτό το σημείο (όχι πριν, ή θα διακόψετε τη διαδικασία μεταφόρτωσης), μπορείτε να ανοίξετε το Serial monitor. Θα πρέπει να δείτε κάτι παρόμοιο με αυτό:
Επιτυχία! Τώρα, ας προσπαθήσουμε να συνδεθούμε σε ένα.
Ακολουθεί ένας απολύτως απλός κώδικας barebones για σύνδεση σε δίκτυο Wi-Fi. Δεν κάνει τίποτα άλλο από την απλή σύνδεση, αλλά είναι κάτι που μπορείτε να προσθέσετε πολύ αργότερα. Απλώς θυμηθείτε να αλλάξετε το YOUR_SSID και το YOUR_PASSWORD στις λεπτομέρειες του Wi-Fi. Μεταφορτώστε, ανοίξτε τη σειριακή κονσόλα και θα πρέπει να τη δείτε να συνδέεται.
#include const char * ssid = "YOUR_SSID"; const char * password = "ΣΑΣ_ΣΤΑΣΗ ΣΑΣ"; WiFiClient wifiClient; άκυρη ρύθμιση () {Serial.begin (115200); Serial.print ("Σύνδεση σε"); Serial.println (SSD); WiFi.begin (SSID, κωδικός πρόσβασης); ενώ (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi συνδεδεμένο"); Serial.println ("Διεύθυνση IP:"); Serial.println (WiFi.localIP ()); } άκυρος βρόχος () {}
Δεν είναι υπέροχο πόσο γελοίο απλό ήταν;
Πριν συνεχίσουμε, εδώ είναι το διάγραμμα pinout - μπορεί να είναι χρήσιμο αργότερα. Σημειώστε ότι οι αριθμοί ακίδων που αναφέρονται στον κωδικό είναι οι αριθμοί GPIO, όχι οι D0-16 πιθανώς γραμμένοι στο PCB της πλακέτας σας. Εάν απολύτως, θετικά δεν μπορείτε να καταλάβετε γιατί ο αισθητήρας δεν λειτουργεί, πιθανότατα έχετε αναμίξει τους αριθμούς pin.

Quick Smart Home Sensor με MQTT και DHT11
Ακολουθεί ένα πρακτικό παράδειγμα που μπορείτε να το χρησιμοποιήσετε αμέσως για την παρακολούθηση του σπιτιού σας. Θα προσθέσουμε έναν αισθητήρα θερμοκρασίας και υγρασίας DHT11 και, στη συνέχεια, θα αναφέρουμε τις τιμές χρησιμοποιώντας το πρωτόκολλο MQTT μέσω του δικτύου Wi-Fi, στην περίπτωσή μου σε ένα σύστημα οικιακού αυτοματισμού OpenHAB DIY (εάν όχι, ίσως θέλετε να διαβάσετε μας οδηγός για αρχάριους για να ξεκινήσετε το OpenHAB και να τρέξετε σε ένα Raspberry Pi Ξεκινώντας με το OpenHAB Home Automation στο Raspberry PiΤο OpenHAB είναι μια ώριμη πλατφόρμα οικιακού αυτοματισμού ανοιχτού κώδικα που λειτουργεί με μια ποικιλία υλικού και είναι πρωτόκολλο agnostic, που σημαίνει ότι μπορεί να συνδεθεί με σχεδόν οποιοδήποτε υλικό οικιακού αυτοματισμού στην αγορά σήμερα. Διαβάστε περισσότερα , και μέρος 2, το οποίο ασχολείται ειδικά με εγκατάσταση διακομιστή MQTT Οδηγός για αρχάριους OpenHAB Μέρος 2: ZWave, MQTT, Κανόνες και χαρτογράφησηΤο OpenHAB, το λογισμικό οικιακού αυτοματισμού ανοιχτού κώδικα, υπερβαίνει κατά πολύ τις δυνατότητες άλλων συστημάτων οικιακού αυτοματισμού στην αγορά - αλλά δεν είναι εύκολο να ρυθμιστεί. Στην πραγματικότητα, μπορεί να είναι εντελώς απογοητευτικό. Διαβάστε περισσότερα ).
Από την πλευρά της καλωδίωσης, συνδέστε τον αισθητήρα DHT GND, 3.3v, και ~ Δ4 (ή GPIO 2). Αυτό είναι το μόνο που χρειαζόμαστε τώρα.
Κατεβάστε αυτές τις βιβλιοθήκες MQTT και DHT. Ακόμα κι αν τα έχετε ήδη, κατεβάστε αυτά ούτως ή άλλως, δημιουργήστε αντίγραφα ασφαλείας όσων έχετε και αντικαταστήστε τα. Η τελευταία βιβλιοθήκη DHT11 από το Adafruit χρησιμοποιεί έναν αυτόματο αλγόριθμο για τον προσδιορισμό της ταχύτητας με την οποία τα δεδομένα διαβάζονται από τον αισθητήρα, αλλά είναι με λάθη στο ESP8266 και το 90% των αποτελεσμάτων του χρόνου απέτυχε αναγνώσεις.
Με την παλιά έκδοση 1.0 της βιβλιοθήκης που έχω συμπεριλάβει στη λήψη, μπορείτε να αλλάξετε χειροκίνητα το χρονοδιάγραμμα: 11 λειτουργεί καλύτερα για αυτές τις πλακέτες ESP2866. Πέρασα επίσης πολλά αντίγραφα της βιβλιοθήκης MQTT προσπαθώντας να βρω ένα καλό επανάκληση λειτουργία, τελικά προσγείωση σε αυτό που περιλαμβάνεται. Θα πρέπει να κάνετε επανεκκίνηση του Arduino IDE μετά την αντικατάστασή τους.
Εδώ είναι το πλήρης κωδικός για το έργο. Στην κορυφή είναι όλες οι μεταβλητές που πρέπει να αλλάξετε, συμπεριλαμβανομένων των λεπτομερειών Wi-Fi, του διακομιστή MQTT (μπορεί να χρησιμοποιηθεί μια διεύθυνση URL Αντί να χρησιμοποιείτε διακομιστή cloud, αν και δεν υπάρχει έλεγχος ταυτότητας) και κανάλια για τη δημοσίευση δεδομένων.
Δείτε πώς λειτουργεί και μερικές σημειώσεις:
- Πρώτα συνδέουμε με το Wi-Fi, μετά με τον διακομιστή MQTT και μετά ξεκινάμε το κύριο βρόχος().
- Στο βρόχο, ελέγχουμε τον αισθητήρα DHT κάθε 60 δευτερόλεπτα και δημοσιεύουμε αναγνώσεις στα σχετικά κανάλια MQTT. Και πάλι, εάν βρείτε τα περισσότερα από τα αποτελέσματα ανάγνωσης σε ένα μήνυμα αποτυχίας, έχετε λανθασμένη έκδοση της βιβλιοθήκης DHT - υποβάθμιση σε v1.0.
- client.loop () μεταβιβάζει τον έλεγχο στη βιβλιοθήκη MQTT, επιτρέποντάς της να αντιδρά σε εισερχόμενα μηνύματα.
- Υπάρχει μια μήνυμα ελήφθη() λειτουργία όπου χειριζόμαστε εισερχόμενα μηνύματα - απλώς κάντε μια απλή δήλωση εάν συγκρίνετε το ωφέλιμο φορτίο με το μήνυμα που περιμένετε. Για παράδειγμα, θα μπορούσατε να το χρησιμοποιήσετε για να ενεργοποιήσετε ένα ρελέ.
- Αφού τα τρέξαμε για λίγες μέρες, βρήκα ότι θα σταματούσαν να λειτουργούν τυχαία - υποθέτω ότι πρόκειται για κάποιο είδος διαρροής μνήμης, αλλά δεδομένου ότι Δεν έχω την ικανότητα κωδικοποίησης για να το χειριστώ αυτό και μπορεί να είναι με τις βασικές βιβλιοθήκες, έχω επιλέξει μια απλή μαλακή επαναφορά κάθε ημέρα. Ακριβώς μία ημέρα μετά την πρώτη ενεργοποίηση των κόμβων των αισθητήρων, θα επανεκκινήσουν.
- Κατά την τροφοδοσία αυτών των φθηνών μονάδων DHT11 από 3.3v, οι τιμές υγρασίας είναι πολύ χαμηλότερες από τις κανονικές. Το έχω λύσει με έναν απλό πολλαπλασιασμό και βαθμονομήθηκε έναντι ενός εμπορικού αισθητήρα. Θα σας συμβούλευα να επιβεβαιώσετε και τη δική σας γνωστή πηγή, προτού βασιστείτε στις μετρήσεις. Εναλλακτικά, τροφοδοτήστε τα με 5V - αλλά πρέπει να τοποθετήσετε μια μετατόπιση επιπέδου λογικής 5v-3.3v μεταξύ της καρφίτσας δεδομένων και του ESP8266, διαφορετικά θα την καταστρέψετε.
Εάν όλα πήγαν καλά, θα πρέπει τώρα να λαμβάνετε αναγνώσεις αισθητήρων στο μεσίτη MQTT και μπορείτε να προχωρήσετε με τη σύνδεση αυτών με το OpenHAB όπως περιγράφεται λεπτομερώς στο μέρος 2 του οδηγού για αρχάριους Οδηγός για αρχάριους OpenHAB Μέρος 2: ZWave, MQTT, Κανόνες και χαρτογράφησηΤο OpenHAB, το λογισμικό οικιακού αυτοματισμού ανοιχτού κώδικα, υπερβαίνει κατά πολύ τις δυνατότητες άλλων συστημάτων οικιακού αυτοματισμού στην αγορά - αλλά δεν είναι εύκολο να ρυθμιστεί. Στην πραγματικότητα, μπορεί να είναι εντελώς απογοητευτικό. Διαβάστε περισσότερα , όπου σας έδειξα επίσης πώς να γράφετε τα δεδομένα.

Αντίο Arduino, μας αγαπήσαμε τόσο. Απλά αστειεύομαι: δεν μπορούν να αποκτήσουν Wi-Fi παντού στο σπίτι μου, οπότε για αυτά τα σημεία θα χρειαστεί ακόμα ένα δίκτυο πλέγματος με δέκτες Arduino και RF.
Για ένα διασκεδαστικό έργο, ρίξτε μια ματιά πώς να φτιάξετε ένα κουμπί Wi-Fi με το ESP8266 Πώς να φτιάξετε το δικό σας συνδεδεμένο κουμπί Wi-Fi με ESP8266Σε αυτό το σεμινάριο, θα μάθετε πώς να δημιουργείτε ένα κουμπί με δυνατότητα Wi-Fi χρησιμοποιώντας το NodeMCU και το IFTTT. Διαβάστε περισσότερα .
Αλλά τι θα κάνετε με το ESP8266; Οποιαδήποτε έργα που χρησιμοποιούν ESP8266 θέλετε να δείτε να γράφονται στο MakeUseOf; Ενημερώστε μας στα σχόλια!
Ο James έχει πτυχίο Τεχνητής Νοημοσύνης και είναι πιστοποιημένο με CompTIA A + και Network +. Είναι ο κύριος προγραμματιστής του MakeUseOf και περνά τον ελεύθερο χρόνο του παίζοντας VR paintball και boardgames. Δημιουργεί υπολογιστές από τότε που ήταν παιδί.