Mục lục:

Sử dụng 4 chân của ESP8266-01: 3 Bước
Sử dụng 4 chân của ESP8266-01: 3 Bước

Video: Sử dụng 4 chân của ESP8266-01: 3 Bước

Video: Sử dụng 4 chân của ESP8266-01: 3 Bước
Video: Hướng dẫn sử dụng blynk iot điều khiển 4 thiết bị từ xa qua điện thoại dùng kít wifi esp8266 2024, Tháng bảy
Anonim
Sử dụng 4 chân của ESP8266-01
Sử dụng 4 chân của ESP8266-01
Sử dụng 4 chân của ESP8266-01
Sử dụng 4 chân của ESP8266-01
Sử dụng 4 chân của ESP8266-01
Sử dụng 4 chân của ESP8266-01

Lưu ý: Dự án này về cơ bản là một phần mở rộng của một hướng dẫn trước đó chỉ sử dụng 2 chân. Số lượng giới hạn (4) chân GPIO trên ESP8266-01 có thể là một trở ngại đối với bất kỳ ứng dụng nghiêm trọng nào. Một cách thông minh, rất có thể làm được nhiều việc chỉ với 4 chân đó. Trong hướng dẫn này, tôi thiết lập sử dụng 4 cảm biến và màn hình, đồng thời tải dữ liệu thu được lên Thingspeak. Nó thực sự đang mở rộng trên một dự án giám sát bầu không khí trong và xung quanh chuồng gà của tôi. Có, bạn có thể gọi đây là thời tiết, nhưng nó chỉ để minh họa việc sử dụng 4 chân, bạn có thể dễ dàng tạo ra thứ khác theo cách này Tôi sẽ sử dụng 2 chân cho I2C (BMP180 và OLED) 1 chân cho 2 cảm biến DS18B20 thông qua Chân giao thức OneWire1 cho DHT11Mặc dù ESP8266-01 hiện đã sử dụng tất cả các chân của nó, tôi vẫn có thể thêm nhiều cảm biến (hoặc bộ truyền động) hơn thông qua giao thức OneWire và / hoặc thông qua giao thức I2C.

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (tùy chọn)

và dĩ nhiên là một breadboard, một PSU 3.3 V và một số dây dẫn breadboard và một tài khoản Thingspeak

Chỉ một số nhận xét liên quan đến BOM:

  • ESP8266-01Trước đây dự án là về việc sử dụng các chân giới hạn của ESP8266-01, nhưng nếu bạn vẫn cần mua một cái, bạn có thể xem xét một ESP8266-12 có nhiều chân hơn
  • DHT11A cảm biến nhiệt độ và độ ẩm đa năng giá rẻ. Nó không chính xác lắm nhưng nó sẽ làm được. Nếu bạn vẫn cần mua một cái, bạn có thể chọn DHT22 được cho là chính xác hơn, nhưng bạn cũng có thể chọn AMS2321. Đó là một loại DHT22 phù hợp với I2C, do đó giải phóng một chân khác
  • BMP180 đo nhiệt độ và áp suất không khí. Nó là sự kế thừa của BMP085, nhưng nó hiện cũng có một số điểm hấp dẫn. Có BMP280 (rẻ hơn), nhưng bạn cũng có thể chọn BME280 để đo nhiệt độ, độ ẩm và độ ẩm không khí. Bằng cách đó, bạn có thể tiết kiệm trên cảm biến DHT / AMS
  • Tôi chỉ sử dụng nó để nhanh chóng xem liệu các cảm biến đã được đọc hay chưa, nhưng bạn cũng có thể kiểm tra nó trên Thingspeak. Dù sao thì OLED cũng quá nhỏ để in tất cả các giá trị đã đọc

Bước 1: Mạch

Mạch
Mạch

4 chân của ESP8266 không được chỉ định như vậy trên PCB và hầu hết các hình ảnh chỉ ghi rõ GPIO0 và GPIO2. Tuy nhiên, ESP826-01 có một chân GPIO1 (chân Tx) và một chân GPIO3 (chân Rx).i sẽ sử dụng các chân đó như sau

  • GPIO0 -> chân SDA của cổng I2C
  • GPIO1 -> DHT11
  • GPIO2-> chân SCL của cổng I2C
  • GPIO3-> Xe buýt OneWire

Vì các mô-đun I2C của tôi đã có điện trở kéo lên, tôi sẽ không thêm bất kỳ điện trở kéo lên I2C nào ở đó. DS18B20 vẫn cần một điện trở kéo lên mà tôi đã sử dụng 4k7, nhưng nó thực sự không quá quan trọng, 10k cũng tốt. DHT11 được cho là cũng cần một điện trở kéo lên nhưng tôi thấy nó hoạt động mà không cần một điện trở. thêm một điện trở 4k7 không thay đổi bất kỳ số đọc nào, vì vậy tôi đã bỏ nó đi. Nhiều mô-đun DHT11 3 pin, đã có 10 k hàn vào mô-đun. Tôi chỉ nhận ra rằng tôi đã không vẽ các kết nối cho OLED. Đó là bởi vì tôi chỉ kết nối nó để kiểm tra nhanh, nhưng nếu bạn muốn thêm nó, nó chỉ là vấn đề kết nối SDA với SDA và SCL với SCL… và tất nhiên là các chân nối đất và Vcc với các đối tác của chúng

Bước 2: Chương trình

Chương trình khá đơn giản. Đầu tiên, nó thiết lập các thư viện và cảm biến. Nó gắn DHT11 vào chân 1 (Tx) và bus OnWire cho DS18B20 vào chân 3 (Rx). Để sử dụng nhiều hơn 1 cảm biến DS18B20 trên xe buýt OneWire, bạn cần biết 'địa chỉ duy nhất' của chúng. Nếu bạn không có thì bạn cần một chương trình để đọc những địa chỉ đó. Làm điều đó trên arduino cho dễ dàng. Trong chương trình, bạn vẫn phải cung cấp thông tin đăng nhập WiFi của mình cũng như API viết cho Kênh Thingspeak của bạn

/*

Trường 1 nhiệt độ ủ (DHT11) Trường 2 độ ẩm (DHT11) trường 3 Nhiệt độ chuồng (DS18B20) trường 4 nhiệt độ đất (DS18B20) trường 5 Áp suất không khí (bmp180) trường 6 Nhiệt độ bên ngoài (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" Màn hình SSD1306 (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"; // sử dụng hàm writeApi của bạn // DHT11 thứ float nhiệt độ_buiten; nhiệt độ float_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 thứ OneWire oneWire (ONE_WIRE_BUS); // phiên bản oneWire để giao tiếp với bất kỳ thiết bị OneWire nào Cảm biến nhiệt độ Dallas (& oneWire); // Chuyển địa chỉ của phiên bản oneWire của chúng tôi tới Nhiệt độ Dallas. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 công cụ Adafruit_BMP085 bmp; void setup () {// I2C thứ Wire.pins (0, 2); Wire.begin (0, 2); // Khởi tạo cảm biến // dht 11 thứ dht.begin (); // ds18b20 thứ sensor.begin (); // ds18b20 // đặt độ phân giải thành 10 bit (Có thể là 9 đến 12 bit.. thấp hơn thì nhanh hơn) sensor.setResolution (Probe01, 10); sensor.setResolution (Probe02, 10); // nội dung bmp180 if (! bmp.begin ()) {// Serial.println ("Không có BMP180 / BMP085"); // while (1) {}} // nội dung OLED display.init (); display.flipScreenVerently (); display.setFont (ArialMT_Plain_10); chậm trễ (1000); // Kết nối với mạng WiFi WiFi.begin (ssid, password); while (WiFi.status ()! = WL_CONNECTED) {delay (500); }} void loop () {// ds18b20stuff ------------------- sensor.requestTempeudes (); // Gửi lệnh để lấy nhiệt độ nhiệt độ Temperature_buiten = sensor.getTempC (Probe01); // heat_buiten2 = sensor.getTempC (Probe02); // // dht11 thứ ---------------- ---- độ ẩm phao = dht.readHumidity (); float nhiệt độ = dht.readTempentic (); if (isnan (độ ẩm) || isnan (nhiệt độ)) {return; } // bmp thứ ------------------------- String t = String (bmp.readTempe Heat ()); String p = String (bmp.readPressure ()); // Công cụ OLED -------------------------- display.clear (); display.drawString (0, 10, p); // bmp pressure display.drawString (0, 24, String (Temperature_buiten)); // ds18b20 display.drawString (0, 38, String (độ ẩm)); // màn hình dht11.trưng bày(); // tạo kết nối TCP máy khách WiFiClient; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } Chuỗi url = "/ update? Key ="; url + = writeAPIKey; url + = "& field1 ="; url + = String (nhiệt độ); // roost (DHT1) url + = "& field2 ="; url + = String (độ ẩm); // roost (DHT11) url + = "& field3 ="; url + = String (Temperature_buiten); // nhiệt độ chuồng trại (DS18B20 nr 1) url + = "& field4 ="; url + = String (nhiệt độ_buiten2); // nhiệt độ đất (DS18B29 nr 2) url + = "& field5 ="; url + = String (bmp.readTempe Heat ()); Nhiệt độ bên ngoài (BMP180) url + = "& field6 ="; url + = String (bmp.readPressure ()); // Áp suất không khí (BMP180) url + = "\ r / n"; // Gửi yêu cầu tới máy chủ client.print (Chuỗi ("GET") + url + "HTTP / 1.1 / r / n" + "Máy chủ:" + máy chủ + "\ r / n" + "Kết nối: close / r / n / r / n "); chậm trễ (1000); }

……..

Bước 3: Thêm

Hiện tại chương trình này chỉ theo dõi, nhưng điều gì ngăn bạn thêm cảm biến ánh sáng BH1750 I2C để đo xem trời tối hay sáng hoặc RTC để biết thời gian trong ngày và tự động đóng mở cửa chuồng với sự trợ giúp của thẻ mở rộng I / O PCF8574 I2C hoặc khi nó đã có trong vườn, hãy thêm bộ chuyển đổi PCF8591 hoặc ADS1115 AD để đo độ ẩm của đất và kích hoạt máy bơm khi cần thiết. Hoặc có thể bật máy đun nước nóng khi nhiệt độ xuống dưới 0 nếu có chip I2 C cho nó, ESP8266 có thể sử dụng nó.

Tuy nhiên, một lưu ý quan trọng: Chương trình vẫn hoạt động tốt, nhưng nếu bạn thêm các cảm biến khác vào Rx hoặc Tx, đặc biệt nếu bạn tạo chúng thành đầu ra, các chân có thể đột nhiên nhớ rằng chúng không thực sự là chân GPIO. Tốt hơn là bạn nên nói với các chân ngay từ đầu rằng chúng bây giờ là các chân GPIO. Một người thực hiện điều đó bằng cách đặt các câu lệnh sau vào thiết lập:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Đề xuất: