Mündəricat:
Video: ESP8266-01: 3 addımlarının 4 pinindən istifadə
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Qeyd: Bu layihə, əsasən, yalnız 2 sancaqdan istifadə olunan əvvəlcədən öyrədilənin bir uzantısıdır. ESP8266-01 üzərindəki GPIO pinlərinin məhdud sayı (4) hər hansı bir ciddi tətbiq üçün maneə kimi görünə bilər. Ağıllı bir şəkildə, yalnız bu 4 pinlə çox şey etmək mümkündür. Son təlimatlarımda ESP8266-01 ilə DHT11, DS18B20, OLED, RTC və BMP180 istifadəsini göstərdim. Bu təlimatda 4 sensordan və bir ekrandan istifadə etməyi, eyni zamanda əldə edilmiş məlumatları Thingspeak -a yükləməyi qərara aldım. Əslində toyuq yuvamdakı və ətrafımdakı atmosferi izləmək layihəsini genişləndirir. Bəli, bunu bir hava istasyonu adlandıra bilərsiniz, ancaq 4 sancağın istifadəsini göstərmək üçün başqa yolla başqa bir şey düzəldə bilərsiniz. DHT11 üçün OneWire protokol1 pimi ESP8266-01-də bütün pinləri istifadə olunsa da, OneWire protokolu və/və ya I2C protokolu vasitəsi ilə daha çox sensoru (və ya aktuatoru) əlavə edə bilərəm. Buna görə bizə nə lazımdır: BOM
- ESP8266-01
- 2x DS18B20
- 1 x DHT11
- 1x BMP180
- OLED (isteğe bağlı)
və əlbəttə ki, bir çörək taxtası, 3.3 V PSU və bəzi çörək taxtası telləri və Thingspeak hesabı
AMB ilə bağlı bəzi fikirlər:
- Şübhəsiz ki, layihə məhdud ESP8266-01 pinlərindən istifadə etməkdir, amma yenə də satın almaq lazımdırsa, daha çox sancağı olan bir ESP8266-12 hesab edə bilərsiniz.
- DHT11A ucuz bütün məqsədli rütubət və temperatur sensoru. Çox dəqiq deyil, amma edəcək. Hələ də satın almalısınızsa, guya daha dəqiq olan DHT22 -ni seçə bilərsiniz, ancaq AMS2321 -i də seçə bilərsiniz. Bu, I2C üçün uyğun olan bir növ DHT22, beləliklə başqa bir pin azad edir
- BMP180 temperatur və hava təzyiqini ölçür. BMP085 -in varisidir, lakin indi də bəzi superssorsun özü var. BMP280 (daha ucuz) var, ancaq temperaturu, havanı və rütubəti ölçən BME280 -i də seçə bilərsiniz. Bu yolla DHT/AMS sensoruna qənaət edə bilərsiniz
- OLEDI istifadə etdi, buna görə sensorların oxunub oxunmadığını tez bir zamanda görə bildim, ancaq Thingspeak -də yoxlaya bilərsiniz. Bütün oxunan dəyərləri çap etmək üçün OLED çox kiçikdir
Addım 1: Dövrə
ESP8266-nın 4 sancağı PCB-də belə göstərilmir və əksər şəkillər yalnız GPIO0 və GPIO2-ni açıq şəkildə ifadə edir, lakin ESP826-01-də aa GPIO1 pin (Tx pin) və GPIO3 pin (Rx pin) var.i bu pinləri aşağıdakı kimi istifadə edəcək
- GPIO0 -> I2C portunun SDA pimi
- GPIO1 -> DHT11
- GPIO2-> I2C portunun SCL pimi
- GPIO3-> OneWire Avtobusu
I2C modullarımda artıq çəkmə rezistorları olduğu üçün oraya heç bir I2C çəkmə rezistoru əlavə etməyəcəyəm. DS18B20 -nin hələ də 4k7 istifadə etdiyim bir çəkmə rezistoruna ehtiyacı var, amma bu o qədər də kritik deyil, 10k da yaxşıdır. Guya DHT11-in də çəkmə rezistoruna ehtiyacı var, amma onsuz da işləmədiyini gördüm. 4k7 rezistor əlavə etmək oxunuşların heç birini dəyişmədi, buna görə də buraxdım. 3 pinli DHT11 modullarının bir çoxunda, artıq modulun üzərinə 10 k lehimlənmiş, yalnız başa düşdüm ki, OLED üçün əlaqələri çəkməmişəm. Bunun səbəbi, yalnız sürətli bir yoxlama üçün bağladığımdır, ancaq əlavə etmək istəsəniz, bu sadəcə SDA -nı SDA -ya SCL -ə SCL -ə bağlamaqdır … və əlbəttə ki, yer və Vcc sancaqlarını həmkarlarına
Addım 2: Proqram
Proqram olduqca sadədir. Əvvəlcə kitabxanalar və sensorlar qurur, DHT11 -i pin 1 -ə (Tx) və DS18B20 üçün OnWire avtobusunu pin 3 -ə (Rx) bağlayır. OneWire avtobusunda 1 -dən çox DS18B20 sensoru istifadə etmək üçün onların 'unikal ünvanlarını' bilməlisiniz. Əgər bu yoxdursa, o ünvanları oxumaq üçün bir proqrama ehtiyacınız var. Proqramda hələ də Thingspeak Kanalınız üçün WiFi məlumatlarınızı və API yazmağı təmin etməlisiniz.
/*
Sahə 1 temp roost (DHT11) Sahə 2 rütubət yuvası (DHT11) sahə 3 Coop temperaturu (DS18B20) sahə 4 torpaq temperaturu (DS18B20) sahə 5 Hava təzyiqi (bmp180) sahə 6 Xarici temperatur (bmp180) * */ #include #include // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" SSD1306 ekranı (0x3c, 0, 2); #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #deinefine ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* parol = "Şifrənizi"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // SİZİN WriteApi istifadə edin // DHT11 məhsulları float temperatur_buiten; üzmə temperaturu_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 məhsulları OneWire oneWire (ONE_WIRE_BUS); // OneWire nümunəsi hər hansı bir OneWire cihazı ilə əlaqə qurmaq üçün DallasTemperature sensorlar (& oneWire); // OneWire nümunəmizin ünvanını Dallas Temperaturuna ötürün. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 məhsulları Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.begin (0, 2); // Sensorları işə salın // dht 11 şey dht.begin (); // ds18b20 stuff sensors.begin (); // ds18b20 // qətnaməni 10 bit olaraq təyin edin (9 ilə 12 bit ola bilər.. aşağı daha sürətli) sensorlar.setResolution (Probe01, 10); sensorlar.setResolution (Probe02, 10); // bmp180 məhsulları əgər (! bmp.begin ()) {// Serial.println ("BMP180 /BMP085 yoxdur"); // while (1) {}} // OLED məhsulları display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); gecikmə (1000); // WiFi şəbəkəsinə qoşul WiFi.begin (ssid, parol); while (WiFi.status ()! = WL_CONNECTED) {gecikmə (500); }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures (); // temperaturu əldə etmək üçün əmr göndərin temperatur_buiten = sensorlar.getTempC (Probe01); // temperatur_buiten2 = sensorlar.getTempC (Probe02); // // dht11 məhsulları ---------------- ---- üzən rütubət = dht.readHumidity (); üzmə temperaturu = dht.readTemperature (); if (isnan (rütubət) || isnan (temperatur)) {qayıt; } // bmp məhsulları ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // OLED məhsulları -------------------------- display.clear (); display.drawString (0, 10, p); // bmp təzyiq göstəricisi.drawString (0, 24, String (temperatur_buiten)); // ds18b20 display.drawString (0, 38, String (rütubət)); // dht11 göstəricisi. ekran (); // WiFiClient müştəri ilə TCP əlaqələri qurmaq; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += writeAPIKey; url += "& field1 ="; url += String (temperatur); // roost (DHT1) url += "& field2 ="; url += String (rütubət); // roost (DHT11) url += "& field3 ="; url += String (temperature_buiten); // cox temperaturu (DS18B20 nr 1) url += "& field4 ="; url += String (temperatur_buiten2); // torpaq temperaturu (DS18B29 nr 2) url += "& field5 ="; url += String (bmp.readTemperature ()); Xarici temperatur (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Hava təzyiqi (BMP180) url += "\ r / n"; // Serverə sorğu göndərin.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); gecikmə (1000); }
……..
Addım 3: Daha çox
Hal -hazırda bu proqram yalnız izləyir, ancaq axşam və ya səhər olub olmadığını ölçmək üçün BH1750 I2C işıq sensoru əlavə etməyinizə nə mane olur və ya günün vaxtını bilmək və yuvanın qapısını avtomatik olaraq açmaq və bağlamaq. PCF8574 I2C I/O genişləndirmə kartı və ya bağçada olduğu kimi, torpağın rütubətini ölçmək və lazım olduqda nasosu işə salmaq üçün PCF8591 və ya ADS1115 AD çeviricisi əlavə edin. Və ya temperatur sıfırın altına düşəndə su hövzəsi qızdırıcısını işə sala bilərsiniz, əgər bunun üçün bir I2 C çipi varsa, ESP8266 ehtimal ki istifadə edə bilər.
Əhəmiyyətli bir qeyd: Proqram olduğu kimi yaxşı işləyir, ancaq Rx və ya Tx -ə digər sensorlar əlavə etsəniz, xüsusən də onları çıxışlara çevirsəniz, pinlər birdən -birə əslində GPIO sancaqları olmadığını xatırlaya bilər. İştirakçılara GPIO pin olduqlarını əvvəldən söyləmək daha yaxşıdır, bunu aşağıdakı ifadələri qurmağa qoyaraq edir:
pinMode (1, FUNCTION_3);
pinMode (3, FUNCTION_3);
Tövsiyə:
PiDP-11: 1970-ci illərin PDP-11/70: 4 addımlarının surəti
PiDP-11: 1970-ci illərin replikası PDP-11/70: PDP-11 bəlkə də indiyə qədərki ən təsirli kompüter idi. Normal olaraq düşündüklərimizi təyin etdi, Unix-i əldə edə biləcəyiniz ilk maşın idi və Windows, köklərini PDP-11-in digər böyük bilet əməliyyat sistemi RSX-11-ə qədər izləyə bilər. 1975-ci ildə
Blynk istifadə edərək Wemos ESP-Wroom-02 D1 Mini WiFi Modulu ESP8266 + 18650-dən necə istifadə olunur: 10 addım
Blynk istifadə edərək Wemos ESP-Wroom-02 D1 Mini WiFi Modulu ESP8266 + 18650 Necə İstifadə olunur: Xüsusiyyətlər: nodemcu 18650 şarj sistemi inteqrasiyasına uyğundur Göstərici LED (yaşıl tam qırmızı deməkdir, şarj deməkdir) Şarj edilərkən Şəbəkə idarəetmə enerji təchizatı SMT bağlayıcı yuxu rejimi üçün istifadə edilə bilər · 1 əlavə
Acer Aspire 1690: 6 Addımlarının DVD sürücüsünü dəyişdirin
Acer Aspire 1690-ın DVD sürücüsünü dəyişdirin: Bu təlimat, Acer Aspire 1690 (və potensial olaraq digər Acers) DVD sürücülərinin necə dəyişdiriləcəyini göstərir. Şəkillər aşağı ölçülüdür, lakin hələ də düzgün vintləri tapmaqda faydalı olmalıdır
ZIFduino USB 1.2: 10 addımlarının yığılması
ZIFduino USB 1.2 -nin yığılması: ZIFduino, bütün məqsəd və məqsədlər üçün, ZIF yuvası olan bir Arduino -dur. Platformada prototip hazırlamaq istəyən, lakin sonra ATMega çipini müstəqil bir mühitə köçürmək istəyənlər üçün hazırlanmışdır. Pin düzeni eynidır, buna görə də
Bir Niftymitter V0.24: 5 Addımlarının Montajı
Bir Niftymitter V0.24 -ün Qurulması: Bu təlimat, kiçik bir açıq mənbəli FM ötürücüsü olan Niftymitter v.0.24 -in yığılması ilə sizə yol göstərəcək. Dizayn haqqında daha çox məlumatı www.openthing.org/products/niftymitter saytında tapa bilərsiniz. Bunun üçün yığılmış bir Niftymitte lazımdır