Πίνακας περιεχομένων:
Βίντεο: Χρήση των 4 ακίδων του ESP8266-01: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Σημείωση: Αυτό το έργο είναι βασικά μια επέκταση ενός προγενέστερου οδηγού που χρησιμοποιούσε μόνο 2 ακίδες. Ο περιορισμένος αριθμός (4) καρφιτσών GPIO στο ESP8266-01 μπορεί να φαίνεται εμπόδιο, για οποιαδήποτε σοβαρή εφαρμογή. Ωστόσο, αν κάποιος χρησιμοποιεί τις καρφίτσες με έναν έξυπνο τρόπο είναι πολύ πιθανό να κάνουμε πολλά μόνο με αυτές τις 4 καρφίτσες. Σε μερικές από τις πρόσφατες οδηγίες μου, έδειξα τη χρήση ενός DHT11 ενός DS18B20, ενός OLED, ενός RTC και ενός BMP180 με το ESP8266-01. Σε αυτό το διδακτικό ξεκίνησα να χρησιμοποιώ 4 αισθητήρες και μια οθόνη, ενώ ανεβάζω επίσης τα αποκτηθέντα δεδομένα στο Thingspeak. Στην πραγματικότητα επεκτείνεται σε ένα έργο παρακολούθησης της ατμόσφαιρας μέσα και γύρω από το κοτέτσι μου. Ναι, θα μπορούσατε να το αποκαλέσετε αυτό ως ανεμιστήρας καιρού, αλλά είναι απλώς για να απεικονίσετε τη χρήση των 4 ακίδων, θα μπορούσατε εύκολα να κάνετε κάτι άλλο με αυτόν τον τρόπο Θα χρησιμοποιήσω 2 ακίδες για I2C (BMP180 και OLED) 1 ακίδα για 2 αισθητήρες DS18B20 μέσω του Αν και το ESP8266-01 έχει πλέον χρησιμοποιήσει όλους τους πείρους, μπορώ να προσθέσω περισσότερους αισθητήρες (ή ενεργοποιητές) μέσω του πρωτοκόλλου OneWire ή/και μέσω του πρωτοκόλλου I2C. Λοιπόν, τι χρειαζόμαστε: BOM
- ESP8266-01
- 2x DS18B20
- 1x DHT11
- 1x BMP180
- OLED (προαιρετικό)
και φυσικά ένα breadboard, ένα τροφοδοτικό 3,3 V και μερικά καλώδια breadboard και έναν λογαριασμό Thingspeak
Μερικές μόνο παρατηρήσεις σχετικά με το BOM:
- Προφανώς το έργο αφορά τη χρήση των περιορισμένων ακίδων του ESP8266-01, αλλά αν εξακολουθείτε να χρειάζεται να αγοράσετε ένα, θα μπορούσατε να εξετάσετε ένα ESP8266-12 που έχει περισσότερες καρφίτσες
- Φθηνός αισθητήρας υγρασίας και θερμοκρασίας DHT11A για όλες τις χρήσεις. Δεν είναι εξαιρετικά ακριβές αλλά θα το κάνει. Εάν εξακολουθείτε να χρειάζεται να αγοράσετε ένα, μπορείτε να επιλέξετε το DHT22 που υποτίθεται ότι είναι πιο ακριβές, αλλά μπορείτε επίσης να επιλέξετε το AMS2321. Αυτό είναι ένα είδος DHT22 που είναι κατάλληλο για I2C, απελευθερώνοντας έτσι έναν άλλο πείρο
- Το BMP180μετρά τη θερμοκρασία και την πίεση αέρα. Είναι ο διάδοχος του BMP085, αλλά τώρα έχει επίσης και κάποιους suverssors. Υπάρχει το (φθηνότερο) BMP280, αλλά θα μπορούσατε επίσης να επιλέξετε το BME280 που μετρά τη θερμοκρασία, τον αέρα και την υγρασία. Με αυτόν τον τρόπο μπορείτε να εξοικονομήσετε χρήματα στον αισθητήρα DHT/AMS
- Το OLEDI το χρησιμοποίησε έτσι ώστε να μπορώ γρήγορα να δω αν οι αισθητήρες έχουν διαβαστεί, αλλά μπορείτε επίσης να το ελέγξετε στο Thingspeak. Το OLED είναι πολύ μικρό έτσι κι αλλιώς για να εκτυπώσει όλες τις τιμές ανάγνωσης
Βήμα 1: Το κύκλωμα
Οι 4 ακίδες του ESP8266 δεν υποδεικνύονται ως τέτοιες στο PCB και οι περισσότερες εικόνες αναφέρουν σαφώς μόνο GPIO0 και GPIO2. Ωστόσο, το ESP826-01 διαθέτει aa GPIO1 pin (το pin Tx) και έναν GPIO3 pin (τον Rx pin).i θα χρησιμοποιήσει αυτές τις ακίδες ως εξής
- GPIO0 -> καρφίτσα SDA της θύρας I2C
- GPIO1 -> DHT11
- GPIO2-> SCL pin της θύρας I2C
- GPIO3-> OneWire Bus
Καθώς οι μονάδες I2C μου έχουν ήδη αντιστάσεις έλξης, δεν θα προσθέσω εκεί αντιστάσεις έλξης I2C. Το DS18B20 χρειάζεται ακόμα αντίσταση έλξης για το οποίο χρησιμοποίησα ένα 4k7, αλλά δεν είναι πραγματικά τόσο κρίσιμο, ένα 10k είναι επίσης καλό. Το DHT11 υποτίθεται ότι χρειάζεται επίσης αντίσταση έλξης, αλλά το βρήκα να λειτουργεί και χωρίς αυτό. η προσθήκη αντίστασης 4k7 δεν άλλαξε καμία από τις ενδείξεις, οπότε το άφησα εκτός. Πολλές από τις μονάδες 3 ακίδων DHT11, έχουν ήδη κολλήσει 10 k στη μονάδα. Μόλις κατάλαβα ότι δεν σχεδίασα τις συνδέσεις για το OLED. Αυτό οφείλεται στο γεγονός ότι το συνέδεσα μόνο για έναν γρήγορο έλεγχο, αλλά αν θέλετε να το προσθέσετε, είναι απλώς θέμα σύνδεσης του SDA με το SDA και του SCL με το SCL… και φυσικά τις καρφίτσες του εδάφους και του Vcc με τους ομολόγους τους
Βήμα 2: Το πρόγραμμα
Το πρόγραμμα είναι αρκετά απλό. Πρώτα ρυθμίζει τις βιβλιοθήκες και τους αισθητήρες. Συνδέει το DHT11 στο pin 1 (Tx) και το δίαυλο OnWire για το DS18B20 στο pin 3 (Rx). Για να χρησιμοποιήσετε περισσότερους από 1 αισθητήρες DS18B20 στο δίαυλο OneWire, πρέπει να γνωρίζετε τη «μοναδική διεύθυνση» του. Εάν δεν το έχετε, τότε χρειάζεστε ένα πρόγραμμα για να διαβάσετε αυτές τις διευθύνσεις. Κάντε το με arduino για ευκολία. Στο πρόγραμμα πρέπει ακόμα να δώσετε τα διαπιστευτήριά σας WiFi καθώς και το API εγγραφής για το Thingspeak Channel σας
/*
Πεδίο 1 temp roost (DHT11) Πεδίο 2 Roost υγρασίας (DHT11) πεδίο 3 Temperature coop (DS18B20) πεδίο 4 θερμοκρασία εδάφους (DS18B20) πεδίο 5 Airpressure (bmp180) πεδίο 6 Εξωτερική θερμοκρασία (bmp180) * */ #include #include // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include #include "SSD1306.h" SSD1306 0 (0x3c, 0, 2)? #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // χρησιμοποιήστε το δικό σας writeApi // DHT11 stuff float temperature_buiten? float temperature_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 πράγματα OneWire oneWire (ONE_WIRE_BUS); // παράδειγμα OneWire για επικοινωνία με οποιεσδήποτε συσκευές OneWire αισθητήρες DallasTemperature (& oneWire); // Διαβιβάστε τη διεύθυνση της παρουσίας μας στο OneWire στη θερμοκρασία του Ντάλας. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 πράγματα Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.begin (0, 2); // Αρχικοποίηση αισθητήρων // dht 11 πράγματα dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // ορίστε την ανάλυση στα 10 bit (Μπορεί να είναι 9 έως 12 bits.. το χαμηλότερο είναι ταχύτερο) sensors.setResolution (Probe01, 10); sensors.setResolution (Probe02, 10); // bmp180 πράγματα αν (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED stuff display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); καθυστέρηση (1000)? // Σύνδεση σε δίκτυο WiFi WiFi.begin (ssid, κωδικός πρόσβασης); while (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // Στείλτε την εντολή για να λάβετε θερμοκρασίες temperature_buiten = sensors.getTempC (Probe01); // temperature_buiten2 = sensors.getTempC (Probe02); // // dht11 stuff ---------------- ---- υγρασία επίπλευσης = dht.readHumidity (); θερμοκρασία πλωτήρα = dht.readTemperature (); εάν (ισνάνη (υγρασία) || ισνάνη (θερμοκρασία)) {επιστροφή? } // πράγματα bmp ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED πράγματα -------------------------- display.clear (); display.drawString (0, 10, p); // bmp display display.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (υγρασία)); // οθόνη dht11.απεικόνιση(); // πραγματοποιήστε συνδέσεις TCP πελάτη WiFiClient. const int httpPort = 80; if (! client.connect (host, httpPort)) {return? } String url = "/update? Key ="; url += writeAPIKey; url += "& field1 ="; url += String (θερμοκρασία); // roost (DHT1) url += "& field2 ="; url += String (υγρασία); // roost (DHT11) url += "& field3 ="; url += String (temperature_buiten); // θερμοκρασία coop (DS18B20 nr 1) url += "& field4 ="; url += String (temperature_buiten2); // θερμοκρασία εδάφους (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Εξωτερική θερμοκρασία (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Airpressure (BMP180) url += "\ r / n"; // Αποστολή αιτήματος στο διακομιστή client.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); καθυστέρηση (1000)? }
……..
Βήμα 3: Περισσότερα
Προς το παρόν αυτό το πρόγραμμα παρακολουθεί μόνο, αλλά τι είναι αυτό που σας εμποδίζει να προσθέσετε έναν αισθητήρα φωτός BH1750 I2C για να μετρήσετε εάν είναι βράδυ ή πρωί ή RTC για να γνωρίζετε την ώρα της ημέρας και να ανοίγετε και να κλείνετε αυτόματα την πόρτα του κοτέτσι με τη βοήθεια μια κάρτα επέκτασης PCF8574 I2C I/O, ή όπως είναι ήδη στον κήπο, προσθέστε έναν μετατροπέα PCF8591 ή ADS1115 AD για να μετρήσετε την υγρασία του εδάφους και να ενεργοποιήσετε μια αντλία όταν είναι απαραίτητο. Or ίσως να ενεργοποιήσετε το θερμοσίφωνα λεκάνης νερού όταν η θερμοκρασία πέσει κάτω από το μηδέν εάν υπάρχει ένα τσιπ I2 C για αυτό, το ESP8266 πιθανότατα μπορεί να το χρησιμοποιήσει.
Μια σημαντική σημείωση όμως: Το πρόγραμμα ως έχει λειτουργεί καλά, αλλά αν προσθέσετε άλλους αισθητήρες στο Rx ή Tx, ειδικά αν τους κάνετε εξόδους, οι ακίδες μπορεί ξαφνικά να θυμηθούν ότι δεν είναι πραγματικά καρφίτσες GPIO. Είναι καλύτερα να πείτε από την αρχή ότι οι καρφίτσες είναι τώρα καρφίτσες GPIO. Κάποιος το κάνει αυτό βάζοντας τις ακόλουθες προτάσεις στη ρύθμιση:
pinMode (1, FUNCTION_3);
pinMode (3, FUNCTION_3);
Συνιστάται:
Χρήση του Arduino για την Επιστήμη του Πολίτη!: 14 βήματα (με εικόνες)
Χρησιμοποιώντας το Arduino για την Επιστήμη του Πολίτη!: Η Επιστήμη μας επιτρέπει να κάνουμε τις πιο πιεστικές ερωτήσεις μας και να εξερευνήσουμε κάθε είδους περιέργεια. Με λίγη σκέψη, σκληρή δουλειά και υπομονή, μπορούμε να χρησιμοποιήσουμε τις εξερευνήσεις μας για να δημιουργήσουμε μια καλύτερη κατανόηση και εκτίμηση του περίπλοκου και όμορφου κόσμου
Κατανόηση του πρωτοκόλλου IR των τηλεχειριστηρίων του κλιματιστικού: 9 βήματα (με εικόνες)
Κατανόηση του πρωτοκόλλου IR των τηλεχειριστηρίων του Air Conditoner: Μαθαίνω για πρωτόκολλα IR εδώ και αρκετό καιρό τώρα. Πώς να στείλετε και να λάβετε σήματα IR. Σε αυτό το σημείο, το μόνο που απομένει είναι το πρωτόκολλο IR των τηλεχειριστηρίων AC. Σε αντίθεση με τα παραδοσιακά τηλεχειριστήρια σχεδόν όλων των ηλεκτρονικών συσκευών (ας πούμε μια τηλεόραση) όπου
Χρήση του Arduino Uno για τοποθέτηση XYZ του ρομποτικού βραχίονα 6 DOF: 4 βήματα
Χρήση Arduino Uno για XYZ Positioning of 6 DOF Robotic Arm: Αυτό το έργο αφορά την υλοποίηση ενός σύντομου και σχετικά εύκολου σχεδίου Arduino για την παροχή αντίστροφης κινηματικής τοποθέτησης XYZ. Είχα φτιάξει έναν 6ο σερβο ρομποτικό βραχίονα, αλλά όταν ήρθε η εύρεση λογισμικού για να το τρέξω, δεν υπήρχαν πολλά εκτός από το cust
Ρολόι πρόβλεψης καιρού με χρήση του Old Alarm και του Arduino: 13 βήματα (με εικόνες)
Weather Forecast Clock Using Old Alarm and Arduino: Είχα ένα σπασμένο ξυπνητήρι και βρήκα μια ιδέα να το μετατρέψω σε ρολόι και σταθμό πρόγνωσης καιρού. Για αυτό το έργο θα χρειαστείτε: Παλαιό κυκλικό ξυπνητήρι Arduino Nano BME280 μονάδα αισθητήρα ( θερμοκρασία, υγρασία, πίεση) Οθόνη LCD
Χρήση του PSP ως Joystick του υπολογιστή και στη συνέχεια έλεγχος του υπολογιστή σας με το PSP: 5 βήματα (με εικόνες)
Χρήση του PSP ως Joystick του υπολογιστή και στη συνέχεια έλεγχος του υπολογιστή σας με το PSP: Μπορείτε να κάνετε πολλά ωραία πράγματα με το PSP homebrew και σε αυτό το εκπαιδευτικό πρόγραμμα θα σας μάθω πώς να χρησιμοποιείτε το PSP σας ως χειριστήριο για παιχνίδια, αλλά υπάρχει επίσης ένα πρόγραμμα που σας επιτρέπει να χρησιμοποιείτε το joystick ως ποντίκι. Εδώ είναι η μητέρα