সুচিপত্র:

ব্যাটারি চালিত জল সংগ্রাহক স্তরের সেন্সর: 7 টি ধাপ (ছবি সহ)
ব্যাটারি চালিত জল সংগ্রাহক স্তরের সেন্সর: 7 টি ধাপ (ছবি সহ)

ভিডিও: ব্যাটারি চালিত জল সংগ্রাহক স্তরের সেন্সর: 7 টি ধাপ (ছবি সহ)

ভিডিও: ব্যাটারি চালিত জল সংগ্রাহক স্তরের সেন্সর: 7 টি ধাপ (ছবি সহ)
ভিডিও: 12 Insane Future Concept Cars YOU MUST SEE 2024, নভেম্বর
Anonim
ব্যাটারি চালিত ওয়াটার কালেক্টর লেভেল সেন্সর
ব্যাটারি চালিত ওয়াটার কালেক্টর লেভেল সেন্সর
ব্যাটারি চালিত ওয়াটার কালেক্টর লেভেল সেন্সর
ব্যাটারি চালিত ওয়াটার কালেক্টর লেভেল সেন্সর

আমাদের বাড়িতে ছাদে পড়া বৃষ্টি থেকে খাওয়ানো একটি জলের ট্যাঙ্ক রয়েছে এবং এটি টয়লেট, ওয়াশিং মেশিন এবং বাগানে গাছপালা খাওয়ার জন্য ব্যবহৃত হয়। গত তিন বছর ধরে গ্রীষ্মকাল খুব শুষ্ক ছিল, তাই আমরা ট্যাঙ্কের পানির স্তরের উপর নজর রেখেছিলাম। এখন পর্যন্ত, আমরা একটি কাঠের লাঠি ব্যবহার করেছি, যা আমরা ট্যাঙ্কে রেখেছিলাম এবং স্তর চিহ্নিত করেছি। তবে অবশ্যই এর উন্নতি সম্ভব!

এখানেই এই প্রকল্পটি আসে। ধারণাটি হল ট্যাঙ্কের শীর্ষে একটি অতিস্বনক দূরত্ব সেন্সর সংযুক্ত করা। এই সেন্সর একটি সোনার নির্গত শব্দ তরঙ্গ হিসাবে কাজ করে, যা তখন পানির পৃষ্ঠ দ্বারা প্রতিফলিত হয়। তরঙ্গ ফিরে আসার সময় এবং শব্দের গতি থেকে, আপনি জলের পৃষ্ঠের দূরত্ব গণনা করতে পারেন এবং ট্যাঙ্কটি কতটা পূর্ণ তা নির্ধারণ করতে পারেন।

যেহেতু ট্যাঙ্কের কাছে আমার একটি প্রধান সংযোগ নেই, তাই এটি প্রয়োজনীয় যে সম্পূর্ণ ডিভাইস ব্যাটারিতে কাজ করে। এর মানে হল আমি সব অংশের বিদ্যুৎ খরচ সম্পর্কে সচেতন ছিলাম। ডেটা ফেরত পাঠানোর জন্য আমি একটি ESP8266 মাইক্রোচিপের অন্তর্নির্মিত ওয়াইফাই ব্যবহার করার সিদ্ধান্ত নিয়েছি। যদিও ওয়াইফাই মোটামুটি বিদ্যুৎ-ক্ষুধার্ত, অন্য ধরণের রেডিও সংযোগের উপর এটির সুবিধা রয়েছে: আপনি রিলে হিসাবে কাজ করে এমন অন্য কোনও ডিভাইস তৈরি না করে সরাসরি আপনার বাড়ির ওয়্যারলেস রাউটারের সাথে সংযোগ স্থাপন করতে পারেন।

বিদ্যুৎ সাশ্রয়ের জন্য আমি ESP8266 কে গভীর ঘুমের মধ্যে রাখব এবং প্রতি ঘন্টায় একটি পরিমাপ নেব। আমার জলের স্তর অনুসরণ করার জন্য এটি যথেষ্ট। ডেটা থিংসস্পিকে পাঠানো হবে এবং তারপর একটি অ্যাপের মাধ্যমে স্মার্টফোনে পড়া যাবে।

আরো একটি বিস্তারিত! শব্দের গতি, দূরত্ব পরিমাপের জন্য অপরিহার্য, তাপমাত্রার উপর এবং কম পরিমাণে আর্দ্রতার উপর নির্ভর করে। Outsideতুগুলিতে একটি সঠিক বাইরের পরিমাপের জন্য আমরা একটি BME280 সেন্সরে ফেলে দেব, যা তাপমাত্রা, আর্দ্রতা এবং চাপ পরিমাপ করে। বোনাস হিসাবে এটি আমাদের জল স্তরের সেন্সর থেকে একটি মিনি আবহাওয়া স্টেশন তৈরি করে।

অংশ:

  • 1x ESP8266 ESP-12F।
  • 1x ESP-12F অ্যাডাপ্টার প্লেট।
  • 1x FT232RL FTDI: ইউএসবি থেকে সিরিয়াল অ্যাডাপ্টার।
  • 1x HC-SR04-P: অতিস্বনক দূরত্ব পরিমাপ মডিউল। নোট করুন যে পি গুরুত্বপূর্ণ, যেহেতু এটি এমন সংস্করণ যা কমপক্ষে 3V এর অপারেটিং ভোল্টেজ রয়েছে।
  • 1x BME280 3.3V সংস্করণ: তাপমাত্রা, চাপ এবং আর্দ্রতা সেন্সর।
  • 1x IRL2203N: n- চ্যানেল MOSFET ট্রানজিস্টর।
  • 1x MCP1700-3302E 3.3V সংস্করণ: ভোল্টেজ নিয়ন্ত্রক।
  • 3x রিচার্জেবল এএ ব্যাটারি, যেমন 2600mAh
  • 3 ব্যাটারির জন্য 1x ব্যাটারি ধারক।
  • 1x রুটিবোর্ড।
  • প্রতিরোধক: 1x 470K, 1x 100K, 4x 10K।
  • ক্যাপাসিটার: 2x সিরামিক 1uF।
  • 3x টগল সুইচ।
  • ইউ-শেপ ব্রেডবোর্ডের তার।
  • জাম্পার তার।
  • প্লাস্টিক স্যুপ ধারক 1l।
  • ধারক জন্য সংযুক্তি রিং।

আমি GitHub এ কোডটি উপলব্ধ করেছি।

ধাপ 1: অতিস্বনক দূরত্ব সেন্সর সম্পর্কে জানা

অতিস্বনক দূরত্ব সেন্সর সম্পর্কে জানা
অতিস্বনক দূরত্ব সেন্সর সম্পর্কে জানা
অতিস্বনক দূরত্ব সেন্সর সম্পর্কে জানা
অতিস্বনক দূরত্ব সেন্সর সম্পর্কে জানা

আমরা একটি অতিস্বনক সেন্সর, HC-SR04-P দিয়ে জলের পৃষ্ঠের দূরত্ব পরিমাপ করব। একটি ব্যাটের মতো, এই সেন্সরটি সোনার ব্যবহার করে: এটি মানুষের কানের জন্য একটি ফ্রিকোয়েন্সি সহ একটি শব্দ পালস পাঠায়, অতএব অতিস্বনক, এবং এটি একটি বস্তুতে আঘাত করার জন্য অপেক্ষা করে, প্রতিফলিত হয় এবং ফিরে আসে। তারপর প্রতিধ্বনি গ্রহণের সময় এবং শব্দের গতি থেকে দূরত্ব গণনা করা যেতে পারে।

সুনির্দিষ্টভাবে, যদি ট্রিগ পিনটি কমপক্ষে 10 μ সেকেন্ডের জন্য উঁচু করা হয় তবে সেন্সর 40 Hz এর ফ্রিকোয়েন্সি সহ 8 ডাল ফেটে পাঠায়। উত্তরটি ইকো পিনে একটি পালস আকারে প্রাপ্ত হয় যার সময়কাল অতিস্বনক নাড়ি প্রেরণ এবং গ্রহণের মধ্যে সমান সময় থাকে। তারপর আমাদের 2 দ্বারা ভাগ করতে হবে, যেহেতু অতিস্বনক নাড়ি পিছনে যাচ্ছে এবং আমাদের একমুখী ভ্রমণের সময় প্রয়োজন, এবং শব্দের গতি দ্বারা গুণ করুন, যা প্রায় 340 মি/সেকেন্ড।

কিন্তু এক মিনিট অপেক্ষা করুন! বস্তুত, শব্দের গতি নির্ভর করে তাপমাত্রার উপর এবং কম পরিমাণে আর্দ্রতার উপর। আমি কি নিটপিকিং করছি নাকি এটি প্রাসঙ্গিক? একটি গণনার সরঞ্জাম ব্যবহার করে আমরা দেখতে পাই যে শীতকালে (-5 ° সে taking) আমরা 328.5 মি/সেকেন্ড এবং গ্রীষ্মে (25 ° সে taking) 347.1 মি/সেকেন্ড থাকতে পারি। সুতরাং ধরুন আমরা একমুখী ভ্রমণের সময় 3 ms খুঁজে পাই। শীতকালে, এর অর্থ হবে 98.55 সেমি এবং গ্রীষ্মে 104.13 সেমি। এটা বেশ পার্থক্য! তাই theতু এবং এমনকি দিন এবং রাতের মধ্যে পর্যাপ্ত নির্ভুলতা পেতে আমাদের সেটআপের জন্য একটি থার্মোমিটার যুক্ত করতে হবে। আমি BME280 অন্তর্ভুক্ত করার সিদ্ধান্ত নিয়েছি, যা তাপমাত্রা, আর্দ্রতা এবং চাপ পরিমাপ করে। আমি ফাংশন speedOfSound ফাংশনে যে কোডটি ব্যবহার করেছি তাতে তিনটি প্যারামিটার অনুসারে শব্দের গতি গণনা করা হয়, যদিও তাপমাত্রা সত্যিই সবচেয়ে গুরুত্বপূর্ণ ফ্যাক্টর। আর্দ্রতা এখনও একটি ছোট প্রভাব আছে, কিন্তু চাপের প্রভাব নগণ্য। আমরা স্পীডঅফসাউন্ডসিম্পলে যে তাপমাত্রা প্রয়োগ করেছি শুধুমাত্র সেই তাপমাত্রা বিবেচনায় নিয়ে আমরা একটি সহজ সূত্র ব্যবহার করতে পারি।

HC-SR04 এ আরও একটি গুরুত্বপূর্ণ বিষয় রয়েছে। দুটি সংস্করণ পাওয়া যায়: স্ট্যান্ডার্ড সংস্করণ 5V এ কাজ করে, যখন HC-SR04-P 3V থেকে 5V পর্যন্ত ভোল্টেজের পরিসরে কাজ করতে পারে। যেহেতু 3 টি রিচার্জেবল এএ ব্যাটারি প্রায় 3x1.25V = 3.75V প্রদান করে তাই পি-ভার্সনটি পাওয়া গুরুত্বপূর্ণ। কিছু বিক্রেতা ভুল পাঠাতে পারে। তাই ছবিগুলো একবার দেখে নিন যদি আপনি একটি কিনেন। এই সংস্করণে ব্যাখ্যা করা হয়েছে যে দুটি সংস্করণ পিছনে এবং সামনে উভয় দিকেই আলাদা। পি-সংস্করণের পিছনে তিনটি চিপ অনুভূমিক এবং স্ট্যান্ডার্ড সংস্করণে একটি উল্লম্ব। সামনে স্ট্যান্ডার্ড সংস্করণ একটি অতিরিক্ত রূপালী উপাদান আছে।

ইলেকট্রনিক সার্কিটে আমরা একটি ট্রানজিস্টরকে সুইচ হিসেবে ব্যবহার করব যখন আমাদের সেটআপ ব্যাটারির জীবন বাঁচাতে গভীর ঘুমে যাবে। অন্যথায়, এটি এখনও প্রায় 2mA গ্রাস করবে। অন্যদিকে BME280 নিষ্ক্রিয় অবস্থায় মাত্র 5 consume খরচ করে, তাই ট্রানজিস্টর দিয়ে এটি বন্ধ করার প্রয়োজন হয় না।

ধাপ 2: ESP8266 বোর্ডের পছন্দ

ESP8266 বোর্ডের পছন্দ
ESP8266 বোর্ডের পছন্দ

ব্যাটারিতে যতক্ষণ সম্ভব সেন্সরটি চালানোর জন্য আমাদের বিদ্যুৎ খরচকে অর্থনৈতিক করতে হবে। ইএসপি 8266 এর ওয়াইফাই আমাদের সেন্সরকে ক্লাউডের সাথে সংযুক্ত করার জন্য একটি খুব সুবিধাজনক উপায় সরবরাহ করে, এটি বেশ শক্তি-ক্ষুধার্তও। অপারেশনে ESP8266 প্রায় 80mA খরচ করে। তাই 2600 mAh এর ব্যাটারি দিয়ে আমরা আমাদের ডিভাইসটি খালি হওয়ার আগে সর্বোচ্চ 32 ঘন্টা চালাতে পারব। অনুশীলনে, এটি কম হবে কারণ ভোল্টেজটি খুব কম স্তরে নেমে যাওয়ার আগে আমরা সম্পূর্ণ 2600 এমএএইচ ক্ষমতা ব্যবহার করতে পারব না।

ভাগ্যক্রমে ESP8266 এর একটি গভীর ঘুমের মোড রয়েছে, যেখানে প্রায় সবকিছুই বন্ধ রয়েছে। তাই পরিকল্পনাটি হল ESP8266 কে বেশিরভাগ সময় গভীর ঘুমের মধ্যে রাখা এবং এটিকে প্রায়ই জাগিয়ে তোলা এবং পরিমাপ করা এবং থাইংস্পিকে ওয়াইফাই এর মাধ্যমে ডেটা পাঠানো। এই পৃষ্ঠার মতে সর্বোচ্চ গভীর ঘুমের সময় প্রায় 71 মিনিট ছিল, কিন্তু ESP8266 Arduino কোর 2.4.1 থেকে এটি প্রায় 3.5 ঘন্টা বেড়েছে। আমার কোডে আমি এক ঘন্টার জন্য বসতি স্থাপন করেছি।

আমি প্রথমে সুবিধাজনক নোডএমসিইউ ডেভেলপমেন্ট বোর্ডের চেষ্টা করেছি, কিন্তু খারাপ, গভীর ঘুমে এটি এখনও প্রায় 9 এমএ গ্রাস করে, যা আমাদের ঘুম থেকে ওঠার সময়গুলি বিবেচনা না করেও সর্বোচ্চ 12 দিনের বিশুদ্ধ গভীর ঘুম দেয়। একটি গুরুত্বপূর্ণ অপরাধী AMS1117 ভোল্টেজ রেগুলেটর, যা ব্যাটারিকে সরাসরি 3.3V পিনের সাথে সংযুক্ত করে বাইপাস করার চেষ্টা করলেও শক্তি ব্যবহার করে। এই পৃষ্ঠাটি ব্যাখ্যা করে কিভাবে ভোল্টেজ রেগুলেটর এবং ইউএসবি ইউএআরটি অপসারণ করা যায়। যাইহোক, আমি আমার বোর্ডকে ধ্বংস না করে এটি করতে পারিনি। তাছাড়া, ইউএসবি ইউএআরটি অপসারণের পরে আপনি কি ভুল হয়েছে তা বের করার জন্য আর ইএসপি 8266 এর সাথে সংযোগ করতে পারবেন না।

বেশিরভাগ ESP8266 ডেভেলপমেন্ট বোর্ডগুলি অপচয়কারী AMS1117 ভোল্টেজ নিয়ন্ত্রক ব্যবহার করে বলে মনে হয়। একটি ব্যতিক্রম WEMOS D1 মিনি (বাম দিকে ছবি) যা আরো লাভজনক ME6211 এর সাথে আসে। প্রকৃতপক্ষে, আমি দেখেছি যে WEMOS D1 মিনি গভীর ঘুমে প্রায় 150 μA ব্যবহার করে, যা এটির মতোই। এর বেশিরভাগই সম্ভবত ইউএসবি ইউএআরটির কারণে। এই বোর্ডের সাহায্যে আপনাকে পিনের জন্য হেডারগুলি নিজেকে সোল্ডার করতে হবে।

যাইহোক, আমরা ইএসপি -12 এফ (ডানদিকে ছবি) এর মতো বেয়ার-হাড়ের বোর্ড ব্যবহার করে আরও ভাল করতে পারি, যার একটি ইউএসবি ইউএআরটি বা ভোল্টেজ রেগুলেটর নেই। 3.3V পিন খাওয়ানো আমি একটি গভীর ঘুম খরচ মাত্র 22 μA পাওয়া!

কিন্তু ESP-12F পেতে কিছু সোল্ডারিং এর জন্য প্রস্তুতি নিন এবং একটু বেশি ঝামেলার প্রোগ্রামিং করুন! আরও যতক্ষণ না ব্যাটারিগুলি সরাসরি সঠিক ভোল্টেজ প্রদান করে, যা 3V এবং 3.6V এর মধ্যে থাকে, আমাদের নিজস্ব ভোল্টেজ নিয়ন্ত্রক সরবরাহ করতে হবে। অনুশীলনে, এটি একটি ব্যাটারি সিস্টেম খুঁজে পাওয়া কঠিন হয়ে যায় যা তার সম্পূর্ণ স্রাব চক্রের উপর এই পরিসরে একটি ভোল্টেজ সরবরাহ করে। মনে রাখবেন আমাদের HC-SR04-P সেন্সরকেও শক্তি দিতে হবে, যা তাত্ত্বিকভাবে 3V কম ভোল্টেজের সাথে কাজ করতে পারে, কিন্তু ভোল্টেজ বেশি হলে আরো সঠিকভাবে কাজ করে। তাছাড়া আমার ডায়াগ্রামে HC-SR04-P একটি ট্রানজিস্টর দ্বারা চালু করা হয়েছে, যা একটি ছোট অতিরিক্ত ভোল্টেজ ড্রপকে প্ররোচিত করে। আমরা MCP1700-3302E ভোল্টেজ নিয়ন্ত্রক ব্যবহার করব। সর্বাধিক ইনপুট ভোল্টেজ 6V তাই আমরা এটি 4 AA ব্যাটারির সাথে খাওয়াই। আমি 3 এএ ব্যাটারি ব্যবহার করার সিদ্ধান্ত নিয়েছি।

ধাপ 3: একটি থিংসস্পিক চ্যানেল তৈরি করুন

আমরা আমাদের ডেটা সঞ্চয় করার জন্য একটি IoT ক্লাউড পরিষেবা, ThingSpeak ব্যবহার করব। Https://thingspeak.com/ এ যান এবং একটি অ্যাকাউন্ট তৈরি করুন। একবার আপনি লগ ইন করলে একটি চ্যানেল তৈরি করতে নতুন চ্যানেল বাটনে ক্লিক করুন। চ্যানেল সেটিংসে আপনার পছন্দ মতো নাম এবং বিবরণ পূরণ করুন। এরপরে আমরা চ্যানেলের ক্ষেত্রগুলির নাম এবং ডানদিকে চেকবক্সগুলিতে ক্লিক করে সেগুলি সক্রিয় করি। আপনি যদি আমার কোড অপরিবর্তিত ব্যবহার করেন তবে ক্ষেত্রগুলি নিম্নরূপ:

  • ক্ষেত্র 1: জলের স্তর (সেমি)
  • ক্ষেত্র 2: ব্যাটারি স্তর (V)
  • ক্ষেত্র 3: তাপমাত্রা (° C)
  • ক্ষেত্র 4: আর্দ্রতা (%)
  • ফিল্ড 5: চাপ (Pa)

ভবিষ্যতের রেফারেন্সের জন্য চ্যানেল আইডি, রিড এপিআই কী এবং রাইট এপিআই কী লিখুন, যা মেনু এপিআই কীগুলিতে পাওয়া যাবে।

আপনি একটি অ্যাপ ব্যবহার করে আপনার স্মার্টফোনে থিংসস্পিক ডেটা পড়তে পারেন। আমার অ্যান্ড্রয়েড ফোনে আমি IoT ThingSpeak Monitor উইজেট ব্যবহার করি। আপনাকে এটি চ্যানেল আইডি এবং রিড এপিআই কী দিয়ে কনফিগার করতে হবে।

ধাপ 4: কিভাবে ESP-12F প্রোগ্রাম করবেন

কিভাবে ESP-12F প্রোগ্রাম করবেন
কিভাবে ESP-12F প্রোগ্রাম করবেন
কিভাবে ESP-12F প্রোগ্রাম করবেন
কিভাবে ESP-12F প্রোগ্রাম করবেন

ব্যাটারি লাইফ বাঁচানোর জন্য আমাদের একটি বেয়ার-হাড়ের বোর্ড দরকার, কিন্তু নেতিবাচক দিক হল যে বিল্ট-ইন ইউএসবি ইউএআরটি সহ ডেভেলপমেন্ট বোর্ডের তুলনায় প্রোগ্রাম করা কিছুটা কঠিন।

আমরা Arduino IDE ব্যবহার করব। এটি কীভাবে ব্যবহার করবেন তা ব্যাখ্যা করার জন্য অন্যান্য নির্দেশাবলী রয়েছে তাই আমি এখানে সংক্ষিপ্ত হব। ESP8266 এর জন্য এটি প্রস্তুত করার পদক্ষেপগুলি হল:

  • Arduino IDE ডাউনলোড করুন।
  • ESP8266 বোর্ডের জন্য সমর্থন ইনস্টল করুন। মেনুতে ফাইল - পছন্দ - সেটিংস অতিরিক্ত বোর্ড ম্যানেজার ইউআরএলে https://arduino.esp8266.com/stable/package_esp8266com_index.json ইউআরএল যুক্ত করুন। পরবর্তী মেনুতে সরঞ্জাম - বোর্ড - বোর্ড ম্যানেজার esp8266 সম্প্রদায় দ্বারা esp8266 ইনস্টল করুন।
  • বোর্ড হিসাবে নির্বাচন করুন: জেনেরিক ESP8266 মডিউল।

ESP-12F পরিচালনা করার জন্য আমি একটি অ্যাডাপ্টার প্লেট ব্যবহার করেছি, যা সাধারণত অনলাইন শপে পাওয়া যায়। আমি প্লেটে চিপ সোল্ডার করেছি এবং তারপর হেডারে প্লেটে বিক্রি করেছি। কেবল তখনই আমি আবিষ্কার করেছি যে অ্যাডাপ্টার প্লেটটি একটি স্ট্যান্ডার্ড ব্রেডবোর্ডের জন্য খুব প্রশস্ত! এটি আপনার সংযোগগুলি তৈরি করার জন্য কোন ফ্রি পিন ছেড়ে দেয় না।

আমি যে সমাধানের জন্য গিয়েছিলাম তা হল U- আকৃতির তারগুলি ব্যবহার করা এবং ESP8266 কে ব্রেডবোর্ডে অ্যাডাপ্টার প্লেটের সাথে লাগানোর আগে ডানদিকে ছবির মতো সংযুক্ত করুন। সুতরাং জিএনডি এবং ভিসিসি রুটিবোর্ডের রেলগুলির সাথে সংযুক্ত এবং অবশিষ্ট পিনগুলি রুটিবোর্ডের নীচে আরও উপলব্ধ করা হয়েছে। অসুবিধা হল যে আপনি সম্পূর্ণ সার্কিট শেষ করার পরে আপনার ব্রেডবোর্ডটি তারের সাথে বেশ ভিড় করতে চলেছে। আরেকটি সমাধান হল এই ভিডিওতে দেখানো হিসাবে দুটি ব্রেডবোর্ড একসাথে ফিট করা।

পরবর্তী, আপনার কম্পিউটারের ইউএসবি-পোর্টের মাধ্যমে ইএসপি -12 এফ প্রোগ্রাম করার জন্য আমাদের একটি ইউএসবি থেকে সিরিয়াল অ্যাডাপ্টারের প্রয়োজন। আমি FT232RL FTDI প্রোগ্রামার ব্যবহার করেছি। প্রোগ্রামার 3.3V বা 5V এর মধ্যে নির্বাচন করার জন্য একটি জাম্পার আছে। এটি ESP8266 এর জন্য 3.3V এ রাখা উচিত। এটি ভুলে যাবেন না কারণ 5V আপনার চিপ ভাজতে পারে! ড্রাইভারগুলির ইনস্টলেশন স্বয়ংক্রিয় হওয়া উচিত, কিন্তু যদি প্রোগ্রামিং কাজ না করে তবে আপনি এই পৃষ্ঠা থেকে তাদের ম্যানুয়ালি ইনস্টল করার চেষ্টা করতে পারেন।

ESP8266 ফ্ল্যাশে নতুন ফার্মওয়্যার আপলোড করার জন্য একটি প্রোগ্রামিং মোড এবং ফ্ল্যাশ মেমরি থেকে বর্তমান ফার্মওয়্যার চালানোর জন্য একটি ফ্ল্যাশ মোড রয়েছে। এই মোডগুলির মধ্যে নির্বাচন করার জন্য কিছু পিন বুট করার সময় একটি নির্দিষ্ট মান নিতে হবে:

  • প্রোগ্রামিং: GPIO0: নিম্ন, CH-PD: উচ্চ, GPIO2: উচ্চ, GPIO15: নিম্ন
  • ফ্ল্যাশ: GPIO0: উচ্চ, CH-PD: উচ্চ, GPIO2: উচ্চ, GPIO15: নিম্ন

অ্যাডাপ্টার প্লেটটি ইতিমধ্যে CH-PD কে টেনে তোলার এবং 10K রোধক দিয়ে GPIO15 কে টেনে নেওয়ার যত্ন নেয়।

সুতরাং আমাদের ইলেকট্রনিক সার্কিটে আমাদের এখনও GPIO2 টানতে হবে। আমরা ESP8266 কে প্রোগ্রামিং বা ফ্ল্যাশ মোডে রাখার জন্য একটি সুইচ এবং এটি পুনরায় সেট করার জন্য একটি সুইচ প্রদান করি, যা RST কে মাটিতে সংযুক্ত করে সম্পন্ন করা হয়। আরও নিশ্চিত করুন যে আপনি FT232RL এর TX পিনটি ESP8266 এর RXD পিনের সাথে এবং বিপরীতভাবে সংযুক্ত করুন।

প্রোগ্রামিং ক্রম নিম্নরূপ:

  • প্রোগ্রামিং সুইচ বন্ধ করে GPIO2 কম সেট করুন।
  • ESP8266 বন্ধ করে পুনরায় সেট করুন এবং তারপর রিসেট সুইচটি আবার খুলুন। ESP8266 এখন প্রোগ্রামিং মোডে বুট করে।
  • প্রোগ্রামিং সুইচ খোলার মাধ্যমে GPIO2 কে আবার হাইতে সেট করুন।
  • Arduino IDE থেকে নতুন ফার্মওয়্যার আপলোড করুন।
  • রিসেট সুইচ বন্ধ করে পুনরায় চালু করে ESP8266 পুনরায় সেট করুন। ESP8266 এখন ফ্ল্যাশ মোডে বুট করে এবং নতুন ফার্মওয়্যার চালায়।

এখন আপনি বিখ্যাত ব্লিঙ্ক স্কেচ আপলোড করে প্রোগ্রামিং কাজ করে কিনা পরীক্ষা করতে পারেন।

যদি এই সব কাজ করে তবে অন্তত GND, VCC, GPIO2, RST, TXD এবং RXD পিনগুলি সঠিকভাবে সোল্ডার এবং সংযুক্ত। কি শান্তি! তবে এগিয়ে যাওয়ার আগে আমি আপনার মাল্টিমিটারের সাথে অন্যান্য পিনগুলি পরীক্ষা করার পরামর্শ দেব। আমি একটি পিন সঙ্গে নিজেকে একটি সমস্যা ছিল। আপনি এই স্কেচটি ব্যবহার করতে পারেন, যা 5 সেকেন্ডের জন্য একের পর এক সব পিন উঁচু করে, এবং পরে ESP8266 কে 20 সেকেন্ডের জন্য গভীর ঘুমে রাখে। ESP8266 কে গভীর ঘুমের পরে জাগতে সক্ষম করতে আপনাকে RST কে GPIO16 এর সাথে সংযুক্ত করতে হবে, যা জাগার সংকেত দেয়।

ধাপ 5: স্কেচ আপলোড করা

আমি GitHub এ কোডটি উপলব্ধ করেছি, এটি মাত্র একটি ফাইল: Level-Sensor-Deepsleep.ino। শুধু এটি ডাউনলোড করুন এবং এটি Arduino IDE তে খুলুন। অথবা আপনি ফাইল - নতুন নির্বাচন করতে পারেন এবং শুধু কোডটি কপি/পেস্ট করুন।

ফাইলের শুরুতে আপনাকে কিছু তথ্য পূরণ করতে হবে: WLAN ব্যবহার করার জন্য নাম এবং পাসওয়ার্ড, স্ট্যাটিক আইপি বিবরণ এবং থিংসস্পিক চ্যানেলের চ্যানেল আইডি এবং রাইট এপিআই কী।

এই ব্লগে টিপ অনুসরণ করে, DHCP এর পরিবর্তে যেখানে রাউটার গতিশীলভাবে একটি আইপি বরাদ্দ করে, আমরা স্ট্যাটিক আইপি ব্যবহার করি, যেখানে আমরা নিজেরাই ESP8266 এর IP ঠিকানা সেট করি। এটি অনেক দ্রুত হতে চলেছে, তাই আমরা সক্রিয় সময় এবং এইভাবে ব্যাটারি শক্তিতে সঞ্চয় করি। সুতরাং আমাদের একটি উপলব্ধ স্ট্যাটিক আইপি অ্যাড্রেস এর পাশাপাশি রাউটারের আইপি (গেটওয়ে), সাবনেট মাস্ক এবং একটি ডিএনএস সার্ভার প্রদান করতে হবে। আপনি কি পূরণ করবেন তা সম্পর্কে অনিশ্চিত থাকলে, আপনার রাউটারের ম্যানুয়ালটিতে একটি স্ট্যাটিক আইপি সেট আপ করার বিষয়ে পড়ুন। আপনার রাউটারের সাথে ওয়াইফাই এর মাধ্যমে সংযুক্ত একটি উইন্ডোজ কম্পিউটারে, একটি শেল (উইন্ডোজ বোতাম-আর, সিএমডি) শুরু করুন এবং ipconfig /all লিখুন। আপনি ওয়াই-ফাই বিভাগের অধীনে আপনার প্রয়োজনীয় বেশিরভাগ তথ্য পাবেন।

কোডটি পরীক্ষা করলে আপনি দেখতে পাবেন যে অন্যান্য Arduino কোডের বিপরীতে বেশিরভাগ ক্রিয়া লুপ ফাংশনের পরিবর্তে সেটআপ ফাংশনে ঘটে। এর কারণ হল ESP8266 সেটআপ ফাংশন শেষ করার পর গভীর ঘুমে যায় (যদি না আমরা OTA মোডে শুরু করি)। এটি জেগে ওঠার পরে, এটি একটি নতুন রিস্টার্টের মতো এবং এটি আবার সেটআপ চালায়।

এখানে কোডের প্রধান বৈশিষ্ট্যগুলি রয়েছে:

  • ঘুম থেকে ওঠার পর কোডটি সুইচপিন (ডিফল্ট জিপিআইও ১৫) সেট করে। এটি ট্রানজিস্টর চালু করে, যা HC-SR04-P সেন্সর চালু করে। গভীর ঘুমে যাওয়ার আগে এটি পিনকে কম করে সেট করে, ট্রানজিস্টর এবং HC-SR04-P বন্ধ করে, নিশ্চিত করে যে এটি আর মূল্যবান ব্যাটারি শক্তি ব্যবহার করে না।
  • যদি মোডপিন (ডিফল্ট GPIO14) কম থাকে তবে কোডটি পরিমাপ মোডের পরিবর্তে OTA মোডে যায়। ওটিএ (ওভার-দ্য-এয়ার আপডেট) দিয়ে আমরা সিরিয়াল পোর্টের পরিবর্তে ওয়াইফাইয়ের মাধ্যমে ফার্মওয়্যার আপডেট করতে পারি। আমাদের ক্ষেত্রে এটি বেশ সুবিধাজনক কারণ আমাদের পরবর্তী আপডেটের জন্য সিরিয়ালটিকে আর ইউএসবি অ্যাডাপ্টারের সাথে সংযুক্ত করতে হবে না। শুধু GPIO14 কম সেট করুন (ইলেকট্রনিক সার্কিটে OTA সুইচ সহ), ESP8266 রিসেট করুন (রিসেট সুইচ সহ) এবং এটি আপলোডের জন্য Arduino IDE তে উপলব্ধ হওয়া উচিত।
  • এনালগ পিন (A0) এ, আমরা ব্যাটারির ভোল্টেজ পরিমাপ করি। এটি আমাদের ডিভাইসটি বন্ধ করতে দেয়, যেমন স্থায়ী গভীর ঘুম, যদি ভোল্টেজ খুব কম হয়, মিনি ভোল্টেজের নিচে, ব্যাটারিগুলিকে অতিরিক্ত স্রাব থেকে রক্ষা করতে। এনালগ পরিমাপ খুব সঠিক নয়, আমরা numMeasuresBattery (ডিফল্ট 10) পরিমাপ করি এবং সঠিকতা উন্নত করতে গড় গ্রহণ করি।
  • HC-SR04-P সেন্সরের দূরত্ব পরিমাপ ফাংশন দূরত্ব পরিমাপে করা হয়। নির্ভুলতা উন্নত করার জন্য পরিমাপটি পুনরাবৃত্তি করা হয় numMeasuresDistance (default 3) বার।
  • BME280 সেন্সর দ্বারা তাপমাত্রা, আর্দ্রতা এবং চাপ পরিমাপ থেকে speedOfSound গণনা করার একটি ফাংশন রয়েছে। BME280 এর ডিফল্ট I2C ঠিকানা হল 0x76, কিন্তু যদি এটি কাজ না করে তাহলে আপনাকে 0x77 এ পরিবর্তন করতে হতে পারে: bool bme280Started = bme280.begin (0x77);
  • আমরা BME280 ব্যবহার করব জোরপূর্বক মোডে, যার মানে এটি একটি পরিমাপ নেয় এবং বিদ্যুৎ সাশ্রয়ের জন্য ঘুমিয়ে যায়।
  • যদি আপনি ক্ষমতা (এল), পূর্ণ দূরত্ব (সেমি) এবং এলাকা (এম 2) সেট করেন, কোডটি দূরত্বের পরিমাপ থেকে জলের ট্যাঙ্কের অবশিষ্ট আয়তন গণনা করে: ডবল অবশিষ্ট ভলিউম = ক্ষমতা+10.0*(পূর্ণ দূরত্ব-দূরত্ব)*এলাকা; এবং এটি ThingSpeak এ আপলোড করুন। যদি আপনি ডিফল্ট মান রাখেন তবে এটি পানির পৃষ্ঠের দূরত্ব সেমি তে আপলোড করে।

ধাপ 6: ইলেকট্রনিক সার্কিট নির্মাণ

ইলেকট্রনিক সার্কিট নির্মাণ
ইলেকট্রনিক সার্কিট নির্মাণ

উপরে ইলেকট্রনিক সার্কিটের চিত্র। এটি একটি রুটিবোর্ডের জন্য বেশ বড়, বিশেষ করে বড় আকারের অ্যাডাপ্টার প্লেট এবং U- আকৃতির তারের সাথে কৌশল। কিছু সময়ে আমি অবশ্যই কামনা করেছিলাম যে আমি দুটি ব্রেডবোর্ড সংযুক্ত করার বিকল্প ব্যবহার করতাম, কিন্তু শেষ পর্যন্ত আমি পরিচালনা করেছিলাম।

সার্কিটের গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি এখানে:

  • দুটি ভোল্টেজ রয়েছে যা একটি ভূমিকা পালন করে: ব্যাটারি থেকে ইনপুট ভোল্টেজ (প্রায় 3.75V) এবং 3.3V যা ESP8266 এবং BME280 কে খাওয়ায়। আমি ব্রেকবোর্ডের বাম রেলে 3.3V এবং ডান রেলপথে 3.75V লাগিয়েছি। ভোল্টেজ নিয়ন্ত্রক 3.75V থেকে 3.3V রূপান্তরিত করে। ডেটশীটে নির্দেশাবলী অনুসরণ করে আমি স্থিতিশীলতা বাড়ানোর জন্য ভোল্টেজ নিয়ন্ত্রকের ইনপুট এবং আউটপুটে 1 μF ক্যাপাসিটার যুক্ত করেছি।
  • ESP8266 এর GPIO15 ট্রানজিস্টরের গেটের সাথে সংযুক্ত। এটি ESP8266 কে ট্রানজিস্টর চালু করতে দেয় এবং এইভাবে অতিস্বনক সেন্সর যখন সক্রিয় থাকে এবং গভীর ঘুমে যাওয়ার সময় এটি বন্ধ করে দেয়।
  • GPIO14 একটি সুইচ, OTA সুইচের সাথে সংযুক্ত। সুইচটি বন্ধ করা ইএসপি 8266 এ সংকেত দেয় যা আমরা পরবর্তী সময়ে ওটিএ মোডে শুরু করতে চাই, যেমন আমরা রিসেট সুইচ টিপে (বন্ধ এবং খুলুন), এবং একটি নতুন স্কেচ ওভার-দ্য-এয়ার আপলোড করি।
  • RST এবং GPIO2 পিনগুলি প্রোগ্রামিং ডায়াগ্রামের মতো সংযুক্ত। আরএসটি পিনটি এখন জিপিআইও 16 এর সাথে সংযুক্ত রয়েছে যাতে ইএসপি 8266 গভীর ঘুম থেকে জেগে উঠতে পারে।
  • অতিস্বনক সেন্সরের পিন TRIG এবং ECHO GPIO12 এবং GPIO13 এর সাথে সংযুক্ত থাকে, যখন BME280 এর পিন SCL এবং SDA GPIO5 এবং GPIO4 এর সাথে সংযুক্ত থাকে।
  • অবশেষে, এনালগ পিন এডিসি ইনপুট ভোল্টেজের সাথে সংযুক্ত একটি ভোল্টেজ ডিভাইডারের মাধ্যমে। এটি ব্যাটারির চার্জ পরীক্ষা করতে ইনপুট ভোল্টেজ পরিমাপ করতে দেয়। ADC পিন 0V এবং 1V এর মধ্যে ভোল্টেজ পরিমাপ করতে পারে। ভোল্টেজ ডিভাইডারের জন্য আমরা 100 কে এবং 470 কে প্রতিরোধক বেছে নিয়েছি। এর মানে হল যে ADC পিনে ভোল্টেজ দেওয়া হয়েছে: V_ADC = 100K/(100K+470K) V_in।V_ADC = 1V গ্রহণ করার মানে হল আমরা V_in = 570/100 V_ADC = 5.7V পর্যন্ত ইনপুট ভোল্টেজ পরিমাপ করতে পারি। বিদ্যুৎ ব্যবহারের ক্ষেত্রে ভোল্টেজ ডিভাইডারের মাধ্যমে কিছু কারেন্ট লিক হচ্ছে। ব্যাটারি থেকে V_in = 3.75V দিয়ে আমরা I_leak = 3.75V/570K = 6.6 μA খুঁজে পাই।

এমনকি যখন ব্যাটারি থেকে সার্কিট চলছে, তখন ইউএসবিকে সিরিয়াল অ্যাডাপ্টারের সাথে সংযুক্ত করা সম্ভব। শুধু নিশ্চিত করুন যে অ্যাডাপ্টারের VCC আনপ্লাগ করুন এবং প্রোগ্রামিং ডায়াগ্রামের মতো GND, RX এবং TX কে সংযুক্ত করুন। এটি ডিবাগিং বার্তাগুলি পড়ার জন্য আরডুইনো আইডিই -তে সিরিয়াল মনিটর খুলতে এবং সবকিছু প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করে তোলে।

সম্পূর্ণ সার্কিটের জন্য আমি ব্যাটারি থেকে চলার সময় গভীর ঘুমে 50 μA এর বর্তমান খরচ পরিমাপ করেছি। এর মধ্যে রয়েছে ESP8266, BME280, অতিস্বনক সেন্সর (ট্রানজিস্টর দ্বারা বন্ধ) এবং ভোল্টেজ ডিভাইডারের মাধ্যমে ফুটো এবং সম্ভবত অন্যান্য ফুটো। তাই যে খুব খারাপ না!

আমি দেখেছি যে মোট সক্রিয় সময় প্রায় 7 সেকেন্ড, যার মধ্যে 4.25 সেকেন্ড ওয়াইফাই সংযোগ করতে এবং 1.25 সেকেন্ড থিংসস্পিকে ডেটা পাঠাতে। তাই 80mA এর একটি সক্রিয় স্রোতের সাথে আমি সক্রিয় সময়ের জন্য প্রতি ঘন্টায় 160 μAh খুঁজে পেয়েছি। গভীর ঘুমের অবস্থার জন্য প্রতি ঘন্টায় 50 μAh যোগ করা আমাদের প্রতি ঘন্টায় মোট 210 μAh আছে। এর মানে হল যে 2600 mAh ব্যাটারি তাত্ত্বিকভাবে 12400 ঘন্টা = 515 দিন স্থায়ী হয়। যদি আমরা ব্যাটারির সম্পূর্ণ ক্ষমতা ব্যবহার করতে পারি (এটি এমন নয়) এবং এটি এমন কোন লিকেজ নেই যা আমি আমার বর্তমান পরিমাপের সাথে পাইনি। তাই আমি এখনও দেখতে পাচ্ছি যে এটি সত্যিই বন্ধ হয়ে যায় কিনা।

ধাপ 7: সেন্সর শেষ করা

সেন্সর শেষ করা
সেন্সর শেষ করা
সেন্সর শেষ করা
সেন্সর শেষ করা
সেন্সর শেষ করা
সেন্সর শেষ করা

আমি সেন্সরটি একটি প্লাস্টিকের 1 লিটারের পাত্রে রাখি, যা স্যুপ ধারণ করত। নীচে আমি HC-SR04-P সেন্সরের "চোখ" ফিট করার জন্য দুটি গর্ত করেছি। গর্ত ছাড়াও পাত্রটি জলরোধী হওয়া উচিত। এটি তখন পানির ট্যাঙ্কের দেয়ালের সাথে একটি বৃত্তাকার রিং দিয়ে সংযুক্ত থাকে যা সাধারণত বৃষ্টির পানির ড্রেন পাইপের জন্য ব্যবহৃত হয়।

প্রকল্পের সঙ্গে মজা আছে!

প্রস্তাবিত: