সুচিপত্র:

Esp8266: 7 ধাপ ব্যবহার করে আবহাওয়া ওয়েব অ্যাপ
Esp8266: 7 ধাপ ব্যবহার করে আবহাওয়া ওয়েব অ্যাপ

ভিডিও: Esp8266: 7 ধাপ ব্যবহার করে আবহাওয়া ওয়েব অ্যাপ

ভিডিও: Esp8266: 7 ধাপ ব্যবহার করে আবহাওয়া ওয়েব অ্যাপ
ভিডিও: Nodemcu esp8266 programming tutorial bangla । Esp8266 tutorial for beginners । Esp8266 bangla। 2020 2024, নভেম্বর
Anonim
Esp8266 ব্যবহার করে ওয়েদার ওয়েব অ্যাপ
Esp8266 ব্যবহার করে ওয়েদার ওয়েব অ্যাপ

SHT 31 হল একটি তাপমাত্রা এবং আর্দ্রতা সেন্সর যা Sensirion দ্বারা তৈরি। SHT31 ± 2% RH এর কাছাকাছি উচ্চ স্তরের নির্ভুলতা প্রদান করে। এর আর্দ্রতা পরিসীমা 0 থেকে 100% এবং তাপমাত্রার পরিসীমা -40 থেকে 125 ° C এর মধ্যে। এটি সেন্সর রেসপন্স টাইমের 8 সেকেন্ডের সাথে অনেক বেশি নির্ভরযোগ্য এবং দ্রুত। এর কার্যকারিতা বর্ধিত সংকেত প্রক্রিয়াকরণ এবং I2C সামঞ্জস্য অন্তর্ভুক্ত করে। এটির বিভিন্ন ধরণের অপারেশন রয়েছে যা এটিকে শক্তি দক্ষ করে তোলে।

এই টিউটোরিয়ালে, আমরা AdFruit Huzzah বোর্ডের সাথে SHT 31 কে ইন্টারফেস করেছি। তাপমাত্রা এবং আর্দ্রতার মান পড়ার জন্য আমরা ESP8266 I2C ieldাল ব্যবহার করেছি। এই অ্যাডাপ্টার ব্যবহারকারীর জন্য সমস্ত পিন অ্যাক্সেসযোগ্য করে তোলে এবং ব্যবহারকারী বান্ধব I2C পরিবেশ প্রদান করে।

ধাপ 1: হার্ডওয়্যার প্রয়োজন

হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন

এই কাজটি সম্পন্ন করতে ব্যবহৃত হার্ডওয়্যার:

1. SHT31

2. Adafruit Huzzah ESP8266

3. ESP8266 I2C অ্যাডাপ্টার

4. I2C কেবল

পদক্ষেপ 2: হার্ডওয়্যার সংযোগ

হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ
হার্ডওয়্যার সংযোগ

এই ধাপে হার্ডওয়্যার হুকআপ গাইড অন্তর্ভুক্ত রয়েছে। এই বিভাগটি মূলত সেন্সর এবং ESP8266 এর মধ্যে প্রয়োজনীয় তারের সংযোগ ব্যাখ্যা করে। সংযোগগুলি নিম্নরূপ।

  1. SHT31 I2C এর উপর কাজ করে। উপরের ছবিটি ESP8266 এবং SHT31 মডিউলের মধ্যে সংযোগ প্রদর্শন করে। আমরা এর জন্য I2C কেবল ব্যবহার করছি অথবা আমরা 4 F থেকে F জাম্পার তার ব্যবহার করতে পারি।
  2. একটি তারের ব্যবহার Vcc এর জন্য, দ্বিতীয় তারের GND এর জন্য এবং অন্য দুটি যথাক্রমে SDA এবং SCL এর জন্য।
  3. I2C অ্যাডাপ্টার পিন 2 এবং একটি ESP8266 বোর্ডের পিন 14 অনুযায়ী যথাক্রমে SDA এবং SC হিসাবে ব্যবহৃত হয়

ধাপ 3: টাস্ক শিডিউলিং এর জন্য কোড

এই টিউটোরিয়ালে আমরা তিনটি অপারেশন করছি

  • I2C প্রোটোকল ব্যবহার করে SHT11 থেকে ডেটা পড়ুন
  • ওয়েব সার্ভার হোস্ট করুন এবং ওয়েবপৃষ্ঠায় সেন্সর পড়া পোস্ট করুন
  • ThingSpeak API- এ সেন্সর রিডিং পোস্ট করুন

এটি অর্জনের জন্য আমরা TaskScheduler লাইব্রেরি ব্যবহার করছি। আমরা তিনটি ভিন্ন কন্ট্রোল অপারেশন উল্লেখ করে তিনটি ভিন্ন কাজ নির্ধারণ করেছি। এটি নিম্নরূপ করা হয়

  • টাস্ক 1 হল সেন্সর ভ্যালু পড়ার জন্য এই টাস্কটি 1 সেকেন্ড পর্যন্ত চলে যতক্ষণ না এটি 10 সেকেন্ডের সময়সীমা শেষ হয়।
  • যখন টাস্ক 1 তার সময়সীমা পৌঁছায় টাস্ক 2 সক্ষম এবং টাস্ক 1 অক্ষম।
  • আমরা এই কলব্যাকের সাথে AP এর সাথে সংযোগ স্থাপন করি, STA এবং AP এর মধ্যে সুইচিংয়ের যত্ন নেওয়ার জন্য দুটি বুলিয়ান ভেরিয়েবল নেওয়া হয়
  • টাস্ক 2 এ আমরা 192.168.1.4 এ একটি ওয়েব সার্ভার হোস্ট করছি। এই টাস্কটি প্রতি 5 সেকেন্ডের জন্য চলবে যতক্ষণ না এটি তার সময়সীমা 50 সেকেন্ডে পৌঁছায়
  • যখন টাস্ক 2 টাইমআউটে পৌঁছায় টাস্ক 3 সক্ষম এবং টাস্ক 2 অক্ষম।
  • আমরা এই কলব্যাকে STA (লোকাল আইপি) এর সাথে সংযোগ স্থাপন করি
  • টাস্ক 3 -এ আমরা ক্লাউড থিংস্পিক এপিআই -তে সেন্সর রিডিং পোস্ট করছি
  • প্রতি পাঁচ সেকেন্ডের জন্য টাস্ক 3 রান করে যতক্ষণ না এটি তার সময়সীমা অর্থাৎ 50 সেকেন্ডে পৌঁছায়
  • যখন টাস্ক 3 তার সময়সীমাতে পৌঁছায় টাস্ক 1 আবার সক্ষম হয় এবং টাস্ক 3 অক্ষম থাকে।
  • যখন কোন কলব্যাক বলা হয় না বা ডিভাইসটি নিষ্ক্রিয় থাকে তখন এটি লাইট স্লিপে যায় ফলে বিদ্যুৎ সাশ্রয় হয়।

সময়সূচী ts;

// i2c এর জন্য কাজ, ওয়েব সার্ভার হোস্টিং এবং জিনিসপত্রের পোস্ট

টাস্ক tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); টাস্ক ট্যাপ (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); টাস্ক tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // কাজের জন্য সময়সীমা tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // I2C টাস্ক tI2C.enable () সক্ষম করুন;

ধাপ 4: তাপমাত্রা এবং আর্দ্রতা মান পড়ার কোড

আমরা Wire.h লাইব্রেরি ব্যবহার করছি তাপমাত্রা এবং আর্দ্রতার মান পড়তে। এই লাইব্রেরি সেন্সর এবং মাস্টার ডিভাইসের মধ্যে i2c যোগাযোগের সুবিধা দেয়। 0x44 হল SHT31 এর I2C ঠিকানা।

SHT31 অপারেশনের ভিন্ন মোডে কাজ করে। আপনি এর জন্য ডেটশীট উল্লেখ করতে পারেন।

আমরা একক শট অপারেশনের জন্য যথাক্রমে 0x2C এবং 0x06 MSB এবং LSB হিসাবে ব্যবহার করছি।

// I2C টাস্ক কলব্যাক অকার্যকর কাজ I2CC কলব্যাক ()

{Serial.println ("taskI2CStarted"); স্বাক্ষরবিহীন int root [6]; // 0x44 থেকে সংক্রমণ শুরু; Wire.beginTransmission (Addr); // উচ্চ পুনরাবৃত্তিযোগ্যতা সহ একটি শট ট্রান্সমিশন এর জন্য আমরা 0x2C (MSB) এবং 0x06 (LSB) Wire.write (0x2C) ব্যবহার করি; Wire.write (0x06); // শেষ সংক্রমণ Wire.endTransmission (); // 0x44 Wire.beginTransmission (Addr) থেকে অনুরোধ বাইট; Wire.endTransmission (); Wire.requestFrom (Addr, 6); যদি (Wire.available () == 6) {// data [0] এবং data [1] 16 বিট তাপমাত্রা ধারণ করে। root [0] = Wire.read (); root [1] = Wire.read (); // ডেটা [2] তে 8 বিট CRC রুট রয়েছে [2] = Wire.read (); // data [3] এবং data [4] 16 বিট আর্দ্রতা মূল [3] = Wire.read (); root [4] = Wire.read (); // ডেটা [5] 8 বিট CRC রুট [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // শিফট MSB 8 বিট দ্বারা যোগ করুন LSB ফ্লোট cTemp = -45.0 + (175.0 * temp /65535.0); ফ্লোট fTemp = (cTemp * 1.8) + 32.0; // MSB কে 8 বিট দ্বারা স্থানান্তর করুন এতে LSB যোগ করুন সম্পূর্ণ রেজোলিউশন এবং 100 % ভাসমান আর্দ্রতার জন্য = (100.0 * ((root [3] * 256.0) + root [4])) /65535.0;

tempC = cTemp;

tempF = fTemp; আর্দ্রতা = আর্দ্রতা; Serial.print ("তাপমাত্রা C: / t"); Serial.println (স্ট্রিং (cTemp, 1)); Serial.print ("F এ তাপমাত্রা: / t"); Serial.println (স্ট্রিং (fTemp, 1)); সিরিয়াল.প্রিন্ট ("আর্দ্রতা: / t"); Serial.println (স্ট্রিং (আর্দ্রতা, 1 %)); }

ধাপ 5: একটি ওয়েব সার্ভার হোস্ট করার জন্য কোড

একটি ওয়েব সার্ভার হোস্ট করার জন্য কোড
একটি ওয়েব সার্ভার হোস্ট করার জন্য কোড
একটি ওয়েব সার্ভার হোস্ট করার জন্য কোড
একটি ওয়েব সার্ভার হোস্ট করার জন্য কোড

আমরা আমাদের ডিভাইস থেকে একটি স্ট্যাটিক আইপিতে একটি ওয়েব সার্ভার হোস্ট করেছি।

  • ESP8266 ওয়েব সার্ভার লাইব্রেরি ওয়েব সার্ভার হোস্ট করতে ব্যবহৃত হয়
  • প্রথমে আমাদের স্ট্যাটিক আইপি তৈরির জন্য আইপি ঠিকানা, গেটওয়ে এবং সাবনেট মাস্ক ঘোষণা করতে হবে
  • এখন আপনার অ্যাক্সেস পয়েন্টের জন্য ssid এবং পাসওয়ার্ড ঘোষণা করুন।
  • যে কোন STA ডিভাইস থেকে অ্যাক্সেস পয়েন্টে সংযোগ করুন
  • 80 পোর্টে সার্ভার হোস্ট করুন যা ইন্টারনেট যোগাযোগ প্রোটোকলের জন্য একটি ডিফল্ট পোর্ট, হাইপারটেক্সট ট্রান্সফার প্রোটোকল (HTTP)
  • আপনার ওয়েব ব্রাউজারে 192.168.1.4 প্রবেশ করুন ওয়েব পেজের জন্য এবং 192.168.1.4/ সেন্সর পড়ার ওয়েবপৃষ্ঠার মান

// AP এর জন্য স্ট্যাটিক আইপি

IPAddress ap_local_IP (192, 168, 1, 4);

IPAddress ap_gateway (192, 168, 1, 254);

IPAddress ap_subnet (255, 255, 255, 0); // ssid এবং AP স্থানীয় ওয়াইফাই এর জন্য STA মোডে

const char WiFissid = "*********";

const char WiFipass = "*********";

// ssid এবং AP এর জন্য পাস

const char APssid = "********";

const char APpass = "********";

ESP8266 ওয়েব সার্ভার সার্ভার (80);

অকার্যকর সেটআপ{

server.on ("/", onHandleDataRoot);

server.on ("/মান", onHandleDataFeed);

server.onNotFound (onHandleNotFound);

}

অকার্যকর কাজ APCallback () {

Serial.println ("taskAP শুরু");

server.handleClient ();

}

শূন্য onHandleDataRoot () {server.send (200, "text/html", PAGE1); }

শূন্য onHandleDataFeed () {

server.send (200, "text/html", PAGE2); }

vand onHandleNotFound () {

স্ট্রিং বার্তা = "ফাইল পাওয়া যায়নি / n / n";

বার্তা += "ইউআরআই:";

বার্তা += server.uri ();

বার্তা += "\ n পদ্ধতি:";

বার্তা += (server.method () == HTTP_GET)? "GET": "পোস্ট";

বার্তা += "\ n যুক্তি:";

বার্তা += server.args ();

বার্তা += "\ n";

server.send (404, "টেক্সট/প্লেইন", বার্তা);}

void reconnectAPWiFi () {

WiFi.mode (WIFI_AP_STA);

বিলম্ব (100);

WiFi.disconnect ();

বুলিয়ান অবস্থা = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);

যদি (অবস্থা == সত্য) {

সিরিয়াল.প্রিন্ট ("সফট-এপি সেট করা …");

বুলিয়ান ap = WiFi.softAP (APssid, APpass);

যদি (ap == সত্য) {

Serial.print ("সংযুক্ত: / t");

// IPAddress myIP = WiFi.softAPIP ();

Serial.println (WiFi.softAPIP ());

}

server.begin ();

}

}

ধাপ 6: থিং স্পিকে ডেটা পোস্ট করার কোড

থিং স্পিকে ডেটা পোস্ট করার কোড
থিং স্পিকে ডেটা পোস্ট করার কোড
থিং স্পিকে ডেটা পোস্ট করার কোড
থিং স্পিকে ডেটা পোস্ট করার কোড
থিং স্পিকে ডেটা পোস্ট করার কোড
থিং স্পিকে ডেটা পোস্ট করার কোড
থিং স্পিকে ডেটা পোস্ট করার কোড
থিং স্পিকে ডেটা পোস্ট করার কোড

এখানে আমরা সেন্সর রিডিংগুলি থিং স্পিকে পোস্ট করছি। এই কাজটি সম্পন্ন করার জন্য নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন

  • কথা বলতে আপনার অ্যাকাউন্ট তৈরি করুন
  • আপনার সেন্সর ডেটা সঞ্চয় করার জন্য চ্যানেল এবং ক্ষেত্র তৈরি করুন
  • আমরা ESP থেকে থিংসস্পিকে ডেটা পেতে এবং পোস্ট করতে পারি এবং এর বিপরীতে api- এর GET এবং POST অনুরোধগুলি ব্যবহার করে।
  • আমরা আমাদের ডেটা থিংসস্পিকে নিম্নরূপ পোস্ট করতে পারি

অকার্যকর টাস্ক ওয়াইফাই কলব্যাক () {

WiFiClient wifiClient; যদি (wifiClient.connect (hostId, 80)) {স্ট্রিং postStr = apiKey; postStr += "& field1 ="; postStr += স্ট্রিং (আর্দ্র); postStr += "& field2 ="; postStr += স্ট্রিং (tempC); postStr += "& field3 ="; postStr += স্ট্রিং (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("পোস্ট /আপডেট HTTP /1.1 / n"); wifiClient.print ("হোস্ট: api.thingspeak.com / n"); wifiClient.print ("সংযোগ: বন্ধ / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("বিষয়বস্তু-প্রকার: অ্যাপ্লিকেশন/x-www-form-urlencoded / n"); wifiClient.print ("বিষয়বস্তু-দৈর্ঘ্য:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

ধাপ 7: সামগ্রিক কোড

সামগ্রিক কোড আমার github সংগ্রহস্থলে পাওয়া যায়

ক্রেডিট:

  • Arduino JSON: ArduinoJson
  • ESP826 ওয়েব সার্ভার
  • কাজের সূচি
  • SHT 31
  • I2C স্ক্যান
  • HIH6130 নির্দেশিকা টিউটোরিয়াল
  • তারের Arduino
  • NCD.io

প্রস্তাবিত: