Სარჩევი:

ESP8266-01– ის 4 ქინძისთავის გამოყენება: 3 ნაბიჯი
ESP8266-01– ის 4 ქინძისთავის გამოყენება: 3 ნაბიჯი

ვიდეო: ESP8266-01– ის 4 ქინძისთავის გამოყენება: 3 ნაბიჯი

ვიდეო: ESP8266-01– ის 4 ქინძისთავის გამოყენება: 3 ნაბიჯი
ვიდეო: როგორ გავაკეთოთ 4-არხიანი ESP8266 ESP01 Wi-Fi რელე | ESP01 სახლის ავტომატიზაცია | RemoteXY | FLProg 2024, ივლისი
Anonim
ESP8266-01– ის 4 ქინძისთავის გამოყენებით
ESP8266-01– ის 4 ქინძისთავის გამოყენებით
ESP8266-01– ის 4 ქინძისთავის გამოყენებით
ESP8266-01– ის 4 ქინძისთავის გამოყენებით
ESP8266-01– ის 4 ქინძისთავის გამოყენებით
ESP8266-01– ის 4 ქინძისთავის გამოყენებით

შენიშვნა: ეს პროექტი ძირითადად არის გაფართოებული ადრინდელი ინსტრუქციისა, რომელიც მხოლოდ 2 ქინძისთავს იყენებდა. ESP8266-01– ზე GPIO ქინძისთავების შეზღუდული რაოდენობა (4) შეიძლება დაბრკოლებად მოგეჩვენოთ ნებისმიერი სერიოზული პროგრამისთვის. ჭკვიანი გზა ძალიან კარგად არის შესაძლებელი მხოლოდ იმ 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 PSU და რამდენიმე breadboard მავთულები და Thingspeak ანგარიში

მხოლოდ რამდენიმე შენიშვნა BOM– სთან დაკავშირებით:

  • ცხადია, პროექტი ეხება ESP8266-01- ის შეზღუდული ქინძისთავების გამოყენებას, მაგრამ თუ თქვენ მაინც გჭირდებათ მისი ყიდვა, შეგიძლიათ გაითვალისწინოთ ESP8266-12 რომელსაც აქვს მეტი ქინძისთავები
  • DHT11A იაფი ტენიანობის და ტემპერატურის სენსორი. ეს არ არის ძალიან ზუსტი, მაგრამ ასეც იქნება. თუ თქვენ ჯერ კიდევ გჭირდებათ მისი ყიდვა, შეგიძლიათ აირჩიოთ DHT22, რომელიც სავარაუდოდ უფრო ზუსტია, მაგრამ ასევე შეგიძლიათ აირჩიოთ AMS2321. ეს არის ერთგვარი DHT22, რომელიც შესაფერისია I2C– სთვის, რითაც ათავისუფლებს სხვა პინს
  • BMP180 ზომავს ტემპერატურას და ჰაერის წნევას. ის არის BMP085– ის მემკვიდრე, მაგრამ მას უკვე აქვს რამდენიმე სუპერსორი. არსებობს (უფრო იაფი) BMP280, მაგრამ თქვენ ასევე შეგიძლიათ აირჩიოთ BME280, რომელიც ზომავს ტემპერატურას, ჰაერის წნევას და ტენიანობას. ამ გზით თქვენ შეგიძლიათ დაზოგოთ DHT/AMS სენსორზე
  • OLEDI– მ ეს უბრალოდ გამოიყენა, ასე რომ მე სწრაფად დავინახე წაკითხული თუ არა სენსორები, მაგრამ თქვენ ასევე შეგიძლიათ შეამოწმოთ ის Thingspeak– ზე. OLED მაინც ძალიან მცირეა ყველა წაკითხული მნიშვნელობის დასაბეჭდად

ნაბიჯი 1: წრე

წრე
წრე

ESP8266– ის 4 ქინძისთავები არ არის მითითებული PCB– ზე და უმეტეს სურათებში მხოლოდ ნათლად არის ნაჩვენები GPIO0 და GPIO2. თუმცა ESP826-01– ს აქვს aa GPIO1 პინი (Tx pin) და GPIO3 პინი (Rx pin).i გამოიყენებს იმ ქინძისთავებს შემდეგნაირად

  • GPIO0 -> I2C პორტის SDA პინი
  • GPIO1 -> DHT11
  • GPIO2-> I2C პორტის SCL პინი
  • GPIO3-> OneWire ავტობუსი

ვინაიდან ჩემს I2C მოდულებს უკვე აქვთ გამწევი რეზისტორები, მე იქ არ დავამატებ I2C გამყვანი რეზისტორებს. DS18B20- ს ჯერ კიდევ სჭირდება გამწევი რეზისტორი, რისთვისაც მე გამოვიყენე 4k7, მაგრამ ის ნამდვილად არ არის კრიტიკული, 10k ასევე კარგია. DHT11– ს ასევე სჭირდება გამწევი რეზისტორი, მაგრამ აღმოვაჩინე, რომ ის ასევე მუშაობს მის გარეშე. 4k7 რეზისტორის დამატება არ შეცვლილა არცერთ კითხვას, ამიტომ გამოვტოვე. ბევრი 3 პინიანი DHT11 მოდულიდან, უკვე აქვს 10 k მოდული მოდულზე. მე უბრალოდ მივხვდი, რომ მე არ გავამახვილე OLED კავშირები. ეს იმიტომ ხდება, რომ მე მას მხოლოდ სწრაფი შემოწმების მიზნით ვუკავშირებ, მაგრამ თუ გსურთ მისი დამატება, ეს მხოლოდ SDA– ს SDA– სთან და SCL– ს SCL– თან დაკავშირების საკითხია … და რა თქმა უნდა მიწა და Vcc ქინძისთავები მათ კოლეგებთან

ნაბიჯი 2: პროგრამა

პროგრამა საკმაოდ პირდაპირია. პირველ რიგში ის ადგენს ბიბლიოთეკებს და სენსორებს. ის DHT11- ს აფიქსირებს 1 -ს (Tx) და OnWire ავტობუსს DS18B20- ისთვის 3 -მდე (Rx). OneWire ავტობუსზე 1 -ზე მეტი DS18B20 სენსორის გამოსაყენებლად, თქვენ უნდა იცოდეთ მათი "უნიკალური მისამართი". თუ ეს არ გაქვთ, მაშინ გჭირდებათ პროგრამა ამ მისამართების წასაკითხად. გააკეთეთ ეს არდუინოზე მარტივად. პროგრამაში თქვენ კვლავ უნდა მიაწოდოთ თქვენი WiFi სერთიფიკატები, ასევე ჩაწეროთ API თქვენი Thingspeak არხისთვის

/*

მინდვრის 1 ტემპერატურა (DHT11) მინდვრის 2 ტენიანობა (DHT11) ველი 3 თანამშრომლობის ტემპერატურა (DS18B20) ველი 4 ნიადაგის ტემპერატურა (DS18B20) ველი 5 ჰაერის წნევა (bmp180) ველი 6 გარე ტემპერატურა (bmp180) * */ #მოიცავს #მოიცავს // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #Include #include #include "SSD1306.h" SSD1306 ჩვენება (0x3c,, 2); #განსაზღვრეთ DHTPIN 1 // GPIO1 (Tx) #განსაზღვრეთ DHTTYPE DHT11 #განსაზღვრეთ ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID"; const char* პაროლი = "YourPassword"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // გამოიყენეთ თქვენი writeApi // DHT11 პერსონალი 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 პერსონალი Wire.pins (0, 2); Wire.begin (0, 2); // სენსორების ინიციალიზაცია // dht 11 პერსონალი dht.begin (); // ds18b20 პერსონალური სენსორები. დაწყება (); // ds18b20 // რეზოლუციის დაყენება 10 ბიტზე (შეიძლება იყოს 9 -დან 12 ბიტამდე.. ქვედა უფრო სწრაფია) sensors.setResolution (Probe01, 10); sensors.setResolution (ზონდი 02, 10); // bmp180 პერსონალი if (! bmp.begin ()) {// Serial.println ("No BMP180 /BMP085"); // while (1) {}} // OLED პერსონალი 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 პერსონალი ---------------- ---- float ტენიანობა = dht.readHumidity (); მცურავი ტემპერატურა = dht.readTemperature (); თუ (ისნანი (ტენიანობა) || ისნანი (ტემპერატურა)) {დაბრუნება; } // bmp პერსონალი ------------------------- სიმებიანი t = სიმებიანი (bmp.readTemperature ()); სიმებიანი p = სიმებიანი (bmp.readPressure ()); // OLED პერსონალი -------------------------- display.clear (); display.drawString (0, 10, p); // bmp ზეწოლის ჩვენება.drawString (0, 24, სიმებიანი (ტემპერატურა_ბიუტინი)); // ds18b20 ჩვენება. drawString (0, 38, სიმებიანი (ტენიანობა)); // dht11 ჩვენება. ჩვენება (); // TCP კავშირების დამყარება WiFiClient კლიენტი; const int httpPort = 80; if (! client.connect (მასპინძელი, httpPort)) {დაბრუნება; } სიმებიანი url = "/განახლება? გასაღები ="; url += ჩაწერეთAPIKey; url += "& field1 ="; url += სიმებიანი (ტემპერატურა); // roost (DHT1) url += "& field2 ="; url += სიმებიანი (ტენიანობა); // roost (DHT11) url += "& field3 ="; url += სიმებიანი (temperature_buiten); // თანამშრომლობის ტემპერატურა (DS18B20 nr 1) url += "& field4 ="; url += სიმებიანი (temperature_buiten2); // ნიადაგის ტემპერატურა (DS18B29 nr 2) url += "& field5 ="; url += სიმებიანი (bmp.readTemperature ()); გარე ტემპერატურა (BMP180) url += "& field6 ="; url += სიმებიანი (bmp.readPressure ()); // ჰაერის წნევა (BMP180) url += "\ r / n"; // მოთხოვნის გაგზავნა სერვერზე client.print (სიმებიანი ("GET") + url + "HTTP/1.1 / r / n" + "მასპინძელი:" + მასპინძელი + "\ r / n" + "კავშირი: დახურვა / r / n / r / n "); დაგვიანება (1000); }

……..

ნაბიჯი 3: მეტი

ამჟამად ეს პროგრამა მხოლოდ მონიტორინგს უწევს, მაგრამ რა შეგიშლით ხელს დაამატოთ BH1750 I2C სინათლის სენსორი, რომ გაზომოთ საღამოა თუ დილა ან RTC, რომ იცოდეთ დღის დრო და ავტომატურად გახსნათ და დახუროთ თანამშრომლობის კარი დახმარებით PCF8574 I2C I/O გაფართოების ბარათი, ან როგორც უკვე ბაღშია, დაამატეთ PCF8591 ან ADS1115 AD კონვერტორი ნიადაგის ტენიანობის გასაზომად და საჭიროების შემთხვევაში ტუმბოს გასააქტიურებლად. ან იქნებ წყლის აუზის გამათბობელზე ჩართვა, როდესაც ტემპერატურა ნულამდე ეცემა, თუკი არსებობს I2 C ჩიპი, ESP8266– ს შეუძლია მისი გამოყენება.

თუმცა მნიშვნელოვანი შენიშვნა: პროგრამა კარგად მუშაობს, მაგრამ თუ თქვენ დაამატებთ სხვა სენსორებს Rx ან Tx- ს, განსაკუთრებით თუ მათ გამოაქვთ შედეგები, ქინძისთავები მოულოდნელად გაიხსენებენ, რომ ისინი ნამდვილად არ არიან GPIO ქინძისთავები. უმჯობესია თავიდანვე გითხრათ ქინძისთავები, რომ ისინი ახლა GPIO ქინძისთავებია. ერთი ამას აკეთებს შემდეგი განცხადებების დაყენებით:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

გირჩევთ: