Γνωρίστε τον δολοφόνο Arduino: ESP8266

Τι γίνεται αν σας έλεγα ότι υπάρχει ένας πίνακας Dev συμβατός με Arduino με ενσωματωμένο Wi-Fi για λιγότερο από $ 10; Λοιπόν, υπάρχει.

Τι γίνεται αν σας έλεγα ότι υπάρχει ένας πίνακας Dev συμβατός με Arduino με ενσωματωμένο Wi-Fi για λιγότερο από $ 10;  Λοιπόν, υπάρχει.
Διαφήμιση

Το Wi-Fi είναι ένα βασικό κομμάτι του κιτ για τα DIY projects του Internet of Things (IoT), αλλά το αγαπημένο μας Arduino δεν έρχεται με Wi-Fi και η προσθήκη σε ασπίδα Wi-Fi μπορεί να φτάσει το συνολικό κόστος σε περίπου 40 δολάρια. Τι γίνεται αν σας έλεγα ότι υπάρχει ένας πίνακας Dev συμβατός με Arduino με ενσωματωμένο Wi-Fi για λιγότερο από $ 10; Λοιπόν, υπάρχει.

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

Τα άγρια ​​ονόματα στην άκρη, το ESP8266 (γνωστό και ως NodeMCU) αρχικά διατέθηκε ως πρόσθετο Wi-Fi χαμηλού κόστους για τους πίνακες Arduino, έως ότου η κοινότητα των χάκερ συνειδητοποίησε ότι θα μπορούσατε να κόψετε το Arduino εξ ολοκλήρου από την εξίσωση.

Σε λιγότερο από ένα χρόνο, το ESP8266 έχει εξελιχθεί σε δημοτικότητα, και τώρα υποστηρίζεται και αναπτύσσεται τόσο καλά ώστε εάν χρησιμοποιείτε σήμερα το Arduino, πρέπει να σηκωθείτε και να σημειώσετε. Αγοράστε τώρα, ακολουθήστε μαζί με αυτόν τον οδηγό για να ξεκινήσετε τον προγραμματισμό του ESP8266 σας - όλα μέσα από το γνωστό IDE του Arduino.

Δεν περιορίζετε τη χρήση του IDE Arduino φυσικά - είναι συμβατά και με τον 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 όπου αναγράφονται διευθύνσεις διευθύνσεων πρόσθετων διευθυντών :

 http://arduino.esp8266.com/package_esp8266com_index.json 

arduino διευθυντής διεύθυνσης URLs

Κάντε κλικ στο κουμπί Ok, στη συνέχεια ανοίξτε το Boards Manager από το Εργαλεία -> μενού του πίνακα, αναζητήστε το esp8266 και εγκαταστήστε την πλατφόρμα. Θα πρέπει τώρα να δείτε μια επιλογή για το NodeMCU 1.0.

επιλέξτε συμβούλιο

Αφήστε τη CPU και την ταχύτητα φόρτωσης ως έχει και επιλέξτε τη νέα σειριακή θύρα εγκατάστασης. Σε Mac, αυτό φαίνεται σαν cu.SLAB_USBtoUART .

Ως πρώτο πρόγραμμα, προτείνω τον απλό σαρωτή Wi-Fi - βρείτε από το Αρχείο -> Παραδείγματα -> ESP8266WiFi -> WifiScan . Σημειώστε ότι είναι αρκετά αργή η μεταφόρτωσή του, αλλά τελικά θα πει "ολοκληρωθεί η μεταφόρτωση" και σε εκείνο το σημείο (όχι πριν ή θα σπάσετε τη διαδικασία αποστολής), μπορείτε να ανοίξετε τη σειριακή οθόνη. Θα πρέπει να δείτε κάτι παρόμοιο με αυτό:

wifi test esp8266
Επιτυχία! Τώρα, ας προσπαθήσουμε να συνδεθούμε με ένα.

Ακολουθεί ένας απλός κώδικας barebones για σύνδεση σε δίκτυο Wi-Fi. Δεν κάνει τίποτα άλλο από απλά σύνδεση, αλλά είναι κάτι που μπορείτε να προσθέσετε πολύ αργότερα. Απλά θυμηθείτε να αλλάξετε τα στοιχεία YOUR_SSID και YOUR_PASSWORD στις λεπτομέρειες Wi-Fi. Ανεβάστε, ανοίξτε την κονσόλα Serial και θα πρέπει να την δείτε να συνδέεται.

#include const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup() { Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { } 

Δεν είναι υπέροχο πόσο απίστευτα απλό ήταν αυτό;

Πριν συνεχίσουμε, εδώ είναι το διάγραμμα pinout - μπορεί να έρθει χρήσιμο αργότερα. Σημειώστε ότι οι αριθμοί pin που αναφέρονται στον κώδικα είναι οι αριθμοί GPIO, όχι το D0-16 που πιθανώς γράφτηκε στο PCB του σκάφους σας. Εάν απολύτως, θετικά δεν μπορείτε να καταλάβετε γιατί ένας αισθητήρας δεν λειτουργεί, έχετε μπερδέψει πιθανώς τους αριθμούς pin.

NodeMCU__v1.0_pinout

Γρήγορος αισθητήρας οικιακού σπιτιού με MQTT και DHT11

Εδώ είναι ένα πρακτικό παράδειγμα που μπορείτε να χρησιμοποιήσετε άμεσα για να παρακολουθήσετε το σπίτι σας. Θα προσθέσουμε έναν αισθητήρα θερμοκρασίας και υγρασίας DHT11 και, στη συνέχεια, θα αναφέρουμε τις τιμές χρησιμοποιώντας το πρωτόκολλο MQTT μέσω του δικτύου Wi-Fi, στην περίπτωσή μου σε ένα σύστημα αυτοματισμού οικιακού εξοπλισμού OpenHAB DIY (αν όχι, μπορεί να θέλετε να διαβάσετε τον οδηγό για αρχάριους Η OpenHAB είναι μια ώριμη, ανοιχτού κώδικα πλατφόρμας αυτοματισμού οικιακής χρήσης που λειτουργεί σε ποικίλο υλικό και είναι πρωτόκολλο αγνωστικής, που σημαίνει μπορεί να συνδεθεί με σχεδόν οποιοδήποτε υλικό οικιακού αυτοματισμού στην αγορά σήμερα Διαβάστε περισσότερα και μέρος 2 που αφορά ειδικά την εγκατάσταση ενός εξυπηρετητή MQTT OpenHAB Οδηγός για αρχάριους Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση OpenHAB Οδηγός για αρχάριους Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση Το OpenHAB, το λογισμικό αυτοματισμού ανοικτού κώδικα, υπερβαίνει κατά πολύ τις δυνατότητες άλλων συστημάτων αυτοματισμού στο σπίτι - αλλά δεν είναι εύκολο να το εγκαταστήσετε. να είναι απογοητευτικό. Διαβάστε περισσότερα ).

Στην πλευρά των καλωδίων, συνδέστε τον αισθητήρα DHT σε GND, 3.3v και ~ D4 (ή GPIO 2). Αυτό είναι όλο που χρειαζόμαστε για τώρα.

Κάντε λήψη αυτών των βιβλιοθηκών MQTT και DHT. Ακόμη και αν τα έχετε ήδη, κατεβάστε αυτά τα πάντα ούτως ή άλλως, δημιουργήστε αντίγραφα ασφαλείας όσα έχετε και αντικαταστήστε τα με αυτά. Η πιο πρόσφατη βιβλιοθήκη DHT11 από την Adafruit χρησιμοποιεί έναν αυτόματο αλγόριθμο για τον προσδιορισμό της ταχύτητας με την οποία διαβάζονται τα δεδομένα από τον αισθητήρα, αλλά είναι buggy στο ESP8266 και το 90% των χρόνων έχει ως αποτέλεσμα αποτυχημένες αναγνώσεις.

Με την παλιά έκδοση 1.0 της βιβλιοθήκης που έχω συμπεριλάβει στη λήψη, μπορείτε να αλλάξετε το χρονοδιάγραμμα με μη αυτόματο τρόπο: το 11 λειτουργεί καλύτερα για αυτές τις κάρτες ESP2866. Πήρα επίσης πολλά αντίγραφα της βιβλιοθήκης MQTT, προσπαθώντας να βρω μία καλή λειτουργία επανάκλησης, τελικά προσγειώνοντας σε αυτή που συμπεριλαμβάνεται. Θα χρειαστεί να κάνετε επανεκκίνηση του IDE Arduino μετά την αντικατάστασή του.

Εδώ είναι ο πλήρης κώδικας για το έργο. Στην κορυφή υπάρχουν όλες οι μεταβλητές που πρέπει να αλλάξετε, συμπεριλαμβανομένων των λεπτομερειών Wi-Fi, του διακομιστή MQTT (μπορεί να χρησιμοποιηθεί αντίθετα μια διεύθυνση URL εάν χρησιμοποιείτε διακομιστή σύννεφο, αν και δεν υπάρχει έλεγχος ταυτότητας) και τα κανάλια για τη δημοσίευση δεδομένων.

Δείτε πώς λειτουργεί και μερικές σημειώσεις:

  • Αρχικά συνδέουμε το Wi-Fi, μετά στο διακομιστή MQTT, και στη συνέχεια ξεκινήσουμε τον κύριο βρόχο ().
  • Στον βρόχο, διερευνούμε τον αισθητήρα DHT κάθε 60 δευτερόλεπτα και δημοσιεύουμε αναγνώσεις στα σχετικά κανάλια MQTT. Και πάλι, αν διαπιστώσετε ότι οι περισσότερες αναγνώσεις οδηγούν σε μήνυμα αποτυχίας, έχετε τη λανθασμένη έκδοση της βιβλιοθήκης DHT - υποβάθμιση σε v1.0.
  • Ο client.loop () μεταβιβάζει τον έλεγχο στη βιβλιοθήκη MQTT, επιτρέποντάς του να αντιδράσει στα εισερχόμενα μηνύματα.
  • Υπάρχει μια λειτουργία messageReceived (), όπου χειριζόμαστε εισερχόμενα μηνύματα - απλά κάντε μια απλή δήλωση if για να συγκρίνετε το ωφέλιμο φορτίο με το μήνυμα που περιμένετε. Μπορείτε να χρησιμοποιήσετε αυτό για να ενεργοποιήσετε ένα ρελέ, για παράδειγμα.
  • Μετά την εκτέλεση αυτών για μερικές ημέρες, βρήκα ότι θα σταματούσαν τυχαία να δουλεύουν - υποθέτω ότι πρόκειται για κάποιο είδος διαρροής μνήμης, αλλά δεδομένου ότι δεν έχω την ικανότητα κωδικοποίησης να το αντιμετωπίσω και ίσως να είναι με τις κεντρικές βιβλιοθήκες, εγώ Έχετε επιλέξει μια απλή μαλακή επαναφορά κάθε μέρα. Ακριβώς μία ημέρα μετά την πρώτη ενεργοποίηση των κόμβων των αισθητήρων, θα επανεκκινηθούν.
  • Κατά την τροφοδοσία αυτών των φθηνών μονάδων DHT11 από 3.3v, οι τιμές υγρασίας είναι πολύ χαμηλότερες από ό, τι θα έπρεπε να είναι. Έχω λύσει αυτό με ένα απλό πολλαπλασιασμό, και βαθμονομημένο σε σχέση με έναν εμπορικό αισθητήρα. Σας συμβουλεύω να επιβεβαιώσετε και πάλι τη δική σας γνωστή πηγή, πριν στηρίξετε τις αναγνώσεις. Εναλλακτικά, τροφοδοτήστε τα με 5V - αλλά πρέπει να τοποθετήσετε ένα 5v-3.3v λογικό επίπεδο μετατόπισης μεταξύ του pin δεδομένων και του ESP8266, ή θα το βλάψετε .

Εάν όλα πήγαν καλά, θα έπρεπε τώρα να λαμβάνετε μετρήσεις αισθητήρων στον μεσίτη MQTT και μπορείτε να προχωρήσετε στη σύνδεση αυτών με το OpenHAB όπως περιγράφεται λεπτομερώς στο μέρος 2 του οδηγού μας για αρχάριους Οδηγός για αρχάριους OpenHAB Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση OpenHAB Beginner's Οδηγός Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση Το OpenHAB, το λογισμικό αυτοματισμού ανοιχτού κώδικα, ξεπερνά κατά πολύ τις δυνατότητες άλλων συστημάτων αυτοματισμού στο σπίτι - αλλά δεν είναι εύκολο να εγκατασταθεί. Στην πραγματικότητα, μπορεί να είναι απογοητευτικό. Διαβάστε περισσότερα, όπου σας έδειξα επίσης πώς να γράψετε τα δεδομένα.

γραφική παράσταση υγρασίας από το openhab

Αντίο Arduino, σε αγαπήσαμε. Απλά να γελάσω: όχι παντού στο σπίτι μου μπορεί καν να πάρει Wi-Fi, οπότε για εκείνα τα σημεία θα χρειαστώ ακόμα ένα δίκτυο mesh με τους δέκτες Arduino και RF. Αλλά τι θα κάνετε με το ESP8266; Οποιαδήποτε έργα που χρησιμοποιούν το ESP8266 που θέλετε να δείτε γραμμένα στο MakeUseOf; Ενημερώστε μας στα σχόλια!

In this article