Përmbajtje:

Përdorimi i 4 kunjave të Hapave ESP8266-01: 3
Përdorimi i 4 kunjave të Hapave ESP8266-01: 3

Video: Përdorimi i 4 kunjave të Hapave ESP8266-01: 3

Video: Përdorimi i 4 kunjave të Hapave ESP8266-01: 3
Video: Использование драйвера шагового двигателя L298N Для управления 4-проводным шаговым двигателем 2024, Nëntor
Anonim
Duke përdorur 4 kunjat e ESP8266-01
Duke përdorur 4 kunjat e ESP8266-01
Duke përdorur 4 kunjat e ESP8266-01
Duke përdorur 4 kunjat e ESP8266-01
Duke përdorur 4 kunjat e ESP8266-01
Duke përdorur 4 kunjat e ESP8266-01

Shënim: Ky projekt është në thelb një zgjerim i një udhëzuesi të mëparshëm që përdori vetëm 2 kunja. Numri i kufizuar (4) i kunjave GPIO në ESP8266-01 mund të duket si një pengesë, për çdo aplikim serioz. Megjithatë, nëse dikush përdor kunjat në në një mënyrë të zgjuar është shumë mirë e mundur të bëhet shumë vetëm me ato 4 kunjat. Në disa nga udhëzimet e mia të fundit, unë kam treguar përdorimin e një DHT11 një DS18B20, një OLED, një RTC dhe një BMP180 me ESP8266-01. Në këtë udhëzues unë fillova të përdor 4 sensorë dhe një ekran, ndërsa gjithashtu ngarkoj të dhënat e fituara në Thingspeak. Në të vërtetë po zgjerohet në një projekt të monitorimit të atmosferës brenda dhe rreth kafazit tim të pulës. Po, ju mund ta quani këtë një stuhi moti, por është thjesht për të ilustruar përdorimin e 4 kunjave, ju lehtë mund të bëni diçka tjetër në këtë mënyrë Unë do të përdor 2 kunja për I2C (BMP180 dhe OLED) 1 kunj për 2 sensorë DS18B20 nëpërmjet Edhe pse ESP8266-01 tani ka përdorur të gjitha kunjat e tij, unë ende mund të shtoj më shumë sensorë (ose aktivizues) përmes protokollit OneWire dhe/ose përmes protokollit I2C. Pra, çfarë na nevojitet: BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (opsionale)

dhe natyrisht një dërrasë buke, një PSU 3.3 V dhe disa tela të bukës dhe një llogari Thingspeak

Vetëm disa vërejtje në lidhje me BOM:

  • Padyshim që projekti ka të bëjë me përdorimin e kunjave të kufizuar të ESP8266-01, por nëse ende keni nevojë të blini një, mund të merrni parasysh një ESP8266-12 që ka më shumë kunja
  • Sensori i lagështisë dhe temperaturës DHT11A i lirë. Nuk është shumë e saktë, por do të jetë. Nëse ende keni nevojë të blini një, mund të zgjidhni DHT22 që supozohet se është më i saktë, por gjithashtu mund të zgjidhni AMS2321. Ky është një lloj DHT22 që është i përshtatshëm për I2C, duke liruar kështu një kunj tjetër
  • BMP180 mat temperaturën dhe presionin e ajrit. Shtë pasardhësi i BMP085, por gjithashtu tani ka disa supersons vetë. Ekziston BMP280 (më e lirë), por gjithashtu mund të zgjidhni BME280 që mat temperaturën, presionin e ajrit DHE lagështinë. Në atë mënyrë ju mund të kurseni në sensorin DHT/AMS
  • OLEDI sapo e përdori atë kështu që unë shpejt mund të shikoja nëse sensorët ishin lexuar, por ju gjithashtu mund ta kontrolloni atë në Thingspeak. OLED është gjithsesi shumë i vogël për të printuar të gjitha vlerat e lexuara

Hapi 1: Qarku

Qarku
Qarku

4 kunjat e ESP8266 nuk tregohen si të tillë në PCB, dhe shumica e imazheve tregojnë vetëm qartë GPIO0 dhe GPIO2. Megjithatë, ESP826-01 ka aa GPIO1 pin (kunja Tx) dhe një kunj GPIO3 (pin Rx).i do t'i përdor ato kunjat si më poshtë

  • GPIO0 -> kodi SDA i portës I2C
  • GPIO1 -> DHT11
  • GPIO2-> kunj SCL të portës I2C
  • GPIO3-> Autobusi OneWire

Meqenëse modulet e mi I2C tashmë kanë rezistorë tërheqës, unë nuk do të shtoj asnjë rezistencë tërheqëse I2C atje. DS18B20 ka ende nevojë për një rezistencë tërheqëse për të cilën kam përdorur një 4k7, por me të vërtetë nuk është aq kritike, një 10k është gjithashtu e mirë. DHT11 supozohet se ka nevojë edhe për një rezistencë tërheqëse, por e gjeta që funksiononte edhe pa të. shtimi i një rezistence 4k7 nuk ndryshoi asnjë nga leximet, kështu që e lashë jashtë. Shumë nga modulet DHT11 me 3 kunja, tashmë kanë një 10k të ngjitur në modul. Sapo kuptova se nuk i tërhoqa lidhjet për OLED. Kjo sepse unë e lidha atë vetëm për një kontroll të shpejtë, por nëse doni ta shtoni, është vetëm një çështje e lidhjes së SDA me SDA dhe SCL me SCL … dhe natyrisht toka dhe kunjat Vcc me homologët e tyre

Hapi 2: Programi

Programi është mjaft i drejtpërdrejtë. Së pari krijon bibliotekat dhe sensorët. Ai bashkon DHT11 në pin 1 (Tx) dhe autobusin OnWire për DS18B20 në pin 3 (Rx). Për të përdorur më shumë se 1 sensor DS18B20 në autobusin OneWire, duhet të njihni 'adresën unike' të tyre. Nëse nuk e keni atë, atëherë keni nevojë për një program për të lexuar ato adresa. Bëni atë në një arduino për lehtësi. Në program ju ende duhet të siguroni kredencialet tuaja WiFi, si dhe API -në e shkrimit për Thingspeak Channel tuaj

/*

Fusha 1 temp roost (DHT11) Fusha 2 lagështia roost (DHT11) fusha 3 Temperatura e bashkëpunimit (DS18B20) fusha 4 temperatura e tokës (DS18B20) fusha 5 Presioni i ajrit (bmp180) fusha 6 Temperatura e jashtme (bmp180) * */ #përfshi #përfshini // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #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* fjalëkalim = "YourPassword"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; // përdorni shkrimin TUAJ // DHT11 sende që notojnë temperature_buiten; temperatura e notimit_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // Sende DS18b20 OneWire oneWire (ONE_WIRE_BUS); // shembull i OneWire për të komunikuar me çdo pajisje OneWire sensorë DallasTemperature (& oneWire); // Kaloni adresën e instancës sonë oneWire në Dallas Temperature. Sonda e Pajisjes01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; Sonda e Pajisjes02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 sende Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.filloni (0, 2); // Filloni sensorët // dht 11 gjëra dht.filloj (); // ds18b20 send sensors.begin (); // ds18b20 // vendosni rezolucionin në 10 bit (Mund të jetë 9 deri në 12 bit.. më e ulët është më e shpejtë) sensorë.setResolution (Probe01, 10); sensorë.setResolution (Probe02, 10); // bmp180 sende nëse (! bmp.begin ()) {// Serial.println ("Jo BMP180 /BMP085"); // ndërsa (1) {}} // Shfaqja e sendeve OLED.init (); display.flipScreenVertical (); display.setFont (ArialMT_Plain_10); vonesa (1000); // Lidhu me rrjetin WiFi WiFi.begin (ssid, fjalëkalim); ndërsa (WiFi.status ()! = WL_CONNECTED) {vonesë (500); }} void loop () {// ds18b20stuff ------------------- sensorë. kërko Temperaturat (); // Dërgo komandën për të marrë temperaturat temperature_buiten = sensorë.getTempC (Probe01); // temperature_buiten2 = sensorë.getTempC (Probe02); // // gjëra dht11 ---------------- ---- lagështia e notit = dht.readHumidity (); temperatura e notimit = dht.readTemperature (); nëse (isnan (lagështia) || isnan (temperatura)) {kthehet; } // sende bmp ------------------------- String t = String (bmp.readTemperature ()); Vargu p = String (bmp.readPressure ()); // Sende OLED -------------------------- shfaqje.qartë (); display.drawString (0, 10, p); // bmp display display.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (lagështia)); // ekran dht11.shfaq (); // bëni lidhje TCP klient WiFiClient; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/update? Key ="; url += shkruajAPIKey; url += "& field1 ="; url += String (temperatura); // roost (DHT1) url += "& field2 ="; url += String (lagështia); // roost (DHT11) url += "& field3 ="; url += String (temperature_buiten); // temperatura e kafazit (DS18B20 nr 1) url += "& field4 ="; url += String (temperature_buiten2); // temperatura e tokës (DS18B29 nr 2) url += "& fushë5 ="; url += String (bmp.readTemperature ()); Temperatura e jashtme (BMP180) url += "& field6 ="; url += String (bmp.readPressure ()); // Presioni i ajrit (BMP180) url += "\ r / n"; // Dërgo kërkesë klientit të serverit.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Lidhja: mbyll / r / n / r / n "); vonesa (1000); }

……..

Hapi 3: Më shumë

Aktualisht ky program monitoron vetëm, por çfarë ju pengon të shtoni një sensor drite BH1750 I2C për të matur nëse është mbrëmje ose mëngjes ose një RTC për të ditur kohën e ditës dhe për të hapur dhe mbyllur derën e kafazit automatikisht me ndihmën e një kartë zgjerimi PCF8574 I2C I/O, ose siç është tashmë në kopsht, shtoni një konvertues PCF8591 ose ADS1115 AD për të matur lagështinë e tokës dhe për të aktivizuar një pompë kur është e nevojshme. Ose ndoshta ndezja e ngrohësit të basenit të ujit kur temperatura bie nën zero nëse ka një çip I2 C për të, ESP8266 ndoshta mund ta përdorë atë.

Megjithatë, një shënim i rëndësishëm: Programi siç është funksionon mirë, por nëse shtoni sensorë të tjerë në Rx ose Tx, veçanërisht nëse i bëni ato dalje, kunjat papritmas mund të kujtojnë se nuk janë me të vërtetë kunja GPIO. Bettershtë më mirë të thuash kunjat që në fillim se tani janë kunja GPIO. Njëri e bën këtë duke vendosur deklaratat e mëposhtme në konfigurim:

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

Recommended: