সুচিপত্র:

ESP8266: 9 টি ধাপ
ESP8266: 9 টি ধাপ

ভিডিও: ESP8266: 9 টি ধাপ

ভিডিও: ESP8266: 9 টি ধাপ
ভিডিও: Introduction to NodeMCU ESP8266 WiFi Development board with HTTP Client example- Robojax 2024, নভেম্বর
Anonim
ESP8266 ব্যবহার করে থিংগস্পিক টেম্পারেচার এবং হিউমিডিটি অ্যাপ
ESP8266 ব্যবহার করে থিংগস্পিক টেম্পারেচার এবং হিউমিডিটি অ্যাপ

আমার ইলেকট্রনিক সামগ্রীর সাথে ঝামেলা করার সময়, আমি ওয়েব-ভিত্তিক আবহাওয়া অ্যাপ্লিকেশন তৈরি করার জন্য এই ধারণাটি পেয়েছি। এই ওয়েব অ্যাপটি রিয়েল-টাইম তাপমাত্রা এবং আর্দ্রতার ডেটা পাওয়ার জন্য SHT31 সেন্সর ব্যবহার করে। আমরা আমাদের প্রকল্পটি ESP8266 ওয়াইফাই মডিউলে স্থাপন করেছি। অনলাইন বা অফলাইন! চিন্তা করার দরকার নেই, আপনি অনলাইনে বা অফলাইনে থাকুন আপনি যেকোনো স্থান থেকে এবং যে কোন সময় আবহাওয়ার আপডেট পাবেন। এই ওয়েব অ্যাপটি স্থানীয় ওয়েব সার্ভারের পাশাপাশি ক্লাউডে ডেটা পোস্ট করে। ক্লাউড অপারেশনের জন্য, আমরা ThingSpeak API ব্যবহার করছি। SHT31 সেন্সর থেকে তথ্য পেতে I2C ব্যবহার করে।

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

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

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

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

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

  1. SHT 31
  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 অক্ষম।
  • আমরা এই ক্যালব্যাক এসটিএ (স্থানীয় আইপি) এর সাথে সংযোগ করি টাস্ক 3 এ আমরা ক্লাউড থিংসস্পিক এপিআইতে সেন্সর রিডিং পোস্ট করছি

  • প্রতি পাঁচ সেকেন্ডের জন্য টাস্ক 3 রান করে যতক্ষণ না এটি তার সময়সীমা অর্থাৎ 50 সেকেন্ডে পৌঁছায়
  • যখন টাস্ক 3 তার সময় শেষ করে তখন টাস্ক 1 আবার সক্ষম হয় এবং টাস্ক 3 অক্ষম থাকে।
  • যখন কোন কলব্যাক বলা হয় না বা ডিভাইসটি নিষ্ক্রিয় থাকে তখন এটি লাইট স্লিপে যায় ফলে বিদ্যুৎ সাশ্রয় হয়।

অকার্যকর কাজ I2CCallback ();

অকার্যকর কাজ I2CDisable (); অকার্যকর কাজ APCallback (); অকার্যকর কাজ APDisable (); অকার্যকর টাস্ক ওয়াইফাই কলব্যাক (); অকার্যকর টাস্ক ওয়াইফাইডিসেবল (); // i2c এর জন্য টাস্ক, ওয়েব সার্ভার হোস্টিং এবং জিনিসপত্র স্পিক টাস্ক tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); টাস্ক 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 টাস্ক কলব্যাক অকার্যকর taskI2CCallback () {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/ সেন্সর পড়ার ওয়েবপেজের মান

// APIPAddress 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);} void taskAPCallback () {Serial.println ("taskAP start"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "File not found / 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 == true) {Serial.print ("সংযুক্ত: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

ধাপ 6: থিংসপিক সেটআপ

থিংসস্পিক সেটআপ
থিংসস্পিক সেটআপ
থিংসস্পিক সেটআপ
থিংসস্পিক সেটআপ
থিংসস্পিক সেটআপ
থিংসস্পিক সেটআপ

ThingSpeak একটি IoT প্ল্যাটফর্ম। ThingSpeak হল একটি ফ্রি ওয়েব সার্ভিস যা আপনাকে ক্লাউডে সেন্সর ডেটা সংগ্রহ এবং সঞ্চয় করতে দেয়।

এই ধাপে, আমি আপনাকে আপনার থিং স্পিক অ্যাকাউন্ট সেট আপ করার জন্য একটি সংক্ষিপ্ত পদ্ধতি প্রদান করব

  • থিংস্পিকে নতুন ব্যবহারকারীর অ্যাকাউন্টের জন্য সাইন আপ করুন
  • চ্যানেল, আমার চ্যানেল এবং তারপর নতুন চ্যানেল নির্বাচন করে একটি নতুন চ্যানেল তৈরি করুন
  • আপনার ক্ষেত্রগুলি সম্পাদনা করুন
  • এই ক্ষেত্রগুলিতে আপনার সেন্সর ডেটা রয়েছে
  • লিখুন API কী এবং চ্যানেল আইডি
  • আপনার Arduino স্কেচে, আপনি Arduino এর জন্য ThingSpeak লাইব্রেরি ব্যবহার করতে পারেন অথবা আপনি সরাসরি ThingSpeak API- এ ডেটা পোস্ট করতে পারেন
  • পরবর্তী ধাপটি থিং স্পিক এপিআইতে সামগ্রী পোস্ট করার বিষয়ে বিশদভাবে বর্ণনা করে

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

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

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

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

id taskWiFiCallback () {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 (); }

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

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

ধাপ 9: ক্রেডিট

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

প্রস্তাবিত: