Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:15
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
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:
Sử dụng phần mở rộng lồng ngực của Hope để tìm Công việc chưa hoàn chỉnh của Sắc lệnh đền thờ trong cây gia đình của bạn về Tìm kiếm gia đình: 11 bước
Sử dụng phần mở rộng Rương của Hope để Tìm công việc pháp lệnh đền thờ chưa hoàn chỉnh trong cây gia đình của bạn trên Tìm kiếm gia đình: Mục đích của tài liệu hướng dẫn này là để trình bày cách tìm kiếm gia phả của bạn trong Tìm kiếm gia đình cho tổ tiên có công việc pháp lệnh đền thờ chưa hoàn thành bằng cách sử dụng phần mở rộng Rương của hy vọng. Sử dụng Hope's Chest có thể tăng tốc đáng kể tìm kiếm của bạn cho
Dừng ALICE - Rào chắn cửa cho những người bị giảm khả năng vận động: 8 bước
Dừng ALICE - Rào chắn Cửa cho Cá nhân Giảm Khả năng Vận động: Vấn đề Đối với những cá nhân sử dụng xe lăn, có thể khó tự rào chắn vào phòng khi cần thiết. Mục tiêu của dự án này là thiết kế một thiết bị để giúp những người sử dụng xe lăn và / hoặc bị suy giảm sức mạnh cánh tay nhanh chóng
Lực tác động lên gót chân và chân của vận động viên khi chạy: 6 bước
Lực tác động lên gót chân và chân của vận động viên khi chạy: Đối với dự án của mình, tôi muốn kiểm tra lượng lực mà gót chân và chân của vận động viên phải tiếp xúc và liệu đôi giày chạy bộ mới có thực sự giảm lực hay không. Gia tốc kế là một thiết bị phát hiện gia tốc theo các trục X, Y và Z. Gia tốc là thước đo
Điều khiển nhiều đèn LED với Python và các chân GPIO của Raspberry Pi của bạn: 4 bước (có hình ảnh)
Điều khiển nhiều đèn LED với Python và các chân GPIO của Raspberry Pi của bạn: Tài liệu hướng dẫn này trình bày cách điều khiển nhiều chân GPIO trên RaspberryPi của bạn để cấp nguồn cho 4 đèn LED. Nó cũng sẽ giới thiệu cho bạn các tham số và câu lệnh điều kiện trong Python
Làm giá đỡ cho máy ảnh DSLR với giá chưa đến 6 đô la bằng cách sử dụng ống PVC (Chân máy / Chân máy cho mọi máy ảnh): 6 bước
Làm giá đỡ cho máy ảnh DSLR với giá chưa đến 6 đô la bằng cách sử dụng ống PVC (Monopod / chân máy cho mọi máy ảnh): Có …. Bạn có thể tự làm giá đỡ chỉ với một số ống PVC và chữ T. Nó rất nhẹ … Nó được cân bằng hoàn hảo … Nó rắn chắc … Nó thân thiện với khả năng tùy chỉnh … Tôi là Sooraj Bagal và tôi sẽ chia sẻ kinh nghiệm của mình về giá đỡ máy ảnh này mà tôi đã tạo cho