সুচিপত্র:

ESP8266-01: 3 টি ধাপের 4 টি পিন ব্যবহার করা
ESP8266-01: 3 টি ধাপের 4 টি পিন ব্যবহার করা

ভিডিও: ESP8266-01: 3 টি ধাপের 4 টি পিন ব্যবহার করা

ভিডিও: ESP8266-01: 3 টি ধাপের 4 টি পিন ব্যবহার করা
ভিডিও: Introduction to NodeMCU ESP8266 WiFi Development board with HTTP Client example- Robojax 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 পিনের সাথে অনেক কিছু করা খুব ভাল আমার সাম্প্রতিক কিছু নির্দেশাবলীর মধ্যে, আমি ESP8266-01 এর সাথে একটি DHT11 একটি DS18B20, একটি OLED, RTC এবং BMP180 ব্যবহার দেখিয়েছি। এই নির্দেশনায় আমি 4 টি সেন্সর এবং একটি ডিসপ্লে ব্যবহার করতে শুরু করেছি, যখন থিংসপিক -এ অর্জিত ডেটা আপলোড করছি। এটি আসলে আমার মুরগির খামার এবং এর আশেপাশের বায়ুমণ্ডল পর্যবেক্ষণের একটি প্রকল্পে সম্প্রসারিত হচ্ছে। হ্যাঁ, আপনি এটিকে আবহাওয়া কেন্দ্র বলতে পারেন, কিন্তু এটি কেবল 4 টি পিনের ব্যবহারের চিত্র তুলে ধরার জন্য, আপনি সহজেই এইভাবে অন্য কিছু তৈরি করতে পারেন I2C (BMP180 এবং OLED) এর জন্য 2 টি পিন ব্যবহার করে 2 DS18B20 সেন্সরের মাধ্যমে 1 টি পিন DHT11 এর জন্য OneWire প্রোটোকল 1 পিন যদিও ESP8266-01 এখন তার সমস্ত পিন ব্যবহার করেছে, তবুও আমি OneWire প্রোটোকলের মাধ্যমে এবং/অথবা I2C প্রোটোকলের মাধ্যমে আরো সেন্সর (বা অ্যাকচুয়েটর) যোগ করতে পারি। সুতরাং, আমাদের কি দরকার: BOM

  • ESP8266-01
  • 2x DS18B20
  • 1x DHT11
  • 1x BMP180
  • OLED (alচ্ছিক)

এবং অবশ্যই একটি ব্রেডবোর্ড, একটি 3.3 ভি পিএসইউ এবং কিছু ব্রেডবোর্ডের তার এবং একটি থিংসপিক অ্যাকাউন্ট

BOM সম্পর্কিত কিছু মন্তব্য:

  • ইএসপি 8266-01 স্পষ্টতই প্রকল্পটি ইএসপি 8266-01 এর সীমিত পিনগুলি ব্যবহার করার বিষয়ে, কিন্তু যদি আপনার এখনও একটি কিনতে হয় তবে আপনি একটি ইএসপি 8266-12 বিবেচনা করতে পারেন যার আরও বেশি পিন রয়েছে
  • DHT11A সস্তা সব উদ্দেশ্য আর্দ্রতা এবং তাপমাত্রা সেন্সর। এটি অত্যন্ত সঠিক নয় কিন্তু এটি করবে। যদি আপনি এখনও একটি কিনতে চান, আপনি DHT22 বেছে নিতে পারেন যা অনুমিতভাবে আরো সঠিক, কিন্তু আপনি AMS2321 এর জন্যও বেছে নিতে পারেন। এটি একটি ধরণের DHT22 যা I2C এর জন্য উপযুক্ত, এইভাবে অন্য একটি পিন মুক্ত করে
  • BMP180 তাপমাত্রা এবং বায়ুচাপ পরিমাপ করে। এটি BMP085 এর উত্তরাধিকারী, কিন্তু এটিতে এখন কিছু suvessors রয়েছে। (সস্তা) BMP280 আছে, কিন্তু আপনি BME280 বেছে নিতে পারেন যা তাপমাত্রা, বায়ুচাপ এবং আর্দ্রতা পরিমাপ করে। এই ভাবে আপনি DHT/AMS সেন্সরে সংরক্ষণ করতে পারেন
  • OLEDI সবেমাত্র এটি ব্যবহার করেছে যাতে আমি সেন্সরগুলি পড়েছি কিনা তা দ্রুত দেখতে পারি, তবে আপনি থিংসস্পিকে এটি পরীক্ষা করতে পারেন। OLED সব পঠিত মানগুলি মুদ্রণ করার জন্য খুব ছোট

ধাপ 1: সার্কিট

সার্কিট
সার্কিট

ESP8266 এর 4 টি পিন PCB- এর মতো নির্দেশিত নয়, এবং অধিকাংশ ছবি শুধুমাত্র GPIO0 এবং GPIO2 স্পষ্ট করে বলে। যদিও ESP826-01 এ aa GPIO1 পিন (Tx পিন) এবং GPIO3 পিন (Rx পিন) আছে। নিম্নরূপ সেই পিন ব্যবহার করা হবে

  • GPIO0 -> I2C পোর্টের SDA পিন
  • GPIO1 -> DHT11
  • GPIO2-> I2C পোর্টের এসসিএল পিন
  • GPIO3-> OneWire বাস

যেহেতু আমার I2C মডিউলগুলিতে ইতিমধ্যে টান আপ প্রতিরোধক রয়েছে, আমি সেখানে কোনও I2C পুলআপ প্রতিরোধক যুক্ত করব না। DS18B20 এখনও একটি পুল আপ প্রতিরোধক প্রয়োজন যার জন্য আমি একটি 4k7 ব্যবহার করেছি, কিন্তু এটা সত্যিই যে সমালোচনামূলক নয়, একটি 10k এছাড়াও ভাল। DHT11 অনুমিতভাবে একটি পুল-আপ প্রতিরোধক প্রয়োজন কিন্তু আমি এটি একটি ছাড়াও কাজ খুঁজে পাওয়া যায় নি। একটি 4k7 প্রতিরোধক যোগ করা কোনও রিডিং পরিবর্তন করেনি, তাই আমি এটি বাদ দিয়েছি। 3 টি পিন DHT11 মডিউলের অনেকগুলি, ইতিমধ্যেই মডিউলের উপর 10 কে সোল্ডার আছে আমি বুঝতে পেরেছি যে আমি OLED এর জন্য সংযোগগুলি আঁকিনি। এর কারণ হল আমি কেবল একটি দ্রুত চেক করার জন্য এটিকে সংযুক্ত করেছি, কিন্তু আপনি যদি এটি যোগ করতে চান, এটি কেবল এসডিএকে এসডিএ এবং এসসিএলকে এসসিএল -এর সাথে সংযুক্ত করার ব্যাপার …

পদক্ষেপ 2: প্রোগ্রাম

প্রোগ্রামটি বেশ সহজবোধ্য। প্রথমে এটি লাইব্রেরি এবং সেন্সর সেট করে। OneWire বাসে 1 টির বেশি DS18B20 সেন্সর ব্যবহার করার জন্য, আপনাকে তাদের 'অনন্য ঠিকানা' জানতে হবে। যদি আপনার কাছে তা না থাকে তাহলে সেই ঠিকানাগুলি পড়ার জন্য আপনার একটি প্রোগ্রাম প্রয়োজন। এটি একটি আরডুইনোতে সহজেই করুন প্রোগ্রামে আপনাকে এখনও আপনার ওয়াইফাই শংসাপত্রের পাশাপাশি আপনার থিংসপিক চ্যানেলের জন্য লেখার API প্রদান করতে হবে

/*

ফিল্ড 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, 0, 2); #ডিফাইন DHTPIN 1 // GPIO1 (Tx) #DHTTYPE DHT11 #ডিফাইন 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 স্টাফ float temperature_buiten; ভাসা তাপমাত্রা_ buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 স্টাফ OneWire oneWire (ONE_WIRE_BUS); // ওয়ান ওয়াইয়ারের উদাহরণ যেকোনো ওয়ান ওয়ায়ার ডিভাইসের সাথে যোগাযোগ করার জন্য ডালাস টেম্পারেচার সেন্সর (এবং ওয়ান ওয়্যার); // ডালাস তাপমাত্রায় আমাদের ওয়ান ওয়্যার উদাহরণের পাস ঠিকানা। DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 উপাদান Adafruit_BMP085 bmp; অকার্যকর সেটআপ () {// I2C স্টাফ Wire.pins (0, 2); Wire.begin (0, 2); // সেন্সর শুরু করুন // dht 11 স্টাফ dht.begin (); // ds18b20 স্টাফ সেন্সর। sensors.setResolution (Probe02, 10); // bmp180 স্টাফ যদি (! bmp.begin ()) {// Serial.println ("না BMP180 /BMP085"); // while (1) {}} // OLED stuff display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); বিলম্ব (1000); // ওয়াইফাই নেটওয়ার্ক WiFi.begin (ssid, পাসওয়ার্ড) এর সাথে সংযোগ করুন; যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (500); }} অকার্যকর লুপ () {// ds18b20stuff ------------------- sensors.requestTempemeters (); // তাপমাত্রা পেতে কমান্ড পাঠান তাপমাত্রা_ buiten = sensors.getTempC (Probe01); // temperature_buiten2 = sensors.getTempC (Probe02); // // dht11 জিনিস ---------------- ---- ভাসমান আর্দ্রতা = dht.readHumidity (); ভাসমান তাপমাত্রা = dht.readTemperature (); যদি (ইসনান (আর্দ্রতা) || ইসনান (তাপমাত্রা)) {প্রত্যাবর্তন; } // বিএমপি স্টাফ ------------------------- স্ট্রিং টি = স্ট্রিং (bmp.readTemperature ()); স্ট্রিং p = স্ট্রিং (bmp.readPressure ()); // OLED স্টাফ -------------------------- display.clear (); display.drawString (0, 10, p); // bmp চাপ display.drawString (0, 24, স্ট্রিং (temperature_buiten)); // ds18b20 display.drawString (0, 38, স্ট্রিং (আর্দ্রতা)); // dht11 ডিসপ্লে.display (); // টিসিপি সংযোগগুলি ওয়াইফাই ক্লায়েন্ট ক্লায়েন্ট করুন; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } স্ট্রিং url = "/আপডেট? কী ="; url += writeAPIKey; url += "& field1 ="; url += স্ট্রিং (তাপমাত্রা); // রোস্ট (DHT1) url += "& field2 ="; url += স্ট্রিং (আর্দ্রতা); // roost (DHT11) url += "& field3 ="; url += স্ট্রিং (temperature_buiten); // coop temperature (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"; // সার্ভার ক্লায়েন্টকে অনুরোধ পাঠান। প্রিন্ট (স্ট্রিং ("GET") + url + "HTTP/1.1 / r / n" + "হোস্ট:" + হোস্ট + "\ r / n" + "সংযোগ: বন্ধ / r / n / r / n "); বিলম্ব (1000); }

……..

ধাপ 3: আরো

বর্তমানে এই প্রোগ্রামটি শুধুমাত্র মনিটর করে, কিন্তু আপনাকে কি সন্ধ্যা বা সকাল বা একটি RTC দিনের পরিমাপ জানতে এবং একটি স্বয়ংক্রিয়ভাবে কুপের দরজা খুলতে এবং বন্ধ করার জন্য পরিমাপ করার জন্য BH1750 I2C লাইট সেন্সর যুক্ত করতে বাধা দিবে একটি PCF8574 I2C I/O সম্প্রসারণ কার্ড, অথবা যেহেতু এটি ইতিমধ্যে বাগানে রয়েছে, মাটির আর্দ্রতা পরিমাপ করতে একটি PCF8591 বা ADS1115 AD কনভার্টার যোগ করুন এবং প্রয়োজনে একটি পাম্প সক্রিয় করুন। অথবা হয়তো ওয়াটার বেসিন হিটার চালু করলে তাপমাত্রা শূন্যের নিচে নেমে আসে যদি এর জন্য একটি I2 C চিপ থাকে, ESP8266 সম্ভবত এটি ব্যবহার করতে পারে।

যদিও একটি গুরুত্বপূর্ণ নোট: প্রোগ্রামটি যেমন ভাল কাজ করে, কিন্তু যদি আপনি Rx বা Tx- এ অন্যান্য সেন্সর যুক্ত করেন, বিশেষ করে যদি আপনি সেগুলিকে আউটপুট বানান, পিনগুলি হঠাৎ মনে করতে পারে যে সেগুলি আসলে GPIO পিন নয়। পিনগুলিকে শুরু থেকে বলা ভাল যে তারা এখন জিপিআইও পিন।

pinMode (1, FUNCTION_3);

pinMode (3, FUNCTION_3);

প্রস্তাবিত: