এই টিউটোরিয়ালে আমরা Rain Alert System তৈরি করব। এর মাধ্যমে বৃষ্টি শুরু হওয়ার সাথে সাথেই হোয়াটসঅ্যাপে নোটিফিকেশন পউছে পৌঁছে যাবে। প্রজেক্টটিটে একটি Water Sensor এবং ESP8266 এর সাহায্যে বৃষ্টির নোটিফিকেশন হোয়াটসঅ্যাপের মাধ্যমে আমাদের মোবাইলে রিসিভ করব।
প্রজেক্টের মূলনীতি
প্রজেক্টের মূল প্রসেসর হিসেবে আমরা ব্যবহার করব একটি ESP8266 । আমরা ESP8266 ভিত্তিক আগের প্রজেক্টগুলো থেকে জানি, এর একটি নিজস্ব ওয়াইফাই মডিউল আছে। এই ওয়াইফাই মডিউলের মাধ্যমে ESP8266 নিজেকে ওয়াইফাই নেটওয়ার্কে যুক্ত করতে পারে। আমাদের এক্সপেরিমেন্টে ESP8266 একটি ওয়াইফাই নেটওয়ার্কে যুক্ত থাকবে। ESP8266 এর সাথে যুক্ত থাকবে একটি ওয়াটার সেন্সর। সেন্সরটি যখন বৃষ্টি সনাক্ত করবে তখন আমাদের প্রজেক্টটি একটি পূর্ব নির্ধারিত হোয়াটসঅ্যাপ নাম্বারে সতর্কবার্তা পাঠাবে। Whatsapp এ মেসেজ পাঠানোর জন্য আমরা ব্যবহার করব CallMeBot নামক একটি API ।
এই প্রজেক্ট থেকে আমরা শিখব
- কিভাবে ESP8266 থেকে হোয়াটসঅ্যাপে মেসেজ পাঠানো যায়।
- কিভাবে Water sensor এর ডেটা ESP8266 এর মাধ্যমে রিড করা যায়।
Water sensor কী এবং কিভাবে কাজ করে?
ওয়াটার সেন্সর হল একটি তিন পিনবিশিষ্ট সেন্সর। এর আউটপুট টাইপ অ্যানালগ। এই সেন্সরের পিসিবি কয়েকটি সমান্তরাল কপার ট্রেসের সমন্বয়ে তৈরী। কপার ট্রেসগুলোর উপর পানি পড়লে সেন্সরটির আউটপুটের ভ্যালুতে ব্যপক পরিবর্তন লক্ষ্য করা যায়।
‘S’ চিহ্নিত পিনটি হল, ওয়াটার সেন্সরের আউটপুট পিন। এই পিনটিকে ESP8266 এর A0 পিনের সাথে যুক্ত করে analogRead() ফাংশনের মাধ্যমে রিড করা সম্ভব। তাহলে আমরা বুঝতে পারব সেন্সরের উপর কোনো পানি আছে নাকি নেই।
প্রয়োজনীয় যন্ত্রপাতি | পরিমাণ | লিংক |
ESP8266 NodeMCU V2 Development Board with CP2102 | 1 | link |
Water sensor | 1 | link |
Breadboard(830 point) | 1 | link |
Male to female jumpers | link | |
Micro USB cable | 1 | link |
প্রয়োজনীয় অ্যাপ এবং API
- CallMeBot
সার্কিট কানেকশন
Arduino UNO | Water sensor |
3V | VCC |
GND | GND |
A0 | A0 |
সম্পূর্ণ সেটআপটি দেখতে ছিল এরকমঃ
অ্যাপ ইন্সটলেশন
আপনার মোবাইল ফোনে Whatsapp ইন্সটল করা না থাকলে এই লিংক থেকে ডাউনলোড এবং ইন্সটল করে নিন।
API Key generate করাঃ আগেই উল্লেখ করা হয়েছে, এই প্রজেক্টের জন্য CallMeBot API ব্যবহার করা হবে। CallMeBot ব্যবহার করতে নিচের প্রক্রিয়াগুলো অনুসরণ করুন।
আপনার ফোনের কন্টাক্ট লিস্টে +34 644 44 21 48 নাম্বারটি সেভ করে রাখুন। যেকোনো নাম দিয়েই সেভ করতে পারেন। উক্ত নাম্বারে হোয়াটসঅ্যাপ ব্যবহার করে এই মেসেজটি পাঠানঃ “I allow callmebot to send me messages” ।
আপনি নাম্বারটি থেকে একটি উত্তর পাবেন। উত্তরে আপনার API key উল্লেখ করা থাকবে। এই API key টি প্রোগ্রামে লিখতে হবে।
প্রোগ্রাম
এটিই যদি ESP8266 ব্যবহার করে আপনার কম্পিউটার থেকে করা প্রথম প্রজেক্ট হয়, তাহলে প্রথমে বেশকিছু কাজ করতে হবে। অনুগ্রহপূর্বক এই টিউটোরিয়ালে প্রদর্শিত নিয়ম অনুযায়ী Board installation সম্পন্ন করুন।
লাইব্রেরি ইন্সটলেশনঃ Arduino IDE ওপেন করে লাইব্রেরি ম্যানেজারে গিয়ে UrlEncode লাইব্রেরিটি সার্চ করুন এবং ইন্সটল করুন।
নিচের প্রোগ্রামটি আরডুইনো আইডিইতে লিখুন।
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <WiFiClient.h> #include <UrlEncode.h> const char* ssid = "Your SSID"; const char* password = "Your password"; // +international_country_code + phone number // Bangladesh +88, example: +8801.... String phoneNumber = "Your phone number"; String apiKey = "API KEY"; void sendMessage(String message){ // Data to send with HTTP POST String url = "http://api.callmebot.com/whatsapp.php?phone=" + phoneNumber + "&apikey=" + apiKey + "&text=" + urlEncode(message); WiFiClient client; HTTPClient http; http.begin(client, url); // Specify content-type header http.addHeader("Content-Type", "application/x-www-form-urlencoded"); // Send HTTP POST request int httpResponseCode = http.POST(url); if (httpResponseCode == 200){ Serial.print("Message sent successfully"); } else{ Serial.println("Error sending the message"); Serial.print("HTTP response code: "); Serial.println(httpResponseCode); } // Free resources http.end(); } void setup() { Serial.begin(115200); WiFi.begin(ssid, password); Serial.println("Connecting"); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to WiFi network with IP Address: "); Serial.println(WiFi.localIP()); // Send Message to WhatsAPP // sendMessage("Hello from ESP8266!"); } void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); Serial.println(sensorValue); if(sensorValue>=200) { sendMessage("It’s raining!!"); } }
যে পরিবর্তনগুলো প্রোগ্রামে অবশ্যই করতে হবেঃ
- Your SSID এর জায়গায় আপনার SSID অর্থ্যাৎ, আপনার ব্যবহৃত ওয়াইফাই নেটওয়ার্কের নামটি লিখবেন।
- Your password এর জায়গায় আপনার ওয়াইফাইয়ের পাসওয়ার্ড লিখবেন।
- Your phone number এর জায়গায় কান্ট্রি কোডসহ আপনার ফোন নাম্বার লিখবেন।
- API KEY এর জায়গায় আপনার API KEY লিখবেন।
কোডটি আপলোড করার সময় Board অপশন থেকে অবশ্যই NodeMCU 1.0 (ESP12E-Module) সিলেক্ট করবেন।
কোডটি আপলোড করার পর 115200 baud rate সিলেক্ট করে সিরিয়াল মনিটর ওপেন করবেন। সিরিয়াল মনিটরে A0 পিনের অ্যানালগ ভ্যালু দেখা যাবে। আমাদের সেটআপে সেন্সর শুকনা থাকা অবস্থায় এই ভ্যালু ছিল 0।
[caption id="attachment_113579" align="alignnone" width="720"] চিত্র: সেন্সর শুষ্ক অবস্থায় সিরিয়াল মনিটরের ডেটা।[/caption]Water sensor এর উপর একফোঁটা পানির উপস্থিতিতে এই ভ্যালু বাড়তে থাকে।
[caption id="attachment_113576" align="alignnone" width="720"] চিত্র: ওয়াটার সেন্সরে পানি।[/caption] [caption id="attachment_113716" align="alignnone" width="720"] চিত্র: সেন্সরে পানির উপস্থিতিতে সিরিয়াল মনিটরের ডেটা।[/caption]আমাদের কোডটি এমনভাবে লেখা যাতে এই ভ্যালু 200 এর উপরে গেলেই Whatsapp এ মেসেজ আসবে।
[caption id="attachment_113582" align="alignnone" width="324"] চিত্রঃ হোয়াটসঅ্যাপে ESP8266 এর পাঠানো মেসেজ[/caption]]]>