جدول المحتويات:

باستخدام 4 دبابيس من ESP8266-01: 3 خطوات
باستخدام 4 دبابيس من ESP8266-01: 3 خطوات

فيديو: باستخدام 4 دبابيس من ESP8266-01: 3 خطوات

فيديو: باستخدام 4 دبابيس من ESP8266-01: 3 خطوات
فيديو: #1 From ESP-01 to ESP-DIY 2024, شهر نوفمبر
Anonim
باستخدام 4 دبابيس من ESP8266-01
باستخدام 4 دبابيس من ESP8266-01
باستخدام 4 دبابيس من ESP8266-01
باستخدام 4 دبابيس من ESP8266-01
باستخدام 4 دبابيس من ESP8266-01
باستخدام 4 دبابيس من ESP8266-01

ملحوظة: هذا المشروع هو في الأساس امتداد لتعليمات سابقة استخدمت دبابيسين فقط ، وقد يبدو العدد المحدود (4) من دبابيس GPIO على ESP8266-01 عقبة لأي تطبيق جاد ، ولكن إذا استخدم المرء الدبابيس في بطريقة ذكية ، من الممكن جدًا فعل الكثير باستخدام هذه الدبابيس الأربعة فقط. في بعض التعليمات الحديثة الخاصة بي ، أظهرت استخدام DHT11 و DS18B20 و OLED و RTC و BMP180 مع ESP8266-01. في هذا الدليل ، شرعت في استخدام 4 أجهزة استشعار وشاشة ، أثناء تحميل البيانات المكتسبة أيضًا إلى Thingspeak. إنه في الواقع يتوسع في مشروع مراقبة الجو داخل حظيرة الدجاج وحولها. نعم ، يمكنك تسمية هذا بمحطة طقس ، ولكن فقط لتوضيح استخدام الدبابيس الأربعة ، يمكنك بسهولة عمل شيء آخر بهذه الطريقة ، سأستخدم دبابيس I2C (BMP180 و OLED) 1 pin لـ 2 مستشعرات DS18B20 عبر OneWire Protocol1 pin لـ DHT11 على الرغم من أن ESP8266-01 يستخدم الآن جميع المسامير الخاصة به ، لا يزال بإمكاني إضافة المزيد من المستشعرات (أو المشغلات) من خلال بروتوكول OneWire و / أو عبر بروتوكول I2C.

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (اختياري)

وبالطبع لوح توصيل ، و 3.3 فولت PSU وبعض أسلاك اللوح وحساب Thingspeak

فقط بعض الملاحظات بخصوص BOM:

  • من الواضح أن المشروع يدور حول استخدام المسامير المحدودة لـ ESP8266-01 ، ولكن إذا كنت لا تزال بحاجة إلى شراء واحدة ، فيمكنك التفكير في ESP8266-12 الذي يحتوي على المزيد من المسامير
  • DHT11A رخيصة لجميع الأغراض استشعار الرطوبة ودرجة الحرارة. إنها ليست دقيقة للغاية ولكنها ستفعل. إذا كنت لا تزال بحاجة إلى شراء واحدة ، فيمكنك اختيار DHT22 الذي يُفترض أنه أكثر دقة ، ولكن يمكنك أيضًا اختيار AMS2321. هذا نوع من DHT22 مناسب لـ I2C ، وبالتالي تحرير دبوس آخر
  • يقيس BMP180 درجة الحرارة وضغط الهواء. إنه خليفة BMP085 ، ولكن لديه الآن أيضًا بعض المنافعين أنفسهم. يوجد BMP280 (أرخص) ، ولكن يمكنك أيضًا اختيار BME280 الذي يقيس درجة الحرارة ونوعية الهواء والرطوبة. بهذه الطريقة يمكنك التوفير على مستشعر DHT / AMS
  • استخدم OLEDI ذلك للتو حتى أتمكن سريعًا من معرفة ما إذا كانت المستشعرات قد تمت قراءتها ، ولكن يمكنك أيضًا التحقق من ذلك على Thingspeak. OLED صغير جدًا على أي حال لطباعة جميع قيم القراءة

الخطوة 1: الدائرة

الدائرة
الدائرة

لم تتم الإشارة إلى 4 دبابيس من ESP8266 على هذا النحو على PCB ، ومعظم الصور تشير بوضوح فقط إلى GPIO0 و GPIO2. ومع ذلك ، يحتوي ESP826-01 على دبوس GPIO1 aa (دبوس Tx) ودبوس GPIO3 (دبوس Rx). سوف تستخدم تلك الدبابيس على النحو التالي

  • GPIO0 -> دبوس SDA لمنفذ I2C
  • GPIO1-> DHT11
  • GPIO2-> دبوس SCL لمنفذ I2C
  • GPIO3-> ناقل OneWire

نظرًا لأن وحدات I2C الخاصة بي تحتوي بالفعل على مقاومات سحب ، فلن أقوم بإضافة أي مقاومات سحب I2C هناك. لا يزال DS18B20 بحاجة إلى مقاومة سحب استخدمت فيها 4k7 ، لكنها في الحقيقة ليست بهذه الأهمية ، 10 كيلو جيدة أيضًا. من المفترض أن DHT11 يحتاج أيضًا إلى مقاوم للسحب ، لكنني وجدت أنه يعمل بدون واحد أيضًا. إن إضافة المقاوم 4k7 لم يغير أيًا من القراءات ، لذلك تركته خارجًا. العديد من وحدات DHT11 ذات الثلاثة سنون ، بها بالفعل 10 كيلو ملحوم بالوحدة ، لقد أدركت للتو أنني لم أرسم اتصالات OLED. هذا لأنني قمت بتوصيله فقط لإجراء فحص سريع ، ولكن إذا كنت ترغب في إضافته ، فالأمر يتعلق فقط بتوصيل SDA بـ SDA و SCL بـ SCL … وبالطبع دبابيس الأرض و Vcc لنظرائهم

الخطوة الثانية: البرنامج

البرنامج بسيط للغاية. يقوم أولاً بإعداد المكتبات وأجهزة الاستشعار ، ويربط DHT11 بالدبوس 1 (Tx) وناقل OnWire لـ DS18B20 إلى الطرف 3 (Rx). من أجل استخدام أكثر من جهاز استشعار DS18B20 في حافلة OneWire ، فأنت بحاجة إلى معرفة "عنوانها الفريد". إذا لم يكن لديك ذلك فأنت بحاجة إلى برنامج لقراءة هذه العناوين. افعل ذلك على اردوينو بسهولة. في البرنامج ، لا يزال يتعين عليك تقديم بيانات اعتماد WiFi الخاصة بك بالإضافة إلى واجهة برمجة تطبيقات الكتابة لقناة 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 display (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" ؛ / / استخدم writeApi الخاصة بك // DHT11 تعويم الأشياء temperature_buiten ؛ تعويم temperature_buiten2؛ DHT dht (DHTPIN ، DHTTYPE ، 15) ؛ // DS18b20 stuff OneWire oneWire (ONE_WIRE_BUS) ؛ // مثيل oneWire للتواصل مع أي من أجهزة OneWire مستشعرات DallasTemperature (& oneWire) ؛ // قم بتمرير عنوان مثيل oneWire الخاص بنا إلى Dallas Temperature. DeviceAddress Probe01 = {0x28، 0x0F، 0x2A، 0x28، 0x00، 0x00، 0x80، 0x9F} ؛ DeviceAddress Probe02 = {0x28، 0x10، 0xA4، 0x57، 0x04، 0x00، 0x00، 0xA9} ؛ // bmp180 stuff Adafruit_BMP085 bmp ؛ إعداد باطل () {// I2C stuff Wire.pins (0، 2)؛ Wire.begin (0 ، 2) ؛ // تهيئة أجهزة الاستشعار // dht 11 stuff dht.begin () ؛ // ds18b20 Stuff sensors.begin () ؛ // ds18b20 // اضبط الدقة على 10 بت (يمكن أن تكون 9 إلى 12 بت.. الأقل تكون أسرع) المستشعرات. setResolution (Probe01، 10) ؛ sensors.setResolution (Probe02، 10) ؛ // bmp180 stuff if (! bmp.begin ()) {// Serial.println ("No BMP180 / BMP085")؛ // while (1) {}} // OLED stuff display.init () ؛ display.flipScreenVertically () ، display.setFont (ArialMT_Plain_10) ، تأخير (1000) ؛ // الاتصال بشبكة WiFi WiFi.begin (SSID ، كلمة المرور) ؛ while (WiFi.status ()! = WL_CONNECTED) {delay (500) ؛ }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures ()؛ // أرسل الأمر للحصول على temperature temperature_buiten = sensors.getTempC (Probe01) ؛ // temperature_buiten2 = sensors.getTempC (Probe02) ؛ // dht11 stuff ---------------- ---- تعويم الرطوبة = dht.readHumidity () ؛ درجة حرارة الطفو = dht.readTemperature () ؛ إذا (isnan (الرطوبة) || isnan (درجة الحرارة)) {return؛ } // bmp stuff ------------------------- String t = String (bmp.readTemperature ())؛ String p = String (bmp.readPressure ()) ؛ // أشياء OLED -------------------------- display.clear () ؛ display.drawString (0، 10، p)؛ // bmp pressure display.drawString (0، 24، String (temperature_buiten))؛ // ds18b20 display.drawString (0، 38، String (humidity))؛ // dht11 display.عرض()؛ // عمل اتصالات TCP عميل WiFiClient ؛ const int httpPort = 80 ؛ if (! client.connect (host، httpPort)) {return؛ } String url = "/ update؟ key ="؛ url + = writeAPIKey ؛ url + = "& field1 =" ؛ url + = String (temperature) ؛ // roost (DHT1) url + = "& field2 =" ؛ url + = سلسلة (الرطوبة) ؛ // roost (DHT11) url + = "& field3 =" ؛ url + = String (temperature_buiten) ؛ // درجة حرارة حظيرة (DS18B20 nr 1) url + = "& field4 =" ؛ url + = سلسلة (temperature_buiten2) ؛ // درجة حرارة التربة (DS18B29 nr 2) url + = "& field5 ="؛ url + = String (bmp.readTemperature ()) ؛ درجة الحرارة الخارجية (BMP180) url + = "& field6 ="؛ url + = String (bmp.readPressure ())؛ // Airpressure (BMP180) url + = "\ r / n"؛ // أرسل الطلب إلى الخادم client.print (String ("GET") + url + "HTTP / 1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / 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) ؛

موصى به: